From 20ef60b19ec693bf87c6deb1441c39fdd5c6df46 Mon Sep 17 00:00:00 2001 From: Michael Chalupiak Date: Tue, 3 Feb 2026 22:48:40 -0500 Subject: [PATCH 1/2] Aerc mail client and chawan browser --- config/.config/aerc/accounts.conf | 35 ++ config/.config/aerc/aerc.conf | 862 ++++++++++++++++++++++++++++++ config/.config/aerc/binds.conf | 184 +++++++ config/.config/chawan/config.toml | 3 + config/.config/ghostty/config | 1 + config/.config/newsboat/config | 2 + config/.config/newsboat/urls | 1 + config/.config/oama/config.yaml | 83 +++ 8 files changed, 1171 insertions(+) create mode 100644 config/.config/aerc/accounts.conf create mode 100644 config/.config/aerc/aerc.conf create mode 100644 config/.config/aerc/binds.conf create mode 100644 config/.config/chawan/config.toml create mode 100644 config/.config/oama/config.yaml diff --git a/config/.config/aerc/accounts.conf b/config/.config/aerc/accounts.conf new file mode 100644 index 0000000..c4e0658 --- /dev/null +++ b/config/.config/aerc/accounts.conf @@ -0,0 +1,35 @@ +[mchalupiak] +source = imaps://mikec@mail.mchalupiak.com +outgoing = smtp://mikec%40mchalupiak.com@www.mchalupiak.com +default = INBOX +from = Michael Chalupiak +cache-headers = true +source-cred-cmd = pass mikec@mchalupiak.com +outgoing-cred-cmd = pass mikec@mchalupiak.com + +[mikecchalupiak] +source = imaps+xoauth2://mikecchalupiak%40outlook.com@outlook.office365.com? +outgoing = smtp+xoauth2://mikecchalupiak%40outlook.com@outlook.office365.com:587 +from = "Michael Chalupiak" +default = INBOX +cache-headers = true +source-cred-cmd = oama access mikecchalupiak@outlook.com +outgoing-cred-cmd = oama access mikecchalupiak@outlook.com + +[spamreciver1] +source = imaps+xoauth2://spamreciver1%40outlook.com@outlook.office365.com? +outgoing = smtp+xoauth2://spamreciver1%40outlook.com@outlook.office365.com:587 +from = "Mike Jeff" +default = INBOX +cache-headers = true +source-cred-cmd = oama access spamreciver1@outlook.com +outgoing-cred-cmd = oama access spamreciver1@outlook.com + +[chalupmc] +source = imaps+xoauth2://chalupmc%40rose-hulman.edu@outlook.office365.com? +outgoing = smtp+xoauth2://chalupmc%40rose-hulman.edu@outlook.office365.com:587 +from = "Michael Chalupiak" +default = INBOX +cache-headers = true +source-cred-cmd = oama access chalupmc@rose-hulman.edu +outgoing-cred-cmd = oama access chalupmc@rose-hulman.edu diff --git a/config/.config/aerc/aerc.conf b/config/.config/aerc/aerc.conf new file mode 100644 index 0000000..c4cf6b4 --- /dev/null +++ b/config/.config/aerc/aerc.conf @@ -0,0 +1,862 @@ +# +# aerc main configuration + +[general] +# +# Used as a default path for save operations if no other path is specified. +# ~ is expanded to the current user home dir. +# +#default-save-path= + +# If set to "gpg", aerc will use system gpg binary and keystore for all crypto +# operations. If set to "internal", the internal openpgp keyring will be used. +# If set to "auto", the system gpg will be preferred unless the internal +# keyring already exists, in which case the latter will be used. +# +# Default: auto +#pgp-provider=auto + +# By default, the file permissions of accounts.conf must be restrictive and +# only allow reading by the file owner (0600). Set this option to true to +# ignore this permission check. Use this with care as it may expose your +# credentials. +# +# Default: false +#unsafe-accounts-conf=false + +# Output log messages to specified file. A path starting with ~/ is expanded to +# the user home dir. When redirecting aerc's output to a file using > shell +# redirection, this setting is ignored and log messages are printed to stdout. +# +#log-file= + +# Only log messages above the specified level to log-file. Supported levels +# are: trace, debug, info, warn and error. When redirecting aerc's output to +# a file using > shell redirection, this setting is ignored and the log level +# is forced to trace. +# +# Default: info +#log-level=info + +# Disable IPC entirely. Don't run commands (including mailto:... and mbox:...) +# in an existing aerc instance, and don't start an IPC server to allow +# subsequent aerc instances to run commands in the current one. +# +# Default: false +#disable-ipc=false + +# Don't run mailto:... commands over IPC; start a new aerc instance with the +# composer instead. +# +# Default: false +#disable-ipc-mailto=false +# +# Don't run mbox:... commands over IPC; start a new aerc instance with the mbox +# file instead. +# +# Default: false +#disable-ipc-mbox=false + +# Set the $TERM environment variable used for the embedded terminal. +# +# Default: xterm-256color +#term=xterm-256color + +# Display OSC8 strings in the embedded terminal +# +# Default: false +#enable-osc8=false + +# Default shell command to use for :menu. This will be executed with sh -c and +# will run in an popover dialog. +# +# Any occurrence of %f will be replaced by a temporary file path where the +# command is expected to write output lines to be consumed by :menu. Otherwise, +# the lines will be read from the command's standard output. +# +# Examples: +# default-menu-cmd=fzf +# default-menu-cmd=fzf --multi +# default-menu-cmd=dmenu -l 20 +# default-menu-cmd=ranger --choosefiles=%f +# +#default-menu-cmd= + +[ui] +# +# Describes the format for each row in a mailbox view. This is a comma +# separated list of column names with an optional align and width suffix. After +# the column name, one of the '<' (left), ':' (center) or '>' (right) alignment +# characters can be added (by default, left) followed by an optional width +# specifier. The width is either an integer representing a fixed number of +# characters, or a percentage between 1% and 99% representing a fraction of the +# terminal width. It can also be one of the '*' (auto) or '=' (fit) special +# width specifiers. Auto width columns will be equally attributed the remaining +# terminal width. Fit width columns take the width of their contents. If no +# width specifier is set, '*' is used by default. +# +# Default: flags:4,name<20%,subject,date>= +#index-columns=flags:4,name<20%,subject,date>= + +# +# Each name in index-columns must have a corresponding column-$name setting. +# All column-$name settings accept golang text/template syntax. See +# aerc-templates(7) for available template attributes and functions. +# +# Here are some examples to show the To field instead of the From field for +# an email (modifying column-name): +# +# 1. a generic one +# column-name={{ .Peer | names | join ", " }} +# 2. based upon the selected folder +# column-name={{if match .Folder "^(Gesendet|Sent)$"}}{{index (.To | names) 0}}{{else}}{{index (.From | names) 0}}{{end}} +# +# Default settings +#column-flags={{.Flags | join ""}} +#column-name={{index (.From | names) 0}} +#column-subject={{.ThreadPrefix}}{{.Subject}} +#column-date={{.DateAutoFormat .Date.Local}} + +# +# String separator inserted between columns. When the column width specifier is +# an exact number of characters, the separator is added to it (i.e. the exact +# width will be fully available for the column contents). +# +# Default: " " +#column-separator=" " + +# +# See time.Time#Format at https://godoc.org/time#Time.Format +# +# Default: 2006 Jan 02 +#timestamp-format=2006 Jan 02 + +# +# Index-only time format for messages that were received/sent today. +# If this is empty, timestamp-format is used instead. +# +# Default: 15:04 +#this-day-time-format=15:04 + +# +# Index-only time format for messages that were received/sent within the last +# 7 days. If this is empty, timestamp-format is used instead. +# +# Default: Jan 02 +#this-week-time-format=Jan 02 + +# +# Index-only time format for messages that were received/sent this year. +# If this is empty, timestamp-format is used instead. +# +#Default: Jan 02 +#this-year-time-format=Jan 02 + +# +# Overrides timestamp-format for the message view. +# +# Default: 2006 Jan 02, 15:04 GMT-0700 +#message-view-timestamp-format=2006 Jan 02, 15:04 GMT-0700 + +# +# If set, overrides timestamp-format in the message view for messages +# that were received/sent today. +# +#message-view-this-day-time-format= + +# If set, overrides timestamp-format in the message view for messages +# that were received/sent within the last 7 days. +# +#message-view-this-week-time-format= + +# +# If set, overrides *timestamp-format* in the message view for messages +# that were received/sent this year. +# +#message-view-this-year-time-format= + +# +# Width of the sidebar, including the border. +# +# Default: 22 +#sidebar-width=22 + +# +# Default split layout for message list tabs. The syntax is: +# +# [] +# +# is optional and defaults to horizontal. It can take one +# of the following values: h, horiz, horizontal, v, vert, vertical. +# +# is a positive integer representing the size (in terminal cells) +# of the message list window. +# +#message-list-split= + +# +# Message to display when viewing an empty folder. +# +# Default: (no messages) +#empty-message=(no messages) + +# Message to display when no folders exists or are all filtered +# +# Default: (no folders) +#empty-dirlist=(no folders) +# +# Value to set {{.Subject}} template to when subject is empty. +# +# Default: (no subject) +#empty-subject=(no subject) + +# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel +# +# Default: false +#mouse-enabled=false + +# +# Ring the bell when new messages are received +# +# Default: true +#new-message-bell=true + +# +# Template to use for Account tab titles +# +# Default: {{.Account}} +#tab-title-account={{.Account}} + +# +# Template to use for Composer tab titles +# +# Default: {{if .To}}to:{{index (.To | shortmboxes) 0}} {{end}}{{.SubjectBase}} +#tab-title-composer={{if .To}}to:{{index (.To | shortmboxes) 0}} {{end}}{{.SubjectBase}} + +# +# Template to use for Message Viewer tab titles +# +# Default: {{.Subject}} +#tab-title-viewer={{.Subject}} + + +# Marker to show before a pinned tab's name. +# +# Default: ` +#pinned-tab-marker='`' + +# Template for the left side of the directory list. +# See aerc-templates(7) for all available fields and functions. +# +# Default: {{.Folder}} +#dirlist-left={{.Folder}} + +# Template for the right side of the directory list. +# See aerc-templates(7) for all available fields and functions. +# +# Default: {{if .Unread}}{{humanReadable .Unread}}{{end}} +#dirlist-right={{if .Unread}}{{humanReadable .Unread}}{{end}} + +# Delay after which the messages are actually listed when entering a directory. +# This avoids loading messages when skipping over folders and makes the UI more +# responsive. If you do not want that, set it to 0s. +# +# Default: 200ms +#dirlist-delay=200ms + +# Display the directory list as a foldable tree that allows to collapse and +# expand the folders. +# +# Default: false +#dirlist-tree=false + +# If dirlist-tree is enabled, set level at which folders are collapsed by +# default. Set to 0 to disable. +# +# Default: 0 +#dirlist-collapse=0 + +# List of space-separated criteria to sort the messages by, see *sort* +# command in *aerc*(1) for reference. Prefixing a criterion with "-r " +# reverses that criterion. +# +# Example: "from -r date" +# +#sort= + +# Moves to next message when the current message is deleted +# +# Default: true +#next-message-on-delete=true + +# Automatically set the "seen" flag when a message is opened in the message +# viewer. +# +# Default: true +#auto-mark-read=true + +# The directories where the stylesets are stored. It takes a colon-separated +# list of directories. If this is unset or if a styleset cannot be found, the +# following paths will be used as a fallback in that order: +# +# ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets +# ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets +# /usr/local/share/aerc/stylesets +# /usr/share/aerc/stylesets +# +#stylesets-dirs= + +# Uncomment to use box-drawing characters for vertical and horizontal borders. +# +# Default: "│" and "─" +#border-char-vertical="│" +#border-char-horizontal="─" + +# Sets the styleset to use for the aerc ui elements. +# +# Default: default +#styleset-name=default + +# Activates fuzzy search in commands and their arguments: the typed string is +# searched in the command or option in any position, and need not be +# consecutive characters in the command or option. +# +# Default: false +fuzzy-complete=true + +# How long to wait after the last input before auto-completion is triggered. +# +# Default: 250ms +#completion-delay=250ms + +# The minimum required characters to allow auto-completion to be triggered after +# completion-delay. +# +# Setting this to "manual" disables automatic completion, leaving only the +# manually triggered completion with the $complete key (see aerc-binds(5) for +# more details). +# +# Default: 1 +#completion-min-chars=1 + +# +# Global switch for completion popovers +# +# Default: true +#completion-popovers=true + +# Uncomment to use UTF-8 symbols to indicate PGP status of messages +# +# Default: ASCII +#icon-unencrypted= +#icon-encrypted=✔ +#icon-signed=✔ +#icon-signed-encrypted=✔ +#icon-unknown=✘ +#icon-invalid=⚠ + +# Reverses the order of the message list. By default, the message list is +# ordered with the newest (highest UID) message on top. Reversing the order +# will put the oldest (lowest UID) message on top. This can be useful in cases +# where the backend does not support sorting. +# +# Default: false +#reverse-msglist-order = false + +# Reverse display of the message threads. Default order is the initial +# message is on the top with all the replies being displayed below. The +# reverse option will put the initial message at the bottom with the +# replies on top. +# +# Default: false +#reverse-thread-order=false + +# Positions the cursor on the last message in the message list (at the +# bottom of the view) when opening a new folder. +# +# Default: false +#select-last-message=false + +# Sort the thread siblings according to the sort criteria for the messages. If +# sort-thread-siblings is false, the thread siblings will be sorted based on +# the message UID in ascending order. This option is only applicable for +# client-side threading with a backend that enables sorting. Note that there's +# a performance impact when sorting is activated. +# +# Default: false +#sort-thread-siblings=false + +# Set the scroll offset in number of lines from the top and bottom of the +# message list. +# +# Default: 0 +#msglist-scroll-offset = 0 + +# +# Enable a threaded view of messages. If this is not supported by the backend +# (IMAP server or notmuch), threads will be built by the client. +# +# Default: false +#threading-enabled=false + +# Force client-side thread building +# +# Default: false +#force-client-threads=false + +# If no References nor In-Reply-To headers can be matched to build client side +# threads, fallback to similar subjects. +# +# Default: false +#threading-by-subject=false + +# Show thread context enables messages which do not match the current query (or +# belong to the current mailbox) to be shown for context. These messages can be +# styled separately using "msglist_thread_context" in a styleset. This feature +# is not supported by all backends +# +# Default: false +#show-thread-context=false + +# Debounce client-side thread building +# +# Default: 50ms +#client-threads-delay=50ms + +# +# Thread prefix customization: + +# +# Customize the thread prefix appearance by selecting the arrow head. +# +# Default: ">" +#thread-prefix-tip = ">" + +# +# Customize the thread prefix appearance by selecting the arrow indentation. +# +# Default: " " +#thread-prefix-indent = " " + +# +# Customize the thread prefix appearance by selecting the vertical extension of +# the arrow. +# +# Default: "│" +#thread-prefix-stem = "│" + +# +# Customize the thread prefix appearance by selecting the horizontal extension +# of the arrow. +# +# Default: "" +#thread-prefix-limb = "" + +# +# Customize the thread prefix appearance by selecting the folded thread +# indicator. +# +# Default: "+" +#thread-prefix-folded = "+" + +# +# Customize the thread prefix appearance by selecting the unfolded thread +# indicator. +# +# Default: "" +#thread-prefix-unfolded = "" + +# +# Customize the thread prefix appearance by selecting the first child connector. +# +# Default: "" +#thread-prefix-first-child = "" + +# +# Customize the thread prefix appearance by selecting the connector used if +# the message has siblings. +# +# Default: "├─" +#thread-prefix-has-siblings = "├─" + +# +# Customize the thread prefix appearance by selecting the connector used if the +# message has no parents and no children. +# +# Default: "" +#thread-prefix-lone = "" + +# +# Customize the thread prefix appearance by selecting the connector used if the +# message has no parents and has children. +# +# Default: "" +#thread-prefix-orphan = "" + +# +# Customize the thread prefix appearance by selecting the connector for the last +# sibling. +# +# Default: "└─" +#thread-prefix-last-sibling = "└─" + +# +# Customize the reversed thread prefix appearance by selecting the connector for +# the last sibling. +# +# Default: "┌─" +#thread-prefix-last-sibling-reverse = "┌─" + +# +# Customize the thread prefix appearance by selecting the connector for dummy +# thread. +# +# Default: "┬─" +#thread-prefix-dummy = "┬─" + +# +# Customize the reversed thread prefix appearance by selecting the connector for +# dummy thread. +# +# Default: "┴─" +#thread-prefix-dummy-reverse = "┴─" + +# +# Customize the reversed thread prefix appearance by selecting the first child +# connector. +# +# Default: "" +#thread-prefix-first-child-reverse = "" + +# +# Customize the reversed thread prefix appearance by selecting the connector +# used if the message has no parents and has children. +# +# Default: "" +#thread-prefix-orphan-reverse = "" + +[statusline] +# +# Describes the format for the status line. This is a comma separated list of +# column names with an optional align and width suffix. See [ui].index-columns +# for more details. To completely mute the status line except for push +# notifications, explicitly set status-columns to an empty string. +# +# Default: left<*,center:=,right>* +#status-columns=left<*,center:=,right>* + +# +# Each name in status-columns must have a corresponding column-$name setting. +# All column-$name settings accept golang text/template syntax. See +# aerc-templates(7) for available template attributes and functions. +# +# Default settings +#column-left=[{{.Account}}] {{.StatusInfo}} +#column-center={{.PendingKeys}} +#column-right={{.TrayInfo}} | {{cwd}} + +# +# String separator inserted between columns. +# See [ui].column-separator for more details. +# +#column-separator=" " + +# Specifies the separator between grouped statusline elements. +# +# Default: " | " +#separator=" | " + +# Defines the mode for displaying the status elements. +# Options: text, icon +# +# Default: text +#display-mode=text + +[viewer] +# +# Specifies the pager to use when displaying emails. Note that some filters +# may add ANSI codes to add color to rendered emails, so you may want to use a +# pager which supports ANSI codes. +# +# Default: less -Rc +pager=less -Rc + +# +# If an email offers several versions (multipart), you can configure which +# mimetype to prefer. For example, this can be used to prefer plaintext over +# html emails. +# +# Default: text/plain,text/html +alternatives=text/html,text/plain + +# +# Default setting to determine whether to show full headers or only parsed +# ones in message viewer. +# +# Default: false +#show-headers=false + +# +# Layout of headers when viewing a message. To display multiple headers in the +# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if +# none of their specified headers are present in the message. +# +# Default: From|To,Cc|Bcc,Date,Subject +#header-layout=From|To,Cc|Bcc,Date,Subject + +# Whether to always show the mimetype of an email, even when it is just a single part +# +# Default: false +#always-show-mime=false + +# Define the maximum height of the mimetype switcher before a scrollbar is used. +# The height of the mimetype switcher is restricted to half of the display +# height. If the provided value for the height is zero, the number of parts will +# be used as the height of the type switcher. +# +# Default: 0 +#max-mime-height = 0 + +# Parses and extracts http links when viewing a message. Links can then be +# accessed with the open-link command. +# +# Default: true +#parse-http-links=true + +[compose] +# +# Specifies the command to run the editor with. It will be shown in an embedded +# terminal, though it may also launch a graphical window if the environment +# supports it. Defaults to $EDITOR, or vi. +#editor= + +# +# When set, aerc will create and read .eml files for composing that have +# non-standard \n linebreaks. This is only relevant if the used editor does not +# support CRLF linebreaks. +# +#lf-editor=false + +# +# Default header fields to display when composing a message. To display +# multiple headers in the same row, separate them with a pipe, e.g. "To|From". +# +# Default: To|From,Subject +#header-layout=To|From,Subject + +# +# Edit headers into the text editor instead than separate fields. +# +# When this is true, address-book-cmd is not supported and address completion +# is left to the editor itself. Also, displaying multiple headers on the same +# line is not possible. +# +# Default: false +#edit-headers=false + +# +# Specifies the command to be used to tab-complete email addresses. Any +# occurrence of "%s" in the address-book-cmd will be replaced with what the +# user has typed so far. +# +# The command must output the completions to standard output, one completion +# per line. Each line must be tab-delimited, with an email address occurring as +# the first field. Only the email address field is required. The second field, +# if present, will be treated as the contact name. Additional fields are +# ignored. +# +# This parameter can also be set per account in accounts.conf. +#address-book-cmd= + +# Specifies the command to be used to select attachments. Any occurrence of +# '%s' in the file-picker-cmd will be replaced with the argument +# to :attach -m . Any occurence of '%f' will be replaced by the +# location of a temporary file, from which aerc will read the selected files. +# +# If '%f' is not present, the command must output the selected files to +# standard output, one file per line. If it is present, then aerc does not +# capture the standard output and instead reads the files from the temporary +# file which should have the same format. +#file-picker-cmd= + +# +# Allow to address yourself when replying +# +# Default: true +#reply-to-self=true + +# Warn before sending an email with an empty subject. +# +# Default: false +#empty-subject-warning=false + +# +# Warn before sending an email that matches the specified regexp but does not +# have any attachments. Leave empty to disable this feature. +# +# Uses Go's regexp syntax, documented at https://golang.org/s/re2syntax. The +# "(?im)" flags are set by default (case-insensitive and multi-line). +# +# Example: +# no-attachment-warning=^[^>]*attach(ed|ment) +# +#no-attachment-warning= + +# +# When set, aerc will generate "format=flowed" bodies with a content type of +# "text/plain; format=flowed" as described in RFC3676. This format is easier to +# handle for some mailing software, and generally just looks like ordinary +# text. To actually make use of this format's features, you'll need support in +# your editor. +# +#format-flowed=false + +[multipart-converters] +# +# Converters allow to generate multipart/alternative messages by converting the +# main text/plain part into any other MIME type. Only exact MIME types are +# accepted. The commands are invoked with sh -c and are expected to output +# valid UTF-8 text. +# +# Example (obviously, this requires that you write your main text/plain body +# using the markdown syntax): +#text/html=pandoc -f markdown -t html --standalone + +[filters] +# +# Filters allow you to pipe an email body through a shell command to render +# certain emails differently, e.g. highlighting them with ANSI escape codes. +# +# The commands are invoked with sh -c. The following folders are prepended to +# the system $PATH to allow referencing filters from their name only: +# +# ${XDG_CONFIG_HOME:-~/.config}/aerc/filters +# ~/.local/libexec/aerc/filters +# ${XDG_DATA_HOME:-~/.local/share}/aerc/filters +# $PREFIX/libexec/aerc/filters +# $PREFIX/share/aerc/filters +# /usr/libexec/aerc/filters +# /usr/share/aerc/filters +# +# If you want to run a program in your default $PATH which has the same name +# as a builtin filter (e.g. /usr/bin/colorize), use its absolute path. +# +# The following variables are defined in the filter command environment: +# +# AERC_MIME_TYPE the part MIME type/subtype +# AERC_FORMAT the part content type format= parameter +# AERC_FILENAME the attachment filename (if any) +# AERC_SUBJECT the message Subject header value +# AERC_FROM the message From header value +# +# The first filter which matches the email's mimetype will be used, so order +# them from most to least specific. +# +# You can also match on non-mimetypes, by prefixing with the header to match +# against (non-case-sensitive) and a comma, e.g. subject,text will match a +# subject which contains "text". Use header,~regex to match against a regex. +# +text/plain=colorize +text/calendar=calendar +message/delivery-status=colorize +message/rfc822=colorize +text/html=cha -T text/html -d -o display.color-mode="true-color" -o buffer.mark-links=true +# text/html=! html-unsafe -sixel +#text/html=pandoc -f html -t plain | colorize +#text/html=html | colorize +#text/*=bat -fP --file-name="$AERC_FILENAME" +#application/x-sh=bat -fP -l sh +#image/*=catimg -w $(tput cols) - +#subject,~Git(hub|lab)=lolcat -f +#from,thatguywhodoesnothardwraphismessages=wrap -w 100 | colorize + +# This special filter is only used to post-process email headers when +# [viewer].show-headers=true +# By default, headers are piped directly into the pager. +# +.headers=colorize + +[openers] +# +# Openers allow you to specify the command to use for the :open and :open-link +# actions on a per-MIME-type basis. The :open-link URL scheme is used to +# determine the MIME type as follows: x-scheme-handler/. +# +# {} is expanded as the temporary filename or URL to be opened with proper +# shell quoting. If it is not encountered in the command, the filename/URL will +# be appended to the end of the command. The command will then be executed with +# `sh -c`. +# +# Like [filters], openers support basic shell globbing. The first opener which +# matches the part's MIME type (or URL scheme handler MIME type) will be used, +# so order them from most to least specific. +# +# Examples: +# x-scheme-handler/irc=hexchat +# x-scheme-handler/http*=printf '%s' {} | wl-copy +# text/html=surf -dfgms +text/html=cha +# text/plain=gvim {} +125 +# message/rfc822=thunderbird + +[hooks] +# +# Hooks are triggered whenever the associated event occurs. + +# +# Executed when a new email arrives in the selected folder +#mail-received=notify-send "[$AERC_ACCOUNT/$AERC_FOLDER] New mail from $AERC_FROM_NAME" "$AERC_SUBJECT" + +# +# Executed when mail is deleted from a folder +#mail-deleted=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" & + +# +# Executed when aerc adds mail to a folder +#mail-added=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" & + +# +# Executed when aerc starts +#aerc-startup=aerc :terminal calcurse && aerc :next-tab + +# +# Executed when aerc shuts down. +#aerc-shutdown= + +# +# Executed when notmuch tags are modified. +#tag-modified= + +# +# Executed when flags are changed on a message. +#flag-changed=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" & + +[templates] +# Templates are used to populate email bodies automatically. +# + +# The directories where the templates are stored. It takes a colon-separated +# list of directories. If this is unset or if a template cannot be found, the +# following paths will be used as a fallback in that order: +# +# ${XDG_CONFIG_HOME:-~/.config}/aerc/templates +# ${XDG_DATA_HOME:-~/.local/share}/aerc/templates +# /usr/local/share/aerc/templates +# /usr/share/aerc/templates +# +#template-dirs= + +# The default template to be used for new messages. +# +# default: new_message +#new-message=new_message + +# The default template to be used for quoted replies. +# +# default: quoted_reply +#quoted-reply=quoted_reply + +# The default template to be used for forward as body. +# +# default: forward_as_body +#forwards=forward_as_body diff --git a/config/.config/aerc/binds.conf b/config/.config/aerc/binds.conf new file mode 100644 index 0000000..32e5215 --- /dev/null +++ b/config/.config/aerc/binds.conf @@ -0,0 +1,184 @@ +# Binds are of the form = +# To use '=' in a key sequence, substitute it with "Eq": "" +# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit + = :prev-tab + = :prev-tab + = :next-tab + = :next-tab +\[t = :prev-tab +\]t = :next-tab + = :term +? = :help keys + = :prompt 'Quit?' quit + = :prompt 'Quit?' quit + = :suspend + +[messages] +q = :prompt 'Quit?' quit + +j = :next + = :next + = :next 50% + = :next 100% + = :next 100% + +k = :prev + = :prev + = :prev 50% + = :prev 100% + = :prev 100% +g = :select 0 +G = :select -1 + +J = :next-folder + = :next-folder +K = :prev-folder + = :prev-folder +H = :collapse-folder + = :collapse-folder +L = :expand-folder + = :expand-folder + +v = :mark -t + = :mark -t:next +V = :mark -v + +T = :toggle-threads +zc = :fold +zo = :unfold +za = :fold -t +zM = :fold -a +zR = :unfold -a + = :fold -t + +zz = :align center +zt = :align top +zb = :align bottom + + = :view +d = :choose -o y 'Really delete this message' delete-message +D = :delete +a = :archive flat +A = :unmark -a:mark -T:archive flat + +C = :compose +m = :compose + +b = :bounce + +rr = :reply -a +rq = :reply -aq +Rr = :reply +Rq = :reply -q + +c = :cf +$ = :term +! = :term +| = :pipe + +/ = :search +\ = :filter +n = :next-result +N = :prev-result + = :clear + +s = :split +S = :vsplit + +pl = :patch list +pa = :patch apply +pd = :patch drop +pb = :patch rebase +pt = :patch term +ps = :patch switch + +[messages:folder=Drafts] + = :recall + +[view] +/ = :toggle-key-passthrough/ +q = :close +O = :open +o = :open +S = :save +| = :pipe +D = :delete +A = :archive flat + + = :open-link + +f = :forward +rr = :reply -a +rq = :reply -aq +Rr = :reply +Rq = :reply -q + +H = :toggle-headers + = :prev-part + = :prev-part + = :next-part + = :next-part +J = :next + = :next +K = :prev + = :prev + +[view::passthrough] +$noinherit = true +$ex = + = :toggle-key-passthrough + +[compose] +# Keybindings used when the embedded terminal is not selected in the compose +# view +$noinherit = true +$ex = +$complete = + = :prev-field + = :prev-field + = :next-field + = :next-field + = :switch-account -p + = :switch-account -p + = :switch-account -n + = :switch-account -n + = :next-field + = :prev-field + = :prev-tab + = :prev-tab + = :next-tab + = :next-tab + +[compose::editor] +# Keybindings used when the embedded terminal is selected in the compose view +$noinherit = true +$ex = + = :prev-field + = :prev-field + = :next-field + = :next-field + = :prev-tab + = :prev-tab + = :next-tab + = :next-tab + +[compose::review] +# Keybindings used when reviewing a message to be sent +# Inline comments are used as descriptions on the review screen +y = :send # Send +n = :abort # Abort (discard message, no confirmation) +v = :preview # Preview message +p = :postpone # Postpone +q = :choose -o d discard abort -o p postpone postpone # Abort or postpone +e = :edit # Edit +a = :attach # Add attachment +d = :detach # Remove attachment + +[terminal] +$noinherit = true +$ex = + + = :prev-tab + = :next-tab + = :prev-tab + = :next-tab diff --git a/config/.config/chawan/config.toml b/config/.config/chawan/config.toml new file mode 100644 index 0000000..0e42a32 --- /dev/null +++ b/config/.config/chawan/config.toml @@ -0,0 +1,3 @@ +[buffer] +images = true +scripting = true diff --git a/config/.config/ghostty/config b/config/.config/ghostty/config index a0e70c4..56df3b3 100644 --- a/config/.config/ghostty/config +++ b/config/.config/ghostty/config @@ -21,3 +21,4 @@ theme = light:Dawnfox,dark:Carbonfox # gtk-adwaita = true window-decoration = true shell-integration-features = true +mouse-scroll-multiplier = 1 diff --git a/config/.config/newsboat/config b/config/.config/newsboat/config index 699b444..e262604 100644 --- a/config/.config/newsboat/config +++ b/config/.config/newsboat/config @@ -18,6 +18,8 @@ bind-key G end podlist-format "%2i %b %> %S [%dMB / %tMB] [%p %%] [%K]" download-filename-format "%t | %n [%F].%e" download-path "~/podcasts/%n/" +browser "cha %u" +html-renderer "cha -T text/html -d -o display.color-mode=\"true-color\" -o buffer.mark-links=true" macro 1 set browser "curl %u --output /tmp/image && sxiv /tmp/image && rm /tmp/image"; one; set browser lynx macro 2 set browser "mpv --vid=no -- %u"; one; set browser lynx diff --git a/config/.config/newsboat/urls b/config/.config/newsboat/urls index fe820ec..3c96518 100644 --- a/config/.config/newsboat/urls +++ b/config/.config/newsboat/urls @@ -1,4 +1,5 @@ https://phaazon.net/blog/feed +https://port19.xyz/rss.xml https://danielde.dev/rss.xml https://sizeof.cat/index.xml https://pkolaczk.github.io/feed.xml diff --git a/config/.config/oama/config.yaml b/config/.config/oama/config.yaml new file mode 100644 index 0000000..89b639e --- /dev/null +++ b/config/.config/oama/config.yaml @@ -0,0 +1,83 @@ +## oama version 0.22.0 - 2025-08-29 0290.e419ef10 +## This is a YAML configuration file, indentation matters. +## Double ## indicates comments while single # default values. +## Not all defaults are shown, for full list run `oama printenv` +## and look at the `services:` section. + +## Possible options for keeping refresh and access tokens: +## GPG - in a gpg encrypted file $XDG_STATE_HOME/oama/.oauth +## (XDG_STATE_HOME defaults to ~/.local/state) +## GPG - in a gpg encrypted file ~/.local/state/oama/.oauth +## KEYRING - in the keyring of a password manager with Secret Service API +## +## Choose exactly one. + +encryption: + tag: KEYRING + +# encryption: +# tag: GPG +# contents: your-KEY-ID + +## Builtin service providers +## - google +## - microsoft +## Required fields: client_id, client_secret +## +services: + google: + client_id: application-CLIENT-ID + client_secret: application-CLIENT-SECRET + ## Alternatively get them from a password manager using a shell command. + ## If both variants are present then the _cmd versions get the priority. + ## For example: + # client_id_cmd: | + # pass email/my-app | head -1 + # client_secret_cmd: | + # pass email/my-app | head -2 | tail -1 + # auth_scope: https://mail.google.com/ + # microsoft: + # client_id: 08162f7c-0fd2-4200-a84a-f25a4db0b584 # notsecret + # client_secret: 'TxRBilcHdC6WGBee]fs?QR:SJ8nI[g82' # notsecret + # auth_scope: https://outlook.365office.com/IMAP.AccessAsUser.All + # https://outlook.365office.com/SMTP.Send + # offline_access + # tenant: common + # prompt: select_account + # + microsoft: + # client_id: 08162f7c-0fd2-4200-a84a-f25a4db0b584 # notsecret + # client_secret: 'TxRBilcHdC6WGBee]fs?QR:SJ8nI[g82' # notsecret + client_id: '9e5f94bc-e8a4-4e73-b8be-63364c29d753' + auth_scope: https://outlook.office.com/IMAP.AccessAsUser.All + https://outlook.office.com/POP.AccessAsUser.All + https://outlook.office.com/SMTP.Send + offline_access + tenant: common + prompt: select_account + ## client_secret is not needed for device code flow + # auth_endpoint: https://login.microsoftonline.com/common/oauth2/v2.0/devicecode + ## + ## client_secret might be needed for other authorization flows + # client_secret: application-CLIENT_SECRET + ## auth_endpoint: https://login.microsoftonline.com/common/oauth2/v2.0/authorize + # + # auth_scope: https://outlook.office.com/IMAP.AccessAsUser.All + # https://outlook.office.com/SMTP.Send + # offline_access + # tenant: common + + ## User configured providers + ## Required fields: client_id, client_secret, auth_endpoint, auth_scope, token_endpoint + ## + ## For example: + # yahoo: + # client_id: application-CLIENT-ID + # client_id_cmd: | + # password manager command ... + # client_secret: application-CLIENT_SECRET + # client_secret_cmd: | + # password manager command ... + # auth_endpoint: EDIT-ME! + # auth_scope: EDIT-ME! + # token_endpoint: EDIT-ME! From ddd4493d6d3d8bd5731e0640c5dd37a9fe60da66 Mon Sep 17 00:00:00 2001 From: Michael Chalupiak Date: Fri, 10 Apr 2026 10:49:44 -0400 Subject: [PATCH 2/2] editor changes --- config/.config/doom/config.el | 45 +++++++++++++ config/.config/doom/init.el | 4 +- config/.config/kak-tree-sitter/config.toml | 42 ++++++------- config/.config/kak/kakrc | 4 +- config/.config/nvim/lazy-lock.json | 73 ++++++++++++---------- config/.config/nvim/lua/config/keymap.lua | 7 ++- config/.config/nvim/lua/plugins/util.lua | 18 +++++- config/.config/ranger/rc.conf | 2 +- config/.emacs.d/plugins/apps.el | 21 +++++++ config/.scripts/rfv.sh | 2 +- 10 files changed, 155 insertions(+), 63 deletions(-) diff --git a/config/.config/doom/config.el b/config/.config/doom/config.el index ee7e913..91a2316 100644 --- a/config/.config/doom/config.el +++ b/config/.config/doom/config.el @@ -125,3 +125,48 @@ ;; (add-to-list treesit-language-source-alist '(odin "https://github.com/tree-sitter-grammars/tree-sitter-odin")) (setq lsp-inlay-hint-enable 't) + +(after! mu4e + (setq sendmail-program (executable-find "msmtp") + send-mail-function #'smtpmail-send-it + message-sendmail-f-is-evil t + message-sendmail-extra-arguments '("--read-envelope-from") + message-send-mail-function #'message-send-mail-with-sendmail)) +(set-email-account! "hosted";"mikec@mchalupiak.com" + '((mu4e-sent-folder . "/mikec@mchalupiak.com/Sent") + (mu4e-drafts-folder . "/mikec@mchalupiak.com/Drafts") + (mu4e-trash-folder . "/mikec@mchalupiak.com/Junk") + (mu4e-refile-folder . "/mikec@mchalupiak.com/INBOX")) + ;;(smtpmail-smtp-user . "foo@bar.com") + ;;(user-mail-address . "foo@bar.com") ;; only needed for mu < 1.4 + ;;(mu4e-compose-signature . "---\nYours truly\nThe Baz")) + t) +(set-email-account! "spamreciver1@outlook.com" + '((mu4e-sent-folder . "/spamreciver1@outlook.com/Sent") + (mu4e-drafts-folder . "/spamreciver1@outlook.com/Drafts") + (mu4e-trash-folder . "/spamreciver1@outlook.com/Junk") + (mu4e-refile-folder . "/spamreciver1@outlook.com/INBOX")) + ;;(smtpmail-smtp-user . "foo@bar.com") + ;;(user-mail-address . "foo@bar.com") ;; only needed for mu < 1.4 + ;;(mu4e-compose-signature . "---\nYours truly\nThe Baz")) + t) +(set-email-account! "mikecchalupiak@outlook.com" + '((mu4e-sent-folder . "/mikecchalupiak@outlook.com/Sent") + (mu4e-drafts-folder . "/mikecchalupiak@outlook.com/Drafts") + (mu4e-trash-folder . "/mikecchalupiak@outlook.com/Junk") + (mu4e-refile-folder . "/mikecchalupiak@outlook.com/INBOX")) + ;;(smtpmail-smtp-user . "foo@bar.com") + ;;(user-mail-address . "foo@bar.com") ;; only needed for mu < 1.4 + ;;(mu4e-compose-signature . "---\nYours truly\nThe Baz")) + t) + +(set-email-account! "chalupmc@rose-hulman.edu" + '((mu4e-sent-folder . "/chalupmc@rose-hulman.edu/Sent") + (mu4e-drafts-folder . "/chalupmc@rose-hulman.edu/Drafts") + (mu4e-trash-folder . "/chalupmc@rose-hulman.edu/Junk") + (mu4e-refile-folder . "/chalupmc@rose-hulman.edu/INBOX")) + ;;(smtpmail-smtp-user . "foo@bar.com") + ;;(user-mail-address . "foo@bar.com") ;; only needed for mu < 1.4 + ;;(mu4e-compose-signature . "---\nYours truly\nThe Baz")) + t) +;;(setq +notmuch-sync-backend 'mbsync) diff --git a/config/.config/doom/init.el b/config/.config/doom/init.el index 15e83ea..76c149c 100644 --- a/config/.config/doom/init.el +++ b/config/.config/doom/init.el @@ -38,7 +38,7 @@ indent-guides ; highlighted indent columns ;;ligatures ; ligatures and symbols to make your code pretty again ;;minimap ; show a map of the code on the side - ;; modeline ; snazzy, Atom-inspired modeline, plus API + modeline ; snazzy, Atom-inspired modeline, plus API ;;nav-flash ; blink cursor line after big motions ;;neotree ; a project drawer, like NERDTree for vim ophints ; highlight the region an operation acts on @@ -182,7 +182,7 @@ (zig +lsp +tree-sitter) ; C, but simpler :email - ;;(mu4e +org +gmail) + (mu4e +org +gmail +mbsync) ;;notmuch ;;(wanderlust +gmail) diff --git a/config/.config/kak-tree-sitter/config.toml b/config/.config/kak-tree-sitter/config.toml index d16fe30..b0daa6b 100644 --- a/config/.config/kak-tree-sitter/config.toml +++ b/config/.config/kak-tree-sitter/config.toml @@ -85,26 +85,26 @@ pin = "46cf4ded12ee974a70bf8457263b67ad7ee0379d" [language.typst.queries] path = "queries/typst" -# swift -[swift.grammar.source.git] -url = "https://github.com/alex-pinkus/tree-sitter-swift" -pin = "57c1c6d6ffa1c44b330182d41717e6fe37430704" - -[swift.grammar] -path = "src" -compile = "cc" -compile_args = ["-c", "-fpic", "../scanner.c", "-I", ".."] -compile_flags = ["-O3"] -link = "cc" -link_args = ["-shared", "-fpic", "scanner.o", "-o", "swift.so"] -link_flags = ["-O3"] - -[language.swift.queries.source.git] -url = "https://github.com/helix-editor/helix" -pin = "6bedca80646ce7350fb73029adf802ce7d9e241d" - +# # swift +# [swift.grammar.source.git] # url = "https://github.com/alex-pinkus/tree-sitter-swift" # pin = "57c1c6d6ffa1c44b330182d41717e6fe37430704" - -[language.swift.queries] -path = "runtime/queries/swift" +# +# [swift.grammar] +# path = "src" +# compile = "cc" +# compile_args = ["-c", "-fpic", "../scanner.c", "-I", ".."] +# compile_flags = ["-O3"] +# link = "cc" +# link_args = ["-shared", "-fpic", "scanner.o", "-o", "swift.so"] +# link_flags = ["-O3"] +# +# [language.swift.queries.source.git] +# url = "https://github.com/helix-editor/helix" +# pin = "6bedca80646ce7350fb73029adf802ce7d9e241d" +# +# # url = "https://github.com/alex-pinkus/tree-sitter-swift" +# # pin = "57c1c6d6ffa1c44b330182d41717e6fe37430704" +# +# [language.swift.queries] +# path = "runtime/queries/swift" diff --git a/config/.config/kak/kakrc b/config/.config/kak/kakrc index b5f1409..09bb6e7 100644 --- a/config/.config/kak/kakrc +++ b/config/.config/kak/kakrc @@ -199,7 +199,7 @@ set-option global lsp_hover_anchor true lsp-auto-signature-help-enable lsp-inlay-hints-enable global -map global user k ':lsp-hover' +map global user k ':lsp-hover' hook global WinSetOption filetype=(c|cpp|zig|rust|python|ruby|lua|java|html|css) %{ hook window -group semantic-tokens BufReload .* lsp-semantic-tokens @@ -249,7 +249,7 @@ set-option global lsp_config %{ define-command fzf-buffer -docstring 'Invoke fzf to select a buffer' %{ evaluate-commands %sh{ - tmux split-window -l 30% "(printf \"%s\n\" $kak_quoted_buflist | fzf --bind 'focus:execute-silent(echo \"eval -client $kak_client %{ e {} }\" | kak -p $kak_session)' || echo \"$kak_buffile\") | xargs -I{} echo \"eval -client $kak_client %{ e '{}' }\" | /usr/bin/kak -p $kak_session" + tmux split-window -l 20% "(printf \"%s\n\" $kak_quoted_buflist | fzf --bind 'focus:execute-silent(echo \"eval -client $kak_client %{ e {} }\" | kak -p $kak_session)' || echo \"$kak_buffile\") | xargs -I{} echo \"eval -client $kak_client %{ e '{}' }\" | /usr/bin/kak -p $kak_session" } } diff --git a/config/.config/nvim/lazy-lock.json b/config/.config/nvim/lazy-lock.json index c2f00f2..d3769b2 100644 --- a/config/.config/nvim/lazy-lock.json +++ b/config/.config/nvim/lazy-lock.json @@ -1,69 +1,74 @@ { "auto-dark-mode.nvim": { "branch": "master", "commit": "e300259ec777a40b4b9e3c8e6ade203e78d15881" }, - "blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" }, - "catppuccin": { "branch": "main", "commit": "8c4125e3c746976ba025dc5d908fa22c6aa09486" }, + "blink.cmp": { "branch": "main", "commit": "451168851e8e2466bc97ee3e026c3dcb9141ce07" }, + "catppuccin": { "branch": "main", "commit": "a7788416689dbefea659d9e9415c87926b0ba5d8" }, "cellular-automaton.nvim": { "branch": "main", "commit": "1606e9d5d04ff254023c3f3c62842d065708d6d3" }, - "compiler-explorer.nvim": { "branch": "master", "commit": "ee8e7a2808bdad67cd2acb61b5c9ffa7735c7ec9" }, + "command.nvim": { "branch": "main", "commit": "cf73df4f9afc123b1fc3a8674d3fae08d2ad67db" }, + "compiler-explorer.nvim": { "branch": "master", "commit": "523c6a7a3d8c034b421a71eb20b0da75b0b16f62" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "dim.lua": { "branch": "main", "commit": "a3a0dce75f7212ab61130e77a8157530bd23db15" }, - "dracula.nvim": { "branch": "main", "commit": "041d923368d540a1e438989ce8f915628081a56a" }, + "dracula.nvim": { "branch": "main", "commit": "ae752c13e95fb7c5f58da4b5123cb804ea7568ee" }, "dropbar.nvim": { "branch": "master", "commit": "ce202248134e3949aac375fd66c28e5207785b10" }, "everblush": { "branch": "main", "commit": "678f808d81801b983b6fb8296fb17ba1b2785d7c" }, - "everforest": { "branch": "master", "commit": "0909c23a2b8cbc337cffe91fda36381747e88506" }, + "everforest": { "branch": "master", "commit": "b03a03148c8b34c24c96960b93da9c8883d11f54" }, "fennel.vim": { "branch": "main", "commit": "c6a9c035ca108cbb24273d96cd6277fb8fbc60b4" }, + "firenvim": { "branch": "master", "commit": "a18ef908ac06b52ad9333b70e3e630b0a56ecb3d" }, "github-colors": { "branch": "main", "commit": "7292749e49e6f870e63879a528bb05c8c8d1a59a" }, "github-nvim-theme": { "branch": "main", "commit": "c106c9472154d6b2c74b74565616b877ae8ed31d" }, - "gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" }, - "gruvbox-material": { "branch": "master", "commit": "834dbf21836862300ced7444db4262b796330ab7" }, - "gruvbox.nvim": { "branch": "main", "commit": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437" }, + "gitsigns.nvim": { "branch": "main", "commit": "caa98e2e5e4c23a1652c23be839d2e1722cecc29" }, + "gruvbox-material": { "branch": "master", "commit": "790afe9dd085aa04eccd1da3626c5fa05c620e53" }, + "gruvbox.nvim": { "branch": "main", "commit": "334d5fd49fc8033f26408425366c66c6390c57bb" }, "hex.nvim": { "branch": "master", "commit": "b46e63356a69e8d6f046c38a9708d55d17f15038" }, - "lazy.nvim": { "branch": "main", "commit": "f0f5bbb9e5bfae5e6468f9359ffea3d151418176" }, - "leap.nvim": { "branch": "main", "commit": "44e3a60a7a62069e5c9445b7a8104612d4f060cb" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "leap.nvim": { "branch": "main", "commit": "b960d5038c5c505c52e56a54490f9bbb1f0e6ef6" }, "love2d.nvim": { "branch": "main", "commit": "25715394680590f56aab90390d430cab0dc46808" }, "lua-utils.nvim": { "branch": "main", "commit": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd" }, - "lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "35ec9e1425c2f9a36f556893336af4f302c63214" }, - "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, + "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "25f609e7fca78af7cede4f9fa3af8a94b1c4950b" }, + "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, "melange-nvim": { "branch": "master", "commit": "ce42f6b629beeaa00591ba73a77d3eeac4cf28ce" }, - "mellow.nvim": { "branch": "main", "commit": "5cd188489bcc7eb512f0a30581ad972070f8e5cd" }, - "mini.nvim": { "branch": "main", "commit": "ee4a4a4abed25e3d108d985b0553c5271f2f71aa" }, + "mellow.nvim": { "branch": "main", "commit": "6273b7f0ddf6ac2b75021b3bc0bd8b3305cfeef1" }, + "mini.nvim": { "branch": "main", "commit": "3923662bf3d6ca49a9503f8d7196ea0450983e6a" }, "monochrome.nvim": { "branch": "main", "commit": "2de78d9688ea4a177bcd9be554ab9192337d35ff" }, "monokai.nvim": { "branch": "master", "commit": "b8bd44d5796503173627d7a1fc51f77ec3a08a63" }, "moonlight.nvim": { "branch": "pure-lua", "commit": "e24e4218ec680b6396532808abf57ca0ada82e66" }, "moonscript-vim": { "branch": "master", "commit": "715c96c7c3b02adc507f84bf5754985460afc426" }, + "multicursor.nvim": { "branch": "1.0", "commit": "704b99f10a72cc05d370cfeb294ff83412a8ab55" }, "nabla.nvim": { "branch": "master", "commit": "9b69b709063ccf40ac36fabb4fff7d90b3736475" }, - "nelua.vim": { "branch": "main", "commit": "5bc2ce7cc1ae952940bb3419ad106c02820f4baf" }, - "neogit": { "branch": "master", "commit": "c6d00913f802acedfb93c01267e89185f25800ca" }, - "neorg": { "branch": "main", "commit": "e206c9642f4a115cd836e76c98ef785623d335bc" }, + "nelua.vim": { "branch": "main", "commit": "08ddb2e0dda7d2bd6cd9d4efadb6a07547e135c3" }, + "neogit": { "branch": "master", "commit": "4681c1fdac1b730592ae195576e87406f7255750" }, + "neorg": { "branch": "main", "commit": "408fc04013a95da8f217cb0958a06b6a77c01743" }, "nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" }, "nord.nvim": { "branch": "master", "commit": "80c1e5321505aeb22b7a9f23eb82f1e193c12470" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, - "nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" }, - "nvim-highlight-colors": { "branch": "main", "commit": "e0c4a58ec8c3ca7c92d3ee4eb3bc1dd0f7be317e" }, - "nvim-lspconfig": { "branch": "master", "commit": "cbd1e91296189a765094810de1b71a04e2597579" }, + "nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" }, + "nvim-highlight-colors": { "branch": "main", "commit": "e2cb22089cc2358b2b995c09578224f142de6039" }, + "nvim-lspconfig": { "branch": "master", "commit": "5492a24edd68f78d8a778edcb8905d0a28993abc" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, - "nvim-surround": { "branch": "main", "commit": "fcfa7e02323d57bfacc3a141f8a74498e1522064" }, - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "a9742cbc1f95db9eaf3293bf8cd0622ca36542bb" }, - "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, + "nvim-surround": { "branch": "main", "commit": "1098d7b3c34adcfa7feb3289ee434529abd4afd1" }, + "nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" }, + "nvim-ts-autotag": { "branch": "main", "commit": "8e1c0a389f20bf7f5b0dd0e00306c1247bda2595" }, "nvim-unception": { "branch": "main", "commit": "df0e505f0f1371c49c2bcf993985962edb5a279d" }, - "nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" }, + "nvim-web-devicons": { "branch": "master", "commit": "d7462543c9e366c0d196c7f67a945eaaf5d99414" }, "oceanic-next": { "branch": "master", "commit": "09833f72d5ba23de2e8bcae18f479f326f5f677a" }, - "oil.nvim": { "branch": "master", "commit": "7e1cd7703ff2924d7038476dcbc04b950203b902" }, + "oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" }, "one-nvim": { "branch": "main", "commit": "faf6fb3f98fccbe009c3466f657a8fff84a5f956" }, - "onedark.nvim": { "branch": "master", "commit": "6c10964f91321c6a0f09bcc41dd64e7a6602bc4f" }, + "onedark.nvim": { "branch": "master", "commit": "213c23ae45a04797572242568d5d51937181792d" }, + "pathlib.nvim": { "branch": "main", "commit": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1" }, "plantuml-syntax": { "branch": "master", "commit": "9d4900aa16674bf5bb8296a72b975317d573b547" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, - "range-highlight.nvim": { "branch": "master", "commit": "f54aec737f138e52c187a8bea77b41347fd86f12" }, - "rose-pine": { "branch": "main", "commit": "eb3ff49a4f2b4e8b06d27de529e44fa52a60ab8a" }, + "range-highlight.nvim": { "branch": "master", "commit": "097103da6550c2a34c029971c3d7da63d3fef320" }, + "rose-pine": { "branch": "main", "commit": "cf2a288696b03d0934da713d66c6d71557b5c997" }, "sherbet.nvim": { "branch": "master", "commit": "5c4166eff70ec551ae0023edfb89141b25cc18c6" }, - "snacks.nvim": { "branch": "main", "commit": "59c5545e91878c1f6218b032a881832bc98a46f3" }, + "snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" }, "telescope-tabs": { "branch": "vim_ui_select", "commit": "f01bc722582fdcaa58ea37492b382ff109893d95" }, - "tokyonight.nvim": { "branch": "main", "commit": "2642dbb83333e0575d1c3436e1d837926871c5fb" }, + "tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }, "v-vim": { "branch": "master", "commit": "1dc1388bafb89072f8349dbd96f9462ae22237cb" }, - "vim-colors-xcode": { "branch": "master", "commit": "6d449229bf29176448bd06377689d7a8db0d1bee" }, + "vim-colors-xcode": { "branch": "master", "commit": "2329a3ed092b4f72e9361a94567a5431e36e7d9c" }, "vim-etlua": { "branch": "master", "commit": "bb2974d0134ce6da60c3be0d82d809976b859c1c" }, "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }, "vim-teal": { "branch": "master", "commit": "a416397cf7aad7b03ef53fd3d9847fd764bcbfee" }, - "vscode.nvim": { "branch": "main", "commit": "cb9df0873c10a21d05362455ae3bb355eadcef6b" } + "vlime": { "branch": "master", "commit": "e276e9a6f37d2699a3caa63be19314f5a19a1481" }, + "vscode.nvim": { "branch": "main", "commit": "aa1102a7e15195c9cca22730b09224a7f7745ba8" } } diff --git a/config/.config/nvim/lua/config/keymap.lua b/config/.config/nvim/lua/config/keymap.lua index 765d02f..ec504b5 100644 --- a/config/.config/nvim/lua/config/keymap.lua +++ b/config/.config/nvim/lua/config/keymap.lua @@ -18,7 +18,7 @@ setnx('r', Snacks.picker.registers, 'Search registers') setnx('s', Snacks.picker.spelling, 'List spelling suggestions') setnx('M', Snacks.picker.man, 'Search man pages') setnx('t', require'telescope-tabs'.list_tabs, 'List tabs') -setnx('c', Snacks.picker.colorschemes, 'Select colorscheme') +setnx('C', Snacks.picker.colorschemes, 'Select colorscheme') setnx('N', Snacks.picker.notifications, 'List notifications') local neogit = require('neogit') @@ -33,6 +33,11 @@ setnx('om', 'Mason', 'Open Mason') setnx('oc', 'cd ' .. vim.fn.stdpath('config') .. 'Oil .', 'Open neovim configuration') setnx('og', neogit.open, 'Open (neo)git') +setnx('cc', 'CommandExecute', 'Run shell command') +setnx('ct', 'CommandReopenTerminal', 'Open shell command terminal') +setnx('cl', 'CommandExecuteLast', 'Run last shell command') +setnx('cs', 'CommandExecuteSelection', 'Run selection as shell command') + -- Exit terminal mode with ESC set('t', '', '') diff --git a/config/.config/nvim/lua/plugins/util.lua b/config/.config/nvim/lua/plugins/util.lua index cfed35a..59c14b5 100644 --- a/config/.config/nvim/lua/plugins/util.lua +++ b/config/.config/nvim/lua/plugins/util.lua @@ -44,6 +44,19 @@ return { }, }, + { + 'vieitesss/command.nvim', + lazy = false, + version = '*', + opts = {}, + }, + + + { + 'glacambre/firenvim', + build = ":call firenvim#install(0)" + }, + { 'brenoprata10/nvim-highlight-colors', event = 'VeryLazy', @@ -53,7 +66,7 @@ return { }, { - 'ggandor/leap.nvim', + url = 'https://codeberg.org/andyg/leap.nvim', dependencies = { 'tpope/vim-repeat', }, @@ -180,6 +193,9 @@ return { { mode = 'n', keys = 'g', desc = '+Git' }, { mode = 'x', keys = 'g', desc = '+Git' }, + + { mode = 'n', keys = 'c', desc = '+Compile' }, + { mode = 'x', keys = 'c', desc = '+Compile' }, }, } end diff --git a/config/.config/ranger/rc.conf b/config/.config/ranger/rc.conf index bd7345b..5d88e29 100644 --- a/config/.config/ranger/rc.conf +++ b/config/.config/ranger/rc.conf @@ -1,2 +1,2 @@ set preview_images true -set preview_images_method ueberzug +set preview_images_method kitty diff --git a/config/.emacs.d/plugins/apps.el b/config/.emacs.d/plugins/apps.el index 1996dc1..f01bcd0 100644 --- a/config/.emacs.d/plugins/apps.el +++ b/config/.emacs.d/plugins/apps.el @@ -343,6 +343,8 @@ (elfeed/add-to-playlist) (mpdel/switch-context 'podcasts) (libmpdel-play))) + ("b" . elfeed/show-eww-open) + ("B" . elfeed-show-visit) ("P" . (lambda () (interactive) (mpdel/switch-context 'podcasts) (libmpdel-play)))) @@ -352,11 +354,14 @@ (elfeed/add-to-playlist) (mpdel/switch-context 'podcasts) (libmpdel-play))) + ("B" . elfeed-search-browse-url) + ("b" . elfeed/search-eww-open) ("P" . (lambda () (interactive) (mpdel/switch-context 'podcasts) (libmpdel-play)))) :config (setq-default elfeed-search-filter " ") + (setq elfeed-log-level 'debug) (setq elfeed-feeds '( ("https://phaazon.net/blog/feed") ("https://irreal.org/blog/?feed=rss2") @@ -375,6 +380,22 @@ ("https://www.dailywire.com/feeds/rss.xml") ("https://feeds.simplecast.com/6c2VScgo") ("https://feeds.simplecast.com/pp_b9xO6"))) + (defun elfeed/show-eww-open (&optional use-generic-p) + "open with eww" + (interactive "P") + (let ((browse-url-handlers '(("https:\\/\\/www\\.youtu\\.*be." . browse-url-mpv) + (".*" . #'eww-browse-url)))) + (elfeed-show-visit use-generic-p))) + + (defun elfeed/search-eww-open (&optional use-generic-p) + "open with eww" + (interactive "P") + (let ((browse-url-handlers '(("https:\\/\\/www\\.youtu\\.*be." . browse-url-mpv) + ("." . #'eww-browse-url)))) + (elfeed-search-browse-url use-generic-p))) + (defun browse-url-mpv (url &optional single) + (start-process "mpv" nil "mpv" (shell-quote-argument url))) + (defun elfeed/add-to-playlist () (interactive (let* ((entry (if (eq major-mode 'elfeed-show-mode) diff --git a/config/.scripts/rfv.sh b/config/.scripts/rfv.sh index 041ab3e..592cd02 100755 --- a/config/.scripts/rfv.sh +++ b/config/.scripts/rfv.sh @@ -1,4 +1,4 @@ -rg -uu --color=always --line-number --no-heading --smart-case -H "${*:-}" | tr -d '\r' | +/usr/bin/rg . . --color=always --line-number --no-heading --smart-case -H "${*:-}" | tr -d '\r' | fzf-tmux --cycle -p 80%,90% --ansi \ --color "hl:-1:underline,hl+:-1:underline:reverse" \ --delimiter : \