Point dotfiles to install to /etc/skel.

This commit is contained in:
Cyteen May 2020-02-22 14:27:48 +00:00
parent 0c09336159
commit 7e1627bdaa
4 changed files with 425 additions and 341 deletions

View File

@ -11,7 +11,7 @@ apt-get install -y khard
# or with:
# 'cat template.yaml | khard new -a address_book'
NEOMUTTCONF=~/.config/mutt
NEOMUTTCONF=/etc/skel/.config/mutt
cat >> ${NEOMUTTCONF}/muttrc <<'EOF'
## khard integration
@ -32,12 +32,12 @@ macro index,pager A \
EOF
mkdir -p ~/.contacts/family/
mkdir -p ~/.contacts/friends/
mkdir -p ~/.contacts/business/
mkdir -p /etc/skel/.contacts/family/
mkdir -p /etc/skel/.contacts/friends/
mkdir -/etc/skel/.contacts/business/
# /usr/share/doc/khard/examples/khard/khard.conf.example
~/.config/khard/khard.conf <<'EOF'
/etc/skel/.config/khard/khard.conf <<'EOF'
[addressbooks]
[[family]]
path = ~/.contacts/family/

View File

@ -1,13 +1,17 @@
#!/usr/bin/env bash
## an initial tagging script for notmuch mail
#FIXME: NOT TESTED YET needs notmuch-mutt installed first
#FIXME: add afew tagging: https://readthedocs.org/projects/afew/downloads/pdf/latest/
apt-get install -y afew # provides /usr/bin/afew
mkdir -p ~/.config/afew/
mkdir -p /etc/skel/.config/afew/
# Put a list of filters into ~/.config/afew/config :
cat > ~/.config/afew/config <<'EOF'
cat > /etc/skel/.config/afew/config <<'EOF'
# This is the default filter chain
[SpamFilter]
[KillThreadsFilter]
@ -26,7 +30,7 @@ sed -i '/\[new\]/{n;s/.*/tags=new\;/}' .notmuch-config
# After running notmuch new, all new messages will be marked new. You can then do various tag post-processing by just acting on messages with that tag.
MAILDIR="$HOME/.local/share/mail" # set by mutt-wizard setup
MAILDIR="/etc/skel/.local/share/mail" # set by mutt-wizard setup
# And create a post-new hook for notmuch.
mkdir -p ${MAILDIR}/.notmuch/hooks
@ -70,7 +74,7 @@ EOF
#---------------------------------------------------------------------
cat > ~/.config/afew/afew.config-example <<'EOF'
cat > /etc/skel/.config/afew/afew.config-example <<'EOF'
# global configuration
[global]

View File

@ -8,8 +8,8 @@
apt-get install -y notmuch-mutt
NEOMUTTCONF="$HOME/config/mutt/"
MAILDIR="$HOME/.local/share/mail" # set by mutt-wizard setup
NEOMUTTCONF="/etc/skel/.config/mutt/"
MAILDIR='/etc/skel/.local/share/mail' # set by mutt-wizard setup
cat >> ${NEOMUTTCONF}/muttrc <<'EOF'
# notmuch

View File

@ -1,4 +1,28 @@
#!/usr/bin/bash
#!/usr/bin/env bash
set -e
# Some useful hints
# ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
# • The critical mutt/neomutt files are in ~/.config/mutt/.
# • Put whatever global settings you want in muttrc. mutt-wizard will add some
# lines to this file, which you shouldn't remove unless you know what youre
# doing, but you can move them up/down over your personal config lines, if you
# need to. If you get binding conflict errors in mutt you might need to do this.
# • Each of the accounts that mutt-wizard generates will have custom settings set
# in a separate file in accounts/. You can edit these freely if you want to
# tinker with settings specific to an account.
# • In /usr/share/mutt-wizard are several global config files, including mutt-
# wizards default settings. You can overwride this in your muttrc if you wish.
# • For Gmail accounts, remember also to enable third-party ("less secure") appli-
# cations before attempting installation.
# • Protonmail accounts will require you to set up "Protonmail Bridge" to access
# PM's IMAP and SMTP servers. Configure that before running mutt-wizard.
# • If you have a university email, or enterprise-hosted email for work, there
# might be other hurdles or two-factor authentication you have to jump through.
# Some, for example, will want you to create a separate IMAP password, etc.
# • If you use an email server whose mailboxes are not in English, mutt-wizard
# might not be able to guess which is which, so you may have to manually set
# your Inbox, Sent, Trash, Drafts, etc. in your mutt config file. Do this after
# running the wizard in accounts/NAME.muttrc.
# isync
@ -11,63 +35,42 @@
# cronie (optional) auto-sync mails - alt.: fcron
# dunst (optional) enable desktop notifications about new mail
# fcron (optional) auto-sync mails - alt.: cronie
# imagemagick (optional) view images inside of the neomutt TUI
# libnotify (optional) enable desktop notifications about new mail
# pam-gnupg (optional) automatically unlock gpg keys at session login
# urlview (optional) list URLs found in mails to open them in a browser
# w3m (optional) view HTML email and images inside of the neomutt TUI
# elinks (optional) view HTML email inside of the neomutt TUI
# links (optional) view HTML email inside of the neomutt TUI
# lynx (optional) view HTML email inside of the neomutt TUI
# w3m (optional) view HTML email inside of the neomutt TUI
# w3m-img (optional) view images inside of the neomutt TUI
# imagemagick (optional) view images inside of the neomutt TUI
set -x
#set -x
apt-get install -y git neomutt urlscan w3m w3m-img ripmime isync msmtp vdirsyncer pass mailsync libnotify-bin lynx urlview
echo 'alias mutt="neomutt "' >> ~/.zsh_aliases.d/002_neomutt.zsh
BASE_USER=LukeSmithxyz
BASE_REPO=mutt-wizard
PROJECT=${BASE_USER}/${BASE_REPO}
PRERELEASE=false
# RELEASE=$(curl "https://api.github.com/repos/${PROJECT}/releases?per_page=5" | jq -r '.[0] | select( .prerelease = false ) |.tag_name')
# VERSION=$(echo "${RELEASE}" | cut -c 2- | cut -f1 -d"-")
VERSION=$( date +%Y-%m-%d_ )git
BUILD_DIR=/var/tmp/build_mutt-wizard
mkdir -p ${BUILD_DIR}
# make a containing directory
mkdir -p /var/tmp/${BASE_REPO}-"${RELEASE}"
cd /var/tmp/${BASE_REPO}-"${RELEASE}" || exit
cat > ${BUILD_DIR}/description-pak << EOF
A system for automatically configuring mutt and isync with a simple interface and safe passwords
EOF
## Files and directories to be created:
# $HOME/usr/local/share/mutt-wizard/mutt-wizard.muttrc
# $HOME/usr/local/share/mutt-wizard/mutt-wizard-colors.muttrc
# $HOME/.config/mutt/muttrc
# $HOME/.config/mutt/colorschemes/colors-gruvbox-shuber-extended.muttrc
# $HOME/.config/mutt/colorschemes/colors-gruvbox-shuber.muttrc
# $HOME/.config/mutt/accounts/1-example_profile.muttrc
cat > ${BUILD_DIR}/checkinstall_it.sh << 'EOF'
echo "ENTERING CHECKINSTALL"
echo 'alias mutt="neomutt "' >> $HOME/.zsh_aliases.d/002_neomutt.zsh
# Shared variables for the heredocs
BASE_URL='https://api.github.com/repos'
BASE_USER='LukeSmithxyz'
BASE_REPO='mutt-wizard'
LICENSE_PAGE_URL="${BASE_URL}/${BASE_USER}/${BASE_REPO}"/license
RELEASES_URL="${BASE_URL}/${BASE_USER}/${BASE_REPO}"/releases
USER='LukeSmithxyz'
PROJECT='mutt-wizard'
LICENSE_PAGE_URL="https://raw.githubusercontent.com/${USER}/${PROJECT}/master/LICENSE"
#LICENSE=$(curl -s "${LICENSE_PAGE_URL}")
LICENSE=GPL
RELEASES_URL="${BASE_URL}/${USER}/${PROJECT}"/releases
PRERELEASE=false
## No releases so no api page other than license so use git repo
# CONTENT=$(curl -s ${RELEASES_URL}/latest)
# LATEST_URL=$(echo "${CONTENT}" | jq --raw-output '.assets[] | select(.browser_download_url | test("Linux-x86_64")) | .browser_download_url')
LATEST_URL=https://github.com/${USER}/${PROJECT}
echo "LATEST_URL: " "${LATEST_URL}"
#WORKDIR=$(mktemp -d -p $HOME/tmptmp -t mutt-wizard_build-XXXXXXX) || exit 1
#trap "rm -rf '${WORKDIR}'" EXIT
WORKDIR="/var/tmp/mutt-wizard-workdir"
# RELEASE=$(echo "${CONTENT}" | jq --raw-output '.tag_name')
# LICENSE_URL=$(curl "${LICENSE_PAGE_URL}" | jq --raw-output '.download_url')
@ -77,55 +80,265 @@ VERSION=$( date +%Y-%m-%d_ )git
VERSION=1.0
RELEASE=git
# make a new temporary directory for this use
BASE_TMP_DIR=~/tmptmp/checkinstall_tmp
mkdir -p ${BASE_TMP_DIR}
# do your work
checkinstall -y --fstrans \
--pkgname=mutt-wizard \
--pkgversion=${VERSION}\
--pkgrelease=${RELEASE} \
--pkgarch=amd64 \
--pkggroup=admin \
--pkglicense=LICENSE \
--pkgsource=${LATEST_URL} \
--maintainer=cyteen@ring-zero.co.uk \
--requires=neomutt,isync,msmtp,pass \
-D \
bash ./install.sh
EOF
cat > ./install.sh << 'FOE'
BASE_URL='https://api.github.com/repos'
BASE_USER='LukeSmithxyz'
BASE_REPO='mutt-wizard'
# RELEASES_URL="${BASE_URL}/${BASE_USER}/${BASE_REPO}"/releases
# CONTENT=$(curl -s ${RELEASES_URL}/latest)
# LATEST_URL=$(echo "${CONTENT}" | jq --raw-output '.assets[] | select(.browser_download_url | test("Linux-x86_64")) | .browser_download_url')
LATEST_URL=https://github.com/LukeSmithxyz/mutt-wizard
## Download and copy the latest version to /usr/local/bin and make executable
git clone ${LATEST_URL} /var/tmp/mutt-wizard
cd /var/tmp/mutt-wizard
make install
## Create directories and configuration files
# '$ mw add' and follow the prompts.
BUILD_DIR=/var/tmp/build_mutt-wizard
MUTTWIZARDCONF="/usr/local/share/mutt-wizard"
MUTTDIR="$HOME/.config/mutt"
#MUTTDIR="$HOME/.config/mutt"
MUTTDIR="${BUILD_DIR}/skel/.config/mutt"
#MUTTDOCS="/usr/share/doc/mutt-wizard"
MUTTDOCS="${BUILD_DIR}/doc-pak"
EXAMPLES="${MUTTDOCS}/examples"
ACCDIR="${MUTTDIR}/accounts"
COLORSCHEMES="${MUTTDIR}/colorschemes"
FONTS="${MUTTDIR}/fonts"
# email settings
PROFILE_NAME=example_profile
EMAIL=foobar@foo.bar
REAL_NAME="foo bar"
## Checkinstall variables - see defaults in /etc/checkinstallrc
DOC_DIR=/usr/share/doc
# make a new temporary directory for this use to avoid permission issues.
BASE_TMP_DIR=~/tmptmp/checkinstall_tmp
#-------------------------------------------------------------------------------
wget -c -P ${MUTTDOCS} ${LICENSE_PAGE_URL}
mkdir -p ${BUILD_DIR}
# make a containing directory
mkdir -p /var/tmp/${PROJECT}-"${RELEASE}"
cd /var/tmp/${PROJECT}-"${RELEASE}" || exit
#--------------------------------------------------------------------------------------
## Create and populate the install scripts and documentation for checkinstall
cat > ${BUILD_DIR}/description-pak << EOF
mutt-wizard
A system for automatically configuring mutt and isync with a simple interface and safe passwords
EOF
# | preinstall-pak | Run BEFORE the package is INSTALLED |
cat > ${BUILD_DIR}/preinstall-pak << EOF
#!/usr/bin/env bash
EOF
# | postinstall-pak | Run AFTER the package is INSTALLED |
cat > ${BUILD_DIR}/postinstall-pak << EOF
#!/usr/bin/env bash
set -e
set -x
# For every user in /home/ ...
for HOME_U in /home/*?; do
# Obtain the username
USER=$( basename ${HOME_U} )
# In case the user is active (exists in /etc/shadow) ...
if [ $( grep -c "${USER}:.*:.*:.*:.*:.*:::" /etc/shadow ) == 1 ] \
&& [ $( grep -c "${USER}:.*:.*:.*:.*:.*:/bin/.*sh" /etc/passwd ) == 1 ] \
&& [ -d ${HOME_U}/.config ] \
&& [ -d ${HOME_U} ]; then
# Copies files a user has deleted that you want to put back again but does not update files that already exist.
getent passwd |
while IFS=: read username x uid gid gecos home shell
do
[[ "$username" == root || ! -d "$home" ]] && continue
tar -cf - -C /etc/skel/.config/mutt . | sudo -Hu "$username" tar --skip-old-files -xf -
done
fi
done
EOF
# | preremove-pak | Run BEFORE the package is REMOVED |
cat > ${BUILD_DIR}/preremove-pak << EOF
#!/usr/bin/env bash
EOF
# | postremove-pak | Run AFTER the package is REMOVED
cat > ${BUILD_DIR}/postremove-pak << EOF
#!/usr/bin/env bash
EOF
## Make the doc-pak directory for README, INSTALL, COPYING, Changelog, TODO, CREDITS
mkdir -p ${BUILD_DIR}/doc-pak
#cp README INSTALL COPYING Changelog TODO CREDITS doc-pak
cat > ${BUILD_DIR}/doc-pak/README << 'EOF'
Some useful hints
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
• The critical mutt/neomutt files are in ~/.config/mutt/.
• Put whatever global settings you want in muttrc. mutt-wizard will add some
lines to this file, which you shouldn't remove unless you know what youre
doing, but you can move them up/down over your personal config lines, if you
need to. If you get binding conflict errors in mutt you might need to do this.
• Each of the accounts that mutt-wizard generates will have custom settings set
in a separate file in accounts/. You can edit these freely if you want to
tinker with settings specific to an account.
• In /usr/share/mutt-wizard are several global config files, including mutt-
wizards default settings. You can overwride this in your muttrc if you wish.
• For Gmail accounts, remember also to enable third-party ("less secure") appli-
cations before attempting installation.
• Protonmail accounts will require you to set up "Protonmail Bridge" to access
PM's IMAP and SMTP servers. Configure that before running mutt-wizard.
• If you have a university email, or enterprise-hosted email for work, there
might be other hurdles or two-factor authentication you have to jump through.
Some, for example, will want you to create a separate IMAP password, etc.
• If you use an email server whose mailboxes are not in English, mutt-wizard
might not be able to guess which is which, so you may have to manually set
your Inbox, Sent, Trash, Drafts, etc. in your mutt config file. Do this after
running the wizard in accounts/NAME.muttrc.
Help the project
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
• Try mutt-wizard out on weird machines and weird email addresses and report any
errors.
• Open a PR to add new server information into domains.csv, so their users can
more easily use mutt-wizard.
• If nothing else, donate: https://paypal.me/LukeMSmith !
See Lukes website: https://lukesmith.xyz/ - email him at: luke<at>lukesmith.xyz
--> mutt-wizard is free/libre software, licensed under the GPLv3 <--
EOF
#--------------------------------------------------------------------------------------
## Files and directories to be created:
# /usr/local/share/mutt-wizard/mutt-wizard.muttrc
# /usr/local/share/mutt-wizard/mutt-wizard-colors.muttrc
# $HOME/.config/mutt/muttrc
# $HOME/.config/mutt/colorschemes/colors-gruvbox-shuber-extended.muttrc
# $HOME/.config/mutt/colorschemes/colors-gruvbox-shuber.muttrc
# $HOME/.config/mutt/accounts/1-example_profile.muttrc
#--------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------
cat > ${BUILD_DIR}/checkinstall_it.sh << FOE
set -e
#set -x
echo "******************************"
echo "ENTERING CHECKINSTALL"
echo "******************************"
echo "Making MUTTDIR: ${MUTTDIR} from ${PWD}"
echo "Making MUTTDIR ${MUTTDIR}"
mkdir -p ${MUTTDIR}
echo "Making COLORSCHEMES ${COLORSCHEMES}"
mkdir -p ${COLORSCHEMES}
mkdir -p ${fonts}
mkdir -p ${ACCDIR}
git clone https://github.com/sheoak/neomutt-powerline-nerdfonts.git ${MUTTDIR}/powerline
#echo "Making ACCDIR ${ACCDIR}"
#mkdir -p ${ACCDIR}
echo "Making MUTTDOCS ${MUTTDOCS}"
mkdir -p ${MUTTDOCS}
echo "Making FONTS ${FONTS}"
mkdir -p ${FONTS}
mkdir -p ${EXAMPLES}
mkdir -p ${EXAMPLES}/colorschemes
mkdir -p ${EXAMPLES}/accounts
mkdir -p ${EXAMPLES}/fonts
## git clone https://github.com/sheoak/neomutt-powerline-nerdfonts.git
cat <<EOF | tee ${COLORSCHEMES}/gruvbox-powerline.neomuttrc >> ${EXAMPLES}/colorschemes/gruvbox-powerline.neomuttrc
# cancel theme colors
color index color223 color234 ~Q
color index color223 color234 ~P
color index color223 color234 ~T
color index color223 color234 ~O
color index color223 color234 ~F
color index color223 color234 ~N
# add some nice custom coloring to the message list
# thanks to new neomutt features
# http://www.mutt.org/doc/manual/#patterns
# https://neomutt.org/feature/index-color
color index_subject color109 color234 "~P !~T !~D"
color index_author color109 color234 "~P !~T !~D"
color index_subject color243 color234 "~Q !~T !~D"
color index_author color243 color234 "~Q !~T !~D"
color index_subject brightcolor142 color234 "~N !~T !~D"
color index_author brightcolor142 color234 "~N !~T !~D"
color index_subject color142 color234 "~O !~T !~D"
color index_author color142 color234 "~O !~T !~D"
color index_subject color214 color234 "~F !~T !~D"
color index_author color214 color234 "~F !~T !~D"
color index_subject brightcolor214 color234 "~F ~N !~T !~D"
color index_author brightcolor214 color234 "~F ~N !~T !~D"
color index_subject color167 color234 "~= !~T !~D"
color index_author color167 color234 "~= !~T !~D"
color index_subject brightcolor109 color234 "~P ~N !~T !~D"
color index_author brightcolor109 color234 "~P ~N !~T !~D"
color index color234 color223 "~T"
color index color229 color124 "~D"
EOF
cat <<EOF | tee ${FONTS}/powerline.neomuttrc >> ${EXAMPLES}/fonts/powerline.neomuttrc
# ----------------------------------------------------------------------------
# Powerline / nerdfont
# This is a bit "hackish" due to neomutt limitations
#
# Author: Sheoak <contact [at] sheoak.fr>
# ----------------------------------------------------------------------------
set index_format=" %zs %zc %zt %{!%d %b} . %-28.28L %?M?(%1M)& ? %?X?&·? %s"
set pager_format=" %n %zc  %T %s%*  %{!%d %b · %H:%M} %?X?  %X ? %P  "
set status_format = " %f%?r? %r?   %m %?n?  %n ?  %?d?  %d ?%?t?  %t ?%?F?  %F? %> %?p?  %p ?"
set vfolder_format = " %N %?n?%3n& ? %8m  · %f"
set attach_format = "%u%D  %T%-75.75d %?T?%& ? %5s · %m/%M"
# 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 = " "
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" \
color status white black
# powerline status bar hack
color status green black ''
color status yellow black ''
color status red black ''
color status brightblack blue '(.*)' 1
color status blue black '.*()' 1
color status black blue '\s* [0-9]+\s*'
color status blue black '().*$' 1
color status yellow black '()\s*\s*[0-9]+\s*' 1
color status black yellow '\s*\s*[0-9]+\s*'
color status blue yellow '() ([0-9]+%|all|end) \s*' 1
color status black blue ' ([0-9]+%|all|end) \s*'
color status yellow black '()\s*' 1
color status default black ''
EOF
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/neonwolf-256.neomuttrc
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/zenburn.neomuttrc
@ -135,7 +348,10 @@ wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/mas
#wget -c -P ${COLORSCHEMES} https://git.sthu.org/?p=shutils.git;a=blob_plain;f=dotfiles/mutt/colors-gruvbox-shuber.muttrc;hb=master
#wget -c -P ${COLORSCHEMES} https://git.sthu.org/?p=shutils.git;a=blob_plain;f=dotfiles/mutt/colors-gruvbox-shuber-extended.muttrc;hb=master
cat >${COLORSCHEMES}/colors-gruvbox-shuber-extended.muttrc <<EOF
cp -a ${COLORSCHEMES} ${EXAMPLES}/colorschemes
#cat >${COLORSCHEMES}/colors-gruvbox-shuber-extended.muttrc <<EOF
cat <<EOF | tee ${COLORSCHEMES}/colors-gruvbox-shuber-extended.muttrc >> ${EXAMPLES}/colorschemes/colors-gruvbox-shuber-extended.muttrc
color compose header color223 color234
color compose security_encrypt color175 color234
color compose security_sign color109 color234
@ -143,7 +359,8 @@ color compose security_both color142 color234
color compose security_none color208 color234
EOF
cat >${COLORSCHEMES}/colors-gruvbox-shuber.muttrc <<EOF
#cat >${COLORSCHEMES}/colors-gruvbox-shuber.muttrc <<EOF
cat <<EOF | tee ${COLORSCHEMES}/colors-gruvbox-shuber.muttrc >> ${EXAMPLES}/colorschemes/colors-gruvbox-shuber.muttrc
# gruvbox dark (contrast dark):
# bg0 = 234
@ -227,239 +444,45 @@ color body color214 color234 "^gpg: signature verification suppressed"
color body color214 color234 "^gpg: invalid node with packet of type"
EOF
# split the existing mutt-wizard.muttrc into two to separate the colours from everything else so other colourschemes can be used.
cat > ${MUTTWIZARDCONF}/mutt-wizard.muttrc <<'EOF'
# 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 mailcap_path = /usr/local/share/mutt-wizard/mailcap
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 = 'gssapi: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 = 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 w3m)
auto_view application/pgp-encrypted
alternative_order text/plain text/enriched text/html
bind index,pager i noop
bind index,pager g noop
bind index \Cf noop
# General rebindings
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 index gg first-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 <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 pager,browser gg top-page
bind pager,browser G bottom-page
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 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>mbsync -a<enter>" "run mbsync to sync all mail"
macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>read -p 'Enter a search term to find with notmuch: ' 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 = '%B%?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
EOF
cat > ${MUTTWIZARDCONF}/mutt-wizard-colors.muttrc <<'EOF'
# 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"
# 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 normal brightyellow default
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
color normal default default
# Regex highlighting:
color header blue default ".*"
color header brightmagenta default "^(From)"
color header brightcyan default "^(Subject)"
color header brightwhite default "^(CC|BCC)"
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<>\"]"
EOF
cat >> ${MUTTDIR}/muttrc <<'EOF'
source accounts/1-cyteen42.muttrc
source /usr/local/share/mutt-wizard/mutt-wizard.muttrc
#source /usr/local/share/mutt-wizard/mutt-wizard-colors.muttrc
set editor = nvim
set sort = threads
set sort_aux = reverse-last-date-received
color progress white red
#source colorschemes/neonwolf-256.neomuttrc
#source colorschemes/zenburn.neomuttrc
#source colorschemes/vombatidae.neomuttrc
source colorschemes/solarized-dark-256.neomuttrc
# for solarized:
# you must load solarized 16 colors theme BEFORE this
# you terminal 16 colors must be set to solarized theme
source powerline/powerline.neomuttrc
#source powerline/powerline-rounded.neomuttrc
# for gruvbox:
source colorschemes/colors-gruvbox-shuber.muttrc
# For neomutt uncomment this line:
source colorschemes/colors-gruvbox-shuber-extended.muttrc
# you must load gruvbox theme BEFORE this
# you terminal 16 colors must be set to gruvbox theme
#source powerline/colors/gruvbox-powerline.neomuttrc
#source powerline/powerline.neomuttrc
EOF
# auto-generated with mutt-wizard: 'mw add' and follow the instructions
# mailboxes populated from the email account imap server so for a clean
# account just put in the standard =Inbox =Drafts =Trash =Sent =Junk
PROFILE_NAME=example_profile
EMAIL=foobar@foo.bar
REAL_NAME="foo bar"
mkdir -p $ACCDIR/${PROFILE_NAME}
#mkdir -p $ACCDIR/${PROFILE_NAME}
cat > $ACCDIR/README <<EOF
#cat > $ACCDIR/README <<EOF
# To add additional mail accounts for mutt you can use mutt-wizard:
#
# '$ mw add'
#
# and follow the prompts.
EOF
#cat > $ACCDIR/1-${PROFILE_NAME}.muttrc <<EOF
## vim: filetype=neomuttrc
## muttrc file for account ${PROFILE_NAME}
#set realname = ${REAL_NAME}
#set from = ${FROM}
#set sendmail = "/usr/bin/msmtp -a mutt"
#alias me ${REAL_NAME} <${EMAIL}>
#set folder = "/home/${USER_NAME}/.local/share/mail/mutt"
#set header_cache = /home/${USER_NAME}/.cache/mutt-wizard/
#set message_cachedir = /home/${USER_NAME}/.cache/mutt-wizard/
#set mbox_type = Maildir
#EOF
mkdir -p $ACCDIR/${PROFILE_NAME}
cat > $ACCDIR/${PROFILE_NAME}.muttrc <<EOF
#cat >> ${MUTTDIR}/muttrc <<'EOF'
cat <<EOF | tee ${MUTTDIR}/muttrc >> ${EXAMPLES}/muttrc
source /usr/local/share/mutt-wizard/mutt-wizard.muttrc
set editor = nvim
set sort = threads
set sort_aux = reverse-last-date-received
color progress white red
source colorschemes/solarized-dark-256.neomuttrc
source fonts/powerline.neomuttrc
EOF
#mkdir -p $ACCDIR/${PROFILE_NAME}
## Since this is an example not a working profile it just gets copied to the examples.
cat > ${EXAMPLES}/accounts/1-${PROFILE_NAME}.muttrc <<EOF
# vim: filetype=neomuttrc
# muttrc file for account ${PROFILE_NAME}
set realname = ${REAL_NAME}
@ -470,41 +493,98 @@ set folder = "$HOME/.local/share/mail/${PROFILE_NAME}"
set header_cache = $HOME/.cache/mutt-wizard/${PROFILE_NAME}/headers
set message_cachedir = $HOME/.cache/mutt-wizard/${PROFILE_NAME}/bodies
set mbox_type = Maildir
bind index,pager gg noop
bind index,pager g noop
bind index,pager M noop
bind index,pager C noop
bind index gg first-entry
macro index o "<shell-escape>mailsync -V ${PROFILE_NAME}<enter>" "run mbsync to sync ${PROFILE_NAME}"
unmailboxes *
set spoolfile = "+Inbox"
set record = "+Sent"
set postponed = "+Drafts"
set trash = "+Trash"
mailboxes "=Inbox =Drafts =Trash =Sent =Junk"
macro index,pager gi "<change-folder>=Inbox<enter>" "go to inbox" # mw-autogenerated
macro index,pager Mi ";<save-message>=Inbox<enter>" "move mail to inbox" # mw-autogenerated
macro index,pager Ci ";<copy-message>=Inbox<enter>" "copy mail to inbox" # mw-autogenerated
macro index,pager gs "<change-folder>=Sent<enter>" "go to sent" # mw-autogenerated
macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent" # mw-autogenerated
macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent" # mw-autogenerated
macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts" # mw-autogenerated
macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts" # mw-autogenerated
macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts" # mw-autogenerated
macro index,pager gt "<change-folder>=Trash<enter>" "go to trash" # mw-autogenerated
macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash" # mw-autogenerated
macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash" # mw-autogenerated
macro index,pager gj "<change-folder>=Junk<enter>" "go to junk" # mw-autogenerated
macro index,pager Mj ";<save-message>=Junk<enter>" "move mail to junk" # mw-autogenerated
macro index,pager Cj ";<copy-message>=Junk<enter>" "copy mail to junk" # mw-autogenerated
macro index,pager ga "<change-folder>=Archives.2013<enter>" "go to archive" # mw-autogenerated
macro index,pager Ma ";<save-message>=Archives.2013<enter>" "move mail to archive" # mw-autogenerated
macro index,pager Ca ";<copy-message>=Archives.2013<enter>" "copy mail to archive" # mw-autogenerated
EOF
## Checkinstall variables - see defaults in /etc/checkinstallrc
DOC_DIR=/usr/share/doc
# make a new temporary directory for this use to avoid permission issues.
BASE_TMP_DIR=~/tmptmp/checkinstall_tmp
mkdir -p '${BASE_TMP_DIR}'
# do your work
checkinstall -y --fstrans \
--pkgname=mutt-wizard \
--pkgversion=${VERSION}\
--pkgrelease=${RELEASE} \
--pkgarch=amd64 \
--pkggroup=admin \
--pkglicense=LICENSE \
--pkgsource=${LATEST_URL} \
--maintainer=cyteen@ring-zero.co.uk \
--requires=neomutt,isync,msmtp,pass \
--recommends=abook,nomuch,lynx,libnotify-bin,urlview \
--suggests=mailsync \
-D \
bash ${BUILD_DIR}/install.sh
FOE
bash ./checkinstall_it.sh
echo "Writing install.sh to: ${BUILD_DIR}/install.sh"
cat > ${BUILD_DIR}/install.sh << FOE
#!/usr/bin/env bash
set -e
#set -x
## Download and copy the latest version to /usr/local/bin and make executable
echo "Creating temporary working directory ${WORKDIR}"
mkdir -p ${WORKDIR}
if [ -d "${WORKDIR}" ]; then
echo "WORKDIR: ${WORKDIR} exists."
if [ -d "${WORKDIR}"/mutt-wizard ]; then
echo "Removing exist mutt-wizard directory"
echo "ERROR:"
echo "This script cannot delete this directory you will need to 'rm -rf ${WORKDIR}/mutt-wizard' from a terminal.'"
exit 1
#rm -rf ${WORKDIR}/mutt-wizard
fi
echo "Cloning new repo with:"
echo "git clone ${LATEST_URL} ${WORKDIR}"
#GIT_INDEX_FILE="${WORKDIR}/index" git clone ${LATEST_URL} ${WORKDIR}
git clone ${LATEST_URL} ${WORKDIR}/mutt-wizard
cd ${WORKDIR}/mutt-wizard
make install
fi
## split the existing mutt-wizard.muttrc into two to separate the colours from everything else so other colourschemes can be used.
if [ -f "${MUTTWIZARDCONF}"/mutt-wizard.muttrc ]; then
cd ${MUTTWIZARDCONF} && \
csplit --suppress-matched ${MUTTWIZARDCONF}/mutt-wizard.muttrc '/^\(# Default index colors:\).*/' && \
if [ -f ${MUTTWIZARDCONF}/xx00 ]; then
echo "Moving csplit ${BUILD_DIR}/xx00 to ${MUTTWIZARDCONF}/mutt-wizard.muttrc"
mv ${MUTTWIZARDCONF}/xx00 ${MUTTWIZARDCONF}/mutt-wizard.muttrc | tee ${EXAMPLES}/mutt-wizard.muttrc
else
echo "ERROR: split file is missing."
fi
if [ -f ${MUTTWIZARDCONF}/xx01 ]; then
echo "Moving csplit ${BUILD_DIR}/xx01 to ${MUTTWIZARDCONF}/mutt-wizard-colors.muttrc"
mv ${MUTTWIZARDCONF}/xx01 ${MUTTWIZARDCONF}/mutt-wizard-colors.muttrc | tee ${EXAMPLES}/mutt-wizard-colors.muttrc
else
echo "ERROR: split file is missing."
fi
else
echo "${MUTTWIZARDCONF}/mutt-wizard.muttrc is missing."
fi
## Copy the local contents of the skel directory to /etc/skel
if [ -d "${BUILD_DIR}"/skel ]; then
echo "Copying files to /etc/skel from ${BUILD_DIR}/skel"
cp -dr ${BUILD_DIR}/skel/.config/ /etc/skel/
else
echo "Missing ${BUILD_DIR}/skel"
fi
FOE
bash ${BUILD_DIR}/checkinstall_it.sh
#mbsync ${PROFILE_NAME}
dpkg -c /var/tmp/${PROJECT}-${RELEASE}/mutt-wizard_${VERSION}-${RELEASE}_amd64.deb
#lsd --tree /usr/share/doc/mutt-wizard/
#lsd --tree /var/tmp/build_mutt-wizard/skel/.config/mutt
#lsd --tree /etc/skel/.config/mutt