diff --git a/.gitignore b/.gitignore index 4fccb20..c09bc42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .gitsecret/keys/random_seed !*.secret homeassistant/SERVICE_ACCOUNT.JSON +SECRETS/neomutt/pwd_henrik@hjarl.com diff --git a/.gitsecret/paths/mapping.cfg b/.gitsecret/paths/mapping.cfg index 285a61f..a44f0b5 100644 --- a/.gitsecret/paths/mapping.cfg +++ b/.gitsecret/paths/mapping.cfg @@ -1 +1,2 @@ homeassistant/SERVICE_ACCOUNT.JSON:5a3eabcbc53278f7713423b0ea20d0558f6334f8a1f6aed2a2e4cfb2ca9c93ab +SECRETS/neomutt/pwd_henrik@hjarl.com:cba46950125c0266d72e61c458b174d54c3751f773bbeab3ef7ff2522d099294 diff --git a/SECRETS/neomutt/pwd_henrik@hjarl.com.secret b/SECRETS/neomutt/pwd_henrik@hjarl.com.secret new file mode 100644 index 0000000..b2b8c17 Binary files /dev/null and b/SECRETS/neomutt/pwd_henrik@hjarl.com.secret differ diff --git a/manjaro.sh b/manjaro.sh index 212b866..522ca31 100755 --- a/manjaro.sh +++ b/manjaro.sh @@ -85,14 +85,17 @@ sudo systemctl edit coolercontrold.service # set log level to WARN yay -S vlc protobuf yt-dlp yay -S castnow +# cal+email +yay -S khal vdirsyncer python-aiohttp-oauthlib +yay -S neomutt urlscan mutt-ics sc-im pandoc w3m python-icalendar notmuch msmtp mbsync-git pandoc + # div applications -yay -S khal vdirsyncer python-aiohttp-oauthlib \ +yay -S \ discord \ discordo-git \ firefox \ font-manager \ i3status \ - mutt \ ncspot \ qalculate-qt \ qbittorrent \ @@ -106,6 +109,7 @@ yay -S khal vdirsyncer python-aiohttp-oauthlib \ # can be achieved by setting full-screen-api.ignore-widgets to true in about:config wget -P ~/.local/share/fonts/ https://raw.githubusercontent.com/SUNET/static_sunet_se/refs/heads/master/fonts/Akkurat-Mono.otf +wget -O mutt-trim -P ~/.local/bin https://raw.githubusercontent.com/Konfekt/mutt-trim/refs/heads/master/mutt-trim sudo mkdir -p /usr/share/backgrounds/ultrawide/ sudo wget -O rainbowsmoke.jpg -P /usr/share/backgrounds/ultrawide https://superultrawidewallpaper.com/wp-content/uploads/2022/02/rainbow-smoke-3840x1080-1860x523.jpg diff --git a/msmtp/config b/msmtp/config new file mode 100644 index 0000000..2056e49 --- /dev/null +++ b/msmtp/config @@ -0,0 +1,21 @@ +# vim:filetype=msmtp +defaults +auth on +tls on +tls_trust_file /etc/ssl/certs/ca-certificates.crt +logfile /home/hjalmarlucius/.config/msmtp/msmtp.log + +account henrik@hjarl.com +host smtp.purelymail.com +port 465 +tls_starttls off +from henrik@hjarl.com +user henrik@hjarl.com +passwordeval "pass henrik@hjarl.com" + +account bakken.henrik@gmail.com +host smtp.gmail.com +port 587 +from bakken.henrik@gmail.com +user bakken.henrik +passwordeval "pass bakken.henrik@gmail.com" diff --git a/neomutt/henrik@hjarl.com b/neomutt/henrik@hjarl.com new file mode 100644 index 0000000..94c21ca --- /dev/null +++ b/neomutt/henrik@hjarl.com @@ -0,0 +1,22 @@ +set realname = "Henrik Bakken" +set sendmail = "msmtp -a henrik@hjarl.com" +set from = "henrik@hjarl.com" +set folder = "imaps://imap.purelymail.com/" +set imap_user = "henrik@hjarl.com" +source "~/.config/neomutt/pwd_henrik@hjarl.com" + +mailboxes = "imaps://imap.purelymail.com/Inbox" +set spoolfile = "+INBOX" +set record = "+Sent" +set postponed = "+Drafts" +set trash = "+Trash" + +macro index,pager gi "=INBOX" "go to inbox" +macro index,pager gs "=Sent" "go to sent" +macro index,pager gd "=Drafts" "go to drafts" +macro index,pager gS "=Spam" "go to spam" +macro index,pager ga "=Archives" "go to archive" +macro index,pager gt "=Trash" "go to trash" + +macro index D ";:set resolve=no!=Trashecho 'Message deleted':set resolve=yes" "Quick Delete" +macro index A ";:set resolve=no!=Archivesecho 'Message archived':set resolve=yes" "Quick Archive" diff --git a/neomutt/mailcap b/neomutt/mailcap new file mode 100644 index 0000000..90c6037 --- /dev/null +++ b/neomutt/mailcap @@ -0,0 +1,9 @@ +text/html; $BROWSER %s +text/html; w3m -I %{charset} -T text/html -dump; copiousoutput; +text/calendar; /home/hjalmarlucius/src/mutt_dotfiles/bin/render-calendar-attachment.py %s; copiousoutput; +image/*; imv %s & +video/*; mpv --autofit-larger=90\%x90\% %s; needsterminal; +video/*; setsid mpv --quiet %s &; copiousoutput +application/pdf; zathura %s & +application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice %s & disown +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; sc-im %s; needsterminal diff --git a/neomutt/neomuttrc b/neomutt/neomuttrc new file mode 100644 index 0000000..b036310 --- /dev/null +++ b/neomutt/neomuttrc @@ -0,0 +1,399 @@ +source "~/.config/neomutt/unbindrc" + +# cache +set header_cache = ~/.cache/mutt +set message_cachedir = "~/.cache/mutt" +set mailcap_path = $HOME/.config/neomutt/mailcap + +set rfc2047_parameters = yes +set check_mbox_size = yes +set new_mail_command = "notify-send 'New Email'" +set imap_check_subscribed + +#------------------------------------------------------------ +# Accounts +#------------------------------------------------------------ + +source "~/.config/neomutt/henrik@hjarl.com" +# macro index,pager i1 'source $HOME/.config/neomutt/REPLACEME!;' "switch to REPLACEME" + +#------------------------------------------------------------ +# Settings +#------------------------------------------------------------ +#### General Settings +set smtp_authenticators = 'gssapi:login' +unset help +set sleep_time = 0 # Pause 0 seconds for informational messages +set pager_read_delay = 3 # View a message for 3 seconds to mark as read +set mark_old = no # Unread mail stay unread until read +set mime_forward = no # attachments are forwarded with mail +set wait_key = no # mutt won't ask "press key to continue" +set fast_reply # skip to compose when replying +set fcc_attach # save attachments with the body +set forward_format = "Fwd: %s" # format of subject when forwarding +set forward_quote # quote forwarded message +set reverse_name # reply as whomever it was to +set reverse_realname = yes # use any real name provided when replying +set auto_tag # automatically apply commands to all tagged messages (if some messages are tagged) +set include # include message in replies +set delete # messages marked for deleting will automatically be purged without prompting +set quit +set mail_check = 5 # to avoid lags using IMAP with some email providers (yahoo for example) +set timeout = 3 # how long to wait after user input until unblocking background stuff like mail syncing +set count_alternatives = yes # recurse into text/multipart when looking for attachement types +set thorough_search = no # don't process mail (via mailcap etc) before parsing with queries like ~B +set flag_safe # flagged messages can't be deleted + +#### Header Options +ignore * # ignore all headers +unignore to: cc: # ..then selectively show only these headers +unhdr_order * # some distros order things by default +hdr_order from: to: cc: date: subject: # header item ordering + +#### View Settings +set allow_ansi # allow ansi escape codes (e.g. colors) +set pager_index_lines = 10 # number of index lines to show +set pager_context = 3 # number of context lines to show +set pager_stop # don't go to next message automatically +set menu_scroll # scroll in menus +set smart_wrap # wrap lines at word boundaries rather than splitting up words +set wrap = 90 # email view width +set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+" +set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*" +# Tidy up emails significantly +set display_filter="perl -0777pe 's/___{10,}[^_]*microsoft teams meeting.*to join the meeting<([^>]*).*(___{10,})/\\n────────────────────────────────────────────────────────────────────────\\n\\nTeams Meeting ~~\\n\\nMeeting URL:\\n$1\\n\\n────────────────────────────────────────────────────────────────────────/is'| sed 's/^\\(To\\|CC\\): \\([^<]*[^>]\\)$/\\1\:<\\2>/g' | perl -0777pe 's/(((?!.*CC:)To:|CC:).+?(?=>\\n)>)/$1!REMOVE_ME!\\n!END!/gs' | sed '/^To:/{;:l N;/!END!/b; s/\\(\\n\\| *\\|\\t\\t*\\)/ /g; bl}' | sed '/^To:/,/>$/ s/\\([^>]*>,\\?\\)/\\1\\n/g' | sed -e 's/^ \\(CC:\\)\\(.*$\\)/\\1\\n\\2/' -e 's/^\\(To:\\)\\(.*$\\)/\\1 --------------------------------------------------------------------\\n\\2/' -e 's/^!END!$/------------------------------------------------------------------------/' -e '/!REMOVE_ME!/d' -e '/\\[-- Type: text.* --\\]/d' -e '/\\[-- Autoview.* --\\]/d' -e '/\\[-- Type.* --\\]/d' -e '/\\[-- .*unsupported.* --\\]/d' -e '/\\[-- Attachment #[0-9] --\\]/d' -e 's/Attachment #[0-9]: //g' -e '/./,/^$/!d' -e 's/\\([A-Z]*\\), *\\([A-Za-z]*\\)\\(\"\\)\\?/\\2 \\L\\u\\1\\E\\3/g'" + +#### Notmuch Config +set nm_query_type = threads # bring in the whole thread instead of just the matched message, really useful +set nm_default_url = "notmuch:///$HOME/.local/share/mail" # default notmuch URL +set nm_record_tags = "sent" # default 'sent' tag +set virtual_spoolfile = yes # allow using virtual mailboxes as spoolfile +macro index \Cg "unset wait_keyread -p 'Enter a search: ' x; echo \$x >~/.cache/mutt_termsAll Accounts~i \"\`notmuch --config ~/.config/notmuch/notmuchrc search --output=messages \$(/bin/cat ~/.cache/mutt_terms) | head -n 1000 | perl -le '@a=<>;chomp@a;s/\^id:// for@a;$,=\"|\";print@a' | sed 's/id://g' \`\"" "Search all mailboxes in all accounts (Global search)" + +#### Content/Autoview +auto_view application/ics +auto_view text/calendar +auto_view text/plain +auto_view text/html +auto_view application/pgp-encrypted +alternative_order text/calendar application/ics text/plain text/enriched text/html + +#### Sidebar Config +set sidebar_divider_char = '│' +set sidebar_folder_indent = yes +set sidebar_indent_string = ' - ' +set sidebar_non_empty_mailbox_only = yes +set sidebar_visible = no +set sidebar_width = 50 +set sidebar_next_new_wrap = yes +set sidebar_short_path = yes +set sidebar_component_depth = 0 +set sidebar_sort = "path" + +#### Thread ordering +set use_threads=threads +set sort=last-date +set sort_aux=date +set collapse_all = yes +set uncollapse_new = no +set thread_received = yes +set narrow_tree = no + +#### Lists +set auto_subscribe + +### Sounds +set beep = no # don't beep for errors +set beep_new # beep for new messages + +#### Text editor +set edit_headers = yes +set autoedit = yes +set editor="~/.local/bin/mutt-trim %s; nvim +':set textwidth=72' +':set wrapmargin=0' +':set wrap' +':set spell' %s" + +#### Markdown to html email conversion +macro compose M "F pandoc -s -f markdown -t html \ny^T^Utext/html; charset=UTF-8\n" "Convert from MD to HTML" + +#### Show patch files (requires git-split-diffs) +macro attach P "|git-split-diffs --color | less -RF" "View a patch file as a diff" +set wait_key = no + +#------------------------------------------------------------ +# Bind +#------------------------------------------------------------ + +# General Navigation +bind index collapse-thread +bind index collapse-thread +bind index h collapse-thread +bind index l collapse-thread +bind index + link-threads +bind index zz current-middle +bind index zt current-top +bind index zb current-bottom +bind index \\ limit +macro index "\n\n" +macro index \# "\n" "Mark as Complete" +macro index x "all\n" "show all messages (undo limit)" +macro index \ci "~F\n" "Limit by flagged" + +bind attach view-mailcap + +bind browser gg top-page +bind browser G bottom-page + +bind pager j next-line +bind pager k previous-line +bind pager next-line +bind pager previous-line +bind pager G bottom +bind pager gg top +macro pager J "\n\n" +macro pager K "\n\n" + +bind index,pager f change-folder +bind index,pager \Cu half-up +bind index,pager \Cd half-down +bind index,pager \Cb sidebar-toggle-visible +bind index,pager \Cj sidebar-next +bind index,pager \Ck sidebar-prev +bind index,pager \Co sidebar-open +bind index,pager \Cn next-unread +bind index,pager \Cp previous-unread +bind index,pager H view-raw-message +bind index,pager v view-attachments +bind index,pager | pipe-message + +bind browser,query select-entry + +bind index,attach,browser,query G last-entry +bind index,attach,browser,query gg first-entry +bind index,attach,browser,query j next-entry +bind index,attach,browser,query k previous-entry +bind index,attach,browser,query next-entry +bind index,attach,browser,query previous-entry + +bind index,pager,attach,browser,query,alias,compose q exit + +# Mail manipulation from index list +bind index t tag-entry +bind index T tag-thread +bind index flag-message +bind index u undelete-message +bind index U undelete-thread + +bind index,pager d delete-message +bind index,pager L edit-label + +# Compose, Replies and Forwarding +bind index,pager c mail # compose message +bind index,pager \Cr recall-message # (from drafts) +bind index,pager r reply +bind index,pager R group-reply +bind index,pager F forward-message + +# Compose screen options +bind compose y send-message +bind compose a attach-file +bind compose p postpone-message +bind compose e edit-message +bind compose t edit-to +bind compose f edit-from +bind compose s edit-subject +bind compose c edit-cc +bind compose b edit-bcc +bind compose r rename-file +bind compose F filter-entry +bind compose \Ct edit-type +bind compose \Ck move-up +bind compose \Cj move-down +bind compose view-attach + +bind attach,compose | pipe-entry + +# Commands and Misc +bind index,pager $ sync-mailbox # more like a refresh than a sync +bind editor complete-query +bind index,pager n search-next +bind index,pager N search-opposite +bind index,pager p search-opposite +bind index,pager,attach,editor,compose refresh +macro index,pager \cl 'urlscan -d -w 80' "call urlscan to open links" +macro index O "mbsync -a -c $HOME/.config/isync/mbsyncrc" "run mbsync to sync all mail" +macro attach s '~/Downloads/a' "Save file to ~/Downloads" +macro browser h '..' "Go to parent folder" +macro index \Ca "T~UN." "mark all messages as read" +macro attach,compose \cl " urlscan -d -w 80" "call urlscan to extract URLs out of a message" + +set abort_key = "" + +# copy / move messages +macro index C "?" "copy a message to a mailbox" +macro index M "?" "move a message to a mailbox" + +#------------------------------------------------------------ +# Colors +#------------------------------------------------------------ + +# Nerd icons idea based on https://github.com/sheoak/neomutt-powerline-nerdfonts/ +# Dracula colors based on Dracula Theme by Paul Townsend + + +# Formatting ---------------------------------------------------------------------- +set date_format = "%a %d %h %H:%M" +set index_format=" %zc %zs %zt | %-35.35L %@attachment_info@ ?%-30.100s %> %?Y?%Y ? %(!%a %d %h %H:%M) " +set pager_format="%n %T %s%*  %{!%d %b · %H:%M} %?X? %X?%P" +set status_format = " %D %?u? %u ?%?R? %R ?%?d? %d ?%?t? %t ?%?F? %F ?%?p? %p? \n \n" +set compose_format="-- NeoMutt: Compose [Approx. msg size: %l Atts: %a]%>-" +set sidebar_format = '%B%?F? [%F]?%* %?N?%N/? %?S?%S?' +index-format-hook attachment_info '=B text/calendar ~X 1' ' ' +index-format-hook attachment_info '=B text/calendar' " " +index-format-hook attachment_info '~X 1' " " +index-format-hook attachment_info '~A' " " + + +# General Colors ------------------------------------------------------------------ +color normal default default # general text +color error color231 color212 # error messages +color message default default # messages at the bottom +color prompt default default # prompt text +color search black color10 # search highlight + + +# Statusbar Colors ---------------------------------------------------------------- +color status color141 default +color status color7 color8 '([a-zA-Z0-9\.,]|\[|\])(\s)' # bubble content 1 +color status color7 color8 '(\s)([a-zA-Z0-9\.,]|\[|\])' # bubble content 2 +color status color7 color8 '(\% )' # % symbol +color status color7 color8 '(\S)' # empty spaces +color status color8 default '(|)' # statusline "bubbles" +color status color69 black '(\` )' # bubble account variation +color status white color69 '([a-zA-Z0-9\.]+)( )' # account text +color status green color8 '' # Unread messages count +color status blue color8 '' # Read messages count icon +color status yellow color8 '' # Flagged icon +color status red color8 '' # Pending delete icon + + +# Index Colors -------------------------------------------------------------------- +color index color15 default '~N' # new messages +color index color8 default '~R' # read messages +color index color8 default '~Q' # messages which have been replied to +color index_collapsed color4 default # collapsed thread (message count text) +color index color5 default '!~Q^~p' # sent only to me and haven't been replied to +color index color22 default '~h X-Label..' # messages with a complete label +color index color6 default '~F' # flagged messages +color index color6 default '~F~N' # flagged messages (new) +color index color14 default '~F~R' # flagged messages (read) +color index color1 default '~D' # deleted messages +color index color1 default '~D~N' # deleted messages (new) +color index color9 default '~D~R' # deleted messages (read) +color index color3 default '~T' # tagged messages +color index color3 default '~T~N' # tagged messages (new) +color index color11 default '~T~R' # tagged messages (read) +color tree color8 color8 # thread tree lines/arrow +color indicator default color8 # selection indicator +color index_date color8 default # date is always the same colour +color index_label color6 default # label is always the same colour + + +# Sidebar Colors ------------------------------------------------------------------ +color sidebar_indicator color14 black # currently selected mailbox +color sidebar_highlight white color8 # highlighted, but not open, mailbox. +color sidebar_ordinary color8 default # Color to give mailboxes by default +color sidebar_divider color8 black # divider between sidebar & content +color sidebar_flagged red black # mailboxes containing flagged mail +color sidebar_new green black # mailboxes containing new mail +color sidebar_unread color7 default # mailboxes containing unread mail +color sidebar_unread color7 default # mailboxes containing unread mail + + +# Message Headers ----------------------------------------------------------------- +color hdrdefault color8 default + + +# Message Body -------------------------------------------------------------------- + +# Attachments +color attachment color8 default + +# Signature +color signature color8 default + +# emails +# color body color14 default '[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+' + +# hide "mailto" +color body color0 color0 '' + +# URLs +color body color3 default '(https?|ftp)://[-\.,/%~_:?&=\#a-zA-Z0-9\+]+' + +# Dividers +color body color8 default '(^[-_]*$)' + +# Important info in calendar invites +color body color6 default '^(Date\/Time|Location|Organiser|Invitees|Teams Meeting)(:| \~\~)' + +# Quotes +color quoted color61 default +color quoted1 color117 default +color quoted2 color84 default +color quoted3 color215 default +color quoted4 color212 default + +# Forward/reply headers +color body color8 default '(^(To|From|Sent|Subject):.*)' + +# Patch syntax highlighting +color body brightwhite default '^[[:space:]].*' +color body yellow default ^(diff).* +color body white default ^[\-\-\-].* +color body white default ^[\+\+\+].* +color body green default ^[\+].* +color body red default ^[\-].* +color body brightblue default [@@].* +color body cyan default ^(Signed-off-by).* +color body brightwhite default ^(Cc) +color body yellow default "^diff \-.*" +color body brightwhite default "^index [a-f0-9].*" +color body brightblue default "^---$" +color body white default "^\-\-\- .*" +color body white default "^[\+]{3} .*" +color body green default "^[\+][^\+]+.*" +color body red default "^\-[^\-]+.*" +color body brightblue default "^@@ .*" +color body green default "LGTM" +color body brightmagenta default "-- Commit Summary --" +color body brightmagenta default "-- File Changes --" +color body brightmagenta default "-- Patch Links --" +color body green default "^Merged #.*" +color body red default "^Closed #.*" +color body brightblue default "^Reply to this email.*" + + +# Misc ----------------------------------------------------------------------------- + +# no addressed to me, to me, group, cc, sent by me, mailing list +set to_chars=" " + +# unchanged mailbox, changed, read only, attach mode +set status_chars = " " +ifdef crypt_chars set crypt_chars = " " +set flag_chars = " " + +# hide some tags +set hidden_tags = "unread,draft,flagged,passed,replied,attachment,signed,encrypted" +tag-transforms "replied" "↻ " \ + "encrytpted" "" \ + "signed" "" \ + "attachment" "" \ + +# The formats must start with 'G' and the entire sequence is case sensitive. +tag-formats "replied" "GR" \ + "encrypted" "GE" \ + "signed" "GS" \ + "attachment" "GA" \ + + # don't put '+' at the beginning of wrapped lines +set markers = no diff --git a/neomutt/unbindrc b/neomutt/unbindrc new file mode 100644 index 0000000..0eb6872 --- /dev/null +++ b/neomutt/unbindrc @@ -0,0 +1,261 @@ +bind generic,pager,editor,index,compose,browser,attach | noop +bind generic,pager,editor,index,compose,browser,attach a noop +bind generic,pager,editor,index,compose,browser,attach b noop +bind generic,pager,editor,index,compose,browser,attach c noop +bind generic,pager,editor,index,compose,browser,attach d noop +bind generic,pager,editor,index,compose,browser,attach e noop +bind generic,pager,editor,index,compose,browser,attach f noop +bind generic,pager,editor,index,compose,browser,attach g noop +bind generic,pager,editor,index,compose,browser,attach h noop +bind generic,pager,editor,index,compose,browser,attach i noop +bind generic,pager,editor,index,compose,browser,attach j noop +bind generic,pager,editor,index,compose,browser,attach k noop +bind generic,pager,editor,index,compose,browser,attach l noop +bind generic,pager,editor,index,compose,browser,attach m noop +bind generic,pager,editor,index,compose,browser,attach n noop +bind generic,pager,editor,index,compose,browser,attach o noop +bind generic,pager,editor,index,compose,browser,attach p noop +bind generic,pager,editor,index,compose,browser,attach r noop +bind generic,pager,editor,index,compose,browser,attach s noop +bind generic,pager,editor,index,compose,browser,attach t noop +bind generic,pager,editor,index,compose,browser,attach u noop +bind generic,pager,editor,index,compose,browser,attach v noop +bind generic,pager,editor,index,compose,browser,attach w noop +bind generic,pager,editor,index,compose,browser,attach x noop +bind generic,pager,editor,index,compose,browser,attach y noop +bind generic,pager,editor,index,compose,browser,attach z noop +bind generic,pager,editor,index,compose,browser,attach A noop +bind generic,pager,editor,index,compose,browser,attach B noop +bind generic,pager,editor,index,compose,browser,attach C noop +bind generic,pager,editor,index,compose,browser,attach D noop +bind generic,pager,editor,index,compose,browser,attach E noop +bind generic,pager,editor,index,compose,browser,attach F noop +bind generic,pager,editor,index,compose,browser,attach G noop +bind generic,pager,editor,index,compose,browser,attach H noop +bind generic,pager,editor,index,compose,browser,attach I noop +bind generic,pager,editor,index,compose,browser,attach J noop +bind generic,pager,editor,index,compose,browser,attach K noop +bind generic,pager,editor,index,compose,browser,attach L noop +bind generic,pager,editor,index,compose,browser,attach M noop +bind generic,pager,editor,index,compose,browser,attach N noop +bind generic,pager,editor,index,compose,browser,attach O noop +bind generic,pager,editor,index,compose,browser,attach P noop +bind generic,pager,editor,index,compose,browser,attach Q noop +bind generic,pager,editor,index,compose,browser,attach R noop +bind generic,pager,editor,index,compose,browser,attach S noop +bind generic,pager,editor,index,compose,browser,attach T noop +bind generic,pager,editor,index,compose,browser,attach U noop +bind generic,pager,editor,index,compose,browser,attach V noop +bind generic,pager,editor,index,compose,browser,attach W noop +bind generic,pager,editor,index,compose,browser,attach X noop +bind generic,pager,editor,index,compose,browser,attach Y noop +bind generic,pager,editor,index,compose,browser,attach Z noop + +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,index,compose,browser,attach noop +bind generic,pager,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop + +bind generic,pager,editor,index,compose,browser,attach 1 noop +bind generic,pager,editor,index,compose,browser,attach 2 noop +bind generic,pager,editor,index,compose,browser,attach 3 noop +bind generic,pager,editor,index,compose,browser,attach 4 noop +bind generic,pager,editor,index,compose,browser,attach 5 noop +bind generic,pager,editor,index,compose,browser,attach 6 noop +bind generic,pager,editor,index,compose,browser,attach 7 noop +bind generic,pager,editor,index,compose,browser,attach 8 noop +bind generic,pager,editor,index,compose,browser,attach 9 noop +bind generic,pager,editor,index,compose,browser,attach 0 noop +bind generic,pager,editor,index,compose,browser,attach ! noop +bind generic,pager,editor,index,compose,browser,attach @ noop +bind generic,pager,editor,index,compose,browser,attach $ noop +bind generic,pager,editor,index,compose,browser,attach % noop +bind generic,pager,editor,index,compose,browser,attach ^ noop +bind generic,pager,editor,index,compose,browser,attach & noop +bind generic,pager,editor,index,compose,browser,attach * noop +bind generic,pager,editor,index,compose,browser,attach ( noop +bind generic,pager,editor,index,compose,browser,attach ) noop + +bind generic,pager,editor,index,compose,browser,attach \Ca noop +bind generic,pager,editor,index,compose,browser,attach \Cb noop +bind generic,pager,editor,index,compose,browser,attach \Cc noop +bind generic,pager,editor,index,compose,browser,attach \Cd noop +bind generic,pager,editor,index,compose,browser,attach \Ce noop +bind generic,pager,editor,index,compose,browser,attach \Cf noop +bind generic,pager,editor,index,compose,browser,attach \Cg noop +bind generic,pager,editor,index,compose,browser,attach \Ch noop +bind generic,pager,editor,index,compose,browser,attach \Ci noop +bind generic,pager,editor,index,compose,browser,attach \Cj noop +bind generic,pager,editor,index,compose,browser,attach \Ck noop +bind generic,pager,editor,index,compose,browser,attach \Cl noop +bind generic,pager,editor,index,compose,browser,attach \Cm noop +bind generic,pager,editor,index,compose,browser,attach \Cn noop +bind generic,pager,editor,index,compose,browser,attach \Co noop +bind generic,pager,editor,index,compose,browser,attach \Cp noop +bind generic,pager,editor,index,compose,browser,attach \Cq noop +bind generic,pager,editor,index,compose,browser,attach \Cr noop +bind generic,pager,editor,index,compose,browser,attach \Cs noop +bind generic,pager,editor,index,compose,browser,attach \Ct noop +bind generic,pager,editor,index,compose,browser,attach \Cv noop +bind generic,pager,editor,index,compose,browser,attach \Cw noop +bind generic,pager,editor,index,compose,browser,attach \Cxe noop +bind generic,pager,editor,index,compose,browser,attach \Cx noop +bind generic,pager,editor,index,compose,browser,attach \Cy noop +bind generic,pager,editor,index,compose,browser,attach \Cz noop +bind generic,pager,editor,index,compose,browser,attach \CA noop +bind generic,pager,editor,index,compose,browser,attach \CB noop +bind generic,pager,editor,index,compose,browser,attach \CC noop +bind generic,pager,editor,index,compose,browser,attach \CD noop +bind generic,pager,editor,index,compose,browser,attach \CE noop +bind generic,pager,editor,index,compose,browser,attach \CF noop +bind generic,pager,editor,index,compose,browser,attach \CG noop +bind generic,pager,editor,index,compose,browser,attach \CH noop +bind generic,pager,editor,index,compose,browser,attach \CI noop +bind generic,pager,editor,index,compose,browser,attach \CJ noop +bind generic,pager,editor,index,compose,browser,attach \CK noop +bind generic,pager,editor,index,compose,browser,attach \CL noop +bind generic,pager,editor,index,compose,browser,attach \CM noop +bind generic,pager,editor,index,compose,browser,attach \CN noop +bind generic,pager,editor,index,compose,browser,attach \CO noop +bind generic,pager,editor,index,compose,browser,attach \CP noop +bind generic,pager,editor,index,compose,browser,attach \CQ noop +bind generic,pager,editor,index,compose,browser,attach \CR noop +bind generic,pager,editor,index,compose,browser,attach \CS noop +bind generic,pager,editor,index,compose,browser,attach \CT noop +bind generic,pager,editor,index,compose,browser,attach \CV noop +bind generic,pager,editor,index,compose,browser,attach \CW noop +bind generic,pager,editor,index,compose,browser,attach \CX noop +bind generic,pager,editor,index,compose,browser,attach \CY noop +bind generic,pager,editor,index,compose,browser,attach \CZ noop + +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop +bind generic,pager,editor,index,compose,browser,attach \C noop + +bind generic,pager,editor,index,compose,browser,attach \C1 noop +bind generic,pager,editor,index,compose,browser,attach \C2 noop +bind generic,pager,editor,index,compose,browser,attach \C3 noop +bind generic,pager,editor,index,compose,browser,attach \C4 noop +bind generic,pager,editor,index,compose,browser,attach \C5 noop +bind generic,pager,editor,index,compose,browser,attach \C6 noop +bind generic,pager,editor,index,compose,browser,attach \C7 noop +bind generic,pager,editor,index,compose,browser,attach \C8 noop +bind generic,pager,editor,index,compose,browser,attach \C9 noop +bind generic,pager,editor,index,compose,browser,attach \C0 noop +bind generic,pager,editor,index,compose,browser,attach \C! noop +bind generic,pager,editor,index,compose,browser,attach \C$ noop +bind generic,pager,editor,index,compose,browser,attach \C% noop +bind generic,pager,editor,index,compose,browser,attach \C^ noop +bind generic,pager,editor,index,compose,browser,attach \C& noop +bind generic,pager,editor,index,compose,browser,attach \C* noop +bind generic,pager,editor,index,compose,browser,attach \C( noop +bind generic,pager,editor,index,compose,browser,attach \C) noop + +bind generic,pager,editor,index,compose,browser,attach a noop +bind generic,pager,editor,index,compose,browser,attach b noop +bind generic,pager,editor,index,compose,browser,attach c noop +bind generic,pager,editor,index,compose,browser,attach d noop +bind generic,pager,editor,index,compose,browser,attach e noop +bind generic,pager,editor,index,compose,browser,attach f noop +bind generic,pager,editor,index,compose,browser,attach g noop +bind generic,pager,editor,index,compose,browser,attach h noop +bind generic,pager,editor,index,compose,browser,attach i noop +bind generic,pager,editor,index,compose,browser,attach j noop +bind generic,pager,editor,index,compose,browser,attach k noop +bind generic,pager,editor,index,compose,browser,attach l noop +bind generic,pager,editor,index,compose,browser,attach m noop +bind generic,pager,editor,index,compose,browser,attach n noop +bind generic,pager,editor,index,compose,browser,attach o noop +bind generic,pager,editor,index,compose,browser,attach p noop +bind generic,pager,editor,index,compose,browser,attach q noop +bind generic,pager,editor,index,compose,browser,attach r noop +bind generic,pager,editor,index,compose,browser,attach s noop +bind generic,pager,editor,index,compose,browser,attach t noop +bind generic,pager,editor,index,compose,browser,attach u noop +bind generic,pager,editor,index,compose,browser,attach v noop +bind generic,pager,editor,index,compose,browser,attach w noop +bind generic,pager,editor,index,compose,browser,attach x noop +bind generic,pager,editor,index,compose,browser,attach y noop +bind generic,pager,editor,index,compose,browser,attach z noop +bind generic,pager,editor,index,compose,browser,attach A noop +bind generic,pager,editor,index,compose,browser,attach B noop +bind generic,pager,editor,index,compose,browser,attach C noop +bind generic,pager,editor,index,compose,browser,attach D noop +bind generic,pager,editor,index,compose,browser,attach E noop +bind generic,pager,editor,index,compose,browser,attach F noop +bind generic,pager,editor,index,compose,browser,attach G noop +bind generic,pager,editor,index,compose,browser,attach H noop +bind generic,pager,editor,index,compose,browser,attach I noop +bind generic,pager,editor,index,compose,browser,attach J noop +bind generic,pager,editor,index,compose,browser,attach K noop +bind generic,pager,editor,index,compose,browser,attach L noop +bind generic,pager,editor,index,compose,browser,attach M noop +bind generic,pager,editor,index,compose,browser,attach N noop +bind generic,pager,editor,index,compose,browser,attach O noop +bind generic,pager,editor,index,compose,browser,attach P noop +bind generic,pager,editor,index,compose,browser,attach Q noop +bind generic,pager,editor,index,compose,browser,attach R noop +bind generic,pager,editor,index,compose,browser,attach S noop +bind generic,pager,editor,index,compose,browser,attach T noop +bind generic,pager,editor,index,compose,browser,attach U noop +bind generic,pager,editor,index,compose,browser,attach V noop +bind generic,pager,editor,index,compose,browser,attach W noop +bind generic,pager,editor,index,compose,browser,attach X noop +bind generic,pager,editor,index,compose,browser,attach Y noop +bind generic,pager,editor,index,compose,browser,attach Z noop + +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop +bind generic,pager,editor,index,compose,browser,attach noop + +bind generic,pager,editor,index,compose,browser,attach 1 noop +bind generic,pager,editor,index,compose,browser,attach 2 noop +bind generic,pager,editor,index,compose,browser,attach 3 noop +bind generic,pager,editor,index,compose,browser,attach 4 noop +bind generic,pager,editor,index,compose,browser,attach 5 noop +bind generic,pager,editor,index,compose,browser,attach 6 noop +bind generic,pager,editor,index,compose,browser,attach 7 noop +bind generic,pager,editor,index,compose,browser,attach 8 noop +bind generic,pager,editor,index,compose,browser,attach 9 noop +bind generic,pager,editor,index,compose,browser,attach 0 noop +bind generic,pager,editor,index,compose,browser,attach ! noop +bind generic,pager,editor,index,compose,browser,attach @ noop +bind generic,pager,editor,index,compose,browser,attach $ noop +bind generic,pager,editor,index,compose,browser,attach % noop +bind generic,pager,editor,index,compose,browser,attach ^ noop +bind generic,pager,editor,index,compose,browser,attach & noop +bind generic,pager,editor,index,compose,browser,attach * noop +bind generic,pager,editor,index,compose,browser,attach ( noop +bind generic,pager,editor,index,compose,browser,attach ) noop diff --git a/sway/config b/sway/config index b30f374..78112e5 100644 --- a/sway/config +++ b/sway/config @@ -201,6 +201,7 @@ bindsym $mod+p exec pcmanfm-qt bindsym $mod+Shift+p exec $term_float ranger bindsym $mod+u exec unipicker --command "rofi -dmenu | wl-copy" bindsym $mod+period exec $term_float khal interactive +bindsym $mod+comma exec $term_float neomutt # Special keys bindsym --locked XF86AudioMute exec $volume_mute