X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/4f183f2aa83af08c6c36bd982e2726fb1ac25d4c..c49fa11a90f9b17159062e3ab2f4a960f1048ffd:/rc.org?ds=sidebyside diff --git a/rc.org b/rc.org index b4c80d5..9d41443 100644 --- a/rc.org +++ b/rc.org @@ -1,5 +1,5 @@ #+title: rc.org -#+property: header-args :comments link :mkdirp yes :results silent +#+property: header-args :comments no :mkdirp yes :results silent * About @@ -12,614 +12,7 @@ Note: This file is best viewed inside Emacs with org mode. * Configs This section contains the configuration files (dotfiles) of various -programs I use. - -** [[https://github.com/afewmail/afew][afew]] -:PROPERTIES: -:header-args+: :tangle ~/.config/afew/config -:END: - -#+begin_quote -an initial tagging script for notmuch mail -#+end_quote - -#+begin_src conf -# This is the default filter chain -[SpamFilter] -#[ClassifyingFilter] -[KillThreadsFilter] -#[ListMailsFilter] -[ArchiveSentMailsFilter] -sent_tag = sent -[InboxFilter] - -#[Filter.1] -#query = 'folder:amin/lists/.haskell-cafe' -#tags = +lists;+lists/haskell-cafe -#message = lists/haskell-cafe - -#[Filter.2] -#query = 'folder:amin/lists/.haskell-weekly' -#tags = +lists;+lists/haskell-weekly -#message = lists/haskell-weekly - -#[Filter.3] -#query = 'folder:amin/lists/.hackernewsletter' -#tags = +lists;+lists/hackernewsletter -#message = lists/hackernewsletter - - -#[FolderNameFilter] -#folder_blacklist = Inbox -#maildir_separator = /. -#folder_transforms = Drafts:draft Junk:spam Trash:deleted Sent:sent Archive:archive lists/haskell-cafe:lists/haskell-cafe -#+end_src - -** bspwm - -*** bspwmrc -:PROPERTIES: -:header-args+: :tangle ~/.config/bspwm/bspwmrc :shebang "#!/bin/sh" -:END: - -#+begin_src sh -sxhkd & -sh ~/.fehbg & -xfce4-panel -d & -#compton & -sleep 0.5 && pasystray --notify=all & - -bspc monitor -d I II III IV V VI VII VIII IX X -#bspc monitor eDP-1 -d I II III IV V -#bspc monitor HDMI-1 -d VI VII VIII IX X - -#bspc config border_width 2 -#bspc config window_gap 8 -bspc config window_gap 0 - -bspc config bottom_padding 26 - -bspc config split_ratio 0.52 -bspc config borderless_monocle true -bspc config gapless_monocle true -bspc config click_to_focus button1 -bspc config directional_focus_tightness low - -bspc rule -a Firefox desktop='^1' follow=on -bspc rule -a Nightly desktop='^1' follow=on -bspc rule -a Emacs desktop='^2' state=tiled follow=on -#bspc rule -a Chromium desktop='^4' follow=on -bspc rule -a URxvt state=floating -bspc rule -a URxvt:tiled state=tiled -bspc rule -a Connman-gtk state=floating -bspc rule -a Xfce4-panel state=floating -bspc rule -a TelegramDesktop state=floating -bspc rule -a Ec state=floating -bspc rule -a Pavucontrol state=floating -bspc rule -a Eog state=floating -bspc rule -a Seahorse state=floating -bspc rule -a mpv state=floating -bspc rule -a Evince state=floating -bspc rule -a Meld state=floating -bspc rule -a Autokey-gtk state=floating -bspc rule -a Mousepad state=floating -bspc rule -a Wrapper-1.0 state=floating -bspc rule -a File-roller state=floating -bspc rule -a Gnome-disks state=floating -bspc rule -a Termite state=floating -bspc rule -a Termite:tiled state=tiled -bspc rule -a Thunderbird:Calendar state=floating -bspc rule -a Audacity state=floating -bspc rule -a Proof state=floating # pvs x-show-proof -bspc rule -a Nm-connection-editor state=floating -bspc rule -a Wire state=floating -bspc rule -a discord state=floating -bspc rule -a X2goclient state=floating -bspc rule -a SimpleScreenRecorder state=floating -bspc rule -a Gimp state=floating -bspc rule -a Wrapper-2.0 state=floating -bspc rule -a Zathura state=tiled -#+end_src - -*** sxhkdrc -:PROPERTIES: -:header-args+: :tangle ~/.config/sxhkd/sxhkdrc -:END: - -#+begin_src conf -# -# wm independent hotkeys -# - -# terminal emulator -super + {_,shift} + Return - urxvt{_, -name tiled} - -#super + {_,shift} + Return -# termite{_, --name=tiled} - -# program launcher -super + space - rofi -show run -display-run '> ' -display-window ' 🗔 ' - -super + alt + space - xfce4-popup-whiskermenu - -# window finder -super + backslash - rofi -show window -display-run '> ' -display-window ' 🗔 ' - -# password manager -alt + space - rofi-pass - -# firefox -#super + r -# firefox - -# chromium -#super + c -# chromium -incognito - -# emacs -super + e - emacs - -# make sxhkd reload its configuration files: -super + Escape - pkill -USR1 -x sxhkd - -# volume {up,down} -XF86Audio{Raise,Lower}Volume - pamixer --allow-boost --{in,de}crease 5 - -# mute -XF86AudioMute - pamixer --toggle-mute - -# playback control -XF86Audio{Play,Prev,Next} - mpc {toggle,prev,next} - -# lock the screen -super + shift + q - light-locker-command -l - -# Toggle keyboard layout -super + F7 - toggle-layout - -# Toggle Xfce presentation mode -XF86LaunchB - toggle-presentation-mode - -# monitor brightness -XF86MonBrightness{Up,Down} - light -{A,U} 5 - -super + apostrophe - rofi-light - -# keyboard brightness -#XF86KbdBrightness{Up,Down} -# kbdlight {up,down} - -# -# bspwm hotkeys -# - -# quit bspwm normally -super + alt + Escape - bspc quit - -# close and kill -super + {w,q} - bspc node -{c,k} - -# alternate between the tiled and monocle layout -super + m - bspc desktop -l next - -# send the newest marked node to the newest preselected node -super + y - bspc node newest.marked.local -n newest.!automatic.local - -# swap the current node and the biggest node -super + g - bspc node -s biggest - -# -# state/flags -# - -# set the window state -super + {t,shift + t,s,f} - bspc node -t {tiled,pseudo_tiled,floating,fullscreen} - -# set the node flags -super + ctrl + {m,x,y,z} - bspc node -g {marked,locked,sticky,private} - -# -# focus/swap -# - -# focus the node in the given direction -super + {_,shift + }{h,j,k,l} - bspc node -{f,s} {west,south,north,east} - -# focus the node for the given path jump -super + {p,b,comma,period} - bspc node -f @{parent,brother,first,second} - -# focus the next/previous node in the current desktop -super + {_,shift + }c - bspc node -f {next,prev}.local - -# focus the next/previous desktop in the current monitor -super + bracket{left,right} - bspc desktop -f {prev,next}.local - -# send to next/prev desktop -super + shift + bracket{left,right} - bspc node -d {prev,next} --follow - -# focus the last node/desktop -super + {grave,Tab} - bspc {node,desktop} -f last - -# focus the older or newer node in the focus history -super + {o,i} - bspc wm -h off; \ - bspc node {older,newer} -f; \ - bspc wm -h on - -# focus or send to the given desktop -super + {_,shift + }{1-9,0} - bspc {desktop -f,node -d} '^{1-9,10}' - -# -# preselect -# - -# preselect the direction -super + ctrl + {h,j,k,l} - bspc node -p {west,south,north,east} - -# preselect the ratio -super + ctrl + {1-9} - bspc node -o 0.{1-9} - -# cancel the preselection for the focused node -super + ctrl + space - bspc node -p cancel - -# cancel the preselection for the focused desktop -super + ctrl + shift + space - bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel - -# -# move/resize -# - -# expand a window by moving one of its side outward -super + alt + {h,j,k,l} - bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} - -# contract a window by moving one of its side inward -super + alt + shift + {h,j,k,l} - bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} - -# move a floating window -super + {Left,Down,Up,Right} - bspc node -v {-20 0,0 20,0 -20,20 0} - -#alt + bracket{left,right} -# xdotool key --clearmodifiers ctrl+Page_{Up,Down} -#+end_src - -** compton -:PROPERTIES: -:header-args+: :tangle ~/.config/compton.conf -:END: - -#+begin_src conf -# Shadow -shadow = false; # Enabled client-side shadows on windows. -no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows. -no-dnd-shadow = true; # Don't draw shadows on DND windows. -clear-shadow = true; # Zero the part of the shadow's mask behind the - # window. Fix some weirdness with ARGB windows. -shadow-radius = 5; # The blur radius for shadows. (default 12) -shadow-offset-x = -5; # The left offset for shadows. (default -15) -shadow-offset-y = -5; # The top offset for shadows. (default -15) -# shadow-opacity = 0.7; # The translucency for shadows. (default .75) -# shadow-red = 0.0; # Red color value of shadow. (0.0 - 1.0, defaults to 0) -# shadow-green = 0.0; # Green color value of shadow. (0.0 - 1.0, defaults to 0) -# shadow-blue = 0.0; # Blue color value of shadow. (0.0 - 1.0, defaults to 0) -shadow-exclude = [ "n:e:Notification", "class_g = 'Chromium'", "class_g = 'Dmenu'", "class_g = 'Firefox' && argb" ]; # Exclude conditions for shadows. -# shadow-exclude = "n:e:Notification"; -#shadow-exclude = [ "_GTK_FRAME_EXTENTS@:c" ] # Fix dual shadow on some gtk3 powered applications -shadow-ignore-shaped = true; # Avoid drawing shadow on all shaped windows - # (see also: --detect-rounded-corners) - -# Opacity -menu-opacity = 1.0; # The opacity for menus. (default 1.0) -#inactive-opacity = 0.9; # Default opacity of inactive windows. (0.0 - 1.0) -# active-opacity = 0.8; # Default opacity for active windows. (0.0 - 1.0) -frame-opacity = 1.0; # Opacity of window titlebars and borders. (0.1 - 1.0) -# inactive-opacity-override = true; # Let inactive opacity set by 'inactive-opacity' overrides - # value of _NET_WM_OPACITY. Bad choice. -alpha-step = 0.06; # XRender backend: Step size for alpha pictures. Increasing - # it may result in less X resource usage, - # Yet fading may look bad. -#inactive-dim = 0.5; # Dim inactive windows. (0.0 - 1.0) -#inactive-dim-fixed = true; # Do not let dimness adjust based on window opacity. -# blur-background = true; # Blur background of transparent windows. - # Bad performance with X Render backend. - # GLX backend is preferred. -# blur-background-frame = true; # Blur background of opaque windows with transparent - # frames as well. -blur-background-fixed = true; # Do not let blur radius adjust based on window opacity. -blur-background-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ]; - # Exclude conditions for background blur. - -# Fading -fading = false; # Fade windows during opacity changes. -fade-delta = 3; # The time between steps in a fade in milliseconds. (default 10). -fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028). -fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03). -# no-fading-openclose = true; # Avoid fade windows in/out when opening/closing. -fade-exclude = [ ]; # Exclude conditions for fading. - -# Other -backend = "glx" # Backend to use: "xrender" or "glx". GLX backend is typically - # much faster but depends on a sane driver. -mark-wmwin-focused = true; # Try to detect WM windows and mark them as active. -mark-ovredir-focused = true; # Mark all non-WM but override-redirect windows active (e.g. menus). -use-ewmh-active-win = true; # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused - # instead of using FocusIn/Out events. Usually more reliable but - # depends on a EWMH-compliant WM. -detect-rounded-corners = false; # Detect rounded corners and treat them as rectangular when --shadow-ignore- shaped is on. -detect-client-opacity = true; # Detect _NET_WM_OPACITY on client windows, useful for window - # managers not passing _NET_WM_OPACITY of client windows to frame - # windows. -refresh-rate = 0; # For --sw-opti: Specify refresh rate of the screen. 0 for auto. -vsync = "drm"; # "none", "drm", "opengl", "opengl-oml", "opengl-swc", "opengl-mswc" - # See man page for more details. -dbe = false; # Enable DBE painting mode. Rarely needed. -paint-on-overlay = true; # Painting on X Composite overlay window. Recommended. -sw-opti = false; # Limit compton to repaint at most once every 1 / refresh_rate. - # Incompatible with certain VSync methods. -unredir-if-possible = false; # Unredirect all windows if a full-screen opaque window is - # detected, to maximize performance for full-screen windows. -focus-exclude = [ ]; # A list of conditions of windows that should always be considered - # focused. -detect-transient = true; # Use WM_TRANSIENT_FOR to group windows, and consider windows in - # the same group focused at the same time. -detect-client-leader = true; # Use WM_CLIENT_LEADER to group windows. -invert-color-include = [ ]; # Conditions for windows to be painted with inverted color. - -# GLX backend # GLX backend fine-tune options. See man page for more info. -glx-no-stencil = true; # Recommended. -glx-copy-from-front = false; # Useful with --glx-swap-method, -# glx-use-copysubbuffermesa = true; # Recommended if it works. Breaks VSync. -# glx-no-rebind-pixmap = true; # Recommended if it works. -glx-no-rebind-pixmap = true; # Recommended if it works. -#glx-swap-method = "4"; # See man page. -glx-swap-method = "4"; # See man page. - -# Window type settings -wintypes: -{ - tooltip = { fade = true; shadow = false; opacity = 1; focus = true; }; - menu = { shadow = false; }; - dropdown_menu = { shadow = false; }; - popup_menu = { shadow = false; }; - utility = { shadow = false; }; - # fade: Fade the particular type of windows. - # shadow: Give those windows shadow - # opacity: Default opacity for the type of windows. - # focus: Whether to always consider windows of this type focused. -}; -#+end_src - -** Dunst -:PROPERTIES: -:header-args+: :tangle ~/.config/dunst/dunstrc -:END: - -#+begin_src conf -[global] -#font = Ubuntu Mono 10.5 -font = Inconsolata 11 - -# Path to default icons. -icon_folders = /usr/share/icons/Moka/16x16/status/:/usr/share/icons/Moka/16x16/devices/:/usr/share/icons/Faba-Mono/16x16/status/:/usr/share/icons/Faba-Mono/16x16/devices/:/usr/share/icons/Moka/16x16/actions/:/usr/share/icons/Moka/16x16/categories/:/usr/share/icons/Moka/16x16/mimetypes/:/usr/share/icons/Moka/16x16/apps/:/usr/share/icons/Moka/16x16/places/:/usr/share/icons/Paper/16x16/status/ - -icon_position = left -# bold -# italic -# strikethrough -# underline -markup = full -# The format of the message. Possible variables are: -# %a appname -# %s summary -# %b body -# %i iconname (including its path) -# %I iconname (without its path) -# %p progress value if set ([ 0%] to [100%]) or nothing -# Markup is allowed -format = "%s\n%b" -# Sort messages by urgency -sort = yes -# Show how many messages are currently hidden (because of geometry) -indicate_hiddenl= no -# Alignment of message text. -# Possible values are "left", "center" and "right" -alignment = center -# The frequency with wich text that is longer than the notification -# window allows bounces back and forth. -# This option conflicts with 'word_wrap'. -# Set to 0 to disable -bounce_freq = 3 -# show age of message if message is older than show_age_threshold seconds. -# set to -1 to disable -show_age_threshold = -1 -# split notifications into multiple lines if they don't fit into geometry -word_wrap = yes -# ignore newlines '\n' in notifications -ignore_newline = no -# The geometry of the message window. -# geometry [{width}]x{height}][+/-{x}+/-{y}] -# The height is measured in number of notifications everything else in pixels. If the width -# is omitted but the height is given ("-geometry x2"), the message window -# expands over the whole screen (dmenu-like). If width is 0, -# the window expands to the longest message displayed. -# A positive x is measured from the left, a negative from the -# right side of the screen. Y is measured from the top and down respectevly. -# The width can be negative. In this case the actual width is the -# screen width minus the width defined in within the geometry option. -#geometry = "410x12-12+12" -#geometry = "0x0-30-30" -geometry = "260x12-30-30" -# The transparency of the window. range: [0; 100] -# This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..) -transparency = 0 -# Don't remove messages, if the user is idle (no mouse or keyboard input) -# for longer than idle_threshold seconds. -# Set to 0 to disable. -idle_threshold = 120 -# Which monitor should the notifications be displayed on. -monitor = 0 -# Display notification on focused monitor. Possible modes are: -# mouse: follow mouse pointer -# keyboard: follow window with keyboard focus -# none: don't follow anything -# -# "keyboard" needs a windowmanager that exports the _NET_ACTIVE_WINDOW property. -# This should be the case for almost all modern windowmanagers. -# -# If this option is set to mouse or keyboard, the monitor option will be -# ignored. -follow = keyboard -# should a notification popped up from history be sticky or -# timeout as if it would normally do. -sticky_history = yes -# The height of a single line. If the height is smaller than the font height, -# it will get raised to the font height. -# This adds empty space above and under the text. -line_height = 0 - -show_indicators = yes - -# Draw a line of 'separatpr_height' pixel height between two notifications. -# Set to 0 to disable -separator_height = 3 -# padding between text and separator -padding = 8 -# horizontal padding -horizontal_padding = 8 -# Define a color for the separator. -# possible values are: -# * auto: dunst tries to find a color fitting to the background -# * foreground: use the same color as the foreground -# * frame: use the same color as the frame. -# * anything else will be interpreted as a X color -separator_color = foreground -# print a notification on startup -# This is mainly for error detection, since dbus (re-)starts dunst -# automatically after a crash. -startup_notification = false -# dmenu path -#dmenu = /usr/bin/dmenu -p dunst: -dmenu = /usr/bin/rofi -dmenu -p dunst: -# browser for opening urls in context menu -browser = /usr/bin/firefox -new-tab -[frame] -width = 0 -color = "#377222" -[shortcuts] -# shortcuts are specified as [modifier+][modifier+]...key -# available modifiers are 'ctrl', 'mod1' (the alt-key), 'mod2', 'mod3' -# and 'mod4' (windows-key) -# xev might be helpful to find names for keys -# close notification -close = ctrl+space -# close all notifications -close_all = ctrl+shift+space -# redisplay last message(s) -# On the US keyboard layout 'grave' is normally above TAB and left of '1'. -history = ctrl+shift+h -# context menu -context = ctrl+shift+period -[urgency_low] -# IMPORTANT: colors have to be defined in quotation marks. -# Otherwise the '#' and following would be interpreted as a comment. -background = "#1d2a30" -foreground = "#71c2af" -timeout = 3 -[urgency_normal] -background = "#1d2a30" -foreground = "#71c2af" -timeout = 0 -[urgency_critical] -background = "#1d2a30" -foreground = "#ff9982" -timeout = 0 - -# Every section that isn't one of the above is interpreted as a rules -# to override settings for certain messages. -# Messages can be matched by 'appname', 'summary', 'body' or 'icon' -# and you can override the 'timeout', 'urgency', 'foreground', 'background' -# and 'format'. -# Shell-like globbing will get expanded. -# -# SCRIPTING -# you can specify a script that gets run when the rule matches by setting -# the 'script' option. -# The script will be called as follows: -# script appname summary body icon urgency -# where urgency can be "LOW", "NORMAL" or "CRITICAL". -# -# NOTE: if you don't want a notification to be displayed, set the format to "" -# NOTE: It might be helpful to run dunst -print in a terminal in order to find -# fitting options for rules. -#[espeak] -# summary = "*" -# script = dunst_espeak.sh -#[script-test] -# summary = "*script*" -# script = dunst_test.sh -#[ignore] -## This notification will not be displayed -# summary = "foobar" -# format = "" -#[signed_on] -# appname = Pidgin -# summary = "*signed on*" -# urgency = low -# -#[signed_off] -# appname = Pidgin -# summary = *signed off* -# urgency = low -# -#[says] -# appname = Pidgin -# summary = *says* -# urgency = critical -# -#[twitter] -# appname = Pidgin -# summary = *twitter.com* -# urgency = normal -# -[xfpm-backlight] - summary = *Brightness* - urgency = low -#+end_src +programs I use besides GNU Emacs. ** Fontconfig :PROPERTIES: @@ -660,102 +53,123 @@ timeout = 0 Helvetica - + Liberation Sans - + #+end_src +** getmail +:PROPERTIES: +:header-args+: :tangle ~/.config/getmail/getmailrc +:END: + +#+begin_src conf +[retriever] +type = SimplePOP3SSLRetriever +server = fencepost.gnu.org +username = bandali +password_command = ("gpg", "--no-tty", "-q", "-d", "/home/bandali/.passwd/gnu.gpg") +port = 995 +use_apop = True + +[destination] +type = Maildir +path = ~/mail/gnu.local/bandali/mail/ + +# [destination] +# type = MDA_external +# path = /usr/lib/dovecot/deliver +# arguments = ('-e', '-f', '%(sender)', '-d', 'bandali@gnu.local') + +[options] +read_all = false +delete_after = 1 +# delete = true +received = false +delivered_to = false +#+end_src + ** Git -*** gitconfig +*** config :PROPERTIES: -:header-args+: :tangle ~/.gitconfig +:header-args+: :tangle ~/.config/git/config :END: -**** user #+begin_src conf [user] - name = Amin Bandali - email = amin@aminb.org - # signingkey = 4E05246AB0BF7FFB -#+end_src + name = Amin Bandali + email = bandali@gnu.org + signingkey = BE6273738E616D6D1B3A08E8A21A020248816103 + +[commit] + gpgsign = true -**** signing -#+begin_src conf -# [commit] -# gpgsign = true # [format] -# signoff = true -#+end_src +# signoff = true -**** core -#+begin_src conf [core] - autocrlf = input # CRLF -> LF on commit - editor = emacsclient -t - excludesfile = ~/.gitignore_global - pager = "less" -#+end_src + autocrlf = input # CRLF -> LF on commit + editor = emacsclient -t + pager = "less" -**** gpg -#+begin_src conf -[gpg] - program = gpg2 -#+end_src +[mailmap] + file = ~/.config/git/mailmap -**** alias -#+begin_src conf [alias] - git = !exec git # handle nested git calls, e.g. git git status - aliases = config --get-regexp '^alias\\.' - a = add - s = status - sl = status --long - c = checkout - cb = checkout -b - b = branch - r = rebase - p = pull - pr = pull --rebase - ps = push - psf = push --force -#+end_src + git = !exec git # handle nested git calls, e.g. git git status + aliases = config --get-regexp '^alias\\.' + a = add + s = status + sl = status --long + c = checkout + cb = checkout -b + b = branch + r = rebase + p = pull + pr = pull --rebase + ps = push + psf = push --force + nmam = "!f() { notmuch show --format=raw $1 | git am -; }; f" + nmam3 = "!f() { notmuch show --format=raw $1 | git am -3 -; }; f" -**** color -#+begin_src conf [color] - ui = auto + ui = auto [color "status"] - added = green bold - changed = red bold - untracked = red bold + added = green bold + changed = red bold + untracked = red bold [color "branch"] - current = green bold - remote = magenta bold + current = green bold + remote = magenta bold [color "diff"] - new = green bold - old = red bold -#+end_src + new = green bold + old = red bold -**** status -#+begin_src conf -[status] - # showUntrackedFiles = all - short=true - branch=true -#+end_src +# [status] +# # showUntrackedFiles = all +# short=true +# branch=true -**** github -#+begin_src conf [github] - user = aminb + user = notbandali + +[sendemail] + smtpuser = bandali + smtpserver = fencepost.gnu.org + smtpserverport = 587 + smtpencryption = tls + annotate = yes + +[transfer] + fsckObjects = true #+end_src -*** gitignore +*** ignore :PROPERTIES: -:header-args+: :tangle ~/.gitignore_global +:header-args+: :tangle ~/.config/git/ignore :END: #+begin_src conf @@ -766,165 +180,425 @@ timeout = 0 .DS_Store *.elc *-autoloads.el +TAGS #+end_src -** Latexmk +*** mailmap :PROPERTIES: -:header-args+: :tangle ~/.latexmkrc +:header-args+: :tangle ~/.config/git/mailmap :END: #+begin_src conf -$pdf_previewer = "start zathura %O %S"; -$clean_ext = "aux out"; - -# $pdf_update_method = 4; -# $pdf_update_command = "zathura %O %S"; - -# Synctex allows one to jump to from the PDF in Zathura to the source in Emacs -# by Ctrl+click in the PDF. -# Tell latexmk to use Zathura as a previewer, and run emacsclient as the Synctex -# editor. -# $pdf_previewer = 'exec zathura --synctex-forward -x \'emacsclient --no-wait +%{line} %{input}\' %O %S'; + + + + + #+end_src -** getmail - -*** getmailrc +** GnuPG :PROPERTIES: -:header-args+: :tangle ~/.getmail/getmailrc +:header-args+: :tangle ~/.gnupg/gpg-agent.conf :END: #+begin_src conf -[retriever] -type = SimplePOP3SSLRetriever -server = fencepost.gnu.org -username = aminb -password_command = ("gpg2", "--no-tty", "-q", "-d", "~/.passwd/gnu.gpg") -port = 995 -use_apop = True +default-cache-ttl 43200 +max-cache-ttl 86400 -[destination] -type = Maildir -path = ~/mail/gnu/Inbox/ +default-cache-ttl-ssh 43200 +max-cache-ttl-ssh 86400 -[options] -delete = True +pinentry-program /home/bandali/.guix-profile/bin/pinentry-emacs +allow-emacs-pinentry +allow-loopback-pinentry #+end_src -*** getmail.service +** GTK + +*** GTK+ 2 :PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/getmail.service +:header-args+: :tangle ~/.gtkrc-2.0 :END: -#+begin_src conf :tangle no -[Unit] -Description=getmail service - -[Service] -Type=oneshot -ExecStart=/usr/bin/getmail -StandardOutput=syslog -StandardError=syslog +#+begin_src conf +gtk-theme-name="Xfce" +# gtk-icon-theme-name="elementary Xfce darker" +gtk-font-name="Roboto 10" +# gtk-font-name="Source Code Variable 10" +gtk-menu-images=0 +# gtk-key-theme-name = "Emacs" #+end_src -*** getmail.timer +*** GTK+ 3 :PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/getmail.timer +:header-args+: :tangle ~/.config/gtk-3.0/settings.ini :END: -#+begin_src conf :tangle no -[Unit] -Description=getmail timer +#+begin_src conf +[Settings] +gtk-icon-theme-name = Adwaita +# gtk-theme-name = Adwaita -[Timer] -OnCalendar=*:0/30 -Persistent=true -Unit=getmail.service +gtk-theme-name = Xfce +# gtk-theme-name = Arc-Darker +# gtk-theme-name = Numix-ArchBlue -[Install] -WantedBy=timers.target +gtk-font-name = Roboto 10 +# gtk-font-name = Source Code Variable Medium 10 +# gtk-key-theme-name = Emacs #+end_src -** GnuPG +** Guix + +*** Channels :PROPERTIES: -:header-args+: :tangle ~/.gnupg/gpg-agent.conf +:header-args+: :tangle ~/.config/guix/channels.scm :END: -#+begin_src conf -default-cache-ttl 43200 -max-cache-ttl 43200 +#+begin_src scheme +(list (channel + (name 'guix) ; https://git.savannah.gnu.org/git/guix.git + (url "file:///home/bandali/src/git/guix")) + (channel + (name 'guix-bandali) ; https://git.sr.ht/~bandali/guix-bandali + (url "file:///home/bandali/src/git/guix-bandali"))) +#+end_src + +*** Profile manifests -default-cache-ttl-ssh 10800 -max-cache-ttl-ssh 10800 +To install/update the packages of the default profile, use +#+begin_example +guix package -m $MY_GUIX_MANIFESTS/main.scm +#+end_example +and for other profiles, use +#+begin_example +guix package -m $MY_GUIX_MANIFESTS/name.scm -p $MY_GUIX_PROFILES/name/name +#+end_example +where =name= is the name of the profile (e.g. =doc=, =media=, ...). + +**** doc +:PROPERTIES: +:header-args+: :tangle ~/.config/guix/manifest/doc.scm +:END: -# pinentry-program /usr/bin/pinentry-qt +#+begin_src scheme +(specifications->manifest + '("libreoffice" + "texlive-amsfonts" + "texlive-base" + "texlive-latex-listings" + ;; "texlive-palatino" + "texlive-xcolor" +)) #+end_src -** GTK +**** main +:PROPERTIES: +:header-args+: :tangle ~/.config/guix/manifest/main.scm +:END: -*** gtk-2.0 +#+begin_src scheme +(specifications->manifest + '("alsa-utils" + "bash-completion" + "cpufrequtils" + "cpupower" + "cvs" + "dunst" + "emacs" + "emacs-alert" + "emacs-amx" + "emacs-async" + "emacs-biblio-git" + "emacs-boxquote" + "emacs-company" + "emacs-company-ebdb" + "emacs-crux" + "emacs-dash" + "emacs-debbugs" + "emacs-diff-hl" + "emacs-dmenu" + "emacs-doom-themes" + "emacs-ebdb" + "emacs-emmet-mode" + ;; "emacs-emojify" + "emacs-erc-hl-nicks" + "emacs-erc-scrolltoplace" + "emacs-eshell-up" + "emacs-exec-path-from-shell" + "emacs-expand-region" + "emacs-exwm" + "emacs-exwm-edit" + "emacs-flycheck" + "emacs-geiser" + ;; "emacs-gnus-harvest" + "emacs-guix" + "emacs-helpful" + "emacs-hl-todo" + "emacs-ivy" + "emacs-magit" + "emacs-message-x" + "emacs-minions" + ;; "emacs-multi-term" + "emacs-multiple-cursors" + "emacs-mwim" + ;; "emacs-next" + ;; "emacs-next-delight" + "emacs-no-littering" + "emacs-org" + "emacs-org-contrib" + "emacs-org-ref" + "emacs-orgalist" + "emacs-page-break-lines" + "emacs-pass" + "emacs-pinentry" + "emacs-projectile" + "emacs-shrink-path-git" + "emacs-smart-mode-line" + "emacs-typo" + "emacs-unkillable-scratch" + "emacs-use-package" + "emacs-web-mode" + "emacs-which-key" + "emacs-yasnippet" + "emacs-znc-git" + "font-adobe-source-code-pro" + "font-gnu-freefont-ttf" + "font-google-roboto" + "font-liberation" + "font-linuxlibertine" + "font-sil-gentium" + "font-tex-gyre" + ;; "font-ubuntu" + "font-vazir" + "getmail" + "gettext" + "git" + "git:send-email" + "gnupg" + "guile" + "haunt" + "htop" + "hunspell" + "hunspell-dict-en-ca" + "hunspell-dict-en-us" + "isync" + "light" + "msmtp" + "ncdu" + "notmuch" + "openjdk" + "openssh" + "openssl" + "pass-otp" + "password-store" + "pasystray" + "pinentry-emacs" + "poppler" ; for 'pdffonts' + "rofi" + "rofi-pass" + "rsync" + "rxvt-unicode" + "screen" + "scrot" + "setxkbmap" + "strace" + "thinkfan" + "unzip" + "wget" + "xdg-user-dirs" + ;; "xkbcomp" + "xmodmap" + "xrdb" + "xset" + "xsetroot")) +#+end_src + +**** media :PROPERTIES: -:header-args+: :tangle ~/.gtkrc-2.0 +:header-args+: :tangle ~/.config/guix/manifest/media.scm :END: -#+begin_src conf -gtk-theme-name="Greybird" -gtk-icon-theme-name="Paper" -gtk-font-name="Ubuntu 10" -gtk-menu-images=0 -# gtk-key-theme-name = "Emacs" +#+begin_src scheme +(specifications->manifest + '("audacity" + "gimp" + "inkscape" + "mpv" + "youtube-dl")) #+end_src -*** gtk-3.0 +**** web :PROPERTIES: -:header-args+: :tangle ~/.config/gtk-3.0/settings.ini +:header-args+: :tangle ~/.config/guix/manifest/web.scm :END: -#+begin_src conf :tangle no -[Settings] -gtk-icon-theme-name = Paper -# gtk-theme-name = Adwaita +#+begin_src scheme +(specifications->manifest + '("icecat" + "rtv")) +#+end_src -gtk-theme-name = Greybird -# gtk-theme-name = Arc-Darker -# gtk-theme-name = Numix-ArchBlue +*** Systems -gtk-font-name = Ubuntu 10 -# gtk-key-theme-name = Emacs +**** chaman +:PROPERTIES: +:header-args+: :tangle ~/.config/guix/system/chaman.scm +:END: + +#+begin_src scheme +(use-modules (gnu) + (gnu packages certs) ; for nss-certs + (gnu packages emacs-xyz) ; for exwm + (gnu packages linux)) ; for powertop +(use-service-modules admin desktop mail networking pm ssh xorg) + +(operating-system + (host-name "chaman") + (locale "en_CA.utf8") + (timezone "Canada/Eastern") + (keyboard-layout + (keyboard-layout "us" "basic")) + (bootloader + (bootloader-configuration + (bootloader grub-bootloader) + (target "/dev/sda") + (keyboard-layout keyboard-layout))) + (mapped-devices + (list (mapped-device + (source + (uuid "283da85e-2c84-47e6-a8ca-20f4e8efb806")) + (target "groot") + (type luks-device-mapping)) + (mapped-device + (source + (uuid "017ddebc-c2c3-4a0a-bda4-d47ec0bc67f0")) + (target "data") + (type luks-device-mapping)))) + (file-systems + (cons* (file-system + (mount-point "/") + (device "/dev/mapper/groot") + (type "ext4") + (dependencies mapped-devices)) + (file-system + (mount-point "/data") + (device "/dev/mapper/data") + (type "ext4") + (dependencies mapped-devices)) + %base-file-systems)) + (users + (cons* (user-account + (name "bandali") + (group "users") + (home-directory "/home/bandali") + (supplementary-groups + '("wheel" "netdev" "audio" "video"))) + %base-user-accounts)) + (packages + (cons* nss-certs + emacs-exwm + %base-packages)) + (services + (cons* + (service xfce-desktop-service-type) + (set-xorg-configuration + (xorg-configuration + (keyboard-layout keyboard-layout))) + (dovecot-service + #:config + (dovecot-configuration + ;; (log-path "/dev/stderr") + (protocols (list (protocol-configuration + (name "imap")))) + (ssl? "no") + (listen '("127.0.0.1")) + (disable-plaintext-auth? #f) + (auth-mechanisms '("plain")) + (postmaster-address "bandali@gnu.local") + (mail-location "maildir:/home/bandali/mail/%d/%n/mail") + (userdbs (list (userdb-configuration + (driver "static") + (args (list "uid=bandali" "gid=users" "home=/home/bandali/mail/%d/%n"))))) + (passdbs (list (passdb-configuration + (driver "passwd-file") + (args (list "/data/dovecot-passwd"))))))) + (service rottlog-service-type) + (service thermald-service-type) + (service tlp-service-type + (tlp-configuration + (cpu-boost-on-ac? #t) + (sound-power-save-on-bat 0) + (sound-power-save-controller? #f) + ;; (usb-blacklist "0e8f:00a8") ;for some reason doesn't seem to work + (usb-autosuspend? #f))) + (simple-service 'my-powertop-auto-tune activation-service-type + #~(zero? (system* #$(file-append powertop "/sbin/powertop") + "--auto-tune"))) + (simple-service 'light-udev-rules udev-service-type (list light)) + %desktop-services))) #+end_src ** isync - -*** mbsyncrc :PROPERTIES: -:header-args+: :tangle ~/.mbsyncrc +:header-args+: :tangle ~/.config/isync/mbsyncrc :END: #+begin_src conf # Global defaults CopyArrivalDate yes +Create Both +Expunge Both ###### -IMAPAccount amin -Host nix.aminb.org -User amin@aminb.org -PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin.gpg" +IMAPAccount shemshak +Host mail.shemshak.org +User amin@shemshak.org +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/shemshak.gpg" SSLType IMAPS -IMAPStore amin-remote -Account amin +IMAPStore shemshak-remote +Account shemshak -MaildirStore amin-local -Path ~/mail/amin/ -Inbox ~/mail/amin/Inbox -SubFolders Verbatim +IMAPAccount shemshak-local +Host 127.0.0.1 +Port 143 +User amin@shemshak.local +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/shemshak-local.gpg" +SSLType None -Channel amin -Master :amin-remote: -Slave :amin-local: -Patterns * !dovecot* -Create Both -SyncState * +IMAPStore shemshak-local +Account shemshak-local + +Channel shemshak +Master :shemshak-remote: +Slave :shemshak-local: +Patterns * + +###### +IMAPAccount gnub +Host mail.shemshak.org +User gnu@bandali.eu.org +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/gnub.gpg" +SSLType IMAPS + +IMAPStore gnub-remote +Account gnub + +IMAPAccount gnub-local +Host 127.0.0.1 +Port 143 +User bandali@gnu.local +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/gnub-local.gpg" +SSLType None + +IMAPStore gnub-local +Account gnub-local + +Channel gnub +Master :gnub-remote: +Slave :gnub-local: +Patterns * ###### IMAPAccount uwaterloo @@ -936,51 +610,64 @@ SSLType IMAPS IMAPStore uwaterloo-remote Account uwaterloo -MaildirStore uwaterloo-local -Path ~/mail/uwaterloo/ -Inbox ~/mail/uwaterloo/Inbox -SubFolders Verbatim +IMAPAccount uwaterloo-local +Host 127.0.0.1 +Port 143 +User abandali@uw.local +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/uwaterloo-local.gpg" +SSLType None + +IMAPStore uwaterloo-local +Account uwaterloo-local Channel uwaterloo Master :uwaterloo-remote: Slave :uwaterloo-local: -Patterns * !dovecot* -Create Both -SyncState * -#+end_src +Patterns * -*** mbsync.service -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/mbsync.service -:END: +###### +IMAPAccount csclub +Host mail.csclub.uwaterloo.ca +User abandali +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/csclub.gpg" +SSLType IMAPS -#+begin_src conf :tangle no -[Unit] -Description=mbsync service +IMAPStore csclub-remote +Account csclub -[Service] -Type=oneshot -ExecStart=/usr/bin/mbsync -Va -StandardOutput=syslog -StandardError=syslog +IMAPAccount csclub-local +Host 127.0.0.1 +Port 143 +User abandali@csc.uw.local +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/csclub-local.gpg" +SSLType None + +IMAPStore csclub-local +Account csclub-local + +Channel csclub +Master :csclub-remote: +Slave :csclub-local: +Patterns * #+end_src -*** mbsync.timer +** Latexmk :PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/mbsync.timer +:header-args+: :tangle ~/.config/latexmk/latexmkrc :END: -#+begin_src conf :tangle no -[Unit] -Description=mbsync timer +#+begin_src conf +$pdf_previewer = "start zathura %O %S"; +$clean_ext = "aux out"; -[Timer] -OnCalendar=*:0/15 -Persistent=true -Unit=mbsync.service +# $pdf_update_method = 4; +# $pdf_update_command = "zathura %O %S"; -[Install] -WantedBy=timers.target +# Synctex allows one to jump to from the PDF in Zathura to the source in Emacs +# by Ctrl+click in the PDF. +# Tell latexmk to use Zathura as a previewer, and run emacsclient as the Synctex +# editor. +# $pdf_previewer = 'exec zathura --synctex-forward -x \'emacsclient --no-wait +%{line} %{input}\' %O %S'; #+end_src ** mpd @@ -1400,7 +1087,7 @@ audio_output { ** msmtp :PROPERTIES: -:header-args+: :tangle ~/.msmtprc +:header-args+: :tangle ~/.config/msmtp/config :END: #+begin_src conf @@ -1412,1913 +1099,485 @@ auth on #tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile ~/.msmtp.log -# aminb -account aminb -host nix.aminb.org -tls_fingerprint BB:98:B3:02:83:B0:E0:C3:49:3E:C2:B2:A8:60:62:78:03:B3:5D:B3:BD:B8:0A:39:BB:E4:B0:66:D1:CF:D1:6B +account shemshak +host mail.shemshak.org +# use `msmtp -a shemshak --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint +tls_fingerprint 01:6F:1B:92:0A:E8:47:35:62:80:DD:17:F5:9A:9D:26:7D:59:E2:EC:69:67:36:69:2F:58:8C:89:57:66:F6:B1 tls_starttls on +from amin@shemshak.org +user amin@shemshak.org +passwordeval gpg --no-tty -q -d ~/.passwd/shemshak.gpg + +account aminb : shemshak from amin@aminb.org -user amin@aminb.org -passwordeval gpg2 --no-tty -q -d ~/.passwd/amin.gpg +account bndl : shemshak +from amin@bndl.org -# gnu account gnu host fencepost.gnu.org -tls_fingerprint 94:0E:37:EB:EA:44:5A:4B:B6:6F:16:3D:6C:7E:7E:44:2D:93:61:C1:FE:82:A8:29:5E:3C:12:4E:2D:BE:0E:2C +# use `msmtp -a gnu --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint +tls_fingerprint A5:E9:14:9F:46:3E:8E:0F:09:8C:5D:21:C2:BE:DE:77:BE:8B:E7:82:6C:56:78:0C:62:CA:46:D7:18:FE:33:05 tls_starttls on +from bandali@gnu.org +user bandali +passwordeval gpg --no-tty -q -d ~/.passwd/gnu.gpg + +account gnu-mab : gnu +from mab@gnu.org +account gnu-aminb : gnu from aminb@gnu.org -user aminb -passwordeval gpg2 --no-tty -q -d ~/.passwd/gnu.gpg +account gnu-amin : gnu +from amin@gnu.org -# uwaterloo account uwaterloo host connect.uwaterloo.ca tls_starttls on from abandali@uwaterloo.ca user abandali -passwordeval gpg2 --no-tty -q -d ~/.passwd/uwaterloo.gpg +passwordeval gpg --no-tty -q -d ~/.passwd/uwaterloo.gpg tls_trust_file /etc/ssl/certs/ca-certificates.crt -# uwaterloo (friendly address) account uwaterloo-friendly : uwaterloo -from amin.bandali@uwaterloo.ca +from bandali@uwaterloo.ca + +account csclub +host mail.csclub.uwaterloo.ca +tls_starttls on +from abandali@csclub.uwaterloo.ca +user abandali +passwordeval gpg --no-tty -q -d ~/.passwd/csclub.gpg +tls_trust_file /etc/ssl/certs/ca-certificates.crt + +account csclub-friendly : csclub +from bandali@csclub.uwaterloo.ca # Set a default account -account default : aminb +account default : shemshak #+end_src -** ncmpcpp +** Readline +:PROPERTIES: +:header-args+: :tangle ~/.config/readline/inputrc +:END: -*** config +#+begin_src conf +set enable-bracketed-paste on + +set colored-stats on +set colored-completion-prefix on +set completion-ignore-case on +set menu-complete-display-prefix on +set page-completions off +set show-all-if-ambiguous on +set show-all-if-unmodified on +set visible-stats on + +TAB: menu-complete +"\e[Z": menu-complete-backward + +"\e[A": history-search-backward +"\e[B": history-search-forward +#+end_src + +** rofi :PROPERTIES: -:header-args+: :tangle ~/.ncmpcpp/config +:header-args+: :tangle ~/.config/rofi/config :END: -#+begin_src conf :tangle no -############################################################## -## This is the example configuration file. Copy it to ## -## $HOME/.ncmpcpp/config or $XDG_CONFIG_HOME/ncmpcpp/config ## -## and set up your preferences. ## -############################################################## -# -##### directories ###### -## -## Directory for storing ncmpcpp related files. -## Changing it is useful if you want to store -## everything somewhere else and provide command -## line setting for alternative location to config -## file which defines that while launching ncmpcpp. -## -# -ncmpcpp_directory = ~/.ncmpcpp -# -## -## Directory for storing downloaded lyrics. It -## defaults to ~/.lyrics since other MPD clients -## (eg. ncmpc) also use that location. -## -# -#lyrics_directory = ~/.lyrics -# -##### connection settings ##### -# -#mpd_host = localhost -# -#mpd_port = 6600 -# -#mpd_connection_timeout = 5 -# -## Needed for tag editor and file operations to work. -## -mpd_music_dir = ~/usr/music -# -#mpd_crossfade_time = 5 -# -##### music visualizer ##### -## -## Note: In order to make music visualizer work you'll -## need to use mpd fifo output, whose format parameter -## has to be set to 44100:16:1 for mono visualization -## or 44100:16:2 for stereo visualization. Example -## configuration (it has to be put into mpd.conf): -## -## audio_output { -## type "fifo" -## name "Visualizer feed" -## path "/tmp/mpd.fifo" -## format "44100:16:2" -## } -## -# -visualizer_fifo_path = /tmp/mpd.fifo -# -## -## Note: Below parameter is needed for ncmpcpp -## to determine which output provides data for -## visualizer and thus allow syncing between -## visualization and sound as currently there -## are some problems with it. -## -# -visualizer_output_name = my fifo -# -## -## If you set format to 44100:16:2, make it 'yes'. -## -visualizer_in_stereo = yes -# -## -## Multiply received samples by given value. Very -## useful for proper visualization of quiet music. -## -#visualizer_sample_multiplier = 1 -# -## -## Note: Below parameter defines how often ncmpcpp -## has to "synchronize" visualizer and audio outputs. -## 30 seconds is optimal value, but if you experience -## synchronization problems, set it to lower value. -## Keep in mind that sane values start with >=10. -## -# -visualizer_sync_interval = 30 -# -## -## Note: To enable spectrum frequency visualization -## you need to compile ncmpcpp with fftw3 support. -## -# -## Available values: spectrum, wave, wave_filled, ellipse. -## -visualizer_type = spectrum -# -#visualizer_look = ●▮ -visualizer_look = "●•" -# -#visualizer_color = blue, cyan, green, yellow, magenta, red -# -## Alternative subset of 256 colors for terminals that support it. -## -#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161 -# -##### system encoding ##### -## -## ncmpcpp should detect your charset encoding -## but if it failed to do so, you can specify -## charset encoding you are using here. -## -## Note: You can see whether your ncmpcpp build -## supports charset detection by checking output -## of `ncmpcpp --version`. -## -## Note: Since MPD uses UTF-8 by default, setting -## this option makes sense only if your encoding -## is different. -## -# -#system_encoding = "" -# -##### delays ##### -# -## Time of inactivity (in seconds) after playlist -## highlighting will be disabled (0 = always on). -## -#playlist_disable_highlight_delay = 5 -# -## Defines how long messages are supposed to be visible. -## -#message_delay_time = 5 -# -##### song format ##### -## -## For a song format you can use: -## -## %l - length -## %f - filename -## %D - directory -## %a - artist -## %A - album artist -## %t - title -## %b - album -## %y - date -## %n - track number (01/12 -> 01) -## %N - full track info (01/12 -> 01/12) -## %g - genre -## %c - composer -## %p - performer -## %d - disc -## %C - comment -## %P - priority -## $R - begin right alignment -## -## If you want to make sure that a part of the format is displayed -## only when certain tags are present, you can archieve it by -## grouping them with brackets, e.g. '{%a - %t}' will be evaluated -## to 'ARTIST - TITLE' if both tags are present or '' otherwise. -## It is also possible to define a list of alternatives by providing -## several groups and separating them with '|', e.g. '{%t}|{%f}' -## will be evaluated to 'TITLE' or 'FILENAME' if the former is not -## present. -## -## Note: If you want to set limit on maximal length of a tag, just -## put the appropriate number between % and character that defines -## tag type, e.g. to make album take max. 20 terminal cells, use '%20b'. -## -## In addition, formats support markers used for text attributes. -## They are followed by character '$'. After that you can put: -## -## - 0 - default window color (discards all other colors) -## - 1 - black -## - 2 - red -## - 3 - green -## - 4 - yellow -## - 5 - blue -## - 6 - magenta -## - 7 - cyan -## - 8 - white -## - 9 - end of current color -## - b - bold text -## - u - underline text -## - r - reverse colors -## - a - use alternative character set -## -## If you don't want to use a non-color attribute anymore, just put it -## again, but this time insert character '/' between '$' and attribute -## character, e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag -## or filename with reversed colors. -## -## If you want to use 256 colors and/or background colors in formats -## (the naming scheme is described below in section about color -## definitions), it can be done with the syntax $(COLOR), e.g. to set -## the artist tag to one of the non-standard colors and make it have -## yellow background, you need to write $(197_yellow)%a$(end). Note -## that for standard colors this is interchangable with attributes -## listed above. -## -## Note: colors can be nested. -## -# -#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9} -# -#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f} -# -#song_library_format = {%n - }{%t}|{%f} -# -# -#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b -# -#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D} -# -#now_playing_prefix = $b -# -#now_playing_suffix = $/b -# -#browser_playlist_prefix = "$2playlist$9 " -# -#selected_item_prefix = $6 -# -#selected_item_suffix = $9 -# -#modified_item_prefix = $3> $9 -# -## -## Note: attributes are not supported for the following variables. -## -#song_window_title_format = {%a - }{%t}|{%f} -## -## Note: Below variables are used for sorting songs in browser. -## The sort mode determines how songs are sorted, and can be used -## in combination with a sort format to specify a custom sorting format. -## Available values for browser_sort_mode are "name", "mtime", "format" -## and "noop". -## -# -#browser_sort_mode = name -# -#browser_sort_format = {%a - }{%t}|{%f} {(%l)} -# -##### columns settings ##### -## -## syntax of song columns list format is "column column etc." -## -## - syntax for each column is: -## -## (width of the column)[color of the column]{displayed tag} -## -## Note: Width is by default in %, if you want a column to -## have fixed size, add 'f' after the value, e.g. (10)[white]{a} -## will be the column that take 10% of screen (so the real width -## will depend on actual screen size), whereas (10f)[white]{a} -## will take 10 terminal cells, no matter how wide the screen is. -## -## - color is optional (if you want the default one, -## leave the field empty). -## -## Note: You can give a column additional attributes by putting appropriate -## character after displayed tag character. Available attributes are: -## -## - r - column will be right aligned -## - E - if tag is empty, empty tag marker won't be displayed -## -## You can also: -## -## - give a column custom name by putting it after attributes, -## separated with character ':', e.g. {lr:Length} gives you -## right aligned column of lengths named "Length". -## -## - define sequence of tags, that have to be displayed in case -## predecessor is empty in a way similar to the one in classic -## song format, i.e. using '|' character, e.g. {a|c|p:Owner} -## creates column named "Owner" that tries to display artist -## tag and then composer and performer if previous ones are -## not available. -## -# -#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l} -# -##### various settings ##### -# -## -## Note: Custom command that will be executed each -## time song changes. Useful for notifications etc. -## -#execute_on_song_change = "" -# -#playlist_show_mpd_host = no -# -#playlist_show_remaining_time = no -# -#playlist_shorten_total_times = no -# -#playlist_separate_albums = no -# -## -## Note: Possible display modes: classic, columns. -## -#playlist_display_mode = columns -# -#browser_display_mode = classic -# -#search_engine_display_mode = classic -# -#playlist_editor_display_mode = classic -# -#discard_colors_if_item_is_selected = yes -# -#incremental_seeking = yes -# -#seek_time = 1 -# -#volume_change_step = 2 -# -#autocenter_mode = no -# -#centered_cursor = no -# -## -## Note: You can specify third character which will -## be used to build 'empty' part of progressbar. -## -#progressbar_look = => -progressbar_look = "─╼╶" -#progressbar_look = "─⊙╶" -# -#progressbar_boldness = yes -# -## Available values: database, playlist. -## -#default_place_to_search_in = database -# -## Available values: classic, alternative. -## -#user_interface = classic -# -#data_fetching_delay = yes -# -## Available values: artist, album_artist, date, genre, composer, performer. -## -#media_library_primary_tag = artist -# -## Available values: wrapped, normal. -## -#default_find_mode = wrapped -# -#default_tag_editor_pattern = %n - %t -# -#header_visibility = yes -# -#statusbar_visibility = yes -# -#titles_visibility = yes -# -#header_text_scrolling = yes -# -#cyclic_scrolling = no -# -#lines_scrolled = 2 -# -#follow_now_playing_lyrics = no -# -#fetch_lyrics_for_current_song_in_background = no -# -#store_lyrics_in_song_dir = no -# -#generate_win32_compatible_filenames = yes -# -#allow_for_physical_item_deletion = no -# -## -## Note: If you set this variable, ncmpcpp will try to -## get info from last.fm in language you set and if it -## fails, it will fall back to english. Otherwise it will -## use english the first time. -## -## Note: Language has to be expressed as an ISO 639 alpha-2 code. -## -#lastfm_preferred_language = en -# -#show_hidden_files_in_local_browser = no -# -## -## How shall screen switcher work? -## -## - "previous" - switch between the current and previous screen. -## - "screen1,...,screenN" - switch between given sequence of screens. -## -## Screens available for use: help, playlist, browser, search_engine, -## media_library, playlist_editor, tag_editor, outputs, visualizer, clock. -## -#screen_switcher_mode = playlist, browser -# -## -## Note: You can define startup screen -## by choosing screen from the list above. -## -#startup_screen = playlist -# -## -## Note: You can define startup slave screen -## by choosing screen from the list above or -## an empty value for no slave screen. -## -#startup_slave_screen = "" -# -#startup_slave_screen_focus = no -# -## -## Default width of locked screen (in %). -## Acceptable values are from 20 to 80. -## -# -#locked_screen_width_part = 50 -# -#ask_for_locked_screen_width_part = yes -# -#jump_to_now_playing_song_at_start = yes -# -#ask_before_clearing_playlists = yes -# -#clock_display_seconds = no -# -#display_volume_level = yes -# -#display_bitrate = no -# -#display_remaining_time = no -# -## Available values: none, basic, extended, perl. -## -#regular_expressions = perl -# -## -## Note: If below is enabled, ncmpcpp will ignore leading -## "The" word while sorting items in browser, tags in -## media library, etc. -## -#ignore_leading_the = no -# -#block_search_constraints_change_if_items_found = yes -# -#mouse_support = yes -# -#mouse_list_scroll_whole_page = yes -# -#empty_tag_marker = -# -#tags_separator = " | " -# -#tag_editor_extended_numeration = no -# -#media_library_sort_by_mtime = no -# -#enable_window_title = yes -# -## -## Note: You can choose default search mode for search -## engine. Available modes are: -## -## - 1 - use mpd built-in searching (no regexes, pattern matching) -## - 2 - use ncmpcpp searching (pattern matching with support for regexes, -## but if your mpd is on a remote machine, downloading big database -## to process it can take a while -## - 3 - match only exact values (this mode uses mpd function for searching -## in database and local one for searching in current playlist) -## -# -#search_engine_default_search_mode = 1 -# -#external_editor = nano -# -## Note: set to yes if external editor is a console application. -## -#use_console_editor = yes -# -##### colors definitions ##### -## -## It is possible to set a background color by setting a color -## value "_", e.g. red_black will set -## foregound color to red and background color to black. -## -## In addition, for terminals that support 256 colors it -## is possible to set one of them by using a number in range -## [1, 256] instead of color name, e.g. numerical value -## corresponding to red_black is 2_1. To find out if the -## terminal supports 256 colors, run ncmpcpp and check out -## the bottom of the help screen for list of available colors -## and their numerical values. -## -## Note: due to technical limitations of ncurses, if 256 colors -## are used, it is possible to either use only the colors with -## default background color, or all pairs from 1_1 up to 254_127, -## depending on the ncurses version used. -## -# -#colors_enabled = yes -# -#empty_tag_color = cyan -# -#header_window_color = default -# -#volume_color = default -# -#state_line_color = default -# -#state_flags_color = default -# -#main_window_color = yellow -# -#color1 = white -# -#color2 = green -# -#main_window_highlight_color = yellow -# -#progressbar_color = black -# -#progressbar_elapsed_color = green -# -#statusbar_color = default -# -#alternative_ui_separator_color = black -# -#active_column_color = red -# -#window_border_color = green -# -#active_window_border = red -# -#+end_src - -*** bindings -:PROPERTIES: -:header-args+: :tangle ~/.ncmpcpp/bindings -:END: +#+begin_src conf +! rofi.font: Ubuntu Mono 13 +! rofi.font: Inconsolata 16 +! rofi.font: Iosevka 13 +! rofi.font: Source Code Pro 11 +rofi.font: Source Code Pro 10.5 +rofi.modi: run,window +! rofi.width: 640 +rofi.width: 600 +!rofi.location: 2 +!rofi.yoffset: 200 +rofi.monitor: -1 +!rofi.lines: 10 -#+begin_src conf :tangle no -def_key "j" - scroll_down -def_key "k" - scroll_up - -def_key "ctrl-u" - page_up -def_key "ctrl-d" - page_down - -def_key "h" - previous_column -def_key "l" - next_column - -def_key "." - show_lyrics - -def_key "n" - next_found_item -def_key "N" - previous_found_item - -def_key "J" - move_sort_order_down -def_key "K" - move_sort_order_up +rofi.theme: ~/.guix-profile/share/rofi/themes/gruvbox-light-hard.rasi #+end_src -** notmuch - -*** notmuch-config +** rofi-pass :PROPERTIES: -:header-args+: :tangle ~/.notmuch-config +:header-args+: :tangle ~/.config/rofi-pass/config :END: #+begin_src conf -# .notmuch-config - Configuration file for the notmuch mail system -# -# For more information about notmuch, see https://notmuchmail.org - -# Database configuration -# -# The only value supported here is 'path' which should be the top-level -# directory where your mail currently exists and to where mail will be -# delivered in the future. Files should be individual email messages. -# Notmuch will store its database within a sub-directory of the path -# configured here named ".notmuch". -# -[database] -path=/home/amin/mail +# permanently set alternative root dir +# root=/path/to/root -# User configuration -# -# Here is where you can let notmuch know how you would like to be -# addressed. Valid settings are -# -# name Your full name. -# primary_email Your primary email address. -# other_email A list (separated by ';') of other email addresses -# at which you receive email. -# -# Notmuch will use the various email addresses configured here when -# formatting replies. It will avoid including your own addresses in the -# recipient list of replies, and will set the From address based on the -# address to which the original email was addressed. -# -[user] -name=Amin Bandali -primary_email=amin@aminb.org -other_email=amin.bandali@uwaterloo.ca;mbandali@uwaterloo.ca;aminb@gnu.org; +# rofi command. Make sure to have "$@" as last argument +_rofi () { + #rofi -no-auto-select -kb-accept-entry "!Return" -i -no-levenshtein-sort "$@" + rofi -i -no-auto-select -kb-accept-entry "!Return" "$@" +} -# Configuration for "notmuch new" -# -# The following options are supported here: -# -# tags A list (separated by ';') of the tags that will be -# added to all messages incorporated by "notmuch new". -# -# ignore A list (separated by ';') of file and directory names -# that will not be searched for messages by "notmuch new". -# -# NOTE: *Every* file/directory that goes by one of those -# names will be ignored, independent of its depth/location -# in the mail store. -# -[new] -tags=new; -#tags=unread;inbox; -ignore=.uidvalidity;.mbsyncstate +# xdotool needs the keyboard layout to be set using setxkbmap +# You can do this in your autostart scripts (e.g. xinitrc) -# Search configuration -# -# The following option is supported here: -# -# exclude_tags -# A ;-separated list of tags that will be excluded from -# search results by default. Using an excluded tag in a -# query will override that exclusion. -# -[search] -exclude_tags=deleted;spam; +# If for some reason, you cannot do this, you can set the command here. +# and set fix_layout to true +fix_layout=false -# 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 +layout_cmd () { + setxkbmap us +} -# Cryptography related configuration -# -# The following option is supported here: -# -# gpg_path -# binary name or full path to invoke gpg. -# -[crypto] -gpg_path=gpg -#+end_src +# fields to be used +URL_field='url' +USERNAME_field='user' +AUTOTYPE_field='autotype' -*** post-new hook -:PROPERTIES: -:header-args+: :tangle ~/mail/.notmuch/hooks/post-new :shebang "#!/bin/sh" -:END: +# delay to be used for :delay keyword +delay=2 -#+begin_src sh -afew -tn - -# apply tags to lists -notmuch tag +lists +lists/deepspec -- folder:amin/lists/deepspec -notmuch tag +lists +lists/haskell-cafe -- folder:amin/lists/haskell-cafe -notmuch tag +lists +lists/haskell-weekly -- folder:amin/lists/haskell-weekly -notmuch tag +lists +lists/hackernewsletter -- folder:amin/lists/hackernewsletter -notmuch tag +lists +lists/notmuch -- folder:amin/lists/notmuch -notmuch tag +lists +lists/info-gnu-emacs -- folder:amin/lists/info-gnu-emacs -notmuch tag +lists +lists/help-gnu-emacs -- folder:amin/lists/help-gnu-emacs -notmuch tag +lists +lists/emacs-devel -- folder:amin/lists/emacs-devel -#+end_src +## Programs to be used +# Editor +EDITOR='gvim -f' -*** notmuch.service -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/notmuch.service -:END: +# Browser +BROWSER='chromium' -#+begin_src conf :tangle no -[Unit] -Description=notmuch service +## Misc settings -[Service] -Type=oneshot -ExecStart=/usr/bin/notmuch new -StandardOutput=syslog -StandardError=syslog -#+end_src +default_do='menu' # menu, autotype, copyPass, typeUser, typePass, copyUser, copyUrl, viewEntry, typeMenu, actionMenu, copyMenu, openUrl +auto_enter='false' +notify='false' +default_autotype='user :tab pass' -*** notmuch.timer -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/notmuch.timer -:END: +# color of the help messages +# leave empty for autodetection +help_color="#4872FF" -#+begin_src conf :tangle no -[Unit] -Description=notmuch timer +# Clipboard settings +# Possible options: primary, clipboard, both +clip=primary -[Timer] -OnCalendar=*:0/5 -Persistent=true -Unit=notmuch.service +# Options for generating new password entries +# default_user is also used for password files that have no user field. +default_user=aminb +default_user2=bandali +password_length=30 -[Install] -WantedBy=timers.target +# Custom Keybindings +#autotype="Alt+1" +autotype="Alt+m" +type_user="Alt+2" +type_pass="Alt+3" +open_url="Alt+4" +copy_name="Alt+u" +copy_url="Alt+l" +copy_pass="Alt+p" +show="Alt+o" +copy_entry="Alt+2" +type_entry="Alt+1" +copy_menu="Alt+c" +action_menu="Alt+a" +type_menu="Alt+t" +help="Alt+h" +switch="Alt+x" +insert_pass="Alt+n" #+end_src -** offlineimap - -*** offlineimaprc +** Screen :PROPERTIES: -:header-args+: :tangle ~/.offlineimaprc +:header-args+: :tangle ~/.config/screen/screenrc :END: -#+begin_src conf :tangle no -[general] -pythonfile = ~/.offlineimap.py -accounts = Gmail, aminb -maxsyncaccounts = 3 - -[Account Gmail] -localrepository = GmailL -remoterepository = GmailR - -[Account aminb] -localrepository = aminbL -remoterepository = aminbR - -[Repository GmailL] -type = Maildir -localfolders = ~/Maildir/Gmail - -[Repository GmailR] -type = IMAP -remotehost = imap.gmail.com -remoteusereval = mailuser("gmail") -remotepasseval = mailpasswd("gmail") -sslcacertfile = /etc/ssl/certs/ca-certificates.crt -ssl = yes -folderfilter = lambda foldername: foldername not in '[Gmail]/All Mail' -maxconnections = 1 -realdelete = no - -[Repository aminbL] -type = Maildir -localfolders = ~/Maildir/aminb - -[Repository aminbR] -type = IMAP -remotehost = mail.aminb.org -remoteusereval = mailuser("aminb") -remotepasseval = mailpasswd("aminb") -sslcacertfile = /etc/ssl/certs/ca-certificates.crt -ssl = yes -folderfilter = lambda foldername: foldername not in 'dovecot.sieve' -maxconnections = 1 -realdelete = no +#+begin_src screen +startup_message off +caption always "%{= kc}GNU Screen $USER@%H (load: %l)%-28=%{= .m}%D %d.%m.%Y %0c" #+end_src -*** offlineimap.py +** Shell + +*** GNU Bash :PROPERTIES: -:header-args+: :tangle ~/.offlineimap.py +:header-args+: :tangle ~/.bashrc :END: -#+begin_src python :tangle no -import os -import subprocess +#+begin_src bash +# Bash initialization for interactive non-login shells and +# for remote shells (info "(bash) Bash Startup Files"). -def mailpasswd(acct): - acct = os.path.basename(acct) - path = "/home/amin/.passwd/%s.gpg" % acct - args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path] - try: - return subprocess.check_output(args).strip() - except subprocess.CalledProcessError: - return "" - -def mailuser(acct): - acct = os.path.basename(acct) - path = "/home/amin/.passwd/%s" % acct - args = ["cat", path] - try: - return subprocess.check_output(args).strip() - except subprocess.CalledProcessError: - return "" - -def prime_gpg_agent(): - ret = False - i = 1 - while not ret: - ret = (mailpasswd("prime") == "prime") - if i > 2: - from offlineimap.ui import getglobalui - sys.stderr.write("Error reading in passwords. Terminating.\n") - getglobalui().terminate() - i += 1 - return ret - -prime_gpg_agent() -#+end_src +# Export 'SHELL' to child processes. Programs such as 'screen' +# honor it and otherwise use /bin/sh. +export SHELL -** polybar +if [[ $- != *i* ]] +then + # We are being invoked from a non-interactive shell. If this + # is an SSH session (as in "ssh host command"), source + # /etc/profile so we get PATH and other essential variables. + [[ -n "$SSH_CLIENT" ]] && source /etc/profile -*** config -:PROPERTIES: -:header-args+: :tangle ~/.config/polybar/config -:END: + # Don't do anything else. + return +fi -#+begin_src conf :tangle no -;===================================================== -; -; To learn more about how to configure Polybar -; go to https://github.com/jaagr/polybar -; -; The README contains alot of information -; -;===================================================== - -[colors] -;background = ${xrdb:color0:#222} -background = #222 -background-alt = #444 -;foreground = ${xrdb:color7:#222} -foreground = #eee -foreground-alt = #888 -primary = #ffb52a -secondary = #e60053 -alert = #bd2c40 - -[bar/main] -;monitor = ${env:MONITOR:HDMI-1} -width = 100% -height = 27 -;offset-x = 1% -;offset-y = 1% -radius = 3.0 -fixed-center = true - -background = ${colors.background} -foreground = ${colors.foreground} - -line-size = 3 -line-color = #f00 - -border-size = 4 -border-color = #00000000 - -padding-left = 0 -padding-right = 2 - -module-margin-left = 2 -module-margin-right = 2 - -font-0 = Ubuntu:fontformat=truetype:antialias=true:pixelsize=9;1 -font-1 = unifont:fontformat=truetype:size=8:antialias=false;0 -font-2 = Wuncon Siji:pixelsize=10;1 -font-3 = FontAwesome:pixelsize=10;1 - -modules-left = bspwm xwindow -modules-center = -modules-right = volume filesystem mail xkeyboard memory cpu temperature date powermenu - -tray-position = right -tray-padding = 1 -;tray-transparent = true -;tray-background = #0063ff -tray-maxsize = 18 - -wm-restack = bspwm - -;override-redirect = true - -scroll-up = bspwm-desknext -scroll-down = bspwm-deskprev - -[module/xwindow] -type = internal/xwindow -label = %title:0:50:...% - -[module/xkeyboard] -type = internal/xkeyboard -blacklist-0 = num lock - -format-prefix = " " -format-prefix-foreground = ${colors.foreground-alt} -format-prefix-underline = ${colors.secondary} - -label-layout = %layout% -label-layout-underline = ${colors.secondary} - -label-indicator-padding = 2 -label-indicator-margin = 1 -label-indicator-background = ${colors.secondary} -label-indicator-underline = ${colors.secondary} - -[module/filesystem] -type = internal/fs -interval = 25 - -mount-0 = / - -label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%% -label-unmounted = %mountpoint% not mounted -label-unmounted-foreground = ${colors.foreground-alt} - -[module/bspwm] -type = internal/bspwm - -label-focused = %index% -label-focused-background = ${colors.background-alt} -label-focused-underline= ${colors.primary} -label-focused-padding = 2 - -label-occupied = %index% -label-occupied-padding = 2 - -label-urgent = %index%! -label-urgent-background = ${colors.alert} -label-urgent-padding = 2 - -label-empty = %index% -label-empty-foreground = ${colors.foreground-alt} -label-empty-padding = 2 - -[module/i3] -type = internal/i3 -format = -index-sort = true -wrapping-scroll = false - -; Only show workspaces on the same output as the bar -;pin-workspaces = true - -label-mode-padding = 2 -label-mode-foreground = #000 -label-mode-background = ${colors.primary} - -; focused = Active workspace on focused monitor -label-focused = %index% -label-focused-background = ${module/bspwm.label-focused-background} -label-focused-underline = ${module/bspwm.label-focused-underline} -label-focused-padding = ${module/bspwm.label-focused-padding} - -; unfocused = Inactive workspace on any monitor -label-unfocused = %index% -label-unfocused-padding = ${module/bspwm.label-occupied-padding} - -; visible = Active workspace on unfocused monitor -label-visible = %index% -label-visible-background = ${self.label-focused-background} -label-visible-underline = ${self.label-focused-underline} -label-visible-padding = ${self.label-focused-padding} - -; urgent = Workspace with urgency hint set -label-urgent = %index% -label-urgent-background = ${module/bspwm.label-urgent-background} -label-urgent-padding = ${module/bspwm.label-urgent-padding} - -[module/mpd] -type = internal/mpd -format-online = - -icon-prev =  -icon-stop =  -icon-play =  -icon-pause =  -icon-next =  - -label-song-maxlen = 25 -label-song-ellipsis = true - -[module/xbacklight] -type = internal/xbacklight - -format =