-#+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
-# <b>bold</b>
-# <i>italic</i>
-# <s>strikethrough<s/>
-# <u>underline</u>
-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 = "<b>%s</b>\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
-:END:
-
-#+begin_src xml
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-<fontconfig>
- <match target="font">
- <edit mode="assign" name="rgba">
- <const>rgb</const>
- </edit>
- </match>
- <match target="font">
- <edit mode="assign" name="hinting">
- <bool>true</bool>
- </edit>
- </match>
- <match target="font">
- <edit mode="assign" name="hintstyle">
- <const>hintslight</const>
- </edit>
- </match>
- <match target="font">
- <edit mode="assign" name="antialias">
- <bool>true</bool>
- </edit>
- </match>
- <match target="font">
- <edit mode="assign" name="lcdfilter">
- <const>lcddefault</const>
- </edit>
- </match>
- <dir>~/.fonts</dir>
-
- <!-- Use Liberation Sans for Helvetica (instead of Nimbus Sans) -->
- <alias binding="same">
- <family>Helvetica</family>
- <accept>
- <family>Liberation Sans</family>
- </accept>
-</alias>
-</fontconfig>
-#+end_src
-
-** Git
-
-*** gitconfig
-:PROPERTIES:
-:header-args+: :tangle ~/.gitconfig
-:END:
-
-**** user
-#+begin_src conf
-[user]
- name = Amin Bandali
- email = amin@aminb.org
- # signingkey = 4E05246AB0BF7FFB
-#+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