aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Reza Karimi <m.r.karimi.j@gmail.com>2026-01-18 01:33:29 -0500
committerMohammad Reza Karimi <m.r.karimi.j@gmail.com>2026-01-18 01:33:29 -0500
commit4052357e021085bc1c761108446ee09a778ade15 (patch)
treee8664f34056a9f34538e1abb0b3eead15ecb4d70
parent83113fff46023d6cde0c2d982978fe7f5a5cfce2 (diff)
big updates
-rw-r--r--aerc/dot-config/aerc/accounts.conf18
-rw-r--r--aerc/dot-config/aerc/aerc.conf31
-rwxr-xr-xaerc/dot-config/aerc/filters/html53
l---------aerc/dot-config/aerc/filters/html-unsafe1
-rw-r--r--aerc/dot-config/aerc/stylesets/default_nicer37
-rw-r--r--aerc/dot-config/aerc/templates/forward_as_body11
-rw-r--r--aerc/dot-config/aerc/templates/quoted_reply2
-rw-r--r--alacritty/dot-config/alacritty/alacritty.toml11
-rw-r--r--bash/dot-config/bash/functions.bash5
-rw-r--r--cal/dot-config/khal/config97
-rw-r--r--cal/dot-config/khard/khard.conf17
-rw-r--r--cal/dot-config/vdirsyncer/config61
-rw-r--r--email/dot-config/imapnotify/gmail.yaml15
-rw-r--r--email/dot-config/imapnotify/mit.yaml2
-rw-r--r--email/dot-config/isyncrc43
-rw-r--r--email/dot-config/maildir-rank-addr/config11
-rw-r--r--email/dot-config/msmtp/config19
-rw-r--r--email/dot-config/notmuch/default/config23
-rwxr-xr-xemail/dot-config/notmuch/default/hooks/post-new18
-rw-r--r--email/dot-config/oama/config.yaml3
-rw-r--r--email/dot-config/systemd/user/goimap@.service (renamed from email/dot-config/systemd/user/goimap.service)2
-rw-r--r--fonts/dot-config/fontconfig/conf.d/52-default-fonts.conf2
-rw-r--r--niri/dot-config/niri/config.kdl3
-rw-r--r--qute/dot-config/qutebrowser/config.py15
-rw-r--r--qute/dot-config/qutebrowser/greasemonkey/whatsapp.js3
-rw-r--r--qute/dot-config/qutebrowser/startpage.html2
-rw-r--r--scripts/dot-local/bin/dot-editorconfig6
-rwxr-xr-xscripts/dot-local/bin/mailsync150
-rw-r--r--waybar/dot-config/waybar/config.jsonc26
-rw-r--r--waybar/dot-config/waybar/style.css17
-rw-r--r--wayland-basics/dot-config/mako/config2
-rw-r--r--wayland-basics/dot-config/systemd/user/swaybg.service2
-rwxr-xr-xwayland-basics/dot-local/share/applications/mail.desktop5
33 files changed, 580 insertions, 133 deletions
diff --git a/aerc/dot-config/aerc/accounts.conf b/aerc/dot-config/aerc/accounts.conf
index 1e227f1..7a2fc27 100644
--- a/aerc/dot-config/aerc/accounts.conf
+++ b/aerc/dot-config/aerc/accounts.conf
@@ -1,6 +1,6 @@
[MIT]
source = maildir:///home/moreka/.local/share/mail/mit
-outgoing = /usr/bin/msmtp
+outgoing = /usr/bin/sendmail
default = INBOX
from = Mohammad Reza Karimi <moreka@mit.edu>
copy-to = Sent
@@ -8,8 +8,24 @@ postpone = Drafts
trash = Deleted
archive = Archive
aliases = moreka@MIT.EDU,MOREKA@MIT.EDU
+cache-headers = true
check-mail-cmd = mbsync mit
check-mail-timeout = 20s
folders-sort = INBOX,Sent,Drafts,Archive
+
+
+[Gmail]
+source = maildir:///home/moreka/.local/share/mail/m.r.karimi.j@gmail.com
+outgoing = /usr/bin/sendmail
+default = INBOX
+from = Mohammad Reza Karimi <m.r.karimi.j@gmail.com>
+copy-to = Sent
+postpone = Drafts
+cache-headers = true
+
+check-mail-cmd = mbsync m.r.karimi.j@gmail.com
+check-mail-timeout = 60s
+
+folders-sort = INBOX,Sent
diff --git a/aerc/dot-config/aerc/aerc.conf b/aerc/dot-config/aerc/aerc.conf
index 7f0d08d..4e3b133 100644
--- a/aerc/dot-config/aerc/aerc.conf
+++ b/aerc/dot-config/aerc/aerc.conf
@@ -1,16 +1,16 @@
+# vim: ft=confini
+
[general]
default-save-path=~/Downloads
pgp-provider=gpg
unsafe-accounts-conf=false
log-file=~/.cache/aerc.log
-log-level=warn
+log-level=error
term=alacritty
enable-osc8=true
-# default-menu-cmd=ranger --choosefiles=%f
default-menu-cmd=fzf --multi
[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
@@ -51,7 +51,7 @@ this-year-time-format=Jan 02
message-view-timestamp-format=2006 Jan 02, 15:04 GMT-0700
sidebar-width=14
# message-list-split=horizontal 20
-mouse-enabled=true
+mouse-enabled=false
new-message-bell=false
dirlist-delay=200ms
@@ -88,13 +88,25 @@ column-name = {{if .To}}{{index (.To | names) 0}}{{else}} malformed email{{end}}
column-flags = {{.Flags | join " "}}
[statusline]
+status-columns = account<=,3973e022e932<=,folder<=,status<=,cbe5cfdf7c21<=,cwd<=,e3b0c44298fc<*,e3b0c44298fc>=,tray>=
+column-cwd = {{cwd}}
+column-e3b0c44298fc =
+column-tray = {{.TrayInfo}}
+column-account = [{{.Account}}
+column-3973e022e932 = -
+column-folder = {{.Folder}}]
+column-status = {{.StatusInfo}}
+column-cbe5cfdf7c21 = |
+display-mode=text
[viewer]
pager=less -Rc
alternatives=text/plain,text/html
show-headers=false
-header-layout=From,To,Cc,Bcc,Date,Subject
-always-show-mime=false
+header-layout=From,Sender,To,Cc,Bcc,Date,Subject,Labels
+always-show-mime=true
+max-mime-height=8
+parse-http-links=true
[compose]
editor=nvim
@@ -102,7 +114,10 @@ header-layout=To,From,Subject
edit-headers=false
focus-body=false
-address-book-cmd=grep -i -m 100 %s /home/moreka/.cache/maildir-rank-addr/addressbook.tsv
+address-book-cmd=addr-book-combine \
+ -c "rg -F -i -- '%s' ~/.cache/maildir-rank-addr/addressbook.tsv" \
+ -c "khard email --remove-first-line --parsable '%s' | cut -f 1,2"
+
file-picker-cmd=lf -selection-path '%f'
@@ -149,7 +164,7 @@ text/html=pandoc -f markdown -t html --standalone
# 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/plain=wrap -w 100 | colorize
text/calendar=calendar
message/delivery-status=colorize
message/rfc822=colorize
diff --git a/aerc/dot-config/aerc/filters/html b/aerc/dot-config/aerc/filters/html
new file mode 100755
index 0000000..841131e
--- /dev/null
+++ b/aerc/dot-config/aerc/filters/html
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# aerc filter to view HTML emails with w3m.
+#
+# Networking access will be disabled unless the script is named 'html-unsafe'.
+#
+# If stdout is connected to a TTY, the interactive pager of w3m will be enabled.
+
+set -- w3m \
+ -I UTF-8 -O UTF-8 -T text/html \
+ -s -graph \
+ -o fold_textarea=true \
+ -o fold_line=true \
+ -o decode_url=true \
+ -o display_link=true \
+ "$@"
+
+if [ -t 1 ]; then
+ # stdout is connected to a terminal, enable interactive mode
+ set -- "$@" -o display_borders=true
+
+ if w3m --help 2>&1 | head -n1 | grep -q "options.*image"; then
+ # display inline images if support is enabled
+ set -- "$@" -o display_image=true -o auto_image=true
+ fi
+else
+ # stdout is connected to a pager, dump output without interaction
+ set -- "$@" -cols 100 -dump -o disable_center=true
+fi
+
+if ! [ "$(basename $0)" = "html-unsafe" ]; then
+ # attempt network isolation to prevent any phoning home by rendered emails
+ set -- "$@" -o no_cache=true -o use_cookie=false
+
+ if command -v unshare >/dev/null 2>&1; then
+ # run the command in a separate network namespace
+ set -- unshare --map-root-user --net "$@"
+ elif command -v socksify >/dev/null 2>&1; then
+ # if socksify (from dante-utils) is available, use it
+ export SOCKS_SERVER="127.0.0.1:1"
+ set -- socksify "$@"
+ else
+ # best effort, use an invalid address as http proxy
+ set -- "$@" -o use_proxy=true
+ for opt in http_proxy https_proxy gopher_proxy ftp_proxy; do
+ if w3m -o | grep -q $opt; then
+ set -- "$@" -o $opt='127.0.0.1:1'
+ fi
+ done
+ fi
+fi
+
+sed 's/&nbsp;/ /g' | exec "$@"
diff --git a/aerc/dot-config/aerc/filters/html-unsafe b/aerc/dot-config/aerc/filters/html-unsafe
new file mode 120000
index 0000000..724f4d4
--- /dev/null
+++ b/aerc/dot-config/aerc/filters/html-unsafe
@@ -0,0 +1 @@
+html \ No newline at end of file
diff --git a/aerc/dot-config/aerc/stylesets/default_nicer b/aerc/dot-config/aerc/stylesets/default_nicer
index 301a028..57d02b1 100644
--- a/aerc/dot-config/aerc/stylesets/default_nicer
+++ b/aerc/dot-config/aerc/stylesets/default_nicer
@@ -1,23 +1,48 @@
-# vim: ft=dosini
+# vim: ft=dosini commentstring=#\ %s
#
# aerc default styleset (with changes)
#
# Uncomment these two lines to reset all attributes (except in the [viewer]
# section) and start from scratch.
-#*.default = true
-#*.normal = true
+# *.default = true
+# *.normal = true
+
+# *.selected.reverse = toggle
+
+title.reverse = true
+header.bold = true
+
+*error.bold = true
+error.fg = red
+warning.fg = yellow
+success.fg = green
+
+# statusline*.default = true
+# statusline_default.reverse = true
+# statusline_error.fg = red
+# statusline_error.reverse = true
+
+tab.bg = #444444
*.selected.bg = 12
*.selected.fg = 0
*.selected.bold = false
+msglist.selected.bg = #87af87
+msglist_unread.bold = true
+msglist*.fg = #aaaaaa
+msglist_unread.fg = #cccccc
+msglist_deleted.dim = true
+msglist_marked.bg = yellow
+msglist_marked.fg = 0
+
tab.selected.fg = #ffffff
tab.selected.bg = #1640b0
-tab.selected.bold = false
+tab.selected.bold = true
-dirlist*.selected.bg = 11
-dirlist*.selected.fg = 0
+dirlist*.selected.bg = 0
+dirlist*.selected.fg = #d77575
dirlist*.selected.bold = true
#statusline_*.dim = true
diff --git a/aerc/dot-config/aerc/templates/forward_as_body b/aerc/dot-config/aerc/templates/forward_as_body
index d4c9dbf..ff9076a 100644
--- a/aerc/dot-config/aerc/templates/forward_as_body
+++ b/aerc/dot-config/aerc/templates/forward_as_body
@@ -1,6 +1,7 @@
-Forwarded message from {{.OriginalFrom | names | join ", "}} on {{dateFormat .OriginalDate "Mon Jan 2, 2006 at 15:04 MST"}}:
-{{.OriginalText}}
-{{- with .Signature }}
-
-{{.}}
+Forwarded message from {{(index .OriginalFrom 0).Name}} <{{(index .OriginalFrom 0).Address}}> on {{dateFormat .OriginalDate "Mon Jan 2, 2006 at 15:04 MST"}}:
+{{ if eq .OriginalMIMEType "text/html" -}}
+{{- exec `html` .OriginalText -}}
+{{- else -}}
+{{- .OriginalText -}}
{{- end }}
+{{.Signature}}
diff --git a/aerc/dot-config/aerc/templates/quoted_reply b/aerc/dot-config/aerc/templates/quoted_reply
index 27a3892..7b176d0 100644
--- a/aerc/dot-config/aerc/templates/quoted_reply
+++ b/aerc/dot-config/aerc/templates/quoted_reply
@@ -1,4 +1,4 @@
-On {{dateFormat (.OriginalDate | toLocal) "Mon Jan 2, 2006 at 15:04 MST"}}, {{.OriginalFrom | names | join ", "}} wrote:
+On {{dateFormat (.OriginalDate | toLocal) "Mon Jan 2, 2006 at 15:04 MST"}}, {{(index .OriginalFrom 0).Name}} <{{(index .OriginalFrom 0).Address}}> wrote:
{{ if eq .OriginalMIMEType "text/html" -}}
{{- exec `html` .OriginalText | trimSignature | quote -}}
{{- else -}}
diff --git a/alacritty/dot-config/alacritty/alacritty.toml b/alacritty/dot-config/alacritty/alacritty.toml
index fead41a..6f6af7d 100644
--- a/alacritty/dot-config/alacritty/alacritty.toml
+++ b/alacritty/dot-config/alacritty/alacritty.toml
@@ -2,12 +2,15 @@
live_config_reload = true
[font]
-normal = { family = "Dejavu Sans Mono", style = "Book" }
+# normal = { family = "Dejavu Sans Mono", style = "Book" }
+normal = { family = "Liberation Mono", style = "Book" }
size = 12
[window]
padding = { x = 3, y = 3 }
+dynamic_padding = true
dynamic_title = true
+opacity = 1.0
[scrolling]
history = 5000
@@ -32,9 +35,5 @@ bindings = [
{ key = "K", mods = "Alt", mode = "~Vi", action = "ScrollLineUp" },
{ key = "F11", action = "ToggleFullscreen" },
{ key = "N", mods = "Control|Shift", mode = "~Vi", action = "CreateNewWindow" },
-]
-
-[hints]
-enabled = [
- { regex = "^.*\\.md", hyperlinks = true, command = "alanvim", binding = { key = "T", mods = "Alt", mode = "~Vi" } }
+ { key = "P", mods = "Alt|Shift", mode = "~Vi", command = "toggle-alacritty-font-size" },
]
diff --git a/bash/dot-config/bash/functions.bash b/bash/dot-config/bash/functions.bash
index 33bfd67..a8c0a65 100644
--- a/bash/dot-config/bash/functions.bash
+++ b/bash/dot-config/bash/functions.bash
@@ -42,6 +42,11 @@ pS()
pacman -Slq | fzf --multi --preview 'pacman -Si {1}' | xargs -ro sudo pacman -S
}
+paruS()
+{
+ paru -Slq | fzf --multi --preview 'paru -Si {1}' | xargs -ro paru -S
+}
+
yayS()
{
yay -Slq | fzf --multi --preview 'yay -Si {1}' | xargs -ro yay -S
diff --git a/cal/dot-config/khal/config b/cal/dot-config/khal/config
new file mode 100644
index 0000000..b2f5c2f
--- /dev/null
+++ b/cal/dot-config/khal/config
@@ -0,0 +1,97 @@
+# vim: ft=dosini commentstring=#\ %s
+
+[calendars]
+
+[[google-basic]]
+path = ~/.local/share/vdirsyncer/calendars/google/m.r.karimi.j@gmail.com/
+color = dark blue
+
+[[google-mit]]
+path = ~/.local/share/vdirsyncer/calendars/google/e226ae4bc148235546e47f7f333b825b35642cd08018edd849c35840cc103167@group.calendar.google.com/
+color = dark red
+
+[[google-holiday-iran]]
+path = ~/.local/share/vdirsyncer/calendars/google/cln2sqbi4dk6ur39chgnig37e9nnas1eeon66obccln68obi5pjmurr7dhiisorfdk@virtual
+color = "#aaaaaa"
+
+[[google-holiday-switzerland]]
+path = ~/.local/share/vdirsyncer/calendars/google/cln2sor84dk6ur39chgnig37e9nnas1eeon66obccln68obi5pjmurr7dhiisorfdk@virtual
+color = "#aaaaaa"
+
+[[google-holiday-us]]
+path = ~/.local/share/vdirsyncer/calendars/google/cln2stbjc4hmgrrcd5i62ua0ctp6utbg5pr2sor1dhimsp31e8n6errfctm6abj3dtmg@virtual
+color = "#aaaaaa"
+
+[[moreka]]
+path = ~/.local/share/vdirsyncer/calendars/moreka.cc/b3f68fb7-93d3-2129-5b31-bb490d4bc387/
+color = dark magenta
+
+[locale]
+timeformat = %H:%M
+dateformat = %d.%m.%Y
+longdateformat = %d.%m.%Y
+datetimeformat = %d.%m.%Y %H:%M
+longdatetimeformat = %d.%m.%Y %H:%M
+
+[default]
+default_calendar = moreka
+highlight_event_days = True
+timedelta = 7d
+
+[view]
+frame = top
+
+[highlight_days]
+multiple = yellow
+
+[palette]
+# 1. Foreground color and settings for 16-color (normal) mode
+# 2. Background color for normal mode
+# 3. Settings for monochrome mode (optional)
+# 4. Foreground color and settings for 88 and 256-color modes (optional)
+# 5. Background color for 88 and 256-color modes (optional)
+
+header = 'light red', 'black'
+# ('footer', 'white', 'black'),
+'line header' = 'black', 'white', 'bold', '#ff0000', ''
+# ('alt header', 'white', '', 'bold'),
+# ('bright', 'dark blue', 'white', 'bold,standout'),
+# list = '', ''
+# list focused = 'white', 'light blue', 'bold'
+edit = 'black', 'white', '', '#cccccc', '#333333'
+edit focus = 'white', 'light red', 'bold'
+# ('button', 'black', 'dark cyan'),
+# ('button focused', 'white', 'light blue', 'bold'),
+#
+# ('reveal focus', 'black', 'light gray'),
+# ('today focus', 'white', 'dark magenta'),
+# ('today', 'dark gray', 'dark green',),
+#
+date header = 'white', 'black', '', '#cccccc,underline', 'black'
+date header focused = 'dark gray', 'black', 'bold', '#cccccc,bold', '#444444'
+date header selected = 'dark gray', 'black', '', '#cccccc,bold', '#333333'
+
+# ('date header', '', 'white'),
+# ('date header focused', 'white', 'dark gray', 'bold,standout'),
+# ('date header selected', 'dark gray', 'light cyan'),
+
+# ('dayname', 'light gray', ''),
+# ('monthname', 'light gray', ''),
+# ('weeknumber_right', 'light gray', ''),
+# ('alert', 'white', 'dark red'),
+# ('mark', 'white', 'dark green'),
+# ('frame', 'white', 'black'),
+# ('frame focus', 'light red', 'black'),
+# ('frame focus color', 'dark blue', 'black'),
+# ('frame focus top', 'dark magenta', 'black'),
+#
+# ('eventcolumn', '', '', ''),
+# ('eventcolumn focus', '', '', ''),
+# ('calendar', '', '', ''),
+# ('calendar focus', '', '', ''),
+#
+# ('editbx', 'light gray', 'dark blue'),
+# ('editcp', 'black', 'light gray', 'standout'),
+# ('popupbg', 'white', 'black', 'bold'),
+# ('popupper', 'white', 'dark cyan'),
+# ('caption', 'white', '', 'bold'),
diff --git a/cal/dot-config/khard/khard.conf b/cal/dot-config/khard/khard.conf
new file mode 100644
index 0000000..9ab1870
--- /dev/null
+++ b/cal/dot-config/khard/khard.conf
@@ -0,0 +1,17 @@
+# vim: ft=confini
+
+[addressbooks]
+[[gmail]]
+path = ~/.local/share/vdirsyncer/contacts/google/default/
+
+[general]
+default_action = list
+editor = nvim, -i, NONE
+merge_editor = vimdiff
+
+[contact table]
+display = formatted_name
+sort = last_name
+localize_dates = yes
+preferred_email_address_type = pref, work, home
+show_kinds = no
diff --git a/cal/dot-config/vdirsyncer/config b/cal/dot-config/vdirsyncer/config
new file mode 100644
index 0000000..abdc264
--- /dev/null
+++ b/cal/dot-config/vdirsyncer/config
@@ -0,0 +1,61 @@
+# vim: ft=confini
+
+[general]
+status_path = "~/.local/state/vdirsyncer/"
+
+##### Google Contacts #####
+
+[pair gmail_contacts]
+a = "gmail_contacts_local"
+b = "gmail_contacts_remote"
+collections = ["from a", "from b"]
+metadata = ["displayname"]
+
+[storage gmail_contacts_local]
+type = "filesystem"
+path = "~/.local/share/vdirsyncer/contacts/google"
+fileext = ".vcf"
+
+[storage gmail_contacts_remote]
+type = "google_contacts"
+token_file = "~/.local/state/vdirsyncer/googlecard-token"
+client_id.fetch = ["command", "pass", "show", "google/oauth/clientid"]
+client_secret.fetch = ["command", "pass", "show", "google/oauth/clientsecret"]
+
+##### Google Calendar #####
+
+[pair googlecalendars]
+a = "googlecaldav_local"
+b = "googlecaldav_remote"
+metadata = ["color", "displayname", "description", "order"]
+collections = ["from a", "from b"]
+
+[storage googlecaldav_local]
+type = "filesystem"
+path = "~/.local/share/vdirsyncer/calendars/google"
+fileext = ".ics"
+
+[storage googlecaldav_remote]
+type = "google_calendar"
+client_id.fetch = ["command", "pass", "show", "google/oauth/clientid"]
+client_secret.fetch = ["command", "pass", "show", "google/oauth/clientsecret"]
+token_file = "~/.local/state/vdirsyncer/googlecal-token"
+
+##### Moreka.cc Calendar #####
+
+[pair moreka_calendar]
+a = "moreka_calendar_local"
+b = "moreka_calendar_remote"
+collections = ["from a", "from b"]
+metadata = ["displayname"]
+
+[storage moreka_calendar_local]
+type = "filesystem"
+path = "~/.local/share/vdirsyncer/calendars/moreka.cc"
+fileext = ".ics"
+
+[storage moreka_calendar_remote]
+type = "caldav"
+url = "https://dav.moreka.cc/moreka/b3f68fb7-93d3-2129-5b31-bb490d4bc387/"
+username = "moreka"
+password.fetch = ["command", "pass", "show", "dav-moreka-cc"]
diff --git a/email/dot-config/imapnotify/gmail.yaml b/email/dot-config/imapnotify/gmail.yaml
new file mode 100644
index 0000000..20cc4a0
--- /dev/null
+++ b/email/dot-config/imapnotify/gmail.yaml
@@ -0,0 +1,15 @@
+configurations:
+ -
+ host: imap.gmail.com
+ port: 993
+ tls: true
+ tlsOptions:
+ rejectUnauthorized: false
+ starttls: false
+ username: m.r.karimi.j@gmail.com
+ passwordCmd: 'pass api-keys/google-app-password'
+ onNewMail: 'mailsync m.r.karimi.j@gmail.com'
+ onNewMailPost: SKIP
+ boxes:
+ -
+ mailbox: INBOX
diff --git a/email/dot-config/imapnotify/mit.yaml b/email/dot-config/imapnotify/mit.yaml
index 6aabeae..d850ba0 100644
--- a/email/dot-config/imapnotify/mit.yaml
+++ b/email/dot-config/imapnotify/mit.yaml
@@ -9,7 +9,7 @@ configurations:
xoAuth2: true
username: moreka@mit.edu
passwordCmd: 'oama access moreka@mit.edu'
- onNewMail: 'mailsync'
+ onNewMail: 'mailsync mit'
onNewMailPost: SKIP
boxes:
-
diff --git a/email/dot-config/isyncrc b/email/dot-config/isyncrc
index e57ece5..58b4af2 100644
--- a/email/dot-config/isyncrc
+++ b/email/dot-config/isyncrc
@@ -48,3 +48,46 @@ Channel sync-mit-default
Channel sync-mit-sent
Channel sync-mit-deleted
Channel sync-mit-junk
+
+IMAPAccount gmail-mrkarimij
+Host imap.gmail.com
+User m.r.karimi.j@gmail.com
+PassCmd "oama access m.r.karimi.j@gmail.com"
+TLSType IMAPS
+CertificateFile /etc/ssl/certs/ca-certificates.crt
+Timeout 360
+
+IMAPStore gmail-mrkarimij-remote
+Account gmail-mrkarimij
+
+MaildirStore gmail-mrkarimij-local
+SubFolders Verbatim
+Path /home/moreka/.local/share/mail/m.r.karimi.j@gmail.com/
+Inbox /home/moreka/.local/share/mail/m.r.karimi.j@gmail.com/INBOX
+
+Channel gmail-mrkarimij-inbox
+Far :gmail-mrkarimij-remote:INBOX
+Near :gmail-mrkarimij-local:INBOX
+Create Near
+Expunge Both
+SyncState *
+ExpireUnread no
+
+Channel gmail-mrkarimij-sent
+Far :gmail-mrkarimij-remote:"[Gmail]/Sent Mail"
+Near :gmail-mrkarimij-local:Sent
+Create Near
+Expunge Both
+SyncState *
+
+Channel gmail-mrkarimij-drafts
+Far :gmail-mrkarimij-remote:"[Gmail]/Drafts"
+Near :gmail-mrkarimij-local:Drafts
+Create Near
+Expunge Both
+SyncState *
+
+Group m.r.karimi.j@gmail.com
+Channel gmail-mrkarimij-inbox
+Channel gmail-mrkarimij-sent
+Channel gmail-mrkarimij-drafts
diff --git a/email/dot-config/maildir-rank-addr/config b/email/dot-config/maildir-rank-addr/config
new file mode 100644
index 0000000..0ba5932
--- /dev/null
+++ b/email/dot-config/maildir-rank-addr/config
@@ -0,0 +1,11 @@
+# vim: ft=toml
+maildir = "~/.local/share/mail/mit"
+addresses = [
+ "moreka@mit.edu",
+ "moreka@MIT.EDU",
+ "m.r.karimi.j@gmail.com",
+]
+addr-book-cmd = "khard email -p --remove-first-line"
+addr-book-add-unmatched = true
+outputpath = "~/.cache/maildir-rank-addr/addressbook.tsv"
+template = "{{.Address}}\t{{.Name}}\t{{.NormalizedName}}"
diff --git a/email/dot-config/msmtp/config b/email/dot-config/msmtp/config
index e000852..02f21e4 100644
--- a/email/dot-config/msmtp/config
+++ b/email/dot-config/msmtp/config
@@ -1,14 +1,25 @@
defaults
-auth on
+
tls on
-tls_starttls off
+logfile ~/.cache/msmtp.log
account mit
host outgoing.mit.edu
port 465
+tls_starttls off
+auth on
from moreka@mit.edu
user moreka
-passwordeval "pass show mail/smtp"
-logfile ~/.cache/msmtp.log
+passwordeval pass show mail/smtp
+
+account gmail
+host smtp.gmail.com
+port 587
+auth oauthbearer
+tls_starttls on
+from m.r.karimi.j@gmail.com
+user m.r.karimi.j@gmail.com
+passwordeval oama access m.r.karimi.j@gmail.com
+tls_trust_file /etc/ssl/certs/ca-certificates.crt
account default : mit
diff --git a/email/dot-config/notmuch/default/config b/email/dot-config/notmuch/default/config
index eeacdcc..bfdbf65 100644
--- a/email/dot-config/notmuch/default/config
+++ b/email/dot-config/notmuch/default/config
@@ -6,33 +6,12 @@ name=Mohammad Reza Karimi
primary_email=moreka@mit.edu
[new]
-tags=new
+tags=inbox;unread;
ignore=.mbsyncstate;.uidvalidity;.mbsyncstate.new;.mbsyncstate.lock
[search]
exclude_tags=deleted;spam
-# Maildir compatibility configuration
-#
-# The following option is supported here:
-#
-# synchronize_flags Valid values are true and false.
-#
-# If true, then the following maildir flags (in message filenames)
-# will be synchronized with the corresponding notmuch tags:
-#
-# Flag Tag
-# ---- -------
-# D draft
-# F flagged
-# P passed
-# R replied
-# S unread (added when 'S' flag is not present)
-#
-# The "notmuch new" command will notice flag changes in filenames
-# and update tags, while the "notmuch tag" and "notmuch restore"
-# commands will notice tag changes and update flags in filenames
-
[maildir]
synchronize_flags=true
diff --git a/email/dot-config/notmuch/default/hooks/post-new b/email/dot-config/notmuch/default/hooks/post-new
index 063888b..f03a5d1 100755
--- a/email/dot-config/notmuch/default/hooks/post-new
+++ b/email/dot-config/notmuch/default/hooks/post-new
@@ -1,10 +1,18 @@
#!/bin/sh
-# remove "unread" from "replied"
-notmuch tag -unread -new -- tag:replied
+# tag emails in the Deleted folder as deleted
+notmuch tag +deleted -unread -inbox -- folder:mit/Deleted
+
+# tag emails in the Deleted folder as deleted
+notmuch tag +archived -unread -inbox -- folder:mit/Archive
-# tag all "new" messages "inbox" and "unread"
-notmuch tag +inbox +unread -new -- '(tag:new and folder:mit/INBOX)'
+# tag emails in the Deleted folder as deleted
+notmuch tag +sent -unread -inbox -- folder:mit/Sent
+notmuch tag +sent -unread -inbox -- folder:m.r.karimi.j@gmail.com/Sent
+
+# remove "unread" from "replied"
+notmuch tag -unread -- tag:replied
# tag my replies as "sent"
-notmuch tag -new -unread +sent -- '(from:"moreka@mit.edu*" not to:"moreka@mit.edu*" not tag:archived)'
+notmuch tag -unread +sent -- '(from:"moreka@mit.edu*" not to:"moreka@mit.edu*" not to:"moreka@MIT.EDU*" not tag:archived)'
+notmuch tag -unread +sent -- '(from:"m.r.karimi.j@gmail.com*" not to:"m.r.karimi.j@gmail.com*" not tag:archived)'
diff --git a/email/dot-config/oama/config.yaml b/email/dot-config/oama/config.yaml
index 7f68064..2b5ceb2 100644
--- a/email/dot-config/oama/config.yaml
+++ b/email/dot-config/oama/config.yaml
@@ -13,3 +13,6 @@ services:
microsoft:
client_id: 9e5f94bc-e8a4-4e73-b8be-63364c29d753
tenant: common
+ google:
+ client_id_cmd: pass show google/oauth/clientid
+ client_secret_cmd: pass show google/oauth/clientsecret
diff --git a/email/dot-config/systemd/user/goimap.service b/email/dot-config/systemd/user/goimap@.service
index e908999..157af79 100644
--- a/email/dot-config/systemd/user/goimap.service
+++ b/email/dot-config/systemd/user/goimap@.service
@@ -7,7 +7,7 @@ After=network-online.target
[Service]
Type=simple
-ExecStart=/usr/bin/goimapnotify -conf %h/.config/imapnotify/mit.yaml
+ExecStart=/usr/bin/goimapnotify -conf %h/.config/imapnotify/%i.yaml
Restart=always
RestartSec=300
diff --git a/fonts/dot-config/fontconfig/conf.d/52-default-fonts.conf b/fonts/dot-config/fontconfig/conf.d/52-default-fonts.conf
index 625f63d..c278060 100644
--- a/fonts/dot-config/fontconfig/conf.d/52-default-fonts.conf
+++ b/fonts/dot-config/fontconfig/conf.d/52-default-fonts.conf
@@ -28,7 +28,7 @@
<alias>
<family>monospace</family>
<prefer>
- <family>Hack</family>
+ <family>Liberation Mono</family>
<family>Noto Color Emoji</family>
<family>Symbols Nerd Font</family>
</prefer>
diff --git a/niri/dot-config/niri/config.kdl b/niri/dot-config/niri/config.kdl
index 4afdfff..5758fd0 100644
--- a/niri/dot-config/niri/config.kdl
+++ b/niri/dot-config/niri/config.kdl
@@ -37,6 +37,7 @@ output "eDP-1" {
layout {
gaps 10
center-focused-column "never"
+ always-center-single-column
preset-column-widths {
proportion 0.33333
proportion 0.5
@@ -92,6 +93,7 @@ binds {
Mod+P hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
Mod+X hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
Mod+B hotkey-overlay-title="Open browser" { spawn-sh "runapp -o qutebrowser"; }
+ Mod+M hotkey-overlay-title="Open mail" { spawn-sh "runapp -o -- alacritty -e aerc-mod"; }
Mod+Shift+B { spawn "toggle-waybar"; }
@@ -184,6 +186,7 @@ binds {
Print { screenshot; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
+ Mod+Print { spawn "colorpick"; }
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
diff --git a/qute/dot-config/qutebrowser/config.py b/qute/dot-config/qutebrowser/config.py
index 8b6ce2c..feaf581 100644
--- a/qute/dot-config/qutebrowser/config.py
+++ b/qute/dot-config/qutebrowser/config.py
@@ -18,7 +18,7 @@ c.completion.open_categories = [
"filesystem",
]
-c.new_instance_open_target = "tab-bg"
+c.new_instance_open_target = "tab"
c.tabs.show = "multiple"
c.tabs.last_close = "close"
@@ -63,11 +63,16 @@ config.bind(
c.editor.command = ["alacritty", "-e", "nvim", "{file}", "-c", "normal {line}G{column}"]
+# c.aliases.update(
+# {
+# "save-to-zotero": """jseval --quiet var d=document,s=d.createElement("script");s.src="https://www.zotero.org/bookmarklet/loader.js";(d.body?d.body:d.documentElement).appendChild(s);void(0);""",
+# "zotero": "spawn --userscript qute-zotero",
+# }
+# )
+
c.colors.statusbar.private.bg = "#CF87E8"
c.colors.webpage.preferred_color_scheme = "dark"
-
-# c.colors.webpage.darkmode.enabled = True
c.colors.webpage.darkmode.algorithm = "lightness-cielab"
c.colors.webpage.darkmode.threshold.foreground = 150
c.colors.webpage.darkmode.threshold.background = 100
@@ -81,7 +86,9 @@ with config.pattern("*://*.slack.com/*") as p:
p.content.unknown_url_scheme_policy = "allow-all"
with config.pattern("*://accounts.google.com/*") as p:
- p.content.headers.user_agent = "Mozilla/5.0 ({os_info}; rv:131.0) Gecko/20100101 Firefox/131.0"
+ p.content.headers.user_agent = (
+ "Mozilla/5.0 ({os_info}; rv:131.0) Gecko/20100101 Firefox/131.0"
+ )
c.content.blocking.enabled = True
c.content.blocking.method = "both"
diff --git a/qute/dot-config/qutebrowser/greasemonkey/whatsapp.js b/qute/dot-config/qutebrowser/greasemonkey/whatsapp.js
index a7c9a42..587b09a 100644
--- a/qute/dot-config/qutebrowser/greasemonkey/whatsapp.js
+++ b/qute/dot-config/qutebrowser/greasemonkey/whatsapp.js
@@ -20,6 +20,9 @@
span[dir="rtl"] {
font-family: "Vazirmatn RD UI" !important;
}
+ div[dir="rtl"] > span.quoted-mention {
+ font-family: "Vazirmatn RD UI" !important;
+ }
footer p[dir="rtl"] span {
font-family: "Vazirmatn RD UI" !important;
}`;
diff --git a/qute/dot-config/qutebrowser/startpage.html b/qute/dot-config/qutebrowser/startpage.html
index 51b294b..bf53c0d 100644
--- a/qute/dot-config/qutebrowser/startpage.html
+++ b/qute/dot-config/qutebrowser/startpage.html
@@ -4,7 +4,7 @@
<title>about:blank</title>
<style>
body {
- background-color: #2e3440; /* Dark background example */
+ background-color: #181818; /* Dark background example */
/* color: #eceff4; */
font-family: "Bitter Pro";
letter-spacing: 1px;
diff --git a/scripts/dot-local/bin/dot-editorconfig b/scripts/dot-local/bin/dot-editorconfig
index a882442..dcc9f21 100644
--- a/scripts/dot-local/bin/dot-editorconfig
+++ b/scripts/dot-local/bin/dot-editorconfig
@@ -1,7 +1,11 @@
root = true
-[*]
+[[shell]]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
+switch_case_indent = false
+space_redirects = true
+keep_padding = true
+function_next_line = true
diff --git a/scripts/dot-local/bin/mailsync b/scripts/dot-local/bin/mailsync
index 8029444..7e16626 100755
--- a/scripts/dot-local/bin/mailsync
+++ b/scripts/dot-local/bin/mailsync
@@ -1,54 +1,116 @@
#!/usr/bin/env sh
-# Run only if not already running in other instance
-pgrep mbsync >/dev/null && {
- echo "mbsync is already running."
- exit
+VERBOSE=
+if [ "$1" = "-v" ]; then
+ VERBOSE=1
+ shift
+fi
+
+mbsync_running()
+{
+ account_escaped=$(printf '%s\n' "$1" | sed 's/[.[\*^$()+?{|\\]/\\&/g')
+
+ pgrep -f "^mbsync([[:space:]]+[^ ]+)*[[:space:]]+$account_escaped($|[[:space:]])" >/dev/null ||
+ pgrep -f "^mbsync([[:space:]]+[^ ]+)*[[:space:]]+-a($|[[:space:]])" >/dev/null
}
+# Run only if not already running in other instance
+if mbsync_running "$1"; then
+ _acc="$([ -z "$1" ] && echo "all" || echo "$1")"
+ echo "mbsync ($_acc) is already running."
+ exit
+fi
+
notify()
{
- notify-send --app-name="Mail" -- "$1" "$2"
+ notify-send --app-name="Mail" -- "$1" "$2"
+}
+
+MAILDIR="$XDG_DATA_HOME/mail"
+lastrun_base="$XDG_CACHE_HOME/.mailsynclastrun"
+lastrun="$lastrun_base"
+[ -n "$1" ] && {
+ lastrun="${lastrun}_$1"
+}
+time_lastrun="$(stat -c %Y "$lastrun" 2>/dev/null || echo '0')"
+
+[ -f "$lastrun_base" ] || touch "$lastrun_base"
+[ -f "$lastrun" ] || touch "$lastrun"
+
+rm_flag=
+mbsync_flag="-q"
+notmuch_flag="--quiet"
+if [ -n "$VERBOSE" ]; then
+ rm_flag="-v"
+ mbsync_flag="--verbose"
+ notmuch_flag="--verbose"
+fi
+
+# delete all +deleted messages
+notmuch search --format=text0 --output=files tag:deleted | xargs -0 --no-run-if-empty rm $rm_flag
+
+sync_and_notify()
+{
+ mbsync $mbsync_flag "$1"
+
+ new=$(fd --type f --changed-after "@$time_lastrun" . "$MAILDIR/$1/INBOX/new/" "$MAILDIR/$1/INBOX/cur/" 2>/dev/null)
+ newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l)
+
+ case 1 in
+ $((newcount > 5)))
+ echo "$newcount new mail for $1."
+ notify "New Mail!" "$newcount new mail(s)."
+ ;;
+ $((newcount > 0)))
+ echo "$newcount new mail for $1."
+ for file in $new; do
+ # Extract and decode subject and sender from mail.
+ subject=$(awk '/^Subject: / && ++n == 1,/^.*: / && ++i == 2' "$file" | head -n-1 |
+ perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' |
+ sed 's/^Subject: //' | tr -d '\n\t')
+ from="$(sed -n "/^From:/ s|From: *|| p" "$file" |
+ perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')"
+ from="${from% *}"
+ from="${from%\"}"
+ from="${from#\"}"
+ notify "$from:" "$subject"
+ done
+ ;;
+ *) echo "No new mail for $1." ;;
+ esac
}
-# export GPG_TTY="$(tty)"
-# export DISPLAY=":0"
-# export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$(id -u)"/bus
-export MAILDIR="$XDG_DATA_HOME/mail"
-lastrun="$XDG_CACHE_HOME/.mailsynclastrun"
-# export PYTHONWARNINGS="ignore::UserWarning"
-
-# afew --move-mails --all
-mbsync -q mit
-
-new=$(find "$MAILDIR/mit/INBOX/new/" "$MAILDIR/mit/INBOX/cur/" -type f -newer "$lastrun" 2>/dev/null)
-newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l)
-
-case 1 in
- $((newcount > 5)))
- echo "$newcount new mail for mit."
- notify "New Mail!" "$newcount new mail(s)."
- ;;
- $((newcount > 0)))
- echo "$newcount new mail for mit."
- for file in $new; do
- # Extract and decode subject and sender from mail.
- subject=$(awk '/^Subject: / && ++n == 1,/^.*: / && ++i == 2' "$file" | head -n-1 |
- perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' |
- sed 's/^Subject: //' | tr -d '\n\t')
- from="$(sed -n "/^From:/ s|From: *|| p" "$file" |
- perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')"
- from="${from% *}"
- from="${from%\"}"
- from="${from#\"}"
- notify "$from:" "$subject"
- done
- ;;
- *) echo "No new mail for mit." ;;
-esac
-
-# notmuch new
-# afew --tag --new
+allaccounts="$(grep -hs "^\(Group\)" "$XDG_CONFIG_HOME/isyncrc")"
+
+IFS='
+'
+if [ -z "$1" ]; then
+ tosync="$allaccounts"
+else
+ tosync="$(for arg in "$@"; do for availacc in $allaccounts; do
+ [ "$arg" = "${availacc##* }" ] && echo "$availacc" && break
+ done || echo "error $arg"; done)"
+fi
+
+for account in $tosync; do
+ case $account in
+ Group*) sync_and_notify "${account##* }" & ;;
+ error*) echo "ERROR: Account ${account##* } not found." ;;
+ esac
+done
+
+wait
+
+if pgrep -f 'notmuch new' >/dev/null; then
+ notify "Notmuch running" "Notmuch new is running from another sync.\n Please run it again later."
+else
+ notmuch new $notmuch_flag
+fi
#Create a touch file that indicates the time of the last run of mailsync
-touch "$lastrun"
+if [ -z "$1" ]; then
+ # if no args are provided, touch all files
+ touch "${lastrun_base}"*
+else
+ touch "$lastrun"
+fi
diff --git a/waybar/dot-config/waybar/config.jsonc b/waybar/dot-config/waybar/config.jsonc
index 1d9be84..d3aee7f 100644
--- a/waybar/dot-config/waybar/config.jsonc
+++ b/waybar/dot-config/waybar/config.jsonc
@@ -37,7 +37,7 @@
"clock": {
"interval": 60,
"format": "{:%a\n%d\n%b\n\n%H\n%M}",
- "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+ "tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>",
"justify": "center"
},
"backlight": {
@@ -63,7 +63,6 @@
"format-full": "{icon}",
"format-charging": "󰢝\n{capacity}%",
"format-plugged": "",
- "format-alt": "{power}W\n{icon}",
"format-icons": [
"",
"",
@@ -71,7 +70,8 @@
"",
""
],
- "justify": "center"
+ "justify": "center",
+ "tooltip-format": "{capacity}% {power}W ({time})"
},
"power-profiles-daemon": {
"format": "{icon}",
@@ -85,18 +85,20 @@
},
"network": {
"format-wifi": "",
- "format-ethernet": "{ipaddr}/{cidr} ",
- "tooltip-format": "{ifname} via {gwaddr} ",
- "format-linked": "{ifname} (No IP) ",
- "format-disconnected": "⚠",
- "format-alt": "{ifname}: {ipaddr}/{cidr}",
- "justify": "center"
+ "format-ethernet": "",
+ "format-disconnected": "󰲛",
+ "tooltip-format-ethernet": "{ipaddr}/{cidr}",
+ "tooltip-format-wifi": "{essid} ({signalStrength}%) {gwaddr}",
+ "tooltip-format-disconnected": "Disconnected",
+ "format-linked": "-",
+ "justify": "center",
+ "on-click": "runapp -o -- alacritty -e impala"
},
"wireplumber": {
"format": "{icon}",
"format-muted": "",
- "on-click": "app2unit-term -- bash -c 'wpctl status | less'",
- "on-click-right": "swayosd-client --output-volume mute-toggle && update-led-mute sink",
+ "on-click": "runapp -o -- alacritty -e bash -c 'wpctl status | less'",
+ "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && update-led-mute sink",
"max-volume": 100,
"scroll-step": 5,
"format-icons": {
@@ -117,7 +119,7 @@
"niri/language": {
"format": "{}",
"format-en": "en",
- "format-fa": "فارسی"
+ "format-fa": "فا"
},
"niri/window": {
"icon": true,
diff --git a/waybar/dot-config/waybar/style.css b/waybar/dot-config/waybar/style.css
index a8769a1..c232813 100644
--- a/waybar/dot-config/waybar/style.css
+++ b/waybar/dot-config/waybar/style.css
@@ -41,9 +41,9 @@ tooltip label {
}
#workspaces button {
- padding: 2px 2px;
+ padding: 0px;
border: none;
- border-radius: 10px;
+ border-radius: 40px;
background-color: transparent;
margin-bottom: 4px;
}
@@ -54,6 +54,9 @@ tooltip label {
#workspaces button label {
color: #bbbbbb;
+ font-size: 10px;
+ padding: 0px;
+ margin: 0px;
}
#workspaces button:hover {
@@ -67,16 +70,16 @@ tooltip label {
#workspaces button.active:not(.empty) {
background-color: #005577;
- border: 1px solid #0088aa;
+ /* border: 1px solid #0088aa; */
}
#workspaces button.active label {
- /* font-weight: bolder; */
+ font-weight: 900;
color: #eeeeee;
}
#workspaces button:not(.active):not(.empty) {
- border: 1px solid #444444;
+ /* border: 1px solid #444444; */
}
@@ -102,7 +105,7 @@ tooltip label {
#scratchpad,
#power-profiles-daemon,
#mpd {
- padding: 5 0px;
+ padding: 5px 0px;
}
#clock {
@@ -113,7 +116,7 @@ tooltip label {
#window,
#workspaces {
- margin: 4 0px;
+ margin: 4px 0px;
}
@keyframes blink {
diff --git a/wayland-basics/dot-config/mako/config b/wayland-basics/dot-config/mako/config
index f5d0ed5..54b25dd 100644
--- a/wayland-basics/dot-config/mako/config
+++ b/wayland-basics/dot-config/mako/config
@@ -32,7 +32,7 @@ invisible=false
[app-name=Mail]
default-timeout=10000
on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga
-on-button-left=exec runapp -o -- alacritty -e aerc
+on-button-left=exec runapp -o -- alacritty -e aerc-mod
[urgency=critical]
default-timeout=0
diff --git a/wayland-basics/dot-config/systemd/user/swaybg.service b/wayland-basics/dot-config/systemd/user/swaybg.service
index d2e891b..81b5169 100644
--- a/wayland-basics/dot-config/systemd/user/swaybg.service
+++ b/wayland-basics/dot-config/systemd/user/swaybg.service
@@ -5,7 +5,7 @@ After=graphical-session.target
[Service]
Type=exec
-ExecStart=/usr/bin/swaybg -m fill -i /home/moreka/Pictures/wallpapers/great-wave-of-kanagawa-gruvbox.png
+ExecStart=/usr/bin/swaybg -m fill -i /home/moreka/Pictures/wallpapers/gruv.jpg
Restart=on-failure
[Install]
diff --git a/wayland-basics/dot-local/share/applications/mail.desktop b/wayland-basics/dot-local/share/applications/mail.desktop
index f36fa88..6942566 100755
--- a/wayland-basics/dot-local/share/applications/mail.desktop
+++ b/wayland-basics/dot-local/share/applications/mail.desktop
@@ -1,4 +1,7 @@
[Desktop Entry]
Type=Application
Name=Mail
-Exec=alacritty -e neomutt %u
+
+Exec=alacritty -e aerc %u
+Terminal=false
+MimeType=x-scheme-handler/mailto