Compare commits
No commits in common. "bb580e7005ec8bdfee4f59de93c999c515605f4e" and "62788e165969beef3f5153fc796c9fd623629d4c" have entirely different histories.
bb580e7005
...
62788e1659
|
|
@ -1,194 +0,0 @@
|
|||
# vim: filetype=neomuttrc
|
||||
# This file contains all of mutt-wizard's default settings.
|
||||
# mutt-wizard will have this file sourced from your muttrc.
|
||||
# In the interest of seamless updating, do not edit this file.
|
||||
# If you want to override any settings, set those in your muttrc.
|
||||
set send_charset="us-ascii:utf-8"
|
||||
set mailcap_path = $HOME/.config/mutt/mailcap:$mailcap_path
|
||||
set mime_type_query_command = "file --mime-type -b %s"
|
||||
set date_format="%y/%m/%d %I:%M%p"
|
||||
set index_format="%2C %Z %?X?A& ? %D %-15.15F %s (%-4.4c)"
|
||||
set sort = 'reverse-date'
|
||||
#set smtp_authenticators = 'login'
|
||||
set query_command = "abook --mutt-query '%s'"
|
||||
set rfc2047_parameters = yes
|
||||
set sleep_time = 0 # Pause 0 seconds for informational messages
|
||||
set markers = no # Disables the `+` displayed at line wraps
|
||||
set mark_old = no # Unread mail stay unread until read
|
||||
set mime_forward = no # mail body is forwarded as text
|
||||
set forward_attachments = yes # 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 # include message in forwards
|
||||
set reverse_name # reply as whomever it was to
|
||||
set include # include message in replies
|
||||
set mail_check=60 # to avoid lags using IMAP with some email providers (yahoo for example)
|
||||
auto_view text/html # automatically show html (mailcap uses lynx)
|
||||
auto_view application/pgp-encrypted
|
||||
#set display_filter = "tac | sed '/\\\[-- Autoview/,+1d' | tac" # Suppress autoview messages.
|
||||
alternative_order text/plain text/enriched text/html
|
||||
|
||||
bind index,pager i noop
|
||||
bind index,pager g noop
|
||||
bind index \Cf noop
|
||||
bind index,pager M noop
|
||||
bind index,pager C noop
|
||||
|
||||
# General rebindings
|
||||
bind index gg first-entry
|
||||
bind index j next-entry
|
||||
bind index k previous-entry
|
||||
bind attach <return> view-mailcap
|
||||
bind attach l view-mailcap
|
||||
bind editor <space> noop
|
||||
bind index G last-entry
|
||||
bind pager,attach h exit
|
||||
bind pager j next-line
|
||||
bind pager k previous-line
|
||||
bind pager l view-attachments
|
||||
bind index D delete-message
|
||||
bind index U undelete-message
|
||||
bind index L limit
|
||||
bind index h noop
|
||||
bind index l display-message
|
||||
bind index,query <space> tag-entry
|
||||
#bind browser h goto-parent
|
||||
macro browser h '<change-dir><kill-line>..<enter>' "Go to parent folder"
|
||||
bind index,pager H view-raw-message
|
||||
bind browser l select-entry
|
||||
bind browser gg top-page
|
||||
bind browser G bottom-page
|
||||
bind pager gg top
|
||||
bind pager G bottom
|
||||
bind index,pager,browser d half-down
|
||||
bind index,pager,browser u half-up
|
||||
bind index,pager S sync-mailbox
|
||||
bind index,pager R group-reply
|
||||
bind index \031 previous-undeleted # Mouse wheel
|
||||
bind index \005 next-undeleted # Mouse wheel
|
||||
bind pager \031 previous-line # Mouse wheel
|
||||
bind pager \005 next-line # Mouse wheel
|
||||
bind editor <Tab> complete-query
|
||||
|
||||
macro index,pager gi "<change-folder>=INBOX<enter>" "go to inbox"
|
||||
macro index,pager Mi ";<save-message>=INBOX<enter>" "move mail to inbox"
|
||||
macro index,pager Ci ";<copy-message>=INBOX<enter>" "copy mail to inbox"
|
||||
macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts"
|
||||
macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts"
|
||||
macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts"
|
||||
macro index,pager gj "<change-folder>=Junk<enter>" "go to junk"
|
||||
macro index,pager Mj ";<save-message>=Junk<enter>" "move mail to junk"
|
||||
macro index,pager Cj ";<copy-message>=Junk<enter>" "copy mail to junk"
|
||||
macro index,pager gt "<change-folder>=Trash<enter>" "go to trash"
|
||||
macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash"
|
||||
macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash"
|
||||
macro index,pager gs "<change-folder>=Sent<enter>" "go to sent"
|
||||
macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent"
|
||||
macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent"
|
||||
macro index,pager ga "<change-folder>=Archive<enter>" "go to archive"
|
||||
macro index,pager Ma ";<save-message>=Archive<enter>" "move mail to archive"
|
||||
macro index,pager Ca ";<copy-message>=Archive<enter>" "copy mail to archive"
|
||||
|
||||
#set crypt_autosign = yes
|
||||
#set crypt_opportunistic_encrypt = yes
|
||||
#set pgp_self_encrypt = yes
|
||||
#set pgp_default_key = 'your@gpgemailaddre.ss'
|
||||
macro index \eg "<enter-command>unset wait_key<enter><shell-escape>gpg --list-secret-keys; printf 'Enter email ID of user to publish: '; read eID; printf 'Enter fingerprint of GPG key to publish: '; read eFGPT; $prefix/libexec/gpg-wks-client --create \\\$eFGPT \\\$eID | msmtp --read-envelope-from --read-recipients -a $fulladdr<enter>" "publish GPG key to WKS provider"
|
||||
macro index \eh "<pipe-message>$prefix/libexec/gpg-wks-client --receive | msmtp --read-envelope-from --read-recipients -a $fulladdr<enter>" "confirm GPG publication"
|
||||
|
||||
macro index,pager a "<enter-command>set my_pipe_decode=\$pipe_decode pipe_decode<return><pipe-message>abook --add-email<return><enter-command>set pipe_decode=\$my_pipe_decode; unset my_pipe_decode<return>" "add the sender address to abook"
|
||||
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
|
||||
macro index O "<shell-escape>mailsync<enter>" "run mailsync to sync all mail"
|
||||
macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>printf 'Enter a search term to find with notmuch: '; read x; echo \$x >~/.cache/mutt_terms<enter><limit>~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \`\"<enter>" "show only messages matching a notmuch pattern"
|
||||
macro index A "<limit>all\n" "show all messages (undo limit)"
|
||||
|
||||
# Sidebar mappings
|
||||
set sidebar_visible = yes
|
||||
set sidebar_width = 20
|
||||
set sidebar_short_path = yes
|
||||
set sidebar_next_new_wrap = yes
|
||||
set mail_check_stats
|
||||
set sidebar_format = '%D%?F? [%F]?%* %?N?%N/? %?S?%S?'
|
||||
bind index,pager \Ck sidebar-prev
|
||||
bind index,pager \Cj sidebar-next
|
||||
bind index,pager \Co sidebar-open
|
||||
bind index,pager \Cp sidebar-prev-new
|
||||
bind index,pager \Cn sidebar-next-new
|
||||
bind index,pager B sidebar-toggle-visible
|
||||
|
||||
# Default index colors:
|
||||
color index yellow default '.*'
|
||||
color index_author red default '.*'
|
||||
color index_number blue default
|
||||
color index_subject cyan default '.*'
|
||||
|
||||
# New mail is boldened:
|
||||
color index brightyellow black "~N"
|
||||
color index_author brightred black "~N"
|
||||
color index_subject brightcyan black "~N"
|
||||
|
||||
# Tagged mail is highlighted:
|
||||
color index brightyellow blue "~T"
|
||||
color index_author brightred blue "~T"
|
||||
color index_subject brightcyan blue "~T"
|
||||
|
||||
# Flagged mail is highlighted:
|
||||
color index brightgreen default "~F"
|
||||
color index_subject brightgreen default "~F"
|
||||
color index_author brightgreen default "~F"
|
||||
|
||||
# Other colors and aesthetic settings:
|
||||
mono bold bold
|
||||
mono underline underline
|
||||
mono indicator reverse
|
||||
mono error bold
|
||||
color normal default default
|
||||
color indicator brightblack white
|
||||
color sidebar_highlight red default
|
||||
color sidebar_divider brightblack black
|
||||
color sidebar_flagged red black
|
||||
color sidebar_new green black
|
||||
color error red default
|
||||
color tilde black default
|
||||
color message cyan default
|
||||
color markers red white
|
||||
color attachment white default
|
||||
color search brightmagenta default
|
||||
color status brightyellow black
|
||||
color hdrdefault brightgreen default
|
||||
color quoted green default
|
||||
color quoted1 blue default
|
||||
color quoted2 cyan default
|
||||
color quoted3 yellow default
|
||||
color quoted4 red default
|
||||
color quoted5 brightred default
|
||||
color signature brightgreen default
|
||||
color bold black default
|
||||
color underline black default
|
||||
|
||||
# Regex highlighting:
|
||||
color header brightmagenta default "^From"
|
||||
color header brightcyan default "^Subject"
|
||||
color header brightwhite default "^(CC|BCC)"
|
||||
color header blue default ".*"
|
||||
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
||||
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
||||
color body green default "\`[^\`]*\`" # Green text between ` and `
|
||||
color body brightblue default "^# \.*" # Headings as bold blue
|
||||
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
||||
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
||||
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
||||
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
||||
color body brightcyan default "[;:][)(|]" # emoticons
|
||||
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
||||
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
||||
color body red default "(BAD signature)"
|
||||
color body cyan default "(Good signature)"
|
||||
color body brightblack default "^gpg: Good signature .*"
|
||||
color body brightyellow default "^gpg: "
|
||||
color body brightyellow red "^gpg: BAD signature from.*"
|
||||
mono body bold "^gpg: Good signature"
|
||||
mono body bold "^gpg: BAD signature from.*"
|
||||
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
text/plain; $EDITOR %s ;
|
||||
text/html; /usr/local/lib/mutt-wizard/openfile %s ; nametemplate=%s.html
|
||||
text/html; lynx -assume_charset=%{charset} -display_charset=utf-8 -dump -width=1024 %s; nametemplate=%s.html; copiousoutput;
|
||||
image/*; /usr/local/lib/mutt-wizard/openfile %s ;
|
||||
video/*; setsid mpv --quiet %s &; copiousoutput
|
||||
audio/*; mpv %s ;
|
||||
application/pdf; /usr/local/lib/mutt-wizard/openfile %s ;
|
||||
application/pgp-encrypted; gpg -d '%s'; copiousoutput;
|
||||
application/pgp-keys; gpg --import '%s'; copiousoutput;
|
||||
application/x-subrip; $EDITOR %s ;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
# vim: filetype=neomuttrc
|
||||
source /home/gilou/.config/mutt/global.muttrc
|
||||
source /usr/local/share/mutt-wizard/mutt-wizard.muttrc
|
||||
source /home/gilou/.config/mutt/accounts/gil.portenseigne@nereide.fr.muttrc
|
||||
macro index,pager i1 '<sync-mailbox><enter-command>source /home/gilou/.config/mutt/accounts/gil.portenseigne@nereide.fr.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to gil.portenseigne@nereide.fr"
|
||||
macro index,pager i2 '<sync-mailbox><enter-command>source /home/gilou/.config/mutt/accounts/pgil@riseup.net.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to pgil@riseup.net"
|
||||
|
|
|
|||
|
|
@ -1,112 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# - Syncs mail for all accounts, or a single account given as an argument.
|
||||
# - Displays a notification showing the number of new mails.
|
||||
# - Displays a notification for each new mail with its subject displayed.
|
||||
# - Runs notmuch to index new mail.
|
||||
# - This script can be set up as a cron job for automated mail syncing.
|
||||
|
||||
# There are many arbitrary and ugly features in this script because it is
|
||||
# inherently difficult to pass environmental variables to cronjobs and other
|
||||
# issues. It also should at least be compatible with Linux (and maybe BSD) with
|
||||
# Xorg and MacOS as well.
|
||||
|
||||
# Run only if not already running in other instance
|
||||
pgrep mbsync >/dev/null && { echo "mbsync is already running."; exit ;}
|
||||
|
||||
# First, we have to get the right variables for the mbsync file, the pass
|
||||
# archive, notmuch and the GPG home. This is done by searching common profile
|
||||
# files for variable assignments. This is ugly, but there are few options that
|
||||
# will work on the maximum number of machines.
|
||||
eval "$(grep -h -- \
|
||||
"^\s*\(export \)\?\(MBSYNCRC\|MPOPRC\|PASSWORD_STORE_DIR\|PASSWORD_STORE_GPG_OPTS\|NOTMUCH_CONFIG\|GNUPGHOME\|MAILSYNC_MUTE\|XDG_CONFIG_HOME\|XDG_DATA_HOME\)=" \
|
||||
"$HOME/.profile" "$HOME/.bash_profile" "$HOME/.zprofile" "$HOME/.config/zsh/.zprofile" "$HOME/.zshenv" \
|
||||
"$HOME/.config/zsh/.zshenv" "$HOME/.bashrc" "$HOME/.zshrc" "$HOME/.config/zsh/.zshrc" \
|
||||
"$HOME/.pam_environment" 2>/dev/null)"
|
||||
|
||||
export GPG_TTY="$(tty)"
|
||||
|
||||
[ -n "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC" || MBSYNCRC="$HOME/.mbsyncrc"
|
||||
[ -n "$MPOPRC" ] || MPOPRC="$HOME/.config/mpop/config"
|
||||
|
||||
lastrun="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/.mailsynclastrun"
|
||||
|
||||
# Settings are different for MacOS (Darwin) systems.
|
||||
case "$(uname)" in
|
||||
Darwin) notify() { osascript -e "display notification \"$2\" with title \"$1\"" ;} ;;
|
||||
*)
|
||||
case "$(readlink -f /sbin/init)" in
|
||||
*systemd*|*openrc*) export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus ;;
|
||||
esac
|
||||
# remember if a display server is running since `ps` doesn't always contain a display
|
||||
pgrepoutput="$(pgrep -ax X\(\|org\|wayland\))"
|
||||
displays="$(echo "$pgrepoutput" | grep -wo "[0-9]*:[0-9]\+" | sort -u)"
|
||||
[ -z "$displays" ] && [ -d /tmp/.X11-unix ] && displays=$(cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; done)
|
||||
|
||||
notify() { [ -n "$pgrepoutput" ] && for x in ${displays:-:0}; do
|
||||
export DISPLAY="$x"
|
||||
notify-send --app-name="mutt-wizard" "$1" "$2"
|
||||
done ;}
|
||||
;;
|
||||
esac
|
||||
|
||||
# Check account for new mail. Notify if there is new content.
|
||||
syncandnotify() {
|
||||
case "$1" in
|
||||
imap) mbsync -q "$2" ;;
|
||||
pop) mpop -q "$2" ;;
|
||||
esac
|
||||
new=$(find\
|
||||
"$HOME/.local/share/mail/$2/"[Ii][Nn][Bb][Oo][Xx]/new/ \
|
||||
"$HOME/.local/share/mail/$2/"[Ii][Nn][Bb][Oo][Xx]/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 $2."
|
||||
[ -z "$MAILSYNC_MUTE" ] && notify "New Mail!" "📬 $newcount new mail(s) in \`$2\` account."
|
||||
;;
|
||||
$((newcount > 0)) )
|
||||
echo "$newcount new mail for $2."
|
||||
[ -z "$MAILSYNC_MUTE" ] &&
|
||||
for file in $new; do
|
||||
# Extract and decode subject and sender from mail.
|
||||
subject="$(sed -n "/^Subject:/ s|Subject: *|| p" "$file" |
|
||||
perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')"
|
||||
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 $2." ;;
|
||||
esac
|
||||
}
|
||||
|
||||
allaccounts="$(grep -hs "^\(Channel\|account\)" "$MBSYNCRC" "$MPOPRC")"
|
||||
|
||||
# Get accounts to sync. All if no argument. Prefix with `error` if non-existent.
|
||||
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
|
||||
Channel*) syncandnotify imap "${account##* }" & ;;
|
||||
account*) syncandnotify pop "${account##* }" & ;;
|
||||
error*) echo "ERROR: Account ${account##* } not found." ;;
|
||||
esac
|
||||
done
|
||||
|
||||
wait
|
||||
|
||||
notmuch new --quiet
|
||||
|
||||
#Create a touch file that indicates the time of the last run of mailsync
|
||||
touch "$lastrun"
|
||||
|
|
@ -1,22 +1,10 @@
|
|||
#/bin/bash
|
||||
|
||||
# check sudoer for install
|
||||
groups | grep -q sudo || echo "Please add $(whoami) to sudo group with : sudo usermod -aG sudo $(whoami), then reboot and relaunch this script"
|
||||
groups | grep -q sudo || return
|
||||
|
||||
# sudo usermod -aG sudo $user # pour passer sudoers, puis reboot
|
||||
sudo apt install -y neomutt curl isync msmtp pass lynx notmuch abook urlview
|
||||
|
||||
touch temp && echo "*/10 * * * * $HOME/.local/bin/mailsync" > temp && crontab temp && rm temp
|
||||
|
||||
|
||||
# Installation oh my bash
|
||||
[ ! -d "$HOME/.oh-my-bash/" ] && bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)" || echo "oh-my-bash installed"
|
||||
|
||||
# Installation config specif bash + aliases
|
||||
grep -q "gil_specific" "$HOME/.bashrc" && echo "Bash configured" || sed -i -e '$asource "$HOME"/.config/bash/gil_specific.sh\' $HOME/.bashrc
|
||||
grep "gil_specific" "$HOME/.bashrc" || sed -i -e '$asource "$HOME"/.config/bash/gil_specific.sh\' $HOME/.bashrc
|
||||
|
||||
# Installation sdkman
|
||||
[ ! -d "$HOME/.sdkman/" ] && curl -s "https://get.sdkman.io" | bash
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue