X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/ad65bea00265c8766030931b8dd244fe27dedf27..a85421b4516cbcf41db14e69fd58d0ed115d796e:/rc.org?ds=sidebyside diff --git a/rc.org b/rc.org index dcce8ab..b3d5815 100644 --- a/rc.org +++ b/rc.org @@ -1,4332 +1,23 @@ #+title: rc.org -#+property: header-args :comments link :mkdirp yes :results silent +#+property: header-args :comments no :mkdirp yes :results silent -* About +This file contains some of the system-level (global) configuration +files for various programs I use. -This org file contains the configuration files of pretty much every -program I use. The files are tangled (i.e. exported, or derived) from -this file using =org-babel=. +* systemd -Note: This file is best viewed inside Emacs with org mode. +Keep boot messages on tty1 (see [[https://wiki.archlinux.org/index.php/getty#Have_boot_messages_stay_on_tty1][here]]) -* Configs - -This section contains the configuration files (dotfiles) of various -programs I use. - -** bspwm - -*** bspwmrc -:PROPERTIES: -:header-args+: :tangle ~/.config/bspwm/bspwmrc :shebang "#!/bin/sh" -:END: - -#+begin_src sh :tangle no -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 :tangle no -# -# 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 - -XF86AudioMicMute - pactl set-source-mute 1 toggle - -# 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} - -XF86RotateWindows - toggle-tablet - -# -# 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 :tangle no -# 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 - -** Fontconfig -:PROPERTIES: -:header-args+: :tangle ~/.config/fontconfig/fonts.conf :comments none -:END: - -#+begin_src xml - - - - - - rgb - - - - - true - - - - - hintslight - - - - - true - - - - - lcddefault - - - ~/.fonts - - - - Helvetica - - Liberation Sans - - - -#+end_src - -** getmail - -*** getmailrc -:PROPERTIES: -:header-args+: :tangle ~/.getmail/getmailrc -:END: - -#+begin_src conf -[retriever] -type = SimplePOP3SSLRetriever -server = fencepost.gnu.org -username = aminb -password_command = ("gpg2", "--no-tty", "-q", "-d", "/home/amin/.passwd/gnu.gpg") -port = 995 -use_apop = True - -[destination] -type = Maildir -path = ~/mail/gnu/Inbox/ - -[options] -delete = True -#+end_src - -*** getmail.service -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/getmail.service -:END: - -#+begin_src conf :tangle no -[Unit] -Description=getmail service - -[Service] -Type=oneshot -ExecStart=/usr/bin/getmail -StandardOutput=syslog -StandardError=syslog -#+end_src - -*** getmail.timer -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/getmail.timer -:END: - -#+begin_src conf :tangle no -[Unit] -Description=getmail timer - -[Timer] -OnCalendar=*:0/30 -Persistent=true -Unit=getmail.service - -[Install] -WantedBy=timers.target -#+end_src - -** Git - -*** gitconfig -:PROPERTIES: -:header-args+: :tangle ~/.gitconfig -:END: - -**** user -#+begin_src conf -[user] - name = Amin Bandali - email = amin@gnu.org - signingkey = CDDE75F903538E71813CDA27D1FBA36627D65876 -#+end_src - -**** signing -#+begin_src conf -[commit] - gpgsign = true -# [format] -# signoff = true -#+end_src - -**** core -#+begin_src conf -[core] - autocrlf = input # CRLF -> LF on commit - editor = emacsclient -t - excludesfile = ~/.gitignore_global - pager = "less" -#+end_src - -**** gpg -#+begin_src conf -[gpg] - program = gpg2 -#+end_src - -**** 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 - nmam = "!f() { notmuch show --format=raw $1 | git am -; }; f" - nmam3 = "!f() { notmuch show --format=raw $1 | git am -3 -; }; f" -#+end_src - -**** color -#+begin_src conf -[color] - ui = auto -[color "status"] - added = green bold - changed = red bold - untracked = red bold -[color "branch"] - current = green bold - remote = magenta bold -[color "diff"] - new = green bold - old = red bold -#+end_src - -**** status -#+begin_src conf -[status] - # showUntrackedFiles = all - short=true - branch=true -#+end_src - -**** github -#+begin_src conf -[github] - user = aminb -#+end_src - -**** send-email -#+begin_src conf -[sendemail] - smtpuser = aminb - smtpserver = fencepost.gnu.org - smtpserverport = 587 - smtpencryption = tls - annotate = yes -#+end_src - -*** gitignore -:PROPERTIES: -:header-args+: :tangle ~/.gitignore_global -:END: - -#+begin_src conf -*.orig -*.py[co] -*.sublime-workspace -*~ -.DS_Store -*.elc -*-autoloads.el -#+end_src - -** GnuPG -:PROPERTIES: -:header-args+: :tangle ~/.gnupg/gpg-agent.conf -:END: - -#+begin_src conf -default-cache-ttl 43200 -max-cache-ttl 43200 - -default-cache-ttl-ssh 10800 -max-cache-ttl-ssh 10800 - -# pinentry-program /usr/bin/pinentry-qt -#+end_src - -** GTK - -*** gtk-2.0 -:PROPERTIES: -:header-args+: :tangle ~/.gtkrc-2.0 -: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" -#+end_src - -*** gtk-3.0 -:PROPERTIES: -:header-args+: :tangle ~/.config/gtk-3.0/settings.ini -:END: - -#+begin_src conf :tangle no -[Settings] -gtk-icon-theme-name = Paper -# gtk-theme-name = Adwaita - -gtk-theme-name = Greybird -# gtk-theme-name = Arc-Darker -# gtk-theme-name = Numix-ArchBlue - -gtk-font-name = Ubuntu 10 -# gtk-key-theme-name = Emacs -#+end_src - -** [[https://github.com/Leinnan/i3gs][i3gs]] -:PROPERTIES: -:header-args+: :tangle ~/.config/i3gs/config -:END: - -#+begin_src conf :comments none :tangle no -borders_width=0 0 2 0 -separator_width=10 - -#[mpd] -#preset=MPD -#title=  -#borders_color=#7FDBFF - -[ram] -preset=RAM -title=  -borders_color=#3D9970 - -#[cpu] -#preset=CPU -#title=  -#borders_color=#2ECC40 - -#[hdd] -#preset=HDD -#title=  -#borders_color=#01FF70 - -[volume] -command=volume-info -title= -borders_color=#7FDBFF - -[battery] -preset=BAT -command=battery-percentage-time -title=  -borders_color=#39CCCC - -[wifi] -preset=WIFI -title=  -borders_color=#01FF70 - -[date] -preset=DATE -command=date '+%-I:%M, %a %b %d ' -title=  -borders_color=#FFDC00 -separator_width=0 -#+end_src - -** i3status -:PROPERTIES: -:header-args+: :tangle ~/.config/i3status/config -:END: - -#+begin_src conf :comments none -# i3status configuration file. -# see "man i3status" for documentation. - -# It is important that this file is edited as UTF-8. -# The following line should contain a sharp s: -# ß -# If the above line is not correctly displayed, fix your editor first! - -general { - colors = true - interval = 5 -} - -# order += "ipv6" -order += "disk /" -order += "disk /data" -order += "wireless _first_" -# order += "ethernet _first_" -order += "battery 0" -order += "volume master" -order += "load" -order += "tztime local" - -wireless _first_ { - format_up = "W:%quality %essid %ip" - format_down = "W: down" -} - -# ethernet _first_ { -# # if you use %speed, i3status requires root privileges -# format_up = "E: %ip (%speed)" -# format_down = "E: down" -# } - -battery 0 { - format = "%status %percentage %remaining (%consumption)" - path = "/sys/class/power_supply/BAT%d/uevent" - low_threshold = "10" - threshold_type = "percentage" - last_full_capacity = true - integer_battery_capacity = true - hide_seconds = true -} - -tztime local { - format = "%-I:%M%P %a %b %d" -} - -volume master { - format = "♪ %volume" - format_muted = "🔇 %volume" - device = "pulse" -} - -load { - format = "%1min" -} - -disk "/" { - format = "/ %avail" -} - -disk "/data" { - format = "/data %avail" -} -#+end_src - -** isync - -*** mbsyncrc -:PROPERTIES: -:header-args+: :tangle ~/.mbsyncrc -:END: - -#+begin_src conf -# Global defaults -CopyArrivalDate yes - -###### -IMAPAccount amin -Host nix.aminb.org -User amin@aminb.org -PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin.gpg" -SSLType IMAPS - -IMAPStore amin-remote -Account amin - -MaildirStore amin-local -Path ~/mail/amin/ -Inbox ~/mail/amin/Inbox -SubFolders Verbatim - -Channel amin -Master :amin-remote: -Slave :amin-local: -Patterns * !dovecot* -Create Both -SyncState * - -###### -IMAPAccount uwaterloo -Host connect.uwaterloo.ca -User abandali -PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/uwaterloo.gpg" -SSLType IMAPS - -IMAPStore uwaterloo-remote -Account uwaterloo - -MaildirStore uwaterloo-local -Path ~/mail/uwaterloo/ -Inbox ~/mail/uwaterloo/Inbox -SubFolders Verbatim - -Channel uwaterloo -Master :uwaterloo-remote: -Slave :uwaterloo-local: -Patterns * !dovecot* -Create Both -SyncState * -#+end_src - -*** mbsync.service -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/mbsync.service -:END: - -#+begin_src conf :tangle no -[Unit] -Description=mbsync service - -[Service] -Type=oneshot -ExecStart=/usr/bin/mbsync -Va -StandardOutput=syslog -StandardError=syslog -#+end_src - -*** mbsync.timer -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/mbsync.timer -:END: - -#+begin_src conf :tangle no -[Unit] -Description=mbsync timer - -[Timer] -OnCalendar=*:0/15 -Persistent=true -Unit=mbsync.service - -[Install] -WantedBy=timers.target -#+end_src - -** Latexmk -:PROPERTIES: -:header-args+: :tangle ~/.latexmkrc -: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 - -** libinput - -Improve XPS 15 9560's touchpad experience. - -# begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "plasma")) "/sudo::/etc/X11/xorg.conf.d/30-touchpad.conf") -#+begin_src conf :tangle no -Section "InputClass" - Identifier "libinput touchpad catchall" - Driver "libinput" - MatchIsTouchpad "on" - Option "ClickMethod" "clickfinger" - Option "NaturalScrolling" "true" - Option "Tapping" "on" - Option "TappingButtonMap" "lrm" -EndSection -#+end_src - -** mpd -:PROPERTIES: -:header-args+: :tangle ~/.config/mpd/mpd.conf -:END: - -#+begin_src conf -# An example configuration file for MPD. -# Read the user manual for documentation: http://www.musicpd.org/doc/user/ - - -# Files and directories ####################################################### -# -# This setting controls the top directory which MPD will search to discover the -# available audio files and add them to the daemon's online database. This -# setting defaults to the XDG directory, otherwise the music directory will be -# be disabled and audio files will only be accepted over ipc socket (using -# file:// protocol) or streaming files over an accepted protocol. -# -music_directory "~/usr/music" -# -# This setting sets the MPD internal playlist directory. The purpose of this -# directory is storage for playlists created by MPD. The server will use -# playlist files not created by the server but only if they are in the MPD -# format. This setting defaults to playlist saving being disabled. -# -playlist_directory "~/.mpd/playlists" -# -# This setting sets the location of the MPD database. This file is used to -# load the database at server start up and store the database while the -# server is not up. This setting defaults to disabled which will allow -# MPD to accept files over ipc socket (using file:// protocol) or streaming -# files over an accepted protocol. -# -db_file "~/.mpd/database" -# -# These settings are the locations for the daemon log files for the daemon. -# These logs are great for troubleshooting, depending on your log_level -# settings. -# -# The special value "syslog" makes MPD use the local syslog daemon. This -# setting defaults to logging to syslog, otherwise logging is disabled. -# -log_file "~/.mpd/log" -# -# This setting sets the location of the file which stores the process ID -# for use of mpd --kill and some init scripts. This setting is disabled by -# default and the pid file will not be stored. -# -pid_file "~/.mpd/pid" -# -# This setting sets the location of the file which contains information about -# most variables to get MPD back into the same general shape it was in before -# it was brought down. This setting is disabled by default and the server -# state will be reset on server start up. -# -state_file "~/.mpd/state" -# -# The location of the sticker database. This is a database which -# manages dynamic information attached to songs. -# -sticker_file "~/.mpd/sticker.sql" -# -############################################################################### - - -# General music daemon options ################################################ -# -# This setting specifies the user that MPD will run as. MPD should never run as -# root and you may use this setting to make MPD change its user ID after -# initialization. This setting is disabled by default and MPD is run as the -# current user. -# -#user "nobody" -# -# This setting specifies the group that MPD will run as. If not specified -# primary group of user specified with "user" setting will be used (if set). -# This is useful if MPD needs to be a member of group such as "audio" to -# have permission to use sound card. -# -#group "nogroup" -# -# This setting sets the address for the daemon to listen on. Careful attention -# should be paid if this is assigned to anything other then the default, any. -# This setting can deny access to control of the daemon. Not effective if -# systemd socket activiation is in use. -# -# For network -#bind_to_address "any" -# -# And for Unix Socket -#bind_to_address "~/.mpd/socket" -# -# This setting is the TCP port that is desired for the daemon to get assigned -# to. -# -#port "6600" -# -# This setting controls the type of information which is logged. Available -# setting arguments are "default", "secure" or "verbose". The "verbose" setting -# argument is recommended for troubleshooting, though can quickly stretch -# available resources on limited hardware storage. -# -#log_level "default" -# -# If you have a problem with your MP3s ending abruptly it is recommended that -# you set this argument to "no" to attempt to fix the problem. If this solves -# the problem, it is highly recommended to fix the MP3 files with vbrfix -# (available from ), at which -# point gapless MP3 playback can be enabled. -# -#gapless_mp3_playback "yes" -# -# Setting "restore_paused" to "yes" puts MPD into pause mode instead -# of starting playback after startup. -# -#restore_paused "no" -# -# This setting enables MPD to create playlists in a format usable by other -# music players. -# -#save_absolute_paths_in_playlists "no" -# -# This setting defines a list of tag types that will be extracted during the -# audio file discovery process. The complete list of possible values can be -# found in the user manual. -#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" -# -# This setting enables automatic update of MPD's database when files in -# music_directory are changed. -# -#auto_update "yes" -# -# Limit the depth of the directories being watched, 0 means only watch -# the music directory itself. There is no limit by default. -# -#auto_update_depth "3" -# -############################################################################### - - -# Symbolic link behavior ###################################################### -# -# If this setting is set to "yes", MPD will discover audio files by following -# symbolic links outside of the configured music_directory. -# -#follow_outside_symlinks "yes" -# -# If this setting is set to "yes", MPD will discover audio files by following -# symbolic links inside of the configured music_directory. -# -#follow_inside_symlinks "yes" -# -############################################################################### - - -# Zeroconf / Avahi Service Discovery ########################################## -# -# If this setting is set to "yes", service information will be published with -# Zeroconf / Avahi. -# -#zeroconf_enabled "yes" -# -# The argument to this setting will be the Zeroconf / Avahi unique name for -# this MPD server on the network. -# -#zeroconf_name "Music Player" -# -############################################################################### - - -# Permissions ################################################################# -# -# If this setting is set, MPD will require password authorization. The password -# setting can be specified multiple times for different password profiles. -# -#password "password@read,add,control,admin" -# -# This setting specifies the permissions a user has who has not yet logged in. -# -#default_permissions "read,add,control,admin" -# -############################################################################### - - -# Database ####################################################################### -# - -#database { -# plugin "proxy" -# host "other.mpd.host" -# port "6600" -#} - -# Input ####################################################################### -# - -input { - plugin "curl" -# proxy "proxy.isp.com:8080" -# proxy_user "user" -# proxy_password "password" -} - -# -############################################################################### - -# Audio Output ################################################################ -# - -audio_output { - type "pulse" - name "pulse audio" -} - -audio_output { - type "fifo" - name "my_fifo" - path "/tmp/mpd.fifo" - format "44100:16:2" -} - -# MPD supports various audio output types, as well as playing through multiple -# audio outputs at the same time, through multiple audio_output settings -# blocks. Setting this block is optional, though the server will only attempt -# autodetection for one sound card. -# -# An example of an ALSA output: -# -#audio_output { -# type "alsa" -# name "My ALSA Device" -## device "hw:0,0" # optional -## mixer_type "hardware" # optional -## mixer_device "default" # optional -## mixer_control "PCM" # optional -## mixer_index "0" # optional -#} -# -# An example of an OSS output: -# -#audio_output { -# type "oss" -# name "My OSS Device" -## device "/dev/dsp" # optional -## mixer_type "hardware" # optional -## mixer_device "/dev/mixer" # optional -## mixer_control "PCM" # optional -#} -# -# An example of a shout output (for streaming to Icecast): -# -#audio_output { -# type "shout" -# encoder "vorbis" # optional -# name "My Shout Stream" -# host "localhost" -# port "8000" -# mount "/mpd.ogg" -# password "hackme" -# quality "5.0" -# bitrate "128" -# format "44100:16:1" -## protocol "icecast2" # optional -## user "source" # optional -## description "My Stream Description" # optional -## url "http://example.com" # optional -## genre "jazz" # optional -## public "no" # optional -## timeout "2" # optional -## mixer_type "software" # optional -#} -# -# An example of a recorder output: -# -#audio_output { -# type "recorder" -# name "My recorder" -# encoder "vorbis" # optional, vorbis or lame -# path "/var/lib/mpd/recorder/mpd.ogg" -## quality "5.0" # do not define if bitrate is defined -# bitrate "128" # do not define if quality is defined -# format "44100:16:1" -#} -# -# An example of a httpd output (built-in HTTP streaming server): -# -#audio_output { -# type "httpd" -# name "My HTTP Stream" -# encoder "vorbis" # optional, vorbis or lame -# port "8000" -# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 -## quality "5.0" # do not define if bitrate is defined -# bitrate "128" # do not define if quality is defined -# format "44100:16:1" -# max_clients "0" # optional 0=no limit -#} -# -# An example of a pulseaudio output (streaming to a remote pulseaudio server) -# -#audio_output { -# type "pulse" -# name "My Pulse Output" -## server "remote_server" # optional -## sink "remote_server_sink" # optional -#} -# -# An example of a winmm output (Windows multimedia API). -# -#audio_output { -# type "winmm" -# name "My WinMM output" -## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional -# or -## device "0" # optional -## mixer_type "hardware" # optional -#} -# -# An example of an openal output. -# -#audio_output { -# type "openal" -# name "My OpenAL output" -## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional -#} -# -# An example of an sndio output. -# -#audio_output { -# type "sndio" -# name "sndio output" -# mixer_type "software" -#} -# -# An example of an OS X output: -# -#audio_output { -# type "osx" -# name "My OS X Device" -## device "Built-in Output" # optional -## channel_map "-1,-1,0,1" # optional -#} -# -## Example "pipe" output: -# -#audio_output { -# type "pipe" -# name "my pipe" -# command "aplay -f cd 2>/dev/null" -## Or if you're want to use AudioCompress -# command "AudioCompress -m | aplay -f cd 2>/dev/null" -## Or to send raw PCM stream through PCM: -# command "nc example.org 8765" -# format "44100:16:2" -#} -# -## An example of a null output (for no audio output): -# -#audio_output { -# type "null" -# name "My Null Output" -# mixer_type "none" # optional -#} -# -############################################################################### - - -# Normalization automatic volume adjustments ################################## -# -# This setting specifies the type of ReplayGain to use. This setting can have -# the argument "off", "album", "track" or "auto". "auto" is a special mode that -# chooses between "track" and "album" depending on the current state of -# random playback. If random playback is enabled then "track" mode is used. -# See for more details about ReplayGain. -# This setting is off by default. -# -#replaygain "album" -# -# This setting sets the pre-amp used for files that have ReplayGain tags. By -# default this setting is disabled. -# -#replaygain_preamp "0" -# -# This setting sets the pre-amp used for files that do NOT have ReplayGain tags. -# By default this setting is disabled. -# -#replaygain_missing_preamp "0" -# -# This setting enables or disables ReplayGain limiting. -# MPD calculates actual amplification based on the ReplayGain tags -# and replaygain_preamp / replaygain_missing_preamp setting. -# If replaygain_limit is enabled MPD will never amplify audio signal -# above its original level. If replaygain_limit is disabled such amplification -# might occur. By default this setting is enabled. -# -#replaygain_limit "yes" -# -# This setting enables on-the-fly normalization volume adjustment. This will -# result in the volume of all playing audio to be adjusted so the output has -# equal "loudness". This setting is disabled by default. -# -#volume_normalization "no" -# -############################################################################### - -# Character Encoding ########################################################## -# -# If file or directory names do not display correctly for your locale then you -# may need to modify this setting. -# -#filesystem_charset "UTF-8" -# -############################################################################### -#+end_src - -** msmtp -:PROPERTIES: -:header-args+: :tangle ~/.msmtprc -:END: - -#+begin_src conf -# Set default values for all following accounts. -defaults -port 587 -tls on -auth on -#tls_trust_file /etc/ssl/certs/ca-certificates.crt -logfile ~/.msmtp.log - -# aminb -account aminb -host nix.aminb.org -# use `msmtp -a aminb --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint -tls_fingerprint 98:C7:F0:02:7F:2B:D8:B6:D3:BF:E8:C1:D4:07:6B:B5:6C:B1:C7:5D:97:20:70:88:AB:9E:B5:09:5D:2C:DC:8E -tls_starttls on -from amin@aminb.org -user amin@aminb.org -passwordeval gpg2 --no-tty -q -d ~/.passwd/amin.gpg - -# gnu -account gnu -host fencepost.gnu.org -# use `msmtp -a gnu --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint -tls_fingerprint 28:70:42:76:1C:EC:91:5F:D1:B3:27:A1:CD:3B:32:A4:8B:0B:DC:3A:CD:CA:F6:6F:E4:61:BA:69:D7:4D:0D:0B -tls_starttls on -from aminb@gnu.org -user aminb -passwordeval gpg2 --no-tty -q -d ~/.passwd/gnu.gpg - -# gnu (amin) -account gnu-amin : gnu -from amin@gnu.org - -# gnu (mab) -account gnu-mab : gnu -from mab@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 -tls_trust_file /etc/ssl/certs/ca-certificates.crt - -# Set a default account -account default : aminb -#+end_src - -** ncmpcpp - -*** config -:PROPERTIES: -:header-args+: :tangle ~/.ncmpcpp/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 :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 -#+end_src - -** notmuch - -*** notmuch-config -:PROPERTIES: -:header-args+: :tangle ~/.notmuch-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 - -# 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@gnu.org;abandali@uwaterloo.ca;mab@gnu.org;aminb@gnu.org; - -# 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;/.*/dovecot*/ - -# 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; - -# 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 - -# 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 - -*** pre-new hook -:PROPERTIES: -:header-args+: :tangle ~/mail/.notmuch/hooks/pre-new :shebang "#!/bin/sh" -:END: - -#+begin_src sh -touch /tmp/gnusieve.log -sieve-filter -eW -o postmaster_address=postmaster@aminb.org \ - -o mail_location=maildir:$MAILDIR/gnu:LAYOUT=fs:INBOX=$MAILDIR/gnu/Inbox ~/sieve/gnu.sieve INBOX delete &>>/tmp/gnusieve.log -#+end_src - -*** post-new hook -:PROPERTIES: -:header-args+: :tangle ~/mail/.notmuch/hooks/post-new :shebang "#!/bin/sh" -:END: - -#+begin_src sh -# apply sent tag to messages sent by me -notmuch tag -new +sent -- from:amin@aminb.org or from:amin@gnu.org or from:mab@gnu.org or from:aminb@gnu.org or from:abandali@uwaterloo.ca - -# initial tagging -notmuch tag -latest -- tag:latest -notmuch tag +inbox +unread +latest -new -- tag:new - - -# apply tags to lists - -# -notmuch tag -inbox +lists/hackernewsletter -- folder:amin/lists/hackernewsletter -notmuch tag -inbox +lists/haskell-weekly -- folder:amin/lists/haskell-weekly - -notmuch tag -inbox +pay -- folder:amin/pay -notmuch tag -inbox +banking -- folder:amin/banking -notmuch tag -inbox +work -- folder:amin/work -# - -# -notmuch tag -inbox +uw/cs136 -- folder:uwaterloo/lists/cs136 -notmuch tag -inbox +uw/cs846 -- folder:uwaterloo/lists/cs846 -notmuch tag -inbox +uw/ece750 -- folder:uwaterloo/lists/ece750 -notmuch tag -inbox +uw/se212 -- folder:uwaterloo/lists/se212 -notmuch tag -inbox +uw/se463 -- folder:uwaterloo/lists/se463 - -notmuch tag -inbox +lists/alloytools -- folder:uwaterloo/lists/alloytools -notmuch tag -inbox +lists/clvsingle -- folder:uwaterloo/lists/Clvsingle -notmuch tag -inbox +lists/gsa -- folder:uwaterloo/lists/GSA -notmuch tag -inbox +lists/math-grad -- folder:uwaterloo/lists/Math-grad -notmuch tag -inbox +lists/scs-grads -- folder:uwaterloo/lists/scs-grads -notmuch tag -inbox +lists/watform-students -- folder:uwaterloo/lists/Watform-students -# - -# -notmuch tag -inbox +l/emacs-devel -- folder:gnu/l/emacs-devel -notmuch tag -inbox +l/emacs-orgmode -- folder:gnu/l/emacs-orgmode -notmuch tag -inbox +l/emacsconf-discuss -- folder:gnu/l/emacsconf-discuss -notmuch tag -inbox +l/fencepost-users -- folder:gnu/l/fencepost-users -notmuch tag -inbox +l/guix-devel -- folder:gnu/l/guix-devel -notmuch tag -inbox +l/guile-devel -- folder:gnu/l/guile-devel -notmuch tag -inbox +l/help-gnu-emacs -- folder:gnu/l/help-gnu-emacs -notmuch tag -inbox +l/info-gnu-emacs -- folder:gnu/l/info-gnu-emacs -notmuch tag -inbox +l/www-commits -- folder:gnu/l/www-commits -notmuch tag -inbox +l/www-discuss -- folder:gnu/l/www-discuss -notmuch tag -inbox +webmasters -- folder:gnu/webmasters - -notmuch tag -inbox +l/deepspec -- folder:gnu/l/deepspec -notmuch tag -inbox +l/haskell-cafe -- folder:gnu/l/haskell-cafe -notmuch tag -inbox +l/haskell-art -- folder:gnu/l/haskell-art -notmuch tag -inbox +l/notmuch -- folder:gnu/l/notmuch - -notmuch tag -inbox +l/~aminb/test-priv -- folder:gnu/l/~aminb/test-priv -notmuch tag -inbox +l/~sircmpwn/sr.ht-admins -- folder:gnu/l/~sircmpwn/sr.ht-admins -notmuch tag -inbox +l/~sircmpwn/sr.ht-announce -- folder:gnu/l/~sircmpwn/sr.ht-announce -notmuch tag -inbox +l/~sircmpwn/sr.ht-dev -- folder:gnu/l/~sircmpwn/sr.ht-dev -notmuch tag -inbox +l/~sircmpwn/sr.ht-discuss -- folder:gnu/l/~sircmpwn/sr.ht-discuss -# - -notmuch tag -inbox -unread +archive/notmuch -- path:archive/notmuch/** -notmuch tag -inbox -unread +archive/emacs-devel -- path:archive/emacs-devel/** -#+end_src - -*** notmuch.service -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/notmuch.service -:END: - -#+begin_src conf :tangle no -[Unit] -Description=notmuch service - -[Service] -Type=oneshot -ExecStart=/usr/bin/notmuch new -StandardOutput=syslog -StandardError=syslog -#+end_src - -*** notmuch.timer -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/notmuch.timer -:END: - -#+begin_src conf :tangle no -[Unit] -Description=notmuch timer - -[Timer] -OnCalendar=*:0/5 -Persistent=true -Unit=notmuch.service - -[Install] -WantedBy=timers.target -#+end_src - -** offlineimap - -*** offlineimaprc -:PROPERTIES: -:header-args+: :tangle ~/.offlineimaprc -: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 -#+end_src - -*** offlineimap.py -:PROPERTIES: -:header-args+: :tangle ~/.offlineimap.py -:END: - -#+begin_src python :tangle no -import os -import subprocess - -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 - -** pigeonhole -*** gnu.sieve -:PROPERTIES: -:header-args+: :tangle ~/sieve/gnu.sieve :comments none -:END: - -#+begin_src conf -require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", "include" ]; - -if anyof ( - address :is "from" "webmasters@gnu.org", - address :is "from" "webmasters-comment@gnu.org") { - fileinto :create "webmasters"; - stop; -} - -include :personal "lists"; -#+end_src - -*** lists.sieve -:PROPERTIES: -:header-args+: :tangle ~/sieve/lists.sieve :comments none -:END: - -#+begin_src conf -require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", - "include" ]; - -if anyof ( - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "") { - if header :regex "list-id" "<([a-z_0-9-]+)[.@]" { - set :lower "listname" "${1}"; - fileinto :create "l/${listname}"; - } -} - -if anyof ( - header :contains "list-id" "<~aminb/test-priv@lists.sr.ht>", - header :contains "list-id" "<~sircmpwn/sr.ht-admins@lists.sr.ht>", - header :contains "list-id" "<~sircmpwn/sr.ht-announce@lists.sr.ht>", - header :contains "list-id" "<~sircmpwn/sr.ht-dev@lists.sr.ht>", - header :contains "list-id" "<~sircmpwn/sr.ht-discuss@lists.sr.ht>") { - if header :regex "list-id" "(~[a-z_0-9-]+)/([a-z_0-9.-]+)@" { - set :lower "username" "${1}"; - set :lower "listname" "${2}"; - fileinto :create "l/${username}/${listname}"; - } -} -#+end_src - -** polybar - -*** config -:PROPERTIES: -:header-args+: :tangle ~/.config/polybar/config -:END: - -#+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 =