[rc/i3status] customizations
[~bandali/configs] / rc.org
CommitLineData
08146d0e
AB
1#+title: rc.org
2#+property: header-args :comments link :mkdirp yes :results silent
3
4* About
5
6This org file contains the configuration files of pretty much every
7program I use. The files are tangled (i.e. exported, or derived) from
8this file using =org-babel=.
9
10Note: This file is best viewed inside Emacs with org mode.
11
12* Configs
13
b13e2dc1
AB
14This section contains the configuration files (dotfiles) of various
15programs I use.
16
b13e2dc1
AB
17** bspwm
18
19*** bspwmrc
20:PROPERTIES:
21:header-args+: :tangle ~/.config/bspwm/bspwmrc :shebang "#!/bin/sh"
22:END:
23
fb52d1f9 24#+begin_src sh :tangle no
b13e2dc1
AB
25sxhkd &
26sh ~/.fehbg &
27xfce4-panel -d &
87af8efd 28compton &
b13e2dc1
AB
29sleep 0.5 && pasystray --notify=all &
30
31bspc monitor -d I II III IV V VI VII VIII IX X
32#bspc monitor eDP-1 -d I II III IV V
33#bspc monitor HDMI-1 -d VI VII VIII IX X
34
35#bspc config border_width 2
36#bspc config window_gap 8
37bspc config window_gap 0
38
39bspc config bottom_padding 26
40
41bspc config split_ratio 0.52
42bspc config borderless_monocle true
43bspc config gapless_monocle true
44bspc config click_to_focus button1
45bspc config directional_focus_tightness low
46
87af8efd 47#bspc rule -a Firefox desktop='^1' follow=on
b13e2dc1
AB
48bspc rule -a Nightly desktop='^1' follow=on
49bspc rule -a Emacs desktop='^2' state=tiled follow=on
50#bspc rule -a Chromium desktop='^4' follow=on
51bspc rule -a URxvt state=floating
52bspc rule -a URxvt:tiled state=tiled
53bspc rule -a Connman-gtk state=floating
54bspc rule -a Xfce4-panel state=floating
55bspc rule -a TelegramDesktop state=floating
56bspc rule -a Ec state=floating
57bspc rule -a Pavucontrol state=floating
58bspc rule -a Eog state=floating
59bspc rule -a Seahorse state=floating
60bspc rule -a mpv state=floating
61bspc rule -a Evince state=floating
62bspc rule -a Meld state=floating
63bspc rule -a Autokey-gtk state=floating
64bspc rule -a Mousepad state=floating
65bspc rule -a Wrapper-1.0 state=floating
66bspc rule -a File-roller state=floating
67bspc rule -a Gnome-disks state=floating
68bspc rule -a Termite state=floating
69bspc rule -a Termite:tiled state=tiled
70bspc rule -a Thunderbird:Calendar state=floating
71bspc rule -a Audacity state=floating
72bspc rule -a Proof state=floating # pvs x-show-proof
73bspc rule -a Nm-connection-editor state=floating
74bspc rule -a Wire state=floating
75bspc rule -a discord state=floating
76bspc rule -a X2goclient state=floating
77bspc rule -a SimpleScreenRecorder state=floating
78bspc rule -a Gimp state=floating
79bspc rule -a Wrapper-2.0 state=floating
80bspc rule -a Zathura state=tiled
81#+end_src
82
83*** sxhkdrc
84:PROPERTIES:
85:header-args+: :tangle ~/.config/sxhkd/sxhkdrc
86:END:
87
fb52d1f9 88#+begin_src conf :tangle no
b13e2dc1
AB
89#
90# wm independent hotkeys
91#
92
93# terminal emulator
94super + {_,shift} + Return
95 urxvt{_, -name tiled}
96
97#super + {_,shift} + Return
98# termite{_, --name=tiled}
99
100# program launcher
101super + space
102 rofi -show run -display-run '> ' -display-window ' 🗔 '
103
104super + alt + space
105 xfce4-popup-whiskermenu
106
107# window finder
108super + backslash
109 rofi -show window -display-run '> ' -display-window ' 🗔 '
110
111# password manager
112alt + space
113 rofi-pass
114
115# firefox
116#super + r
117# firefox
118
119# chromium
120#super + c
121# chromium -incognito
122
123# emacs
124super + e
125 emacs
126
127# make sxhkd reload its configuration files:
128super + Escape
129 pkill -USR1 -x sxhkd
130
131# volume {up,down}
132XF86Audio{Raise,Lower}Volume
133 pamixer --allow-boost --{in,de}crease 5
134
135# mute
136XF86AudioMute
137 pamixer --toggle-mute
138
373a060a
AB
139XF86AudioMicMute
140 pactl set-source-mute 1 toggle
141
b13e2dc1
AB
142# playback control
143XF86Audio{Play,Prev,Next}
144 mpc {toggle,prev,next}
145
146# lock the screen
147super + shift + q
148 light-locker-command -l
149
150# Toggle keyboard layout
151super + F7
152 toggle-layout
153
154# Toggle Xfce presentation mode
155XF86LaunchB
156 toggle-presentation-mode
157
158# monitor brightness
159XF86MonBrightness{Up,Down}
160 light -{A,U} 5
161
162super + apostrophe
163 rofi-light
164
165# keyboard brightness
166#XF86KbdBrightness{Up,Down}
167# kbdlight {up,down}
168
72f329ba
AB
169XF86RotateWindows
170 toggle-tablet
171
b13e2dc1
AB
172#
173# bspwm hotkeys
174#
175
176# quit bspwm normally
177super + alt + Escape
178 bspc quit
179
180# close and kill
181super + {w,q}
182 bspc node -{c,k}
183
184# alternate between the tiled and monocle layout
185super + m
186 bspc desktop -l next
187
188# send the newest marked node to the newest preselected node
189super + y
190 bspc node newest.marked.local -n newest.!automatic.local
191
192# swap the current node and the biggest node
193super + g
194 bspc node -s biggest
195
196#
197# state/flags
198#
199
200# set the window state
201super + {t,shift + t,s,f}
202 bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
203
204# set the node flags
205super + ctrl + {m,x,y,z}
206 bspc node -g {marked,locked,sticky,private}
207
208#
209# focus/swap
210#
211
212# focus the node in the given direction
213super + {_,shift + }{h,j,k,l}
214 bspc node -{f,s} {west,south,north,east}
215
216# focus the node for the given path jump
217super + {p,b,comma,period}
218 bspc node -f @{parent,brother,first,second}
219
220# focus the next/previous node in the current desktop
221super + {_,shift + }c
222 bspc node -f {next,prev}.local
223
224# focus the next/previous desktop in the current monitor
225super + bracket{left,right}
226 bspc desktop -f {prev,next}.local
227
228# send to next/prev desktop
229super + shift + bracket{left,right}
230 bspc node -d {prev,next} --follow
231
232# focus the last node/desktop
233super + {grave,Tab}
234 bspc {node,desktop} -f last
235
236# focus the older or newer node in the focus history
237super + {o,i}
238 bspc wm -h off; \
239 bspc node {older,newer} -f; \
240 bspc wm -h on
241
242# focus or send to the given desktop
243super + {_,shift + }{1-9,0}
244 bspc {desktop -f,node -d} '^{1-9,10}'
245
246#
247# preselect
248#
249
250# preselect the direction
251super + ctrl + {h,j,k,l}
252 bspc node -p {west,south,north,east}
253
254# preselect the ratio
255super + ctrl + {1-9}
256 bspc node -o 0.{1-9}
257
258# cancel the preselection for the focused node
259super + ctrl + space
260 bspc node -p cancel
261
262# cancel the preselection for the focused desktop
263super + ctrl + shift + space
264 bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
265
266#
267# move/resize
268#
269
270# expand a window by moving one of its side outward
271super + alt + {h,j,k,l}
272 bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
273
274# contract a window by moving one of its side inward
275super + alt + shift + {h,j,k,l}
276 bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
277
278# move a floating window
279super + {Left,Down,Up,Right}
280 bspc node -v {-20 0,0 20,0 -20,20 0}
281
282#alt + bracket{left,right}
283# xdotool key --clearmodifiers ctrl+Page_{Up,Down}
284#+end_src
285
286** compton
287:PROPERTIES:
288:header-args+: :tangle ~/.config/compton.conf
289:END:
290
fb52d1f9 291#+begin_src conf :tangle no
b13e2dc1
AB
292# Shadow
293shadow = false; # Enabled client-side shadows on windows.
294no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows.
295no-dnd-shadow = true; # Don't draw shadows on DND windows.
296clear-shadow = true; # Zero the part of the shadow's mask behind the
297 # window. Fix some weirdness with ARGB windows.
298shadow-radius = 5; # The blur radius for shadows. (default 12)
299shadow-offset-x = -5; # The left offset for shadows. (default -15)
300shadow-offset-y = -5; # The top offset for shadows. (default -15)
301# shadow-opacity = 0.7; # The translucency for shadows. (default .75)
302# shadow-red = 0.0; # Red color value of shadow. (0.0 - 1.0, defaults to 0)
303# shadow-green = 0.0; # Green color value of shadow. (0.0 - 1.0, defaults to 0)
304# shadow-blue = 0.0; # Blue color value of shadow. (0.0 - 1.0, defaults to 0)
305shadow-exclude = [ "n:e:Notification", "class_g = 'Chromium'", "class_g = 'Dmenu'", "class_g = 'Firefox' && argb" ]; # Exclude conditions for shadows.
306# shadow-exclude = "n:e:Notification";
307#shadow-exclude = [ "_GTK_FRAME_EXTENTS@:c" ] # Fix dual shadow on some gtk3 powered applications
308shadow-ignore-shaped = true; # Avoid drawing shadow on all shaped windows
309 # (see also: --detect-rounded-corners)
310
311# Opacity
312menu-opacity = 1.0; # The opacity for menus. (default 1.0)
313#inactive-opacity = 0.9; # Default opacity of inactive windows. (0.0 - 1.0)
314# active-opacity = 0.8; # Default opacity for active windows. (0.0 - 1.0)
315frame-opacity = 1.0; # Opacity of window titlebars and borders. (0.1 - 1.0)
316# inactive-opacity-override = true; # Let inactive opacity set by 'inactive-opacity' overrides
317 # value of _NET_WM_OPACITY. Bad choice.
318alpha-step = 0.06; # XRender backend: Step size for alpha pictures. Increasing
319 # it may result in less X resource usage,
320 # Yet fading may look bad.
321#inactive-dim = 0.5; # Dim inactive windows. (0.0 - 1.0)
322#inactive-dim-fixed = true; # Do not let dimness adjust based on window opacity.
323# blur-background = true; # Blur background of transparent windows.
324 # Bad performance with X Render backend.
325 # GLX backend is preferred.
326# blur-background-frame = true; # Blur background of opaque windows with transparent
327 # frames as well.
328blur-background-fixed = true; # Do not let blur radius adjust based on window opacity.
329blur-background-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ];
330 # Exclude conditions for background blur.
331
332# Fading
333fading = false; # Fade windows during opacity changes.
334fade-delta = 3; # The time between steps in a fade in milliseconds. (default 10).
335fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028).
336fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03).
337# no-fading-openclose = true; # Avoid fade windows in/out when opening/closing.
338fade-exclude = [ ]; # Exclude conditions for fading.
339
340# Other
341backend = "glx" # Backend to use: "xrender" or "glx". GLX backend is typically
342 # much faster but depends on a sane driver.
343mark-wmwin-focused = true; # Try to detect WM windows and mark them as active.
344mark-ovredir-focused = true; # Mark all non-WM but override-redirect windows active (e.g. menus).
345use-ewmh-active-win = true; # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused
346 # instead of using FocusIn/Out events. Usually more reliable but
347 # depends on a EWMH-compliant WM.
348detect-rounded-corners = false; # Detect rounded corners and treat them as rectangular when --shadow-ignore- shaped is on.
349detect-client-opacity = true; # Detect _NET_WM_OPACITY on client windows, useful for window
350 # managers not passing _NET_WM_OPACITY of client windows to frame
351 # windows.
352refresh-rate = 0; # For --sw-opti: Specify refresh rate of the screen. 0 for auto.
353vsync = "drm"; # "none", "drm", "opengl", "opengl-oml", "opengl-swc", "opengl-mswc"
354 # See man page for more details.
355dbe = false; # Enable DBE painting mode. Rarely needed.
356paint-on-overlay = true; # Painting on X Composite overlay window. Recommended.
357sw-opti = false; # Limit compton to repaint at most once every 1 / refresh_rate.
358 # Incompatible with certain VSync methods.
359unredir-if-possible = false; # Unredirect all windows if a full-screen opaque window is
360 # detected, to maximize performance for full-screen windows.
361focus-exclude = [ ]; # A list of conditions of windows that should always be considered
362 # focused.
363detect-transient = true; # Use WM_TRANSIENT_FOR to group windows, and consider windows in
364 # the same group focused at the same time.
365detect-client-leader = true; # Use WM_CLIENT_LEADER to group windows.
366invert-color-include = [ ]; # Conditions for windows to be painted with inverted color.
367
368# GLX backend # GLX backend fine-tune options. See man page for more info.
369glx-no-stencil = true; # Recommended.
370glx-copy-from-front = false; # Useful with --glx-swap-method,
371# glx-use-copysubbuffermesa = true; # Recommended if it works. Breaks VSync.
372# glx-no-rebind-pixmap = true; # Recommended if it works.
373glx-no-rebind-pixmap = true; # Recommended if it works.
374#glx-swap-method = "4"; # See man page.
375glx-swap-method = "4"; # See man page.
376
377# Window type settings
378wintypes:
379{
380 tooltip = { fade = true; shadow = false; opacity = 1; focus = true; };
381 menu = { shadow = false; };
382 dropdown_menu = { shadow = false; };
383 popup_menu = { shadow = false; };
384 utility = { shadow = false; };
385 # fade: Fade the particular type of windows.
386 # shadow: Give those windows shadow
387 # opacity: Default opacity for the type of windows.
388 # focus: Whether to always consider windows of this type focused.
389};
390#+end_src
391
05ab13aa
AB
392** Dunst
393:PROPERTIES:
394:header-args+: :tangle ~/.config/dunst/dunstrc
395:END:
396
397#+begin_src conf
398[global]
399#font = Ubuntu Mono 10.5
400font = Inconsolata 11
401
402# Path to default icons.
403icon_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/
404
405icon_position = left
406# <b>bold</b>
407# <i>italic</i>
408# <s>strikethrough<s/>
409# <u>underline</u>
410markup = full
411# The format of the message. Possible variables are:
412# %a appname
413# %s summary
414# %b body
415# %i iconname (including its path)
416# %I iconname (without its path)
417# %p progress value if set ([ 0%] to [100%]) or nothing
418# Markup is allowed
419format = "<b>%s</b>\n%b"
420# Sort messages by urgency
421sort = yes
422# Show how many messages are currently hidden (because of geometry)
423indicate_hiddenl= no
424# Alignment of message text.
425# Possible values are "left", "center" and "right"
426alignment = center
427# The frequency with wich text that is longer than the notification
428# window allows bounces back and forth.
429# This option conflicts with 'word_wrap'.
430# Set to 0 to disable
431bounce_freq = 3
432# show age of message if message is older than show_age_threshold seconds.
433# set to -1 to disable
434show_age_threshold = -1
435# split notifications into multiple lines if they don't fit into geometry
436word_wrap = yes
437# ignore newlines '\n' in notifications
438ignore_newline = no
439# The geometry of the message window.
440# geometry [{width}]x{height}][+/-{x}+/-{y}]
441# The height is measured in number of notifications everything else in pixels. If the width
442# is omitted but the height is given ("-geometry x2"), the message window
443# expands over the whole screen (dmenu-like). If width is 0,
444# the window expands to the longest message displayed.
445# A positive x is measured from the left, a negative from the
446# right side of the screen. Y is measured from the top and down respectevly.
447# The width can be negative. In this case the actual width is the
448# screen width minus the width defined in within the geometry option.
449#geometry = "410x12-12+12"
450#geometry = "0x0-30-30"
451geometry = "260x12-30-30"
452# The transparency of the window. range: [0; 100]
453# This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..)
454transparency = 0
455# Don't remove messages, if the user is idle (no mouse or keyboard input)
456# for longer than idle_threshold seconds.
457# Set to 0 to disable.
458idle_threshold = 120
459# Which monitor should the notifications be displayed on.
460monitor = 0
461# Display notification on focused monitor. Possible modes are:
462# mouse: follow mouse pointer
463# keyboard: follow window with keyboard focus
464# none: don't follow anything
465#
466# "keyboard" needs a windowmanager that exports the _NET_ACTIVE_WINDOW property.
467# This should be the case for almost all modern windowmanagers.
468#
469# If this option is set to mouse or keyboard, the monitor option will be
470# ignored.
471follow = keyboard
472# should a notification popped up from history be sticky or
473# timeout as if it would normally do.
474sticky_history = yes
475# The height of a single line. If the height is smaller than the font height,
476# it will get raised to the font height.
477# This adds empty space above and under the text.
478line_height = 0
479
480show_indicators = yes
481
482# Draw a line of 'separatpr_height' pixel height between two notifications.
483# Set to 0 to disable
484separator_height = 3
485# padding between text and separator
486padding = 8
487# horizontal padding
488horizontal_padding = 8
489# Define a color for the separator.
490# possible values are:
491# * auto: dunst tries to find a color fitting to the background
492# * foreground: use the same color as the foreground
493# * frame: use the same color as the frame.
494# * anything else will be interpreted as a X color
495separator_color = foreground
496# print a notification on startup
497# This is mainly for error detection, since dbus (re-)starts dunst
498# automatically after a crash.
499startup_notification = false
500# dmenu path
501#dmenu = /usr/bin/dmenu -p dunst:
502dmenu = /usr/bin/rofi -dmenu -p dunst:
503# browser for opening urls in context menu
504browser = /usr/bin/firefox -new-tab
505[frame]
506width = 0
507color = "#377222"
508[shortcuts]
509# shortcuts are specified as [modifier+][modifier+]...key
510# available modifiers are 'ctrl', 'mod1' (the alt-key), 'mod2', 'mod3'
511# and 'mod4' (windows-key)
512# xev might be helpful to find names for keys
513# close notification
514close = ctrl+space
515# close all notifications
516close_all = ctrl+shift+space
517# redisplay last message(s)
518# On the US keyboard layout 'grave' is normally above TAB and left of '1'.
519history = ctrl+shift+h
520# context menu
521context = ctrl+shift+period
522[urgency_low]
523# IMPORTANT: colors have to be defined in quotation marks.
524# Otherwise the '#' and following would be interpreted as a comment.
525background = "#1d2a30"
526foreground = "#71c2af"
527timeout = 3
528[urgency_normal]
529background = "#1d2a30"
530foreground = "#71c2af"
531timeout = 0
532[urgency_critical]
533background = "#1d2a30"
534foreground = "#ff9982"
535timeout = 0
536
537# Every section that isn't one of the above is interpreted as a rules
538# to override settings for certain messages.
539# Messages can be matched by 'appname', 'summary', 'body' or 'icon'
540# and you can override the 'timeout', 'urgency', 'foreground', 'background'
541# and 'format'.
542# Shell-like globbing will get expanded.
543#
544# SCRIPTING
545# you can specify a script that gets run when the rule matches by setting
546# the 'script' option.
547# The script will be called as follows:
548# script appname summary body icon urgency
549# where urgency can be "LOW", "NORMAL" or "CRITICAL".
550#
551# NOTE: if you don't want a notification to be displayed, set the format to ""
552# NOTE: It might be helpful to run dunst -print in a terminal in order to find
553# fitting options for rules.
554#[espeak]
555# summary = "*"
556# script = dunst_espeak.sh
557#[script-test]
558# summary = "*script*"
559# script = dunst_test.sh
560#[ignore]
561## This notification will not be displayed
562# summary = "foobar"
563# format = ""
564#[signed_on]
565# appname = Pidgin
566# summary = "*signed on*"
567# urgency = low
568#
569#[signed_off]
570# appname = Pidgin
571# summary = *signed off*
572# urgency = low
573#
574#[says]
575# appname = Pidgin
576# summary = *says*
577# urgency = critical
578#
579#[twitter]
580# appname = Pidgin
581# summary = *twitter.com*
582# urgency = normal
583#
584[xfpm-backlight]
585 summary = *Brightness*
586 urgency = low
587#+end_src
588
589** Fontconfig
590:PROPERTIES:
45d84997 591:header-args+: :tangle ~/.config/fontconfig/fonts.conf :comments none
05ab13aa
AB
592:END:
593
594#+begin_src xml
595<?xml version="1.0"?>
596<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
597<fontconfig>
598 <match target="font">
599 <edit mode="assign" name="rgba">
600 <const>rgb</const>
601 </edit>
602 </match>
603 <match target="font">
604 <edit mode="assign" name="hinting">
605 <bool>true</bool>
606 </edit>
607 </match>
608 <match target="font">
609 <edit mode="assign" name="hintstyle">
610 <const>hintslight</const>
611 </edit>
612 </match>
613 <match target="font">
614 <edit mode="assign" name="antialias">
615 <bool>true</bool>
616 </edit>
617 </match>
618 <match target="font">
619 <edit mode="assign" name="lcdfilter">
620 <const>lcddefault</const>
621 </edit>
622 </match>
623 <dir>~/.fonts</dir>
624
625 <!-- Use Liberation Sans for Helvetica (instead of Nimbus Sans) -->
626 <alias binding="same">
627 <family>Helvetica</family>
628 <accept>
629 <family>Liberation Sans</family>
630 </accept>
631</alias>
632</fontconfig>
633#+end_src
634
a106372e
AB
635** getmail
636
637*** getmailrc
638:PROPERTIES:
639:header-args+: :tangle ~/.getmail/getmailrc
640:END:
641
642#+begin_src conf
643[retriever]
644type = SimplePOP3SSLRetriever
645server = fencepost.gnu.org
646username = aminb
647password_command = ("gpg2", "--no-tty", "-q", "-d", "/home/amin/.passwd/gnu.gpg")
648port = 995
649use_apop = True
650
651[destination]
652type = Maildir
653path = ~/mail/gnu/Inbox/
654
655[options]
656delete = True
657#+end_src
658
659*** getmail.service
660:PROPERTIES:
661:header-args+: :tangle ~/.config/systemd/user/getmail.service
662:END:
663
664#+begin_src conf :tangle no
665[Unit]
666Description=getmail service
667
668[Service]
669Type=oneshot
670ExecStart=/usr/bin/getmail
671StandardOutput=syslog
672StandardError=syslog
673#+end_src
674
675*** getmail.timer
676:PROPERTIES:
677:header-args+: :tangle ~/.config/systemd/user/getmail.timer
678:END:
679
680#+begin_src conf :tangle no
681[Unit]
682Description=getmail timer
683
684[Timer]
685OnCalendar=*:0/30
686Persistent=true
687Unit=getmail.service
688
689[Install]
690WantedBy=timers.target
691#+end_src
692
58cbbce2 693** Git
08146d0e
AB
694
695*** gitconfig
696:PROPERTIES:
697:header-args+: :tangle ~/.gitconfig
698:END:
699
700**** user
701#+begin_src conf
702[user]
703 name = Amin Bandali
835adbdb
AB
704 email = amin@gnu.org
705 signingkey = CDDE75F903538E71813CDA27D1FBA36627D65876
08146d0e
AB
706#+end_src
707
708**** signing
709#+begin_src conf
5c7c14c7
AB
710[commit]
711 gpgsign = true
08146d0e
AB
712# [format]
713# signoff = true
714#+end_src
715
716**** core
717#+begin_src conf
718[core]
719 autocrlf = input # CRLF -> LF on commit
720 editor = emacsclient -t
721 excludesfile = ~/.gitignore_global
722 pager = "less"
723#+end_src
724
725**** gpg
726#+begin_src conf
727[gpg]
728 program = gpg2
729#+end_src
730
731**** alias
732#+begin_src conf
733[alias]
734 git = !exec git # handle nested git calls, e.g. git git status
735 aliases = config --get-regexp '^alias\\.'
736 a = add
737 s = status
738 sl = status --long
739 c = checkout
740 cb = checkout -b
741 b = branch
742 r = rebase
743 p = pull
744 pr = pull --rebase
745 ps = push
746 psf = push --force
74ef10b0
AB
747 nmam = "!f() { notmuch show --format=raw $1 | git am -; }; f"
748 nmam3 = "!f() { notmuch show --format=raw $1 | git am -3 -; }; f"
08146d0e
AB
749#+end_src
750
751**** color
752#+begin_src conf
753[color]
754 ui = auto
755[color "status"]
756 added = green bold
757 changed = red bold
758 untracked = red bold
759[color "branch"]
760 current = green bold
761 remote = magenta bold
762[color "diff"]
763 new = green bold
764 old = red bold
765#+end_src
766
767**** status
768#+begin_src conf
769[status]
770 # showUntrackedFiles = all
771 short=true
772 branch=true
773#+end_src
774
775**** github
776#+begin_src conf
777[github]
778 user = aminb
779#+end_src
780
5c7c14c7
AB
781**** send-email
782#+begin_src conf
783[sendemail]
9e568495
AB
784 smtpuser = aminb
785 smtpserver = fencepost.gnu.org
5c7c14c7
AB
786 smtpserverport = 587
787 smtpencryption = tls
788 annotate = yes
789#+end_src
790
08146d0e
AB
791*** gitignore
792:PROPERTIES:
793:header-args+: :tangle ~/.gitignore_global
794:END:
795
796#+begin_src conf
797*.orig
798*.py[co]
799*.sublime-workspace
800*~
801.DS_Store
802*.elc
803*-autoloads.el
804#+end_src
58cbbce2 805
a106372e
AB
806** GnuPG
807:PROPERTIES:
808:header-args+: :tangle ~/.gnupg/gpg-agent.conf
809:END:
810
811#+begin_src conf
812default-cache-ttl 43200
813max-cache-ttl 43200
814
815default-cache-ttl-ssh 10800
816max-cache-ttl-ssh 10800
817
818# pinentry-program /usr/bin/pinentry-qt
819#+end_src
820
821** GTK
822
823*** gtk-2.0
824:PROPERTIES:
825:header-args+: :tangle ~/.gtkrc-2.0
826:END:
827
828#+begin_src conf
829gtk-theme-name="Greybird"
830gtk-icon-theme-name="Paper"
831gtk-font-name="Ubuntu 10"
832gtk-menu-images=0
833# gtk-key-theme-name = "Emacs"
834#+end_src
835
836*** gtk-3.0
837:PROPERTIES:
838:header-args+: :tangle ~/.config/gtk-3.0/settings.ini
839:END:
840
841#+begin_src conf :tangle no
842[Settings]
843gtk-icon-theme-name = Paper
844# gtk-theme-name = Adwaita
845
846gtk-theme-name = Greybird
847# gtk-theme-name = Arc-Darker
848# gtk-theme-name = Numix-ArchBlue
849
850gtk-font-name = Ubuntu 10
851# gtk-key-theme-name = Emacs
852#+end_src
853
a5547504
AB
854** [[https://github.com/Leinnan/i3gs][i3gs]]
855:PROPERTIES:
856:header-args+: :tangle ~/.config/i3gs/config
857:END:
858
6a056822 859#+begin_src conf :comments none :tangle no
a5547504
AB
860borders_width=0 0 2 0
861separator_width=10
862
be33ab1f
AB
863#[mpd]
864#preset=MPD
865#title=<span weight='heavy' fgcolor='#7FDBFF'> </span>
866#borders_color=#7FDBFF
a5547504
AB
867
868[ram]
869preset=RAM
870title=<span weight='heavy' fgcolor='#3D9970'> </span>
871borders_color=#3D9970
872
be33ab1f
AB
873#[cpu]
874#preset=CPU
875#title=<span weight='heavy' fgcolor='#2ECC40'> </span>
876#borders_color=#2ECC40
a5547504 877
be33ab1f
AB
878#[hdd]
879#preset=HDD
880#title=<span weight='heavy' fgcolor='#01FF70'> </span>
881#borders_color=#01FF70
a5547504 882
4fc8d5d2
AB
883[volume]
884command=volume-info
885title=<span weight='heavy' fgcolor='#7FDBFF'></span>
886borders_color=#7FDBFF
887
a5547504
AB
888[battery]
889preset=BAT
683f2865 890command=battery-percentage-time
a5547504
AB
891title=<span weight='heavy' fgcolor='#39CCCC'> </span>
892borders_color=#39CCCC
893
894[wifi]
895preset=WIFI
896title=<span weight='heavy' fgcolor='#01FF70'> </span>
897borders_color=#01FF70
898
899[date]
900preset=DATE
ce79d14b 901command=date '+%-I:%M, %a %b %d '
a5547504
AB
902title=<span weight='heavy' fgcolor='#FFDC00'> </span>
903borders_color=#FFDC00
904separator_width=0
905#+end_src
6a056822
AB
906
907** i3status
908:PROPERTIES:
909:header-args+: :tangle ~/.config/i3status/config
910:END:
911
912#+begin_src conf :comments none
913# i3status configuration file.
914# see "man i3status" for documentation.
915
916# It is important that this file is edited as UTF-8.
917# The following line should contain a sharp s:
918# ß
919# If the above line is not correctly displayed, fix your editor first!
920
921general {
922 colors = true
923 interval = 5
924}
925
e939ef1a 926# order += "ipv6"
6a056822 927order += "disk /"
e939ef1a 928order += "disk /data"
6a056822 929order += "wireless _first_"
e939ef1a
AB
930# order += "ethernet _first_"
931order += "battery 0"
6a056822
AB
932order += "load"
933order += "tztime local"
934
935wireless _first_ {
e939ef1a 936 format_up = "W:%quality %essid %ip"
6a056822
AB
937 format_down = "W: down"
938}
939
e939ef1a
AB
940# ethernet _first_ {
941# # if you use %speed, i3status requires root privileges
942# format_up = "E: %ip (%speed)"
943# format_down = "E: down"
944# }
945
946battery 0 {
947 format = "%status %percentage %remaining (%consumption)"
948 path = "/sys/class/power_supply/BAT%d/uevent"
949 low_threshold = "30"
950 threshold_type = "time"
951 last_full_capacity = false
952 integer_battery_capacity = true
953 hide_seconds = true
6a056822
AB
954}
955
956tztime local {
e939ef1a 957 format = "%-I:%M%P %a %b %d"
6a056822
AB
958}
959
960load {
961 format = "%1min"
962}
963
964disk "/" {
e939ef1a
AB
965 format = "/ %avail"
966}
967
968disk "/data" {
969 format = "/data %avail"
6a056822
AB
970}
971#+end_src
972
be76c6db
AB
973** isync
974
975*** mbsyncrc
976:PROPERTIES:
977:header-args+: :tangle ~/.mbsyncrc
978:END:
979
980#+begin_src conf
981# Global defaults
982CopyArrivalDate yes
983
984######
985IMAPAccount amin
986Host nix.aminb.org
987User amin@aminb.org
988PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin.gpg"
989SSLType IMAPS
990
991IMAPStore amin-remote
992Account amin
993
994MaildirStore amin-local
995Path ~/mail/amin/
996Inbox ~/mail/amin/Inbox
997SubFolders Verbatim
998
999Channel amin
1000Master :amin-remote:
1001Slave :amin-local:
1002Patterns * !dovecot*
1003Create Both
1004SyncState *
1005
1006######
1007IMAPAccount uwaterloo
1008Host connect.uwaterloo.ca
59027673 1009User abandali
be76c6db
AB
1010PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/uwaterloo.gpg"
1011SSLType IMAPS
1012
1013IMAPStore uwaterloo-remote
1014Account uwaterloo
1015
1016MaildirStore uwaterloo-local
1017Path ~/mail/uwaterloo/
1018Inbox ~/mail/uwaterloo/Inbox
1019SubFolders Verbatim
1020
1021Channel uwaterloo
1022Master :uwaterloo-remote:
1023Slave :uwaterloo-local:
1024Patterns * !dovecot*
1025Create Both
1026SyncState *
1027#+end_src
1028
1029*** mbsync.service
1030:PROPERTIES:
1031:header-args+: :tangle ~/.config/systemd/user/mbsync.service
1032:END:
1033
1034#+begin_src conf :tangle no
1035[Unit]
1036Description=mbsync service
1037
1038[Service]
1039Type=oneshot
1040ExecStart=/usr/bin/mbsync -Va
1041StandardOutput=syslog
1042StandardError=syslog
1043#+end_src
1044
1045*** mbsync.timer
1046:PROPERTIES:
1047:header-args+: :tangle ~/.config/systemd/user/mbsync.timer
1048:END:
1049
1050#+begin_src conf :tangle no
1051[Unit]
1052Description=mbsync timer
1053
1054[Timer]
1055OnCalendar=*:0/15
1056Persistent=true
1057Unit=mbsync.service
1058
1059[Install]
1060WantedBy=timers.target
1061#+end_src
1062
a106372e
AB
1063** Latexmk
1064:PROPERTIES:
1065:header-args+: :tangle ~/.latexmkrc
1066:END:
1067
1068#+begin_src conf
1069$pdf_previewer = "start zathura %O %S";
1070$clean_ext = "aux out";
1071
1072# $pdf_update_method = 4;
1073# $pdf_update_command = "zathura %O %S";
1074
1075# Synctex allows one to jump to from the PDF in Zathura to the source in Emacs
1076# by Ctrl+click in the PDF.
1077# Tell latexmk to use Zathura as a previewer, and run emacsclient as the Synctex
1078# editor.
1079# $pdf_previewer = 'exec zathura --synctex-forward -x \'emacsclient --no-wait +%{line} %{input}\' %O %S';
1080#+end_src
1081
1082** libinput
1083
1084Improve XPS 15 9560's touchpad experience.
1085
1086# begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "plasma")) "/sudo::/etc/X11/xorg.conf.d/30-touchpad.conf")
1087#+begin_src conf :tangle no
1088Section "InputClass"
1089 Identifier "libinput touchpad catchall"
1090 Driver "libinput"
1091 MatchIsTouchpad "on"
1092 Option "ClickMethod" "clickfinger"
1093 Option "NaturalScrolling" "true"
1094 Option "Tapping" "on"
1095 Option "TappingButtonMap" "lrm"
1096EndSection
1097#+end_src
1098
59027673
AB
1099** mpd
1100:PROPERTIES:
1101:header-args+: :tangle ~/.config/mpd/mpd.conf
1102:END:
1103
1104#+begin_src conf
1105# An example configuration file for MPD.
1106# Read the user manual for documentation: http://www.musicpd.org/doc/user/
1107
1108
1109# Files and directories #######################################################
1110#
1111# This setting controls the top directory which MPD will search to discover the
1112# available audio files and add them to the daemon's online database. This
1113# setting defaults to the XDG directory, otherwise the music directory will be
1114# be disabled and audio files will only be accepted over ipc socket (using
1115# file:// protocol) or streaming files over an accepted protocol.
1116#
1117music_directory "~/usr/music"
1118#
1119# This setting sets the MPD internal playlist directory. The purpose of this
1120# directory is storage for playlists created by MPD. The server will use
1121# playlist files not created by the server but only if they are in the MPD
1122# format. This setting defaults to playlist saving being disabled.
1123#
1124playlist_directory "~/.mpd/playlists"
1125#
1126# This setting sets the location of the MPD database. This file is used to
1127# load the database at server start up and store the database while the
1128# server is not up. This setting defaults to disabled which will allow
1129# MPD to accept files over ipc socket (using file:// protocol) or streaming
1130# files over an accepted protocol.
1131#
1132db_file "~/.mpd/database"
1133#
1134# These settings are the locations for the daemon log files for the daemon.
1135# These logs are great for troubleshooting, depending on your log_level
1136# settings.
1137#
1138# The special value "syslog" makes MPD use the local syslog daemon. This
1139# setting defaults to logging to syslog, otherwise logging is disabled.
1140#
1141log_file "~/.mpd/log"
1142#
1143# This setting sets the location of the file which stores the process ID
1144# for use of mpd --kill and some init scripts. This setting is disabled by
1145# default and the pid file will not be stored.
1146#
1147pid_file "~/.mpd/pid"
1148#
1149# This setting sets the location of the file which contains information about
1150# most variables to get MPD back into the same general shape it was in before
1151# it was brought down. This setting is disabled by default and the server
1152# state will be reset on server start up.
1153#
1154state_file "~/.mpd/state"
1155#
1156# The location of the sticker database. This is a database which
1157# manages dynamic information attached to songs.
1158#
1159sticker_file "~/.mpd/sticker.sql"
1160#
1161###############################################################################
1162
1163
1164# General music daemon options ################################################
1165#
1166# This setting specifies the user that MPD will run as. MPD should never run as
1167# root and you may use this setting to make MPD change its user ID after
1168# initialization. This setting is disabled by default and MPD is run as the
1169# current user.
1170#
1171#user "nobody"
1172#
1173# This setting specifies the group that MPD will run as. If not specified
1174# primary group of user specified with "user" setting will be used (if set).
1175# This is useful if MPD needs to be a member of group such as "audio" to
1176# have permission to use sound card.
1177#
1178#group "nogroup"
1179#
1180# This setting sets the address for the daemon to listen on. Careful attention
1181# should be paid if this is assigned to anything other then the default, any.
1182# This setting can deny access to control of the daemon. Not effective if
1183# systemd socket activiation is in use.
1184#
1185# For network
1186#bind_to_address "any"
1187#
1188# And for Unix Socket
1189#bind_to_address "~/.mpd/socket"
1190#
1191# This setting is the TCP port that is desired for the daemon to get assigned
1192# to.
1193#
1194#port "6600"
1195#
1196# This setting controls the type of information which is logged. Available
1197# setting arguments are "default", "secure" or "verbose". The "verbose" setting
1198# argument is recommended for troubleshooting, though can quickly stretch
1199# available resources on limited hardware storage.
1200#
1201#log_level "default"
1202#
1203# If you have a problem with your MP3s ending abruptly it is recommended that
1204# you set this argument to "no" to attempt to fix the problem. If this solves
1205# the problem, it is highly recommended to fix the MP3 files with vbrfix
1206# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
1207# point gapless MP3 playback can be enabled.
1208#
1209#gapless_mp3_playback "yes"
1210#
1211# Setting "restore_paused" to "yes" puts MPD into pause mode instead
1212# of starting playback after startup.
1213#
1214#restore_paused "no"
1215#
1216# This setting enables MPD to create playlists in a format usable by other
1217# music players.
1218#
1219#save_absolute_paths_in_playlists "no"
1220#
1221# This setting defines a list of tag types that will be extracted during the
1222# audio file discovery process. The complete list of possible values can be
1223# found in the user manual.
1224#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
1225#
1226# This setting enables automatic update of MPD's database when files in
1227# music_directory are changed.
1228#
1229#auto_update "yes"
1230#
1231# Limit the depth of the directories being watched, 0 means only watch
1232# the music directory itself. There is no limit by default.
1233#
1234#auto_update_depth "3"
1235#
1236###############################################################################
1237
1238
1239# Symbolic link behavior ######################################################
1240#
1241# If this setting is set to "yes", MPD will discover audio files by following
1242# symbolic links outside of the configured music_directory.
1243#
1244#follow_outside_symlinks "yes"
1245#
1246# If this setting is set to "yes", MPD will discover audio files by following
1247# symbolic links inside of the configured music_directory.
1248#
1249#follow_inside_symlinks "yes"
1250#
1251###############################################################################
1252
1253
1254# Zeroconf / Avahi Service Discovery ##########################################
1255#
1256# If this setting is set to "yes", service information will be published with
1257# Zeroconf / Avahi.
1258#
1259#zeroconf_enabled "yes"
1260#
1261# The argument to this setting will be the Zeroconf / Avahi unique name for
1262# this MPD server on the network.
1263#
1264#zeroconf_name "Music Player"
1265#
1266###############################################################################
1267
1268
1269# Permissions #################################################################
1270#
1271# If this setting is set, MPD will require password authorization. The password
1272# setting can be specified multiple times for different password profiles.
1273#
1274#password "password@read,add,control,admin"
1275#
1276# This setting specifies the permissions a user has who has not yet logged in.
1277#
1278#default_permissions "read,add,control,admin"
1279#
1280###############################################################################
1281
1282
1283# Database #######################################################################
1284#
1285
1286#database {
1287# plugin "proxy"
1288# host "other.mpd.host"
1289# port "6600"
1290#}
1291
1292# Input #######################################################################
1293#
1294
1295input {
1296 plugin "curl"
1297# proxy "proxy.isp.com:8080"
1298# proxy_user "user"
1299# proxy_password "password"
1300}
1301
1302#
1303###############################################################################
1304
1305# Audio Output ################################################################
1306#
1307
1308audio_output {
1309 type "pulse"
1310 name "pulse audio"
1311}
1312
1313audio_output {
1314 type "fifo"
1315 name "my_fifo"
1316 path "/tmp/mpd.fifo"
1317 format "44100:16:2"
1318}
1319
1320# MPD supports various audio output types, as well as playing through multiple
1321# audio outputs at the same time, through multiple audio_output settings
1322# blocks. Setting this block is optional, though the server will only attempt
1323# autodetection for one sound card.
1324#
1325# An example of an ALSA output:
1326#
1327#audio_output {
1328# type "alsa"
1329# name "My ALSA Device"
1330## device "hw:0,0" # optional
1331## mixer_type "hardware" # optional
1332## mixer_device "default" # optional
1333## mixer_control "PCM" # optional
1334## mixer_index "0" # optional
1335#}
1336#
1337# An example of an OSS output:
1338#
1339#audio_output {
1340# type "oss"
1341# name "My OSS Device"
1342## device "/dev/dsp" # optional
1343## mixer_type "hardware" # optional
1344## mixer_device "/dev/mixer" # optional
1345## mixer_control "PCM" # optional
1346#}
1347#
1348# An example of a shout output (for streaming to Icecast):
1349#
1350#audio_output {
1351# type "shout"
1352# encoder "vorbis" # optional
1353# name "My Shout Stream"
1354# host "localhost"
1355# port "8000"
1356# mount "/mpd.ogg"
1357# password "hackme"
1358# quality "5.0"
1359# bitrate "128"
1360# format "44100:16:1"
1361## protocol "icecast2" # optional
1362## user "source" # optional
1363## description "My Stream Description" # optional
1364## url "http://example.com" # optional
1365## genre "jazz" # optional
1366## public "no" # optional
1367## timeout "2" # optional
1368## mixer_type "software" # optional
1369#}
1370#
1371# An example of a recorder output:
1372#
1373#audio_output {
1374# type "recorder"
1375# name "My recorder"
1376# encoder "vorbis" # optional, vorbis or lame
1377# path "/var/lib/mpd/recorder/mpd.ogg"
1378## quality "5.0" # do not define if bitrate is defined
1379# bitrate "128" # do not define if quality is defined
1380# format "44100:16:1"
1381#}
1382#
1383# An example of a httpd output (built-in HTTP streaming server):
1384#
1385#audio_output {
1386# type "httpd"
1387# name "My HTTP Stream"
1388# encoder "vorbis" # optional, vorbis or lame
1389# port "8000"
1390# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
1391## quality "5.0" # do not define if bitrate is defined
1392# bitrate "128" # do not define if quality is defined
1393# format "44100:16:1"
1394# max_clients "0" # optional 0=no limit
1395#}
1396#
1397# An example of a pulseaudio output (streaming to a remote pulseaudio server)
1398#
1399#audio_output {
1400# type "pulse"
1401# name "My Pulse Output"
1402## server "remote_server" # optional
1403## sink "remote_server_sink" # optional
1404#}
1405#
1406# An example of a winmm output (Windows multimedia API).
1407#
1408#audio_output {
1409# type "winmm"
1410# name "My WinMM output"
1411## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
1412# or
1413## device "0" # optional
1414## mixer_type "hardware" # optional
1415#}
1416#
1417# An example of an openal output.
1418#
1419#audio_output {
1420# type "openal"
1421# name "My OpenAL output"
1422## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
1423#}
1424#
1425# An example of an sndio output.
1426#
1427#audio_output {
1428# type "sndio"
1429# name "sndio output"
1430# mixer_type "software"
1431#}
1432#
1433# An example of an OS X output:
1434#
1435#audio_output {
1436# type "osx"
1437# name "My OS X Device"
1438## device "Built-in Output" # optional
1439## channel_map "-1,-1,0,1" # optional
1440#}
1441#
1442## Example "pipe" output:
1443#
1444#audio_output {
1445# type "pipe"
1446# name "my pipe"
1447# command "aplay -f cd 2>/dev/null"
1448## Or if you're want to use AudioCompress
1449# command "AudioCompress -m | aplay -f cd 2>/dev/null"
1450## Or to send raw PCM stream through PCM:
1451# command "nc example.org 8765"
1452# format "44100:16:2"
1453#}
1454#
1455## An example of a null output (for no audio output):
1456#
1457#audio_output {
1458# type "null"
1459# name "My Null Output"
1460# mixer_type "none" # optional
1461#}
1462#
1463###############################################################################
1464
1465
1466# Normalization automatic volume adjustments ##################################
1467#
1468# This setting specifies the type of ReplayGain to use. This setting can have
1469# the argument "off", "album", "track" or "auto". "auto" is a special mode that
1470# chooses between "track" and "album" depending on the current state of
1471# random playback. If random playback is enabled then "track" mode is used.
1472# See <http://www.replaygain.org> for more details about ReplayGain.
1473# This setting is off by default.
1474#
1475#replaygain "album"
1476#
1477# This setting sets the pre-amp used for files that have ReplayGain tags. By
1478# default this setting is disabled.
1479#
1480#replaygain_preamp "0"
1481#
1482# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
1483# By default this setting is disabled.
1484#
1485#replaygain_missing_preamp "0"
1486#
1487# This setting enables or disables ReplayGain limiting.
1488# MPD calculates actual amplification based on the ReplayGain tags
1489# and replaygain_preamp / replaygain_missing_preamp setting.
1490# If replaygain_limit is enabled MPD will never amplify audio signal
1491# above its original level. If replaygain_limit is disabled such amplification
1492# might occur. By default this setting is enabled.
1493#
1494#replaygain_limit "yes"
1495#
1496# This setting enables on-the-fly normalization volume adjustment. This will
1497# result in the volume of all playing audio to be adjusted so the output has
1498# equal "loudness". This setting is disabled by default.
1499#
1500#volume_normalization "no"
1501#
1502###############################################################################
1503
1504# Character Encoding ##########################################################
1505#
1506# If file or directory names do not display correctly for your locale then you
1507# may need to modify this setting.
1508#
1509#filesystem_charset "UTF-8"
1510#
1511###############################################################################
1512#+end_src
1513
1514** msmtp
1515:PROPERTIES:
1516:header-args+: :tangle ~/.msmtprc
1517:END:
1518
1519#+begin_src conf
1520# Set default values for all following accounts.
1521defaults
1522port 587
1523tls on
1524auth on
1525#tls_trust_file /etc/ssl/certs/ca-certificates.crt
1526logfile ~/.msmtp.log
1527
1528# aminb
1529account aminb
1530host nix.aminb.org
55879085
AB
1531# use `msmtp -a aminb --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint
1532tls_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
59027673
AB
1533tls_starttls on
1534from amin@aminb.org
1535user amin@aminb.org
1536passwordeval gpg2 --no-tty -q -d ~/.passwd/amin.gpg
1537
1538# gnu
1539account gnu
1540host fencepost.gnu.org
1e55aaa3
AB
1541# use `msmtp -a gnu --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint
1542tls_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
59027673
AB
1543tls_starttls on
1544from aminb@gnu.org
1545user aminb
1546passwordeval gpg2 --no-tty -q -d ~/.passwd/gnu.gpg
1547
835adbdb
AB
1548# gnu (amin)
1549account gnu-amin : gnu
1550from amin@gnu.org
1551
1552# gnu (mab)
9e568495
AB
1553account gnu-mab : gnu
1554from mab@gnu.org
1555
59027673
AB
1556# uwaterloo
1557account uwaterloo
1558host connect.uwaterloo.ca
1559tls_starttls on
1560from abandali@uwaterloo.ca
1561user abandali
1562passwordeval gpg2 --no-tty -q -d ~/.passwd/uwaterloo.gpg
1563tls_trust_file /etc/ssl/certs/ca-certificates.crt
1564
59027673
AB
1565# Set a default account
1566account default : aminb
1567#+end_src
1568
1569** ncmpcpp
1570
1571*** config
1572:PROPERTIES:
1573:header-args+: :tangle ~/.ncmpcpp/config
1574:END:
1575
1576#+begin_src conf :tangle no
1577##############################################################
1578## This is the example configuration file. Copy it to ##
1579## $HOME/.ncmpcpp/config or $XDG_CONFIG_HOME/ncmpcpp/config ##
1580## and set up your preferences. ##
1581##############################################################
1582#
1583##### directories ######
1584##
1585## Directory for storing ncmpcpp related files.
1586## Changing it is useful if you want to store
1587## everything somewhere else and provide command
1588## line setting for alternative location to config
1589## file which defines that while launching ncmpcpp.
1590##
1591#
1592ncmpcpp_directory = ~/.ncmpcpp
1593#
1594##
1595## Directory for storing downloaded lyrics. It
1596## defaults to ~/.lyrics since other MPD clients
1597## (eg. ncmpc) also use that location.
1598##
1599#
1600#lyrics_directory = ~/.lyrics
1601#
1602##### connection settings #####
1603#
1604#mpd_host = localhost
1605#
1606#mpd_port = 6600
1607#
1608#mpd_connection_timeout = 5
1609#
1610## Needed for tag editor and file operations to work.
1611##
1612mpd_music_dir = ~/usr/music
1613#
1614#mpd_crossfade_time = 5
1615#
1616##### music visualizer #####
1617##
1618## Note: In order to make music visualizer work you'll
1619## need to use mpd fifo output, whose format parameter
1620## has to be set to 44100:16:1 for mono visualization
1621## or 44100:16:2 for stereo visualization. Example
1622## configuration (it has to be put into mpd.conf):
1623##
1624## audio_output {
1625## type "fifo"
1626## name "Visualizer feed"
1627## path "/tmp/mpd.fifo"
1628## format "44100:16:2"
1629## }
1630##
1631#
1632visualizer_fifo_path = /tmp/mpd.fifo
1633#
1634##
1635## Note: Below parameter is needed for ncmpcpp
1636## to determine which output provides data for
1637## visualizer and thus allow syncing between
1638## visualization and sound as currently there
1639## are some problems with it.
1640##
1641#
1642visualizer_output_name = my fifo
1643#
1644##
1645## If you set format to 44100:16:2, make it 'yes'.
1646##
1647visualizer_in_stereo = yes
1648#
1649##
1650## Multiply received samples by given value. Very
1651## useful for proper visualization of quiet music.
1652##
1653#visualizer_sample_multiplier = 1
1654#
1655##
1656## Note: Below parameter defines how often ncmpcpp
1657## has to "synchronize" visualizer and audio outputs.
1658## 30 seconds is optimal value, but if you experience
1659## synchronization problems, set it to lower value.
1660## Keep in mind that sane values start with >=10.
1661##
1662#
1663visualizer_sync_interval = 30
1664#
1665##
1666## Note: To enable spectrum frequency visualization
1667## you need to compile ncmpcpp with fftw3 support.
1668##
1669#
1670## Available values: spectrum, wave, wave_filled, ellipse.
1671##
1672visualizer_type = spectrum
1673#
1674#visualizer_look = ●▮
1675visualizer_look = "●•"
1676#
1677#visualizer_color = blue, cyan, green, yellow, magenta, red
1678#
1679## Alternative subset of 256 colors for terminals that support it.
1680##
1681#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161
1682#
1683##### system encoding #####
1684##
1685## ncmpcpp should detect your charset encoding
1686## but if it failed to do so, you can specify
1687## charset encoding you are using here.
1688##
1689## Note: You can see whether your ncmpcpp build
1690## supports charset detection by checking output
1691## of `ncmpcpp --version`.
1692##
1693## Note: Since MPD uses UTF-8 by default, setting
1694## this option makes sense only if your encoding
1695## is different.
1696##
1697#
1698#system_encoding = ""
1699#
1700##### delays #####
1701#
1702## Time of inactivity (in seconds) after playlist
1703## highlighting will be disabled (0 = always on).
1704##
1705#playlist_disable_highlight_delay = 5
1706#
1707## Defines how long messages are supposed to be visible.
1708##
1709#message_delay_time = 5
1710#
1711##### song format #####
1712##
1713## For a song format you can use:
1714##
1715## %l - length
1716## %f - filename
1717## %D - directory
1718## %a - artist
1719## %A - album artist
1720## %t - title
1721## %b - album
1722## %y - date
1723## %n - track number (01/12 -> 01)
1724## %N - full track info (01/12 -> 01/12)
1725## %g - genre
1726## %c - composer
1727## %p - performer
1728## %d - disc
1729## %C - comment
1730## %P - priority
1731## $R - begin right alignment
1732##
1733## If you want to make sure that a part of the format is displayed
1734## only when certain tags are present, you can archieve it by
1735## grouping them with brackets, e.g. '{%a - %t}' will be evaluated
1736## to 'ARTIST - TITLE' if both tags are present or '' otherwise.
1737## It is also possible to define a list of alternatives by providing
1738## several groups and separating them with '|', e.g. '{%t}|{%f}'
1739## will be evaluated to 'TITLE' or 'FILENAME' if the former is not
1740## present.
1741##
1742## Note: If you want to set limit on maximal length of a tag, just
1743## put the appropriate number between % and character that defines
1744## tag type, e.g. to make album take max. 20 terminal cells, use '%20b'.
1745##
1746## In addition, formats support markers used for text attributes.
1747## They are followed by character '$'. After that you can put:
1748##
1749## - 0 - default window color (discards all other colors)
1750## - 1 - black
1751## - 2 - red
1752## - 3 - green
1753## - 4 - yellow
1754## - 5 - blue
1755## - 6 - magenta
1756## - 7 - cyan
1757## - 8 - white
1758## - 9 - end of current color
1759## - b - bold text
1760## - u - underline text
1761## - r - reverse colors
1762## - a - use alternative character set
1763##
1764## If you don't want to use a non-color attribute anymore, just put it
1765## again, but this time insert character '/' between '$' and attribute
1766## character, e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag
1767## or filename with reversed colors.
1768##
1769## If you want to use 256 colors and/or background colors in formats
1770## (the naming scheme is described below in section about color
1771## definitions), it can be done with the syntax $(COLOR), e.g. to set
1772## the artist tag to one of the non-standard colors and make it have
1773## yellow background, you need to write $(197_yellow)%a$(end). Note
1774## that for standard colors this is interchangable with attributes
1775## listed above.
1776##
1777## Note: colors can be nested.
1778##
1779#
1780#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
1781#
1782#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f}
1783#
1784#song_library_format = {%n - }{%t}|{%f}
1785#
1786#
1787#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
1788#
1789#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
1790#
1791#now_playing_prefix = $b
1792#
1793#now_playing_suffix = $/b
1794#
1795#browser_playlist_prefix = "$2playlist$9 "
1796#
1797#selected_item_prefix = $6
1798#
1799#selected_item_suffix = $9
1800#
1801#modified_item_prefix = $3> $9
1802#
1803##
1804## Note: attributes are not supported for the following variables.
1805##
1806#song_window_title_format = {%a - }{%t}|{%f}
1807##
1808## Note: Below variables are used for sorting songs in browser.
1809## The sort mode determines how songs are sorted, and can be used
1810## in combination with a sort format to specify a custom sorting format.
1811## Available values for browser_sort_mode are "name", "mtime", "format"
1812## and "noop".
1813##
1814#
1815#browser_sort_mode = name
1816#
1817#browser_sort_format = {%a - }{%t}|{%f} {(%l)}
1818#
1819##### columns settings #####
1820##
1821## syntax of song columns list format is "column column etc."
1822##
1823## - syntax for each column is:
1824##
1825## (width of the column)[color of the column]{displayed tag}
1826##
1827## Note: Width is by default in %, if you want a column to
1828## have fixed size, add 'f' after the value, e.g. (10)[white]{a}
1829## will be the column that take 10% of screen (so the real width
1830## will depend on actual screen size), whereas (10f)[white]{a}
1831## will take 10 terminal cells, no matter how wide the screen is.
1832##
1833## - color is optional (if you want the default one,
1834## leave the field empty).
1835##
1836## Note: You can give a column additional attributes by putting appropriate
1837## character after displayed tag character. Available attributes are:
1838##
1839## - r - column will be right aligned
1840## - E - if tag is empty, empty tag marker won't be displayed
1841##
1842## You can also:
1843##
1844## - give a column custom name by putting it after attributes,
1845## separated with character ':', e.g. {lr:Length} gives you
1846## right aligned column of lengths named "Length".
1847##
1848## - define sequence of tags, that have to be displayed in case
1849## predecessor is empty in a way similar to the one in classic
1850## song format, i.e. using '|' character, e.g. {a|c|p:Owner}
1851## creates column named "Owner" that tries to display artist
1852## tag and then composer and performer if previous ones are
1853## not available.
1854##
1855#
1856#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l}
1857#
1858##### various settings #####
1859#
1860##
1861## Note: Custom command that will be executed each
1862## time song changes. Useful for notifications etc.
1863##
1864#execute_on_song_change = ""
1865#
1866#playlist_show_mpd_host = no
1867#
1868#playlist_show_remaining_time = no
1869#
1870#playlist_shorten_total_times = no
1871#
1872#playlist_separate_albums = no
1873#
1874##
1875## Note: Possible display modes: classic, columns.
1876##
1877#playlist_display_mode = columns
1878#
1879#browser_display_mode = classic
1880#
1881#search_engine_display_mode = classic
1882#
1883#playlist_editor_display_mode = classic
1884#
1885#discard_colors_if_item_is_selected = yes
1886#
1887#incremental_seeking = yes
1888#
1889#seek_time = 1
1890#
1891#volume_change_step = 2
1892#
1893#autocenter_mode = no
1894#
1895#centered_cursor = no
1896#
1897##
1898## Note: You can specify third character which will
1899## be used to build 'empty' part of progressbar.
1900##
1901#progressbar_look = =>
1902progressbar_look = "─╼╶"
1903#progressbar_look = "─⊙╶"
1904#
1905#progressbar_boldness = yes
1906#
1907## Available values: database, playlist.
1908##
1909#default_place_to_search_in = database
1910#
1911## Available values: classic, alternative.
1912##
1913#user_interface = classic
1914#
1915#data_fetching_delay = yes
1916#
1917## Available values: artist, album_artist, date, genre, composer, performer.
1918##
1919#media_library_primary_tag = artist
1920#
1921## Available values: wrapped, normal.
1922##
1923#default_find_mode = wrapped
1924#
1925#default_tag_editor_pattern = %n - %t
1926#
1927#header_visibility = yes
1928#
1929#statusbar_visibility = yes
1930#
1931#titles_visibility = yes
1932#
1933#header_text_scrolling = yes
1934#
1935#cyclic_scrolling = no
1936#
1937#lines_scrolled = 2
1938#
1939#follow_now_playing_lyrics = no
1940#
1941#fetch_lyrics_for_current_song_in_background = no
1942#
1943#store_lyrics_in_song_dir = no
1944#
1945#generate_win32_compatible_filenames = yes
1946#
1947#allow_for_physical_item_deletion = no
1948#
1949##
1950## Note: If you set this variable, ncmpcpp will try to
1951## get info from last.fm in language you set and if it
1952## fails, it will fall back to english. Otherwise it will
1953## use english the first time.
1954##
1955## Note: Language has to be expressed as an ISO 639 alpha-2 code.
1956##
1957#lastfm_preferred_language = en
1958#
1959#show_hidden_files_in_local_browser = no
1960#
1961##
1962## How shall screen switcher work?
1963##
1964## - "previous" - switch between the current and previous screen.
1965## - "screen1,...,screenN" - switch between given sequence of screens.
1966##
1967## Screens available for use: help, playlist, browser, search_engine,
1968## media_library, playlist_editor, tag_editor, outputs, visualizer, clock.
1969##
1970#screen_switcher_mode = playlist, browser
1971#
1972##
1973## Note: You can define startup screen
1974## by choosing screen from the list above.
1975##
1976#startup_screen = playlist
1977#
1978##
1979## Note: You can define startup slave screen
1980## by choosing screen from the list above or
1981## an empty value for no slave screen.
1982##
1983#startup_slave_screen = ""
1984#
1985#startup_slave_screen_focus = no
1986#
1987##
1988## Default width of locked screen (in %).
1989## Acceptable values are from 20 to 80.
1990##
1991#
1992#locked_screen_width_part = 50
1993#
1994#ask_for_locked_screen_width_part = yes
1995#
1996#jump_to_now_playing_song_at_start = yes
1997#
1998#ask_before_clearing_playlists = yes
1999#
2000#clock_display_seconds = no
2001#
2002#display_volume_level = yes
2003#
2004#display_bitrate = no
2005#
2006#display_remaining_time = no
2007#
2008## Available values: none, basic, extended, perl.
2009##
2010#regular_expressions = perl
2011#
2012##
2013## Note: If below is enabled, ncmpcpp will ignore leading
2014## "The" word while sorting items in browser, tags in
2015## media library, etc.
2016##
2017#ignore_leading_the = no
2018#
2019#block_search_constraints_change_if_items_found = yes
2020#
2021#mouse_support = yes
2022#
2023#mouse_list_scroll_whole_page = yes
2024#
2025#empty_tag_marker = <empty>
2026#
2027#tags_separator = " | "
2028#
2029#tag_editor_extended_numeration = no
2030#
2031#media_library_sort_by_mtime = no
2032#
2033#enable_window_title = yes
2034#
2035##
2036## Note: You can choose default search mode for search
2037## engine. Available modes are:
2038##
2039## - 1 - use mpd built-in searching (no regexes, pattern matching)
2040## - 2 - use ncmpcpp searching (pattern matching with support for regexes,
2041## but if your mpd is on a remote machine, downloading big database
2042## to process it can take a while
2043## - 3 - match only exact values (this mode uses mpd function for searching
2044## in database and local one for searching in current playlist)
2045##
2046#
2047#search_engine_default_search_mode = 1
2048#
2049#external_editor = nano
2050#
2051## Note: set to yes if external editor is a console application.
2052##
2053#use_console_editor = yes
2054#
2055##### colors definitions #####
2056##
2057## It is possible to set a background color by setting a color
2058## value "<foreground>_<background>", e.g. red_black will set
2059## foregound color to red and background color to black.
2060##
2061## In addition, for terminals that support 256 colors it
2062## is possible to set one of them by using a number in range
2063## [1, 256] instead of color name, e.g. numerical value
2064## corresponding to red_black is 2_1. To find out if the
2065## terminal supports 256 colors, run ncmpcpp and check out
2066## the bottom of the help screen for list of available colors
2067## and their numerical values.
2068##
2069## Note: due to technical limitations of ncurses, if 256 colors
2070## are used, it is possible to either use only the colors with
2071## default background color, or all pairs from 1_1 up to 254_127,
2072## depending on the ncurses version used.
2073##
2074#
2075#colors_enabled = yes
2076#
2077#empty_tag_color = cyan
2078#
2079#header_window_color = default
2080#
2081#volume_color = default
2082#
2083#state_line_color = default
2084#
2085#state_flags_color = default
2086#
2087#main_window_color = yellow
2088#
2089#color1 = white
2090#
2091#color2 = green
2092#
2093#main_window_highlight_color = yellow
2094#
2095#progressbar_color = black
2096#
2097#progressbar_elapsed_color = green
2098#
2099#statusbar_color = default
2100#
2101#alternative_ui_separator_color = black
2102#
2103#active_column_color = red
2104#
2105#window_border_color = green
2106#
2107#active_window_border = red
2108#
2109#+end_src
2110
2111*** bindings
2112:PROPERTIES:
2113:header-args+: :tangle ~/.ncmpcpp/bindings
2114:END:
2115
2116#+begin_src conf :tangle no
2117def_key "j"
2118 scroll_down
2119def_key "k"
2120 scroll_up
2121
2122def_key "ctrl-u"
2123 page_up
2124def_key "ctrl-d"
2125 page_down
2126
2127def_key "h"
2128 previous_column
2129def_key "l"
2130 next_column
2131
2132def_key "."
2133 show_lyrics
2134
2135def_key "n"
2136 next_found_item
2137def_key "N"
2138 previous_found_item
2139
2140def_key "J"
2141 move_sort_order_down
2142def_key "K"
2143 move_sort_order_up
2144#+end_src
2145
25869427
AB
2146** notmuch
2147
2148*** notmuch-config
2149:PROPERTIES:
2150:header-args+: :tangle ~/.notmuch-config
2151:END:
2152
2153#+begin_src conf
2154# .notmuch-config - Configuration file for the notmuch mail system
2155#
2156# For more information about notmuch, see https://notmuchmail.org
2157
2158# Database configuration
2159#
2160# The only value supported here is 'path' which should be the top-level
2161# directory where your mail currently exists and to where mail will be
2162# delivered in the future. Files should be individual email messages.
2163# Notmuch will store its database within a sub-directory of the path
2164# configured here named ".notmuch".
2165#
2166[database]
2167path=/home/amin/mail
2168
2169# User configuration
2170#
2171# Here is where you can let notmuch know how you would like to be
2172# addressed. Valid settings are
2173#
2174# name Your full name.
2175# primary_email Your primary email address.
2176# other_email A list (separated by ';') of other email addresses
2177# at which you receive email.
2178#
2179# Notmuch will use the various email addresses configured here when
2180# formatting replies. It will avoid including your own addresses in the
2181# recipient list of replies, and will set the From address based on the
2182# address to which the original email was addressed.
2183#
2184[user]
2185name=Amin Bandali
2186primary_email=amin@aminb.org
835adbdb 2187other_email=amin@gnu.org;abandali@uwaterloo.ca;mab@gnu.org;aminb@gnu.org;
25869427
AB
2188
2189# Configuration for "notmuch new"
2190#
2191# The following options are supported here:
2192#
2193# tags A list (separated by ';') of the tags that will be
2194# added to all messages incorporated by "notmuch new".
2195#
2196# ignore A list (separated by ';') of file and directory names
2197# that will not be searched for messages by "notmuch new".
2198#
2199# NOTE: *Every* file/directory that goes by one of those
2200# names will be ignored, independent of its depth/location
2201# in the mail store.
2202#
2203[new]
2204tags=new;
2205#tags=unread;inbox;
18faca55 2206ignore=.uidvalidity;.mbsyncstate;/.*/dovecot*/
25869427
AB
2207
2208# Search configuration
2209#
2210# The following option is supported here:
2211#
2212# exclude_tags
2213# A ;-separated list of tags that will be excluded from
2214# search results by default. Using an excluded tag in a
2215# query will override that exclusion.
2216#
2217[search]
2218exclude_tags=deleted;spam;
2219
2220# Maildir compatibility configuration
2221#
2222# The following option is supported here:
2223#
2224# synchronize_flags Valid values are true and false.
2225#
2226# If true, then the following maildir flags (in message filenames)
2227# will be synchronized with the corresponding notmuch tags:
2228#
2229# Flag Tag
2230# ---- -------
2231# D draft
2232# F flagged
2233# P passed
2234# R replied
2235# S unread (added when 'S' flag is not present)
2236#
2237# The "notmuch new" command will notice flag changes in filenames
2238# and update tags, while the "notmuch tag" and "notmuch restore"
2239# commands will notice tag changes and update flags in filenames
2240#
2241[maildir]
2242synchronize_flags=true
2243
2244# Cryptography related configuration
2245#
2246# The following option is supported here:
2247#
2248# gpg_path
2249# binary name or full path to invoke gpg.
2250#
2251[crypto]
2252gpg_path=gpg
2253#+end_src
2254
18faca55
AB
2255*** pre-new hook
2256:PROPERTIES:
2257:header-args+: :tangle ~/mail/.notmuch/hooks/pre-new :shebang "#!/bin/sh"
2258:END:
2259
2260#+begin_src sh
2261touch /tmp/gnusieve.log
2262sieve-filter -eW -o postmaster_address=postmaster@aminb.org \
2263 -o mail_location=maildir:$MAILDIR/gnu:LAYOUT=fs:INBOX=$MAILDIR/gnu/Inbox ~/sieve/gnu.sieve INBOX delete &>>/tmp/gnusieve.log
2264#+end_src
2265
25869427
AB
2266*** post-new hook
2267:PROPERTIES:
2268:header-args+: :tangle ~/mail/.notmuch/hooks/post-new :shebang "#!/bin/sh"
2269:END:
2270
2271#+begin_src sh
18faca55 2272# apply sent tag to messages sent by me
835adbdb 2273notmuch 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
18faca55
AB
2274
2275# initial tagging
b6c1036f 2276notmuch tag -latest -- tag:latest
53960d74 2277notmuch tag +inbox +unread +latest -new -- tag:new
25869427 2278
378b4afa 2279
25869427 2280# apply tags to lists
378b4afa
AB
2281
2282# <aminb>
18faca55 2283notmuch tag -inbox +lists/hackernewsletter -- folder:amin/lists/hackernewsletter
378b4afa 2284notmuch tag -inbox +lists/haskell-weekly -- folder:amin/lists/haskell-weekly
ddb0b1d4
AB
2285
2286notmuch tag -inbox +pay -- folder:amin/pay
74ef10b0 2287notmuch tag -inbox +banking -- folder:amin/banking
378b4afa
AB
2288# </aminb>
2289
2290# <uw>
ddb0b1d4
AB
2291notmuch tag -inbox +uw/cs136 -- folder:uwaterloo/lists/cs136
2292notmuch tag -inbox +uw/se463 -- folder:uwaterloo/lists/se463
378b4afa
AB
2293
2294notmuch tag -inbox +lists/clvsingle -- folder:uwaterloo/lists/Clvsingle
2295notmuch tag -inbox +lists/gsa -- folder:uwaterloo/lists/GSA
2296notmuch tag -inbox +lists/math-grad -- folder:uwaterloo/lists/Math-grad
2297notmuch tag -inbox +lists/scs-grads -- folder:uwaterloo/lists/scs-grads
2298notmuch tag -inbox +lists/watform-students -- folder:uwaterloo/lists/Watform-students
2299# </uw>
2300
2301# <gnu>
b6c1036f
AB
2302notmuch tag -inbox +l/emacs-devel -- folder:gnu/l/emacs-devel
2303notmuch tag -inbox +l/emacs-orgmode -- folder:gnu/l/emacs-orgmode
2304notmuch tag -inbox +l/emacsconf-discuss -- folder:gnu/l/emacsconf-discuss
2305notmuch tag -inbox +l/fencepost-users -- folder:gnu/l/fencepost-users
2306notmuch tag -inbox +l/guix-devel -- folder:gnu/l/guix-devel
2307notmuch tag -inbox +l/guile-devel -- folder:gnu/l/guile-devel
2308notmuch tag -inbox +l/help-gnu-emacs -- folder:gnu/l/help-gnu-emacs
2309notmuch tag -inbox +l/info-gnu-emacs -- folder:gnu/l/info-gnu-emacs
2310notmuch tag -inbox +l/www-commits -- folder:gnu/l/www-commits
2311notmuch tag -inbox +l/www-discuss -- folder:gnu/l/www-discuss
2312notmuch tag -inbox +webmasters -- folder:gnu/webmasters
2313
2314notmuch tag -inbox +l/deepspec -- folder:gnu/l/deepspec
2315notmuch tag -inbox +l/haskell-cafe -- folder:gnu/l/haskell-cafe
2316notmuch tag -inbox +l/haskell-art -- folder:gnu/l/haskell-art
2317notmuch tag -inbox +l/notmuch -- folder:gnu/l/notmuch
2318
2319notmuch tag -inbox +l/~aminb/test-priv -- folder:gnu/l/~aminb/test-priv
2320notmuch tag -inbox +l/~sircmpwn/sr.ht-admins -- folder:gnu/l/~sircmpwn/sr.ht-admins
2321notmuch tag -inbox +l/~sircmpwn/sr.ht-announce -- folder:gnu/l/~sircmpwn/sr.ht-announce
2322notmuch tag -inbox +l/~sircmpwn/sr.ht-dev -- folder:gnu/l/~sircmpwn/sr.ht-dev
2323notmuch tag -inbox +l/~sircmpwn/sr.ht-discuss -- folder:gnu/l/~sircmpwn/sr.ht-discuss
ddb0b1d4 2324# </gnu>
b6232163
AB
2325
2326notmuch tag -inbox -unread +archive/notmuch -- path:archive/notmuch/**
2327notmuch tag -inbox -unread +archive/emacs-devel -- path:archive/emacs-devel/**
25869427
AB
2328#+end_src
2329
2330*** notmuch.service
2331:PROPERTIES:
2332:header-args+: :tangle ~/.config/systemd/user/notmuch.service
2333:END:
2334
2335#+begin_src conf :tangle no
2336[Unit]
2337Description=notmuch service
2338
2339[Service]
2340Type=oneshot
2341ExecStart=/usr/bin/notmuch new
2342StandardOutput=syslog
2343StandardError=syslog
2344#+end_src
2345
2346*** notmuch.timer
2347:PROPERTIES:
2348:header-args+: :tangle ~/.config/systemd/user/notmuch.timer
2349:END:
2350
2351#+begin_src conf :tangle no
2352[Unit]
2353Description=notmuch timer
2354
2355[Timer]
2356OnCalendar=*:0/5
2357Persistent=true
2358Unit=notmuch.service
2359
2360[Install]
2361WantedBy=timers.target
2362#+end_src
2363
2364** offlineimap
2365
2366*** offlineimaprc
2367:PROPERTIES:
2368:header-args+: :tangle ~/.offlineimaprc
2369:END:
2370
2371#+begin_src conf :tangle no
2372[general]
2373pythonfile = ~/.offlineimap.py
2374accounts = Gmail, aminb
2375maxsyncaccounts = 3
2376
2377[Account Gmail]
2378localrepository = GmailL
2379remoterepository = GmailR
2380
2381[Account aminb]
2382localrepository = aminbL
2383remoterepository = aminbR
2384
2385[Repository GmailL]
2386type = Maildir
2387localfolders = ~/Maildir/Gmail
2388
2389[Repository GmailR]
2390type = IMAP
2391remotehost = imap.gmail.com
2392remoteusereval = mailuser("gmail")
2393remotepasseval = mailpasswd("gmail")
2394sslcacertfile = /etc/ssl/certs/ca-certificates.crt
2395ssl = yes
2396folderfilter = lambda foldername: foldername not in '[Gmail]/All Mail'
2397maxconnections = 1
2398realdelete = no
2399
2400[Repository aminbL]
2401type = Maildir
2402localfolders = ~/Maildir/aminb
2403
2404[Repository aminbR]
2405type = IMAP
2406remotehost = mail.aminb.org
2407remoteusereval = mailuser("aminb")
2408remotepasseval = mailpasswd("aminb")
2409sslcacertfile = /etc/ssl/certs/ca-certificates.crt
2410ssl = yes
2411folderfilter = lambda foldername: foldername not in 'dovecot.sieve'
2412maxconnections = 1
2413realdelete = no
2414#+end_src
2415
2416*** offlineimap.py
2417:PROPERTIES:
2418:header-args+: :tangle ~/.offlineimap.py
2419:END:
2420
2421#+begin_src python :tangle no
2422import os
2423import subprocess
2424
2425def mailpasswd(acct):
2426 acct = os.path.basename(acct)
2427 path = "/home/amin/.passwd/%s.gpg" % acct
2428 args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path]
2429 try:
2430 return subprocess.check_output(args).strip()
2431 except subprocess.CalledProcessError:
2432 return ""
2433
2434def mailuser(acct):
2435 acct = os.path.basename(acct)
2436 path = "/home/amin/.passwd/%s" % acct
2437 args = ["cat", path]
2438 try:
2439 return subprocess.check_output(args).strip()
2440 except subprocess.CalledProcessError:
2441 return ""
2442
2443def prime_gpg_agent():
2444 ret = False
2445 i = 1
2446 while not ret:
2447 ret = (mailpasswd("prime") == "prime")
2448 if i > 2:
2449 from offlineimap.ui import getglobalui
2450 sys.stderr.write("Error reading in passwords. Terminating.\n")
2451 getglobalui().terminate()
2452 i += 1
2453 return ret
2454
2455prime_gpg_agent()
2456#+end_src
2457
8e15d300
AB
2458** pigeonhole
2459*** gnu.sieve
2460:PROPERTIES:
2461:header-args+: :tangle ~/sieve/gnu.sieve :comments none
2462:END:
2463
2464#+begin_src conf
2465require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", "include" ];
2466
2467if anyof (
2468 address :is "from" "webmasters@gnu.org",
2469 address :is "from" "webmasters-comment@gnu.org") {
2470 fileinto :create "webmasters";
2471 stop;
2472}
2473
2474include :personal "lists";
2475#+end_src
2476
2477*** lists.sieve
2478:PROPERTIES:
2479:header-args+: :tangle ~/sieve/lists.sieve :comments none
2480:END:
2481
2482#+begin_src conf
2483require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags",
2484 "include" ];
2485
2486if anyof (
2487 header :contains "list-id" "<emacs-devel.gnu.org>",
378b4afa
AB
2488 header :contains "list-id" "<emacs-orgmode.gnu.org>",
2489 header :contains "list-id" "<emacsconf-discuss.gnu.org>",
2490 header :contains "list-id" "<fencepost-users.gnu.org>",
8e15d300
AB
2491 header :contains "list-id" "<guix-devel.gnu.org>",
2492 header :contains "list-id" "<guile-devel.gnu.org>",
2493 header :contains "list-id" "<help-gnu-emacs.gnu.org>",
2494 header :contains "list-id" "<info-gnu-emacs.gnu.org>",
2495 header :contains "list-id" "<www-commits.gnu.org>",
2496 header :contains "list-id" "<www-discuss.gnu.org>",
8e15d300
AB
2497 header :contains "list-id" "<deepspec.lists.cs.princeton.edu>",
2498 header :contains "list-id" "<haskell-cafe.haskell.org>",
378b4afa 2499 header :contains "list-id" "<haskell-art.we.lurk.org>",
8e15d300
AB
2500 header :contains "list-id" "<notmuch.notmuchmail.org>") {
2501 if header :regex "list-id" "<([a-z_0-9-]+)[.@]" {
2502 set :lower "listname" "${1}";
2503 fileinto :create "l/${listname}";
2504 }
2505}
b6c1036f
AB
2506
2507if anyof (
2508 header :contains "list-id" "<~aminb/test-priv@lists.sr.ht>",
2509 header :contains "list-id" "<~sircmpwn/sr.ht-admins@lists.sr.ht>",
2510 header :contains "list-id" "<~sircmpwn/sr.ht-announce@lists.sr.ht>",
2511 header :contains "list-id" "<~sircmpwn/sr.ht-dev@lists.sr.ht>",
2512 header :contains "list-id" "<~sircmpwn/sr.ht-discuss@lists.sr.ht>") {
2513 if header :regex "list-id" "(~[a-z_0-9-]+)/([a-z_0-9.-]+)@" {
2514 set :lower "username" "${1}";
2515 set :lower "listname" "${2}";
2516 fileinto :create "l/${username}/${listname}";
2517 }
2518}
8e15d300
AB
2519#+end_src
2520
1656853a
AB
2521** polybar
2522
2523*** config
2524:PROPERTIES:
2525:header-args+: :tangle ~/.config/polybar/config
2526:END:
2527
2528#+begin_src conf :tangle no
2529;=====================================================
2530;
2531; To learn more about how to configure Polybar
2532; go to https://github.com/jaagr/polybar
2533;
2534; The README contains alot of information
2535;
2536;=====================================================
2537
2538[colors]
2539;background = ${xrdb:color0:#222}
2540background = #222
2541background-alt = #444
2542;foreground = ${xrdb:color7:#222}
2543foreground = #eee
2544foreground-alt = #888
2545primary = #ffb52a
2546secondary = #e60053
2547alert = #bd2c40
2548
2549[bar/main]
2550;monitor = ${env:MONITOR:HDMI-1}
2551width = 100%
2552height = 27
2553;offset-x = 1%
2554;offset-y = 1%
2555radius = 3.0
2556fixed-center = true
2557
2558background = ${colors.background}
2559foreground = ${colors.foreground}
2560
2561line-size = 3
2562line-color = #f00
2563
2564border-size = 4
2565border-color = #00000000
2566
2567padding-left = 0
2568padding-right = 2
2569
2570module-margin-left = 2
2571module-margin-right = 2
2572
2573font-0 = Ubuntu:fontformat=truetype:antialias=true:pixelsize=9;1
2574font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
2575font-2 = Wuncon Siji:pixelsize=10;1
2576font-3 = FontAwesome:pixelsize=10;1
2577
2578modules-left = bspwm xwindow
2579modules-center =
2580modules-right = volume filesystem mail xkeyboard memory cpu temperature date powermenu
2581
2582tray-position = right
2583tray-padding = 1
2584;tray-transparent = true
2585;tray-background = #0063ff
2586tray-maxsize = 18
2587
2588wm-restack = bspwm
2589
2590;override-redirect = true
2591
2592scroll-up = bspwm-desknext
2593scroll-down = bspwm-deskprev
2594
2595[module/xwindow]
2596type = internal/xwindow
2597label = %title:0:50:...%
2598
2599[module/xkeyboard]
2600type = internal/xkeyboard
2601blacklist-0 = num lock
2602
2603format-prefix = " "
2604format-prefix-foreground = ${colors.foreground-alt}
2605format-prefix-underline = ${colors.secondary}
2606
2607label-layout = %layout%
2608label-layout-underline = ${colors.secondary}
2609
2610label-indicator-padding = 2
2611label-indicator-margin = 1
2612label-indicator-background = ${colors.secondary}
2613label-indicator-underline = ${colors.secondary}
2614
2615[module/filesystem]
2616type = internal/fs
2617interval = 25
2618
2619mount-0 = /
2620
2621label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
2622label-unmounted = %mountpoint% not mounted
2623label-unmounted-foreground = ${colors.foreground-alt}
2624
2625[module/bspwm]
2626type = internal/bspwm
2627
2628label-focused = %index%
2629label-focused-background = ${colors.background-alt}
2630label-focused-underline= ${colors.primary}
2631label-focused-padding = 2
2632
2633label-occupied = %index%
2634label-occupied-padding = 2
2635
2636label-urgent = %index%!
2637label-urgent-background = ${colors.alert}
2638label-urgent-padding = 2
2639
2640label-empty = %index%
2641label-empty-foreground = ${colors.foreground-alt}
2642label-empty-padding = 2
2643
2644[module/i3]
2645type = internal/i3
2646format = <label-state> <label-mode>
2647index-sort = true
2648wrapping-scroll = false
2649
2650; Only show workspaces on the same output as the bar
2651;pin-workspaces = true
2652
2653label-mode-padding = 2
2654label-mode-foreground = #000
2655label-mode-background = ${colors.primary}
2656
2657; focused = Active workspace on focused monitor
2658label-focused = %index%
2659label-focused-background = ${module/bspwm.label-focused-background}
2660label-focused-underline = ${module/bspwm.label-focused-underline}
2661label-focused-padding = ${module/bspwm.label-focused-padding}
2662
2663; unfocused = Inactive workspace on any monitor
2664label-unfocused = %index%
2665label-unfocused-padding = ${module/bspwm.label-occupied-padding}
2666
2667; visible = Active workspace on unfocused monitor
2668label-visible = %index%
2669label-visible-background = ${self.label-focused-background}
2670label-visible-underline = ${self.label-focused-underline}
2671label-visible-padding = ${self.label-focused-padding}
2672
2673; urgent = Workspace with urgency hint set
2674label-urgent = %index%
2675label-urgent-background = ${module/bspwm.label-urgent-background}
2676label-urgent-padding = ${module/bspwm.label-urgent-padding}
2677
2678[module/mpd]
2679type = internal/mpd
2680format-online = <label-song> <icon-prev> <icon-stop> <toggle> <icon-next>
2681
2682icon-prev = 
2683icon-stop = 
2684icon-play = 
2685icon-pause = 
2686icon-next = 
2687
2688label-song-maxlen = 25
2689label-song-ellipsis = true
2690
2691[module/xbacklight]
2692type = internal/xbacklight
2693
2694format = <label> <bar>
2695label = BL
2696
2697bar-width = 10
2698bar-indicator = |
2699bar-indicator-foreground = #ff
2700bar-indicator-font = 2
2701bar-fill = ─
2702bar-fill-font = 2
2703bar-fill-foreground = #9f78e1
2704bar-empty = ─
2705bar-empty-font = 2
2706bar-empty-foreground = ${colors.foreground-alt}
2707
2708[module/backlight-acpi]
2709inherit = module/xbacklight
2710type = internal/backlight
2711;card = intel_backlight
2712card = mba6x_backlight
2713
2714[module/cpu]
2715type = internal/cpu
2716interval = 2
2717format-prefix = " "
2718format-prefix-foreground = ${colors.foreground-alt}
2719format-underline = #f90000
2720label = %percentage%%
2721
2722[module/memory]
2723type = internal/memory
2724interval = 2
2725format-prefix = " "
2726format-prefix-foreground = ${colors.foreground-alt}
2727format-underline = #4bffdc
2728label = %percentage_used%%
2729
2730[module/wlan]
2731type = internal/network
2732interface =
2733interval = 3.0
2734
2735format-connected = <ramp-signal> <label-connected>
2736format-connected-underline = #9f78e1
2737label-connected = %essid%
2738
2739format-disconnected =
2740;format-disconnected = <label-disconnected>
2741;format-disconnected-underline = ${self.format-connected-underline}
2742;label-disconnected = %ifname% disconnected
2743;label-disconnected-foreground = ${colors.foreground-alt}
2744
2745ramp-signal-0 = 
2746ramp-signal-1 = 
2747ramp-signal-2 = 
2748ramp-signal-3 = 
2749ramp-signal-4 = 
2750ramp-signal-foreground = ${colors.foreground-alt}
2751
2752[module/eth]
2753type = internal/network
2754interface =
2755interval = 3.0
2756
2757format-connected-underline = #55aa55
2758format-connected-prefix = " "
2759format-connected-prefix-foreground = ${colors.foreground-alt}
2760label-connected = %local_ip%
2761
2762format-disconnected =
2763;format-disconnected = <label-disconnected>
2764;format-disconnected-underline = ${self.format-connected-underline}
2765;label-disconnected = %ifname% disconnected
2766;label-disconnected-foreground = ${colors.foreground-alt}
2767
2768[module/date]
2769type = internal/date
2770interval = 5
2771
2772date =
2773date-alt = " %Y-%m-%d"
2774
2775time = %H:%M
2776time-alt = %H:%M:%S
2777
2778format-prefix = 
2779format-prefix-foreground = ${colors.foreground-alt}
2780format-underline = #0a6cf5
2781
2782label = %date% %time%
2783
2784[module/volume]
2785type = internal/volume
2786
2787format-volume = <label-volume> <bar-volume>
2788label-volume = vol
2789label-volume-foreground = ${root.foreground}
2790
2791format-muted-prefix = " "
2792format-muted-foreground = ${colors.foreground-alt}
2793label-muted = mute
2794
2795bar-volume-width = 10
2796bar-volume-foreground-0 = #55aa55
2797bar-volume-foreground-1 = #55aa55
2798bar-volume-foreground-2 = #55aa55
2799bar-volume-foreground-3 = #55aa55
2800bar-volume-foreground-4 = #55aa55
2801bar-volume-foreground-5 = #f5a70a
2802bar-volume-foreground-6 = #ff5555
2803bar-volume-gradient = false
2804bar-volume-indicator = |
2805bar-volume-indicator-font = 2
2806bar-volume-fill = ─
2807bar-volume-fill-font = 2
2808bar-volume-empty = ─
2809bar-volume-empty-font = 2
2810bar-volume-empty-foreground = ${colors.foreground-alt}
2811
2812[module/battery]
2813type = internal/battery
2814battery = BAT0
2815adapter = ADP1
2816full-at = 64
2817
2818format-charging = <animation-charging> <label-charging>
2819format-charging-underline = #ffb52a
2820
2821format-discharging = <ramp-capacity> <label-discharging>
2822format-discharging-underline = ${self.format-charging-underline}
2823
2824format-full-prefix = " "
2825format-full-prefix-foreground = ${colors.foreground-alt}
2826format-full-underline = ${self.format-charging-underline}
2827
2828ramp-capacity-0 = 
2829ramp-capacity-1 = 
2830ramp-capacity-2 = 
2831ramp-capacity-foreground = ${colors.foreground-alt}
2832
2833animation-charging-0 = 
2834animation-charging-1 = 
2835animation-charging-2 = 
2836animation-charging-foreground = ${colors.foreground-alt}
2837animation-charging-framerate = 750
2838
2839[module/temperature]
2840type = internal/temperature
2841thermal-zone = 1
2842warn-temperature = 66
2843
2844format = <ramp> <label>
2845format-underline = #f50a4d
2846format-warn = <ramp> <label-warn>
2847format-warn-underline = ${self.format-underline}
2848
2849label = %temperature%
2850label-warn = %temperature%
2851label-warn-foreground = ${colors.secondary}
2852
2853ramp-0 = 
2854ramp-1 = 
2855ramp-2 = 
2856ramp-foreground = ${colors.foreground-alt}
2857
2858[module/powermenu]
2859type = custom/menu
2860
2861format-spacing = 1
2862
2863label-open = 
2864label-open-foreground = ${colors.secondary}
2865label-close =  cancel
2866label-close-foreground = ${colors.secondary}
2867label-separator = |
2868label-separator-foreground = ${colors.foreground-alt}
2869
2870menu-0-0 = reboot
2871menu-0-0-exec = menu-open-1
2872menu-0-1 = power off
2873menu-0-1-exec = menu-open-2
2874
2875menu-1-0 = cancel
2876menu-1-0-exec = menu-open-0
2877menu-1-1 = reboot
2878menu-1-1-exec = sudo reboot
2879
2880menu-2-0 = power off
2881menu-2-0-exec = sudo poweroff
2882menu-2-1 = cancel
2883menu-2-1-exec = menu-open-0
2884
2885[module/mail]
2886type = custom/script
2887interval = 60
2888format = <label>
2889format-prefix = " "
2890format-prefix-foreground = ${colors.foreground-alt}
2891format-underline = #0a6cf5
2892exec = notmuch count tag:unread
2893
2894[settings]
2895screenchange-reload = true
2896;compositing-background = xor
2897;compositing-background = screen
2898;compositing-foreground = source
2899;compositing-border = over
2900
2901[global/wm]
2902margin-top = 0
2903margin-bottom = 0
2904
2905; vim:ft=dosini
2906#+end_src
2907
2908*** polybar-launch
2909:PROPERTIES:
2e877d14 2910:header-args+: :tangle ~/.local/bin/polybar-launch :shebang "#!/usr/bin/env sh"
1656853a
AB
2911:END:
2912
2e877d14 2913#+begin_src sh :tangle no
1656853a
AB
2914# Terminate already running bar instances
2915killall -q polybar
2916
2917# Wait until the processes have been shut down
2918while pgrep -x polybar >/dev/null; do sleep 1; done
2919
2920# Launch main bar
2921polybar main &
2922
2923echo "Bars launched..."
2924#+end_src
2925
b165a3e5
AB
2926** PowerTOP
2927:PROPERTIES:
2928:header-args+: :tangle "/sudo::/etc/systemd/system/powertop.service"
2929:END:
2930
2931#+begin_src conf
2932[Unit]
2933Description=Powertop tunings
2934
2935[Service]
2936ExecStart=/usr/bin/powertop --auto-tune
2937RemainAfterExit=true
2938
2939[Install]
2940WantedBy=multi-user.target
2941#+end_src
2942
1656853a
AB
2943** ranger
2944
2945*** rc.conf
2946:PROPERTIES:
2947:header-args+: :tangle ~/.config/ranger/rc.conf
2948:END:
2949
2950#+begin_src conf :tangle no
2951# ===================================================================
2952# This file contains the default startup commands for ranger.
2953# To change them, it is recommended to create the file
2954# ~/.config/ranger/rc.conf and add your custom commands there.
2955#
2956# If you copy this whole file there, you may want to set the environment
2957# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
2958#
2959# The purpose of this file is mainly to define keybindings and settings.
2960# For running more complex python code, please create a plugin in "plugins/" or
2961# a command in "commands.py".
2962#
2963# Each line is a command that will be run before the user interface
2964# is initialized. As a result, you can not use commands which rely
2965# on the UI such as :delete or :mark.
2966# ===================================================================
2967
2968# ===================================================================
2969# == Options
2970# ===================================================================
2971
2972# How many columns are there, and what are their relative widths?
2973set column_ratios 1,3,4
2974
2975# Which files should be hidden? (regular expression)
2976set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
2977
2978# Show hidden files? You can toggle this by typing 'zh'
2979set show_hidden false
2980
2981# Ask for a confirmation when running the "delete" command?
2982# Valid values are "always" (default), "never", "multiple"
2983# With "multiple", ranger will ask only if you delete multiple files at once.
2984set confirm_on_delete multiple
2985
2986# Which script is used to generate file previews?
2987# ranger ships with scope.sh, a script that calls external programs (see
2988# README for dependencies) to preview images, archives, etc.
2989set preview_script ~/.config/ranger/scope.sh
2990
2991# Use the external preview script or display simple plain text previews?
2992set use_preview_script true
2993
2994# Open all images in this directory when running certain image viewers
2995# like feh or sxiv? You can still open selected files by marking them.
2996set open_all_images true
2997
2998# Be aware of version control systems and display information.
2999set vcs_aware false
3000
3001# State of the three backends git, hg, bzr. The possible states are
3002# disabled, local (only show local info), enabled (show local and remote
3003# information).
3004set vcs_backend_git enabled
3005set vcs_backend_hg disabled
3006set vcs_backend_bzr disabled
3007
3008# Preview images in full color with the external command "w3mimgpreview"?
3009# This requires the console web browser "w3m" and a supported terminal.
3010# It has been successfully tested with "xterm" and "urxvt" without tmux.
3011set preview_images true
3012
3013# Use a unicode "..." character to mark cut-off filenames?
3014set unicode_ellipsis false
3015
3016# Show dotfiles in the bookmark preview box?
3017set show_hidden_bookmarks true
3018
3019# Which colorscheme to use? These colorschemes are available by default:
3020# default, jungle, snow
3021set colorscheme default
3022
3023# Preview files on the rightmost column?
3024# And collapse (shrink) the last column if there is nothing to preview?
3025set preview_files true
3026set preview_directories true
3027set collapse_preview true
3028
3029# Save the console history on exit?
3030set save_console_history true
3031
3032# Draw the status bar on top of the browser window (default: bottom)
3033set status_bar_on_top false
3034
3035# Draw a progress bar in the status bar which displays the average state of all
3036# currently running tasks which support progress bars?
3037set draw_progress_bar_in_status_bar true
3038
3039# Draw borders around columns?
3040set draw_borders true
3041
3042# Display the directory name in tabs?
3043set dirname_in_tabs false
3044
3045# Enable the mouse support?
3046set mouse_enabled true
3047
3048# Display the file size in the main column or status bar?
3049set display_size_in_main_column true
3050set display_size_in_status_bar true
3051
3052# Display files tags in all columns or only in main column?
3053set display_tags_in_all_columns true
3054
3055# Set a title for the window?
3056set update_title false
3057
3058# Set the title to "ranger" in the tmux program?
3059set update_tmux_title false
3060
3061# Shorten the title if it gets long? The number defines how many
3062# directories are displayed at once, 0 turns off this feature.
3063set shorten_title 3
3064
3065# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
3066set tilde_in_titlebar false
3067
3068# How many directory-changes or console-commands should be kept in history?
3069set max_history_size 20
3070set max_console_history_size 50
3071
3072# Try to keep so much space between the top/bottom border when scrolling:
3073set scroll_offset 8
3074
3075# Flush the input after each key hit? (Noticable when ranger lags)
3076set flushinput true
3077
3078# Padding on the right when there's no preview?
3079# This allows you to click into the space to run the file.
3080set padding_right true
3081
3082# Save bookmarks (used with mX and `X) instantly?
3083# This helps to synchronize bookmarks between multiple ranger
3084# instances but leads to *slight* performance loss.
3085# When false, bookmarks are saved when ranger is exited.
3086set autosave_bookmarks true
3087
3088# You can display the "real" cumulative size of directories by using the
3089# command :get_cumulative_size or typing "dc". The size is expensive to
3090# calculate and will not be updated automatically. You can choose
3091# to update it automatically though by turning on this option:
3092set autoupdate_cumulative_size false
3093
3094# Turning this on makes sense for screen readers:
3095set show_cursor false
3096
3097# One of: size, basename, mtime, type
3098set sort natural
3099
3100# Additional sorting options
3101set sort_reverse false
3102set sort_case_insensitive true
3103set sort_directories_first true
3104
3105# Enable this if key combinations with the Alt Key don't work for you.
3106# (Especially on xterm)
3107set xterm_alt_key false
3108
3109# ===================================================================
3110# == Local Options
3111# ===================================================================
3112# You can set local options that only affect a single directory.
3113
3114# Examples:
3115# setlocal path=~/downloads sort mtime
3116
3117# ===================================================================
3118# == Command Aliases in the Console
3119# ===================================================================
3120
3121alias e edit
3122alias q quit
3123alias q! quitall
3124alias qall quitall
3125alias setl setlocal
3126
3127alias filter scout -prt
3128alias find scout -aet
3129alias mark scout -mr
3130alias unmark scout -Mr
3131alias search scout -rs
3132alias search_inc scout -rts
3133alias travel scout -aefiklst
3134
3135# ===================================================================
3136# == Define keys for the browser
3137# ===================================================================
3138
3139# Basic
3140map Q quit!
3141map q quit
3142copymap q ZZ ZQ
3143
3144map R reload_cwd
3145map <C-r> reset
3146map <C-l> redraw_window
3147map <C-c> abort
3148map <esc> change_mode normal
3149
3150map i display_file
3151map ? help
3152map W display_log
3153map w taskview_open
3154map S shell $SHELL
3155
3156map : console
3157map ; console
3158map ! console shell
3159map @ console -p6 shell %%s
3160map # console shell -p
3161map s console shell
3162map r chain draw_possible_programs; console open_with
3163map f console find
3164map cd console cd
3165
3166# Tagging / Marking
3167map t tag_toggle
3168map ut tag_remove
3169map "<any> tag_toggle tag=%any
3170map <Space> mark_files toggle=True
3171map v mark_files all=True toggle=True
3172map uv mark_files all=True val=False
3173map V toggle_visual_mode
3174map uV toggle_visual_mode reverse=True
3175
3176# For the nostalgics: Midnight Commander bindings
3177map <F1> help
3178map <F3> display_file
3179map <F4> edit
3180map <F5> copy
3181map <F6> cut
3182map <F7> console mkdir
3183map <F8> console delete
3184map <F10> exit
3185
3186# In case you work on a keyboard with dvorak layout
3187map <UP> move up=1
3188map <DOWN> move down=1
3189map <LEFT> move left=1
3190map <RIGHT> move right=1
3191map <HOME> move to=0
3192map <END> move to=-1
3193map <PAGEDOWN> move down=1 pages=True
3194map <PAGEUP> move up=1 pages=True
3195map <CR> move right=1
3196map <DELETE> console delete
3197map <INSERT> console touch
3198
3199# VIM-like
3200copymap <UP> k
3201copymap <DOWN> j
3202copymap <LEFT> h
3203copymap <RIGHT> l
3204copymap <HOME> gg
3205copymap <END> G
3206copymap <PAGEDOWN> <C-F>
3207copymap <PAGEUP> <C-B>
3208
3209map J move down=0.5 pages=True
3210map K move up=0.5 pages=True
3211copymap J <C-D>
3212copymap K <C-U>
3213
3214# Jumping around
3215map H history_go -1
3216map L history_go 1
3217map ] move_parent 1
3218map [ move_parent -1
3219map } traverse
3220
3221map gh cd ~
3222map ge cd /etc
3223map gu cd /usr
3224map gd cd /dev
3225map gl cd -r .
3226map gL cd -r %f
3227map go cd /opt
3228map gv cd /var
3229map gm cd /media
3230map gM cd /mnt
3231map gs cd /srv
3232map gr cd /
3233map gR eval fm.cd(ranger.RANGERDIR)
3234map g/ cd /
3235map g? cd /usr/share/doc/ranger
3236
3237# External Programs
3238map E edit
3239map du shell -p du --max-depth=1 -h --apparent-size
3240map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
3241map yp shell -d echo -n %d/%f | xsel -i
3242map yd shell -d echo -n %d | xsel -i
3243map yn shell -d echo -n %f | xsel -i
3244
3245# Filesystem Operations
3246map = chmod
3247
3248map cw console rename
3249map A eval fm.open_console('rename ' + fm.thisfile.basename)
3250map I eval fm.open_console('rename ' + fm.thisfile.basename, position=7)
3251
3252map pp paste
3253map po paste overwrite=True
3254map pl paste_symlink relative=False
3255map pL paste_symlink relative=True
3256map phl paste_hardlink
3257map pht paste_hardlinked_subtree
3258
3259map dd cut
3260map ud uncut
3261map da cut mode=add
3262map dr cut mode=remove
3263
3264map yy copy
3265map uy uncut
3266map ya copy mode=add
3267map yr copy mode=remove
3268
3269# Temporary workarounds
3270map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
3271map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
3272map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
3273map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
3274map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
3275map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
3276map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
3277map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
3278
3279# Searching
3280map / console search
3281map n search_next
3282map N search_next forward=False
3283map ct search_next order=tag
3284map cs search_next order=size
3285map ci search_next order=mimetype
3286map cc search_next order=ctime
3287map cm search_next order=mtime
3288map ca search_next order=atime
3289
3290# Tabs
3291map <C-n> tab_new ~
3292map <C-w> tab_close
3293map <TAB> tab_move 1
3294map <S-TAB> tab_move -1
3295map <A-Right> tab_move 1
3296map <A-Left> tab_move -1
3297map gt tab_move 1
3298map gT tab_move -1
3299map gn tab_new ~
3300map gc tab_close
3301map uq tab_restore
3302map <a-1> tab_open 1
3303map <a-2> tab_open 2
3304map <a-3> tab_open 3
3305map <a-4> tab_open 4
3306map <a-5> tab_open 5
3307map <a-6> tab_open 6
3308map <a-7> tab_open 7
3309map <a-8> tab_open 8
3310map <a-9> tab_open 9
3311
3312# Sorting
3313map or toggle_option sort_reverse
3314map os chain set sort=size; set sort_reverse=False
3315map ob chain set sort=basename; set sort_reverse=False
3316map on chain set sort=natural; set sort_reverse=False
3317map om chain set sort=mtime; set sort_reverse=False
3318map oc chain set sort=ctime; set sort_reverse=False
3319map oa chain set sort=atime; set sort_reverse=False
3320map ot chain set sort=type; set sort_reverse=False
3321
3322map oS chain set sort=size; set sort_reverse=True
3323map oB chain set sort=basename; set sort_reverse=True
3324map oN chain set sort=natural; set sort_reverse=True
3325map oM chain set sort=mtime; set sort_reverse=True
3326map oC chain set sort=ctime; set sort_reverse=True
3327map oA chain set sort=atime; set sort_reverse=True
3328map oT chain set sort=type; set sort_reverse=True
3329
3330map dc get_cumulative_size
3331
3332# Settings
3333map zc toggle_option collapse_preview
3334map zd toggle_option sort_directories_first
3335map zh toggle_option show_hidden
3336map <C-h> toggle_option show_hidden
3337map zi toggle_option flushinput
3338map zm toggle_option mouse_enabled
3339map zp toggle_option preview_files
3340map zP toggle_option preview_directories
3341map zs toggle_option sort_case_insensitive
3342map zu toggle_option autoupdate_cumulative_size
3343map zv toggle_option use_preview_script
3344map zf console filter
3345
3346# Bookmarks
3347map `<any> enter_bookmark %any
3348map '<any> enter_bookmark %any
3349map m<any> set_bookmark %any
3350map um<any> unset_bookmark %any
3351
3352map m<bg> draw_bookmarks
3353copymap m<bg> um<bg> `<bg> '<bg>
3354
3355# Generate all the chmod bindings with some python help:
3356eval for arg in "rwxXst": cmd("map +u{0} shell -d chmod u+{0} %s".format(arg))
3357eval for arg in "rwxXst": cmd("map +g{0} shell -d chmod g+{0} %s".format(arg))
3358eval for arg in "rwxXst": cmd("map +o{0} shell -d chmod o+{0} %s".format(arg))
3359eval for arg in "rwxXst": cmd("map +a{0} shell -d chmod a+{0} %s".format(arg))
3360eval for arg in "rwxXst": cmd("map +{0} shell -d chmod u+{0} %s".format(arg))
3361
3362eval for arg in "rwxXst": cmd("map -u{0} shell -d chmod u-{0} %s".format(arg))
3363eval for arg in "rwxXst": cmd("map -g{0} shell -d chmod g-{0} %s".format(arg))
3364eval for arg in "rwxXst": cmd("map -o{0} shell -d chmod o-{0} %s".format(arg))
3365eval for arg in "rwxXst": cmd("map -a{0} shell -d chmod a-{0} %s".format(arg))
3366eval for arg in "rwxXst": cmd("map -{0} shell -d chmod u-{0} %s".format(arg))
3367
3368# ===================================================================
3369# == Define keys for the console
3370# ===================================================================
3371# Note: Unmapped keys are passed directly to the console.
3372
3373# Basic
3374cmap <tab> eval fm.ui.console.tab()
3375cmap <s-tab> eval fm.ui.console.tab(-1)
3376cmap <ESC> eval fm.ui.console.close()
3377cmap <CR> eval fm.ui.console.execute()
3378cmap <C-l> redraw_window
3379
3380copycmap <ESC> <C-c>
3381copycmap <CR> <C-j>
3382
3383# Move around
3384cmap <up> eval fm.ui.console.history_move(-1)
3385cmap <down> eval fm.ui.console.history_move(1)
3386cmap <left> eval fm.ui.console.move(left=1)
3387cmap <right> eval fm.ui.console.move(right=1)
3388cmap <home> eval fm.ui.console.move(right=0, absolute=True)
3389cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
3390
3391# Line Editing
3392cmap <backspace> eval fm.ui.console.delete(-1)
3393cmap <delete> eval fm.ui.console.delete(0)
3394cmap <C-w> eval fm.ui.console.delete_word()
3395cmap <C-k> eval fm.ui.console.delete_rest(1)
3396cmap <C-u> eval fm.ui.console.delete_rest(-1)
3397cmap <C-y> eval fm.ui.console.paste()
3398
3399# And of course the emacs way
3400copycmap <up> <C-p>
3401copycmap <down> <C-n>
3402copycmap <left> <C-b>
3403copycmap <right> <C-f>
3404copycmap <home> <C-a>
3405copycmap <end> <C-e>
3406copycmap <delete> <C-d>
3407copycmap <backspace> <C-h>
3408
3409# Note: There are multiple ways to express backspaces. <backspace> (code 263)
3410# and <backspace2> (code 127). To be sure, use both.
3411copycmap <backspace> <backspace2>
3412
3413# This special expression allows typing in numerals:
3414cmap <allow_quantifiers> false
3415
3416# ===================================================================
3417# == Pager Keybindings
3418# ===================================================================
3419
3420# Movement
3421pmap <down> pager_move down=1
3422pmap <up> pager_move up=1
3423pmap <left> pager_move left=4
3424pmap <right> pager_move right=4
3425pmap <home> pager_move to=0
3426pmap <end> pager_move to=-1
3427pmap <pagedown> pager_move down=1.0 pages=True
3428pmap <pageup> pager_move up=1.0 pages=True
3429pmap <C-d> pager_move down=0.5 pages=True
3430pmap <C-u> pager_move up=0.5 pages=True
3431
3432copypmap <UP> k <C-p>
3433copypmap <DOWN> j <C-n> <CR>
3434copypmap <LEFT> h
3435copypmap <RIGHT> l
3436copypmap <HOME> g
3437copypmap <END> G
3438copypmap <C-d> d
3439copypmap <C-u> u
3440copypmap <PAGEDOWN> n f <C-F> <Space>
3441copypmap <PAGEUP> p b <C-B>
3442
3443# Basic
3444pmap <ESC> pager_close
3445copypmap <ESC> q Q i <F3>
3446pmap E edit_file
3447
3448# ===================================================================
3449# == Taskview Keybindings
3450# ===================================================================
3451
3452# Movement
3453tmap <up> taskview_move up=1
3454tmap <down> taskview_move down=1
3455tmap <home> taskview_move to=0
3456tmap <end> taskview_move to=-1
3457tmap <pagedown> taskview_move down=1.0 pages=True
3458tmap <pageup> taskview_move up=1.0 pages=True
3459tmap <C-d> taskview_move down=0.5 pages=True
3460tmap <C-u> taskview_move up=0.5 pages=True
3461
3462copytmap <UP> k <C-p>
3463copytmap <DOWN> j <C-n> <CR>
3464copytmap <HOME> g
3465copytmap <END> G
3466copytmap <C-u> u
3467copytmap <PAGEDOWN> n f <C-F> <Space>
3468copytmap <PAGEUP> p b <C-B>
3469
3470# Changing priority and deleting tasks
3471tmap J eval -q fm.ui.taskview.task_move(-1)
3472tmap K eval -q fm.ui.taskview.task_move(0)
3473tmap dd eval -q fm.ui.taskview.task_remove()
3474tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
3475tmap <pageup> eval -q fm.ui.taskview.task_move(0)
3476tmap <delete> eval -q fm.ui.taskview.task_remove()
3477
3478# Basic
3479tmap <ESC> taskview_close
3480copytmap <ESC> q Q w <C-c>
3481#+end_src
3482
3483*** scope.sh
3484:PROPERTIES:
2e877d14 3485:header-args+: :tangle ~/.config/ranger/scope.sh :shebang "#!/usr/bin/env sh"
1656853a
AB
3486:END:
3487
2e877d14 3488#+begin_src sh :tangle no
1656853a
AB
3489# ranger supports enhanced previews. If the option "use_preview_script"
3490# is set to True and this file exists, this script will be called and its
3491# output is displayed in ranger. ANSI color codes are supported.
3492
3493# NOTES: This script is considered a configuration file. If you upgrade
3494# ranger, it will be left untouched. (You must update it yourself.)
3495# Also, ranger disables STDIN here, so interactive scripts won't work properly
3496
3497# Meanings of exit codes:
3498# code | meaning | action of ranger
3499# -----+------------+-------------------------------------------
3500# 0 | success | success. display stdout as preview
3501# 1 | no preview | failure. display no preview at all
3502# 2 | plain text | display the plain content of the file
3503# 3 | fix width | success. Don't reload when width changes
3504# 4 | fix height | success. Don't reload when height changes
3505# 5 | fix both | success. Don't ever reload
3506
3507# Meaningful aliases for arguments:
3508path="$1" # Full path of the selected file
3509width="$2" # Width of the preview pane (number of fitting characters)
3510height="$3" # Height of the preview pane (number of fitting characters)
3511
3512maxln=200 # Stop after $maxln lines. Can be used like ls | head -n $maxln
3513
3514# Find out something about the file:
3515mimetype=$(file --mime-type -Lb "$path")
3516extension=${path##*.}
3517
3518# Functions:
3519# runs a command and saves its output into $output. Useful if you need
3520# the return value AND want to use the output in a pipe
3521try() { output=$(eval '"$@"'); }
3522
3523# writes the output of the previouosly used "try" command
3524dump() { echo "$output"; }
3525
3526# a common post-processing function used after most commands
3527trim() { head -n "$maxln"; }
3528
3529# wraps highlight to treat exit code 141 (killed by SIGPIPE) as success
3530highlight() { command highlight "$@"; test $? = 0 -o $? = 141; }
3531
3532case "$extension" in
3533 # Archive extensions:
3534 7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
3535 rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
3536 try als "$path" && { dump | trim; exit 0; }
3537 try acat "$path" && { dump | trim; exit 3; }
3538 try bsdtar -lf "$path" && { dump | trim; exit 0; }
3539 exit 1;;
3540 rar)
3541 try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;;
3542 # PDF documents:
3543 pdf)
3544 try pdftotext -l 10 -nopgbrk -q "$path" - && \
3545 { dump | trim | fmt -s -w $width; exit 0; } || exit 1;;
3546 # BitTorrent Files
3547 torrent)
3548 try transmission-show "$path" && { dump | trim; exit 5; } || exit 1;;
3549 # HTML Pages:
3550 htm|html|xhtml)
3551 try w3m -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
3552 try lynx -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
3553 try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
3554 ;; # fall back to highlight/cat if the text browsers fail
3555esac
3556
3557case "$mimetype" in
3558 # Syntax highlight for text files:
3559 text/* | */xml)
3560 try highlight --out-format=ansi "$path" && { dump | trim; exit 5; } || exit 2;;
3561 # Ascii-previews of images:
3562 image/*)
3563 img2txt --gamma=0.6 --width="$width" "$path" && exit 4 || exit 1;;
3564 # Display information about media files:
3565 video/* | audio/*)
3566 exiftool "$path" && exit 5
3567 # Use sed to remove spaces so the output fits into the narrow window
3568 try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } || exit 1;;
3569esac
3570
3571exit 1
3572#+end_src
3573
2f1dcf9d
AB
3574** redshift
3575:PROPERTIES:
e2149232 3576:header-args+: :tangle ~/.config/redshift.conf :comments none
2f1dcf9d
AB
3577:END:
3578
3579#+begin_src conf
3580; Global settings for redshift
3581[redshift]
3582; Set the day and night screen temperatures (Neutral is 6500K)
3583;temp-day=5700
3584;temp-night=3500
3585
3586;temp-day=6500
3587temp-day=6200
3588;temp-night=4800
3589;temp-night=5000
3590;temp-night=4500
3591temp-night=4000
3592
3593; Enable/Disable a smooth transition between day and night
3594; 0 will cause a direct change from day to night screen temperature.
3595; 1 will gradually increase or decrease the screen temperature.
3596transition=1
3597
3598; Set the screen brightness. Default is 1.0.
3599;brightness=0.9
3600; It is also possible to use different settings for day and night
3601; since version 1.8.
3602;brightness-day=0.7
3603;brightness-night=0.4
3604; Set the screen gamma (for all colors, or each color channel
3605; individually)
3606;gamma=0.8
3607;gamma=1.0
3608;gamma=0.8:0.7:0.8
3609; This can also be set individually for day and night since
3610; version 1.10.
3611;gamma-day=0.8:0.7:0.8
3612;gamma-night=0.6
3613
3614; Set the location-provider: 'geoclue2' or 'manual'
3615; type 'redshift -l list' to see possible values.
3616; The location provider settings are in a different section.
3617;location-provider=manual
3618location-provider=geoclue2
3619
3620; Set the adjustment-method: 'randr', 'vidmode'
3621; type 'redshift -m list' to see all possible values.
3622; 'randr' is the preferred method, 'vidmode' is an older API.
3623; but works in some cases when 'randr' does not.
3624; The adjustment method settings are in a different section.
3625adjustment-method=randr
3626
3627; Configuration of the location-provider:
3628; type 'redshift -l PROVIDER:help' to see the settings.
3629; ex: 'redshift -l manual:help'
3630; Keep in mind that longitudes west of Greenwich (e.g. the Americas)
3631; are negative numbers.
3632;[manual]
3633;lat=48.1
3634;lon=11.6
3635
3636; Configuration of the adjustment-method
3637; type 'redshift -m METHOD:help' to see the settings.
3638; ex: 'redshift -m randr:help'
3639; In this example, randr is configured to adjust screen 1.
3640; Note that the numbering starts from 0, so this is actually the
3641; second screen. If this option is not specified, Redshift will try
3642; to adjust _all_ screens.
3643;[randr]
3644;screen=1
3645#+end_src
3646
3647** rofi
3648:PROPERTIES:
3649:header-args+: :tangle ~/.config/rofi/config
3650:END:
3651
3652#+begin_src conf
3653rofi.font: Ubuntu Mono 13
3654! rofi.font: Inconsolata 16
3655! rofi.font: Iosevka 13
3656! rofi.font: Source Code Pro 11
3657rofi.modi: run,window
3658! rofi.width: 640
3659rofi.width: 600
3660!rofi.location: 2
3661!rofi.yoffset: 200
3662rofi.monitor: -1
3663!rofi.lines: 10
3664
3665!rofi.theme: /usr/share/rofi/themes//Arc.rasi
3666!rofi.theme: /usr/share/rofi/themes//Paper.rasi
3667!rofi.theme: /usr/share/rofi/themes//sidebar.rasi
3668
3669rofi.theme: /usr/share/rofi/themes//gruvbox-light.rasi
3670#+end_src
3671
3672** rofi-pass
3673:PROPERTIES:
3674:header-args+: :tangle ~/.config/rofi-pass/config
3675:END:
3676
3677#+begin_src conf
3678# permanently set alternative root dir
3679# root=/path/to/root
3680
3681# rofi command. Make sure to have "$@" as last argument
3682_rofi () {
3683 #rofi -no-auto-select -kb-accept-entry "!Return" -i -no-levenshtein-sort "$@"
61f337f4 3684 rofi -i -no-auto-select -kb-accept-entry "!Return" "$@"
2f1dcf9d
AB
3685}
3686
3687# xdotool needs the keyboard layout to be set using setxkbmap
3688# You can do this in your autostart scripts (e.g. xinitrc)
3689
3690# If for some reason, you cannot do this, you can set the command here.
3691# and set fix_layout to true
3692fix_layout=false
3693
3694layout_cmd () {
3695 setxkbmap us
3696}
3697
3698# fields to be used
3699URL_field='url'
3700USERNAME_field='user'
3701AUTOTYPE_field='autotype'
3702
3703# delay to be used for :delay keyword
3704delay=2
3705
3706## Programs to be used
3707# Editor
3708EDITOR='gvim -f'
3709
3710# Browser
3711BROWSER='chromium'
3712
3713## Misc settings
3714
3715default_do='menu' # menu, autotype, copyPass, typeUser, typePass, copyUser, copyUrl, viewEntry, typeMenu, actionMenu, copyMenu, openUrl
3716auto_enter='false'
3717notify='false'
3718default_autotype='user :tab pass'
3719
3720# color of the help messages
3721# leave empty for autodetection
3722help_color="#4872FF"
3723
3724# Clipboard settings
3725# Possible options: primary, clipboard, both
3726clip=primary
3727
3728# Options for generating new password entries
3729# default_user is also used for password files that have no user field.
3730default_user=aminb
3731default_user2=aminban
3732password_length=30
3733
3734# Custom Keybindings
3735#autotype="Alt+1"
3736autotype="Alt+m"
3737type_user="Alt+2"
3738type_pass="Alt+3"
3739open_url="Alt+4"
3740copy_name="Alt+u"
3741copy_url="Alt+l"
3742copy_pass="Alt+p"
3743show="Alt+o"
3744copy_entry="Alt+2"
3745type_entry="Alt+1"
3746copy_menu="Alt+c"
3747action_menu="Alt+a"
3748type_menu="Alt+t"
3749help="Alt+h"
3750switch="Alt+x"
3751insert_pass="Alt+n"
3752#+end_src
3753
fb52d1f9
AB
3754** sway
3755:PROPERTIES:
3756:header-args+: :tangle ~/.config/sway/config
3757:END:
3758
3759#+begin_src conf
d6cb3a4a 3760exec xrdb .Xresources
1e3c1c15 3761exec dunst
fb52d1f9 3762### Variables
373851f8 3763# super
fb52d1f9 3764set $mod Mod4
373851f8
AB
3765# alt
3766set $mod2 Mod1
fb52d1f9
AB
3767set $left h
3768set $down j
3769set $up k
3770set $right l
fb52d1f9 3771set $term urxvt
d6cb3a4a 3772set $menu rofi -show run -display-run '> ' -display-window ' 🗔 '
fb52d1f9
AB
3773
3774### Output configuration
3775#
3776# Default wallpaper (more resolutions are available in __DATADIR__/backgrounds/sway/)
3777output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
3778#
3779# Example configuration:
3780#
3781# output HDMI-A-1 resolution 1920x1080 position 1920,0
3782#
3783# You can get the names of your outputs by running: swaymsg -t get_outputs
3784
3785### Idle configuration
3786#
3787# Example configuration:
3788#
3789#exec swayidle \
3790# timeout 300 'swaylock -c 000000' \
3791# timeout 600 'swaymsg "output * dpms off"' \
3792# resume 'swaymsg "output * dpms on"' \
3793# before-sleep 'swaylock -c 000000'
3794#
3795# This will lock your screen after 300 seconds of inactivity, then turn off
3796# your displays after another 600 seconds, and turn your screens back on when
3797# resumed. It will also lock your screen before your computer goes to sleep.
3798
3799### Input configuration
0e0dc607
AB
3800
3801input "1739:31251:DLL07BE:01_06CB:7A13_Touchpad" {
3802 dwt enabled
3803 tap enabled
3804 natural_scroll enabled
3805 middle_emulation enabled
fde01a87 3806 click_method clickfinger
0e0dc607
AB
3807}
3808
3809input "1:1:AT_Translated_Set_2_keyboard" {
3810 repeat_delay 200
3811 repeat_rate 45
fde01a87
AB
3812 xkb_layout us,ir
3813 xkb_options ctrl:nocaps,altwin:swap_alt_win,ctrl:rctrl_ralt,grp:shifts_toggle
0e0dc607
AB
3814}
3815
fb52d1f9
AB
3816
3817### Key bindings
3818#
3819# Basics:
3820#
3821 # start a terminal
3822 bindsym $mod+Return exec $term
3823
3824 # kill focused window
3825 bindsym $mod+Shift+q kill
3826
3827 # start your launcher
3828 bindsym $mod+d exec $menu
3829
40085087
AB
3830 # password manager
3831 bindsym $mod+$mod2+space exec rofi-pass
3832
fb52d1f9
AB
3833 # Drag floating windows by holding down $mod and left mouse button.
3834 # Resize them with right mouse button + $mod.
b41bfb27
AB
3835 # Despite the name, also works for non-floating windows.
3836 # Change normal to inverse to use left mouse button for resizing and right
3837 # mouse button for dragging.
3838 floating_modifier $mod normal
fb52d1f9
AB
3839
3840 # reload the configuration file
3841 bindsym $mod+Shift+c reload
3842
3843 # exit sway (logs you out of your wayland session)
3844 bindsym $mod+Shift+e exit
d6cb3a4a
AB
3845
3846 bindsym $mod+apostrophe exec rofi-light # rofi-based brightness chooser
3847 bindsym XF86MonBrightnessUp exec light -A 5 # increase screen brightness
3848 bindsym XF86MonBrightnessDown exec light -U 5 # decrease screen brightness
3849
8e4862e2
AB
3850 bindsym XF86AudioRaiseVolume exec pamixer --allow-boost --increase 5
3851 bindsym XF86AudioLowerVolume exec pamixer --allow-boost --decrease 5
3852 bindsym XF86AudioMute exec pamixer --toggle-mute
3853 bindsym XF86AudioMicMute exec pactl set-source-mute 1 toggle
3854
373851f8 3855 # original sway workspace switch and window move
1e3c1c15
AB
3856 bindsym $mod+bracketleft workspace prev
3857 bindsym $mod+bracketright workspace next
3858 bindsym $mod+braceleft move container to workspace prev
3859 bindsym $mod+braceright move container to workspace next
3860
3861 # bspwm-esque workspace switch and window move
3862 bindsym $mod2+bracketleft exec sway-ws-util switch prev
3863 bindsym $mod2+bracketright exec sway-ws-util switch next
3864 bindsym $mod2+braceleft exec sway-ws-util move prev follow
3865 bindsym $mod2+braceright exec sway-ws-util move next follow
fb52d1f9
AB
3866#
3867# Moving around:
3868#
3869 # Move your focus around
3870 bindsym $mod+$left focus left
3871 bindsym $mod+$down focus down
3872 bindsym $mod+$up focus up
3873 bindsym $mod+$right focus right
3874 # or use $mod+[up|down|left|right]
3875 bindsym $mod+Left focus left
3876 bindsym $mod+Down focus down
3877 bindsym $mod+Up focus up
3878 bindsym $mod+Right focus right
3879
3880 # _move_ the focused window with the same, but add Shift
3881 bindsym $mod+Shift+$left move left
3882 bindsym $mod+Shift+$down move down
3883 bindsym $mod+Shift+$up move up
3884 bindsym $mod+Shift+$right move right
3885 # ditto, with arrow keys
3886 bindsym $mod+Shift+Left move left
3887 bindsym $mod+Shift+Down move down
3888 bindsym $mod+Shift+Up move up
3889 bindsym $mod+Shift+Right move right
3890#
3891# Workspaces:
3892#
3893 # switch to workspace
3894 bindsym $mod+1 workspace 1
3895 bindsym $mod+2 workspace 2
3896 bindsym $mod+3 workspace 3
3897 bindsym $mod+4 workspace 4
3898 bindsym $mod+5 workspace 5
3899 bindsym $mod+6 workspace 6
3900 bindsym $mod+7 workspace 7
3901 bindsym $mod+8 workspace 8
3902 bindsym $mod+9 workspace 9
3903 bindsym $mod+0 workspace 10
3904 # move focused container to workspace
3905 bindsym $mod+Shift+1 move container to workspace 1
3906 bindsym $mod+Shift+2 move container to workspace 2
3907 bindsym $mod+Shift+3 move container to workspace 3
3908 bindsym $mod+Shift+4 move container to workspace 4
3909 bindsym $mod+Shift+5 move container to workspace 5
3910 bindsym $mod+Shift+6 move container to workspace 6
3911 bindsym $mod+Shift+7 move container to workspace 7
3912 bindsym $mod+Shift+8 move container to workspace 8
3913 bindsym $mod+Shift+9 move container to workspace 9
3914 bindsym $mod+Shift+0 move container to workspace 10
3915 # Note: workspaces can have any name you want, not just numbers.
3916 # We just use 1-10 as the default.
3917#
3918# Layout stuff:
3919#
3920 # You can "split" the current object of your focus with
3921 # $mod+b or $mod+v, for horizontal and vertical splits
3922 # respectively.
3923 bindsym $mod+b splith
3924 bindsym $mod+v splitv
3925
3926 # Switch the current container between different layout styles
3927 bindsym $mod+s layout stacking
3928 bindsym $mod+w layout tabbed
3929 bindsym $mod+e layout toggle split
3930
3931 # Make the current focus fullscreen
3932 bindsym $mod+f fullscreen
3933
3934 # Toggle the current focus between tiling and floating mode
3935 bindsym $mod+Shift+space floating toggle
3936
3937 # Swap focus between the tiling area and the floating area
3938 bindsym $mod+space focus mode_toggle
3939
3940 # move focus to the parent container
3941 bindsym $mod+a focus parent
3942#
3943# Scratchpad:
3944#
3945 # Sway has a "scratchpad", which is a bag of holding for windows.
3946 # You can send windows there and get them back later.
3947
3948 # Move the currently focused window to the scratchpad
3949 bindsym $mod+Shift+minus move scratchpad
3950
3951 # Show the next scratchpad window or hide the focused scratchpad window.
3952 # If there are multiple scratchpad windows, this command cycles through them.
3953 bindsym $mod+minus scratchpad show
3954#
3955# Resizing containers:
3956#
3957mode "resize" {
3958 # left will shrink the containers width
3959 # right will grow the containers width
3960 # up will shrink the containers height
3961 # down will grow the containers height
3962 bindsym $left resize shrink width 10px
3963 bindsym $down resize grow height 10px
3964 bindsym $up resize shrink height 10px
3965 bindsym $right resize grow width 10px
3966
3967 # ditto, with arrow keys
3968 bindsym Left resize shrink width 10px
3969 bindsym Down resize grow height 10px
3970 bindsym Up resize shrink height 10px
3971 bindsym Right resize grow width 10px
3972
3973 # return to default mode
3974 bindsym Return mode "default"
3975 bindsym Escape mode "default"
3976}
eb186a5a 3977bindsym $mod+Shift+r mode "resize"
fb52d1f9
AB
3978
3979#
3980# Status Bar:
3981#
3982# Read `man 5 sway-bar` for more information about this section.
3983bar {
d6cb3a4a 3984 position bottom
fb52d1f9
AB
3985 colors {
3986 statusline #ffffff
3987 background #323232
3988 inactive_workspace #32323200 #32323200 #5c5c5c
3989 }
6a056822 3990 status_command i3status
fb52d1f9
AB
3991}
3992
3993include /etc/sway/config.d/*
3994#+end_src
3995
08e87a0a
AB
3996** TLP
3997
3998*** TODO enigma
40085087 3999*** archy
08e87a0a 4000
40085087 4001#+begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "archy")) "/sudo::/etc/default/tlp")
08e87a0a
AB
4002# ------------------------------------------------------------------------------
4003# tlp - Parameters for power saving
4004# See full explanation: http://linrunner.de/en/tlp/docs/tlp-configuration.html
4005
4006# Hint: some features are disabled by default, remove the leading # to enable
4007# them.
4008
4009# Set to 0 to disable, 1 to enable TLP.
4010TLP_ENABLE=1
4011
4012# Operation mode when no power supply can be detected: AC, BAT.
4013# Concerns some desktop and embedded hardware only.
4014TLP_DEFAULT_MODE=AC
4015
4016# Operation mode select: 0=depend on power source, 1=always use TLP_DEFAULT_MODE
4017# Hint: use in conjunction with TLP_DEFAULT_MODE=BAT for BAT settings on AC.
4018TLP_PERSISTENT_DEFAULT=0
4019
4020# Seconds laptop mode has to wait after the disk goes idle before doing a sync.
4021# Non-zero value enables, zero disables laptop mode.
4022DISK_IDLE_SECS_ON_AC=0
4023DISK_IDLE_SECS_ON_BAT=2
4024
4025# Dirty page values (timeouts in secs).
4026MAX_LOST_WORK_SECS_ON_AC=15
4027MAX_LOST_WORK_SECS_ON_BAT=60
4028
4029# Hint: CPU parameters below are disabled by default, remove the leading #
4030# to enable them, otherwise kernel default values are used.
4031
4032# Select a CPU frequency scaling governor.
4033# Intel Core i processor with intel_pstate driver:
4034# powersave(*), performance.
4035# Older hardware with acpi-cpufreq driver:
4036# ondemand(*), powersave, performance, conservative, schedutil.
4037# (*) is recommended.
4038# Hint: use tlp-stat -p to show the active driver and available governors.
4039# Important:
4040# powersave for intel_pstate and ondemand for acpi-cpufreq are power
4041# efficient for *almost all* workloads and therefore kernel and most
4042# distributions have chosen them as defaults. If you still want to change,
4043# you should know what you're doing! You *must* disable your distribution's
4044# governor settings or conflicts will occur.
4045#CPU_SCALING_GOVERNOR_ON_AC=powersave
4046#CPU_SCALING_GOVERNOR_ON_BAT=powersave
4047
4048# Set the min/max frequency available for the scaling governor.
4049# Possible values strongly depend on your CPU. For available frequencies see
4050# the output of tlp-stat -p.
4051#CPU_SCALING_MIN_FREQ_ON_AC=0
4052#CPU_SCALING_MAX_FREQ_ON_AC=0
4053#CPU_SCALING_MIN_FREQ_ON_BAT=0
4054#CPU_SCALING_MAX_FREQ_ON_BAT=0
4055
4056# Set energy performance hints (HWP) for Intel P-state governor:
4057# performance, balance_performance, default, balance_power, power
4058# Values are given in order of increasing power saving.
4059# Note: Intel Skylake or newer CPU and Kernel >= 4.10 required.
4060CPU_HWP_ON_AC=balance_performance
4061CPU_HWP_ON_BAT=balance_power
4062
4063# Set Intel P-state performance: 0..100 (%).
4064# Limit the max/min P-state to control the power dissipation of the CPU.
4065# Values are stated as a percentage of the available performance.
4066# Requires an Intel Core i processor with intel_pstate driver.
4067#CPU_MIN_PERF_ON_AC=0
4068#CPU_MAX_PERF_ON_AC=100
4069#CPU_MIN_PERF_ON_BAT=0
4070#CPU_MAX_PERF_ON_BAT=30
4071
4072# Set the CPU "turbo boost" feature: 0=disable, 1=allow
4073# Requires an Intel Core i processor.
4074# Important:
4075# - This may conflict with your distribution's governor settings
4076# - A value of 1 does *not* activate boosting, it just allows it
4077#CPU_BOOST_ON_AC=1
4078#CPU_BOOST_ON_BAT=0
4079
4080# Minimize number of used CPU cores/hyper-threads under light load conditions:
4081# 0=disable, 1=enable.
4082SCHED_POWERSAVE_ON_AC=0
4083SCHED_POWERSAVE_ON_BAT=1
4084
4085# Kernel NMI Watchdog:
4086# 0=disable (default, saves power), 1=enable (for kernel debugging only).
4087NMI_WATCHDOG=0
4088
4089# Change CPU voltages aka "undervolting" - Kernel with PHC patch required.
4090# Frequency voltage pairs are written to:
4091# /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
4092# CAUTION: only use this, if you thoroughly understand what you are doing!
4093#PHC_CONTROLS="F:V F:V F:V F:V"
4094
4095# Set CPU performance versus energy savings policy:
4096# performance, balance-performance, default, balance-power, power.
4097# Values are given in order of increasing power saving.
4098# Requires kernel module msr and x86_energy_perf_policy from linux-tools.
4099ENERGY_PERF_POLICY_ON_AC=performance
4100ENERGY_PERF_POLICY_ON_BAT=balance-power
4101
4102# Disk devices; separate multiple devices with spaces (default: sda).
4103# Devices can be specified by disk ID also (lookup with: tlp diskid).
4104DISK_DEVICES="sda sdb"
4105
4106# Disk advanced power management level: 1..254, 255 (max saving, min, off).
4107# Levels 1..127 may spin down the disk; 255 allowable on most drives.
4108# Separate values for multiple disks with spaces. Use the special value 'keep'
4109# to keep the hardware default for the particular disk.
4110DISK_APM_LEVEL_ON_AC="254 254"
4111DISK_APM_LEVEL_ON_BAT="128 128"
4112
4113# Hard disk spin down timeout:
4114# 0: spin down disabled
4115# 1..240: timeouts from 5s to 20min (in units of 5s)
4116# 241..251: timeouts from 30min to 5.5 hours (in units of 30min)
4117# See 'man hdparm' for details.
4118# Separate values for multiple disks with spaces. Use the special value 'keep'
4119# to keep the hardware default for the particular disk.
4120#DISK_SPINDOWN_TIMEOUT_ON_AC="0 0"
4121#DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0"
4122
4123# Select IO scheduler for the disk devices: cfq, deadline, noop (Default: cfq).
4124# Separate values for multiple disks with spaces. Use the special value 'keep'
4125# to keep the kernel default scheduler for the particular disk.
4126#DISK_IOSCHED="cfq cfq"
4127
4128# AHCI link power management (ALPM) for disk devices:
4129# min_power, med_power_with_dipm(*), medium_power, max_performance.
4130# (*) Kernel >= 4.15 required, then recommended.
4131# Multiple values separated with spaces are tried sequentially until success.
4132SATA_LINKPWR_ON_AC="med_power_with_dipm max_performance"
4133SATA_LINKPWR_ON_BAT="med_power_with_dipm min_power"
4134
4135# Exclude host devices from AHCI link power management.
4136# Separate multiple hosts with spaces.
4137#SATA_LINKPWR_BLACKLIST="host1"
4138
4139# Runtime Power Management for AHCI host and disks devices:
4140# on=disable, auto=enable.
4141# EXPERIMENTAL ** WARNING: auto will most likely cause system lockups/data loss.
4142#AHCI_RUNTIME_PM_ON_AC=on
4143#AHCI_RUNTIME_PM_ON_BAT=on
4144
4145# Seconds of inactivity before disk is suspended.
4146AHCI_RUNTIME_PM_TIMEOUT=15
4147
4148# PCI Express Active State Power Management (PCIe ASPM):
4149# default, performance, powersave.
4150PCIE_ASPM_ON_AC=performance
4151PCIE_ASPM_ON_BAT=powersave
4152
4153# Radeon graphics clock speed (profile method): low, mid, high, auto, default;
4154# auto = mid on BAT, high on AC; default = use hardware defaults.
4155RADEON_POWER_PROFILE_ON_AC=high
4156RADEON_POWER_PROFILE_ON_BAT=low
4157
4158# Radeon dynamic power management method (DPM): battery, performance.
4159RADEON_DPM_STATE_ON_AC=performance
4160RADEON_DPM_STATE_ON_BAT=battery
4161
4162# Radeon DPM performance level: auto, low, high; auto is recommended.
4163RADEON_DPM_PERF_LEVEL_ON_AC=auto
4164RADEON_DPM_PERF_LEVEL_ON_BAT=auto
4165
4166# WiFi power saving mode: on=enable, off=disable; not supported by all adapters.
4167WIFI_PWR_ON_AC=off
4168WIFI_PWR_ON_BAT=on
4169
4170# Disable wake on LAN: Y/N.
4171WOL_DISABLE=Y
4172
4173# Enable audio power saving for Intel HDA, AC97 devices (timeout in secs).
4174# A value of 0 disables, >=1 enables power saving (recommended: 1).
4175SOUND_POWER_SAVE_ON_AC=0
4176SOUND_POWER_SAVE_ON_BAT=0
4177
4178# Disable controller too (HDA only): Y/N.
4179SOUND_POWER_SAVE_CONTROLLER=N
4180
4181# Power off optical drive in UltraBay/MediaBay: 0=disable, 1=enable.
4182# Drive can be powered on again by releasing (and reinserting) the eject lever
4183# or by pressing the disc eject button on newer models.
4184# Note: an UltraBay/MediaBay hard disk is never powered off.
4185BAY_POWEROFF_ON_AC=0
4186BAY_POWEROFF_ON_BAT=0
4187# Optical drive device to power off (default sr0).
4188BAY_DEVICE="sr0"
4189
4190# Runtime Power Management for PCI(e) bus devices: on=disable, auto=enable.
4191RUNTIME_PM_ON_AC=on
4192RUNTIME_PM_ON_BAT=auto
4193
4194# Exclude PCI(e) device adresses the following list from Runtime PM
4195# (separate with spaces). Use lspci to get the adresses (1st column).
4196#RUNTIME_PM_BLACKLIST="bb:dd.f 11:22.3 44:55.6"
4197RUNTIME_PM_BLACKLIST="01:00.0"
4198
4199# Exclude PCI(e) devices assigned to the listed drivers from Runtime PM.
4200# Default when unconfigured is "amdgpu nouveau nvidia radeon" which
4201# prevents accidential power-on of dGPU in hybrid graphics setups.
4202# Use "" to disable the feature completely.
4203# Separate multiple drivers with spaces.
4204#RUNTIME_PM_DRIVER_BLACKLIST="amdgpu nouveau nvidia radeon"
4205
4206# Set to 0 to disable, 1 to enable USB autosuspend feature.
4207USB_AUTOSUSPEND=1
4208
4209# Exclude listed devices from USB autosuspend (separate with spaces).
4210# Use lsusb to get the ids.
4211# Note: input devices (usbhid) are excluded automatically
4212#USB_BLACKLIST="1111:2222 3333:4444"
4213
4214# Bluetooth devices are excluded from USB autosuspend:
4215# 0=do not exclude, 1=exclude.
4216USB_BLACKLIST_BTUSB=0
4217
4218# Phone devices are excluded from USB autosuspend:
4219# 0=do not exclude, 1=exclude (enable charging).
4220USB_BLACKLIST_PHONE=0
4221
4222# Printers are excluded from USB autosuspend:
4223# 0=do not exclude, 1=exclude.
4224USB_BLACKLIST_PRINTER=1
4225
4226# WWAN devices are excluded from USB autosuspend:
4227# 0=do not exclude, 1=exclude.
4228USB_BLACKLIST_WWAN=1
4229
4230# Include listed devices into USB autosuspend even if already excluded
4231# by the blacklists above (separate with spaces).
4232# Use lsusb to get the ids.
4233#USB_WHITELIST="1111:2222 3333:4444"
4234
4235# Set to 1 to disable autosuspend before shutdown, 0 to do nothing
4236# (workaround for USB devices that cause shutdown problems).
4237#USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=1
4238
4239# Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown
4240# on system startup: 0=disable, 1=enable.
4241# Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below
4242# are ignored when this is enabled!
4243#RESTORE_DEVICE_STATE_ON_STARTUP=0
4244RESTORE_DEVICE_STATE_ON_STARTUP=1
4245
4246# Radio devices to disable on startup: bluetooth, wifi, wwan.
4247# Separate multiple devices with spaces.
4248#DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan"
4249
4250# Radio devices to enable on startup: bluetooth, wifi, wwan.
4251# Separate multiple devices with spaces.
4252#DEVICES_TO_ENABLE_ON_STARTUP="wifi"
4253
4254# Radio devices to disable on shutdown: bluetooth, wifi, wwan.
4255# (workaround for devices that are blocking shutdown).
4256#DEVICES_TO_DISABLE_ON_SHUTDOWN="bluetooth wifi wwan"
4257
4258# Radio devices to enable on shutdown: bluetooth, wifi, wwan.
4259# (to prevent other operating systems from missing radios).
4260#DEVICES_TO_ENABLE_ON_SHUTDOWN="wwan"
4261
4262# Radio devices to enable on AC: bluetooth, wifi, wwan.
4263#DEVICES_TO_ENABLE_ON_AC="bluetooth wifi wwan"
4264
4265# Radio devices to disable on battery: bluetooth, wifi, wwan.
4266#DEVICES_TO_DISABLE_ON_BAT="bluetooth wifi wwan"
4267
4268# Radio devices to disable on battery when not in use (not connected):
4269# bluetooth, wifi, wwan.
4270#DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth wifi wwan"
4271
4272# Battery charge thresholds (ThinkPad only, tp-smapi or acpi-call kernel module
4273# required). Charging starts when the remaining capacity falls below the
4274# START_CHARGE_THRESH value and stops when exceeding the STOP_CHARGE_THRESH value.
4275# Main / Internal battery (values in %)
4276#START_CHARGE_THRESH_BAT0=75
4277#STOP_CHARGE_THRESH_BAT0=80
4278# Ultrabay / Slice / Replaceable battery (values in %)
4279#START_CHARGE_THRESH_BAT1=75
4280#STOP_CHARGE_THRESH_BAT1=80
4281
4282# Restore charge thresholds when AC is unplugged: 0=disable, 1=enable.
4283#RESTORE_THRESHOLDS_ON_BAT=1
4284
4285# ------------------------------------------------------------------------------
4286# tlp-rdw - Parameters for the radio device wizard
4287# Possible devices: bluetooth, wifi, wwan.
4288
4289# Hints:
4290# - Parameters are disabled by default, remove the leading # to enable them
4291# - Separate multiple radio devices with spaces
4292
4293# Radio devices to disable on connect.
4294#DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
4295#DEVICES_TO_DISABLE_ON_WIFI_CONNECT="wwan"
4296#DEVICES_TO_DISABLE_ON_WWAN_CONNECT="wifi"
4297
4298# Radio devices to enable on disconnect.
4299#DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan"
4300#DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT=""
4301#DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT=""
4302
4303# Radio devices to enable/disable when docked.
4304#DEVICES_TO_ENABLE_ON_DOCK=""
4305#DEVICES_TO_DISABLE_ON_DOCK=""
4306
4307# Radio devices to enable/disable when undocked.
4308#DEVICES_TO_ENABLE_ON_UNDOCK="wifi"
4309#DEVICES_TO_DISABLE_ON_UNDOCK=""
4310#+end_src
4311
2e877d14
AB
4312** X
4313
4314*** xprofile
4315:PROPERTIES:
4316:header-args+: :tangle ~/.xprofile
4317:END:
4318
4319=~/.xprofile= is similar in style to =~/.xinitrc=, but on the
4320contrary, it's automatically sourced by LightDM, my display manager of
4321choice.
4322
fb52d1f9 4323#+begin_src sh :tangle no
6bab6a4a 4324xset -b # disable bell
b5208764 4325xset r rate 200 45 # repeat delay (ms) and rate (repeats/sec)
6bab6a4a 4326
2e877d14
AB
4327# setxkbmap -option compose:ralt
4328
4329setxkbmap -option ctrl:nocaps # turn capslock into control
4330setxkbmap -option altwin:swap_alt_win # swap alt and super
4331
4332if [ $(hostname) = "plasma" ]
4333then
4334 setxkbmap -option ctrl:rctrl_ralt # turn right control into right alt
4335fi
4336
4337if [ $(hostname) = "enigma" ]
4338then
4339 xmodmap -e "keycode 135 = Alt_R" # remap menu key to alt
4340fi
4341
4342light -Scrs "intel_backlight" 2
4343
4344source $HOME/.zprofile
4345
4346export _JAVA_AWT_WM_NONREPARENTING=1
4347export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'
4348
2e877d14
AB
4349if [ $(hostname) = "plasma" ]
4350then
c0132386 4351 unlock-def-gk.py &
2e877d14 4352fi
c0132386
AB
4353
4354bspwm &
2e877d14
AB
4355#+end_src
4356
4357*** X resources
4358
4359**** Xresources
4360:PROPERTIES:
4361:header-args+: :tangle (when (eq system-type 'gnu/linux) "~/.Xresources")
4362:END:
4363
4364#+begin_src conf-xdefaults
4365#include ".Xresources.d/fonts"
4366! #include ".Xresources.d/colors"
4367#include ".Xresources.d/emacs"
4368#include ".Xresources.d/rxvt-unicode"
4369#+end_src
4370
4371**** Xresources.d
4372
4373***** fonts
4374:PROPERTIES:
4375:header-args+: :tangle (when (eq system-type 'gnu/linux) "~/.Xresources.d/fonts")
4376:END:
4377
4378#+begin_src conf-xdefaults
4379Xft.lcdfilter: lcddefault
4380Xft.antialias: true
4381Xft.autohint: 0
4382Xft.hinting: true
4383Xft.hintstyle: hintslight
4384! Xft.hintstyle: hintfull
4385Xft.rgba: rgb
4386Xft.dpi: 96
4387#+end_src
4388
4389***** colors
4390:PROPERTIES:
4391:header-args+: :tangle (when (eq system-type 'gnu/linux) "~/.Xresources.d/colors")
4392:END:
4393
4394#+begin_src conf-xdefaults :tangle no
4395#include "gruvbox-light.xresources"
4396! #include "gruvbox-dark.xresources"
4397#include "gruvbox-urxvt256.xresources"
4398#+end_src
4399
4400#+begin_src conf-xdefaults :tangle no
4401! -----------------------------------------------------------------------------
4402! File: gruvbox-light.xresources
4403! Description: Retro groove colorscheme generalized
4404! Author: morhetz <morhetz@gmail.com>
4405! Source: https://github.com/morhetz/gruvbox-generalized
4406! Last Modified: 6 Sep 2014
4407! -----------------------------------------------------------------------------
4408
4409! hard contrast: *background: #f9f5d7
4410*background: #fbf1c7
4411! soft contrast: *background: #f2e5bc
4412*foreground: #3c3836
4413! Black + DarkGrey
4414*color0: #fdf4c1
4415*color8: #928374
4416! DarkRed + Red
4417*color1: #cc241d
4418*color9: #9d0006
4419! DarkGreen + Green
4420*color2: #98971a
4421*color10: #79740e
4422! DarkYellow + Yellow
4423*color3: #d79921
4424*color11: #b57614
4425! DarkBlue + Blue
4426*color4: #458588
4427*color12: #076678
4428! DarkMagenta + Magenta
4429*color5: #b16286
4430*color13: #8f3f71
4431! DarkCyan + Cyan
4432*color6: #689d6a
4433*color14: #427b58
4434! LightGrey + White
4435*color7: #7c6f64
4436*color15: #3c3836
4437#+end_src
4438
4439#+begin_src conf-xdefaults :tangle no
4440! -----------------------------------------------------------------------------
4441! File: gruvbox-dark.xresources
4442! Description: Retro groove colorscheme generalized
4443! Author: morhetz <morhetz@gmail.com>
4444! Source: https://github.com/morhetz/gruvbox-generalized
4445! Last Modified: 6 Sep 2014
4446! -----------------------------------------------------------------------------
4447
4448! hard contrast: *background: #1d2021
4449*background: #282828
4450! soft contrast: *background: #32302f
4451*foreground: #ebdbb2
4452! Black + DarkGrey
4453*color0: #282828
4454*color8: #928374
4455! DarkRed + Red
4456*color1: #cc241d
4457*color9: #fb4934
4458! DarkGreen + Green
4459*color2: #98971a
4460*color10: #b8bb26
4461! DarkYellow + Yellow
4462*color3: #d79921
4463*color11: #fabd2f
4464! DarkBlue + Blue
4465*color4: #458588
4466*color12: #83a598
4467! DarkMagenta + Magenta
4468*color5: #b16286
4469*color13: #d3869b
4470! DarkCyan + Cyan
4471*color6: #689d6a
4472*color14: #8ec07c
4473! LightGrey + White
4474*color7: #a89984
4475*color15: #ebdbb2
4476#+end_src
4477
4478#+begin_src conf-xdefaults :tangle no
4479! -----------------------------------------------------------------------------
4480! File: gruvbox-urxvt256.xresources
4481! Description: Retro groove colorscheme generalized
4482! Author: morhetz <morhetz@gmail.com>
4483! Source: https://github.com/morhetz/gruvbox-generalized
4484! Last Modified: 13 Dec 2013
4485! -----------------------------------------------------------------------------
4486
4487URxvt.color24: #076678
4488URxvt.color66: #427b58
4489URxvt.color88: #9d0006
4490URxvt.color96: #8f3f71
4491URxvt.color100: #79740e
4492URxvt.color108: #8ec07c
4493URxvt.color109: #83a598
4494URxvt.color130: #af3a03
4495URxvt.color136: #b57614
4496URxvt.color142: #b8bb26
4497URxvt.color167: #fb4934
4498URxvt.color175: #d3869b
4499URxvt.color208: #fe8019
4500URxvt.color214: #fabd2f
4501URxvt.color223: #ebdbb2
4502URxvt.color228: #f2e5bc
4503URxvt.color229: #fbf1c7
4504URxvt.color230: #f9f5d7
4505URxvt.color234: #1d2021
4506URxvt.color235: #282828
4507URxvt.color236: #32302f
4508URxvt.color237: #3c3836
4509URxvt.color239: #504945
4510URxvt.color241: #665c54
4511URxvt.color243: #7c6f64
4512URxvt.color244: #928374
4513URxvt.color245: #928374
4514URxvt.color246: #a89984
4515URxvt.color248: #bdae93
4516URxvt.color250: #d5c4a1
4517#+end_src
4518
4519***** emacs
4520:PROPERTIES:
4521:header-args+: :tangle (when (eq system-type 'gnu/linux) "~/.Xresources.d/emacs")
4522:END:
4523
4524#+begin_src conf-xdefaults
4525Emacs.menuBar: off
4526Emacs.toolBar: off
4527Emacs.verticalScrollBars: off
4528Emacs.cursorBlink: off
4529Emacs.FontBackend: xft,x
4530! Emacs.font: Ubuntu Mono-12
4531! Emacs.font: Triplicate T4C-11
4532! Emacs.font: Ubuntu Mono-10.5
4533! Emacs.font: Ubuntu Mono-12
4534! Emacs.font: Iosevka-11
4535
4536! Emacs.font: Fira Mono:size=15
4537! Emacs.font: DejaVu Sans Mono:size=15
4538! Emacs.font: Inconsolata:size=17
4539! Emacs.font: Inconsolata:size=16
4540! Emacs.font: Inconsolata LGC:size=14
4541! Emacs.font: Source Code Pro Medium-10.5
4542Emacs.font: Ubuntu Mono:size=16
4543! Emacs.font: Iosevka:size=16
4544#+end_src
4545
4546***** rxvt-unicode
4547:PROPERTIES:
4548:header-args+: :tangle (when (eq system-type 'gnu/linux) "~/.Xresources.d/rxvt-unicode")
4549:END:
4550
4551#+begin_src conf-xdefaults
4552! Font
4553URxvt.font: xft:ubuntu mono:pixelsize=16:antialias=true:hinting=true, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true
4554URxvt.boldFont: xft:ubuntu mono:pixelsize=16:antialias=true:hinting=true:bold, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:bold
4555URxvt.italicFont: xft:ubuntu mono:pixelsize=16:antialias=true:hinting=true:italic, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:italic
4556URxvt.bolditalicFont: xft:ubuntu mono:pixelsize=16:antialias=true:hinting=true:bold:italic, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:bolditalic
4557
4558URxvt.xftAntialias: true
4559URxvt.letterSpace: 0
4560
4561URxvt.depth: 0
4562URxvt.loginShell: true
4563URxvt.saveLines: 100000
4564URxvt.internalBorder: 3
4565URxvt.lineSpace: 0
4566URxvt.scrollBar: false
4567URxvt.scrollStyle: rxvt
4568URxvt*scrollTtyOutput: false
4569URxvt*scrollWithBuffer: true
4570URxvt*scrollTtyKeypress: true
4571URxvt.keysym.Shift-Up: command:\033]720;1\007
4572URxvt.keysym.Shift-Down: command:\033]721;1\007
4573
4574URxvt.perl-ext-common: default,clipboard,url-select,keyboard-select
4575URxvt.perl-ext: bidi
4576URxvt.bidi.enabled: 1
4577URxvt.url-select.launcher: firefox
4578URxvt.url-select.underline: true
4579URxvt.keysym.M-u: perl:url-select:select_next
4580URxvt.keysym.M-Escape: perl:keyboard-select:activate
4581URxvt.keysym.M-s: perl:keyboard-select:search
4582URxvt.url-launcher: /usr/bin/firefox
4583URxvt.matcher.button: 1
4584URxvt.iso14755: false
4585URxvt.iso14755_53: false
4586URxvt.keysym.M-c: perl:clipboard:copy
4587URxvt.keysym.M-v: perl:clipboard:paste
4588URxvt.keysym.C-A-V: perl:clipboard:paste_escaped
4589URxvt.keysym.C-Up: font-size:increase
4590URxvt.keysym.C-Down: font-size:decrease
4591URxvt.keysym.C-S-Up: font-size:incglobal
4592URxvt.keysym.C-S-Down: font-size:decglobal
4593URxvt.keysym.C-equal: font-size:reset
4594!URxvt.keysym.C-question: font-size:show
4595
4596URxvt.iconFile: /usr/share/icons/Paper/48x48/apps/utilities-terminal.png
4597
4598!urxvt*foreground: white
4599!urxvt*background: black
4600
4601!*color0: #2E3436
4602!*color1: #a40000
4603!*color2: #4E9A06
4604!*color3: #C4A000
4605!*color4: #3465A4
4606!*color5: #75507B
4607!*color6: #ce5c00
4608!*color7: #babdb9
4609!*color8: #555753
4610!*color9: #EF2929
4611!*color10: #8AE234
4612!*color11: #FCE94F
4613!*color12: #729FCF
4614!*color13: #AD7FA8
4615!*color14: #fcaf3e
4616!*color15: #EEEEEC
4617
4618!URxvt.foreground: #C8C8C8
4619!URxvt.background: #FFFFFF
4620
4621!! black
4622!*color0: #2E3436
4623!*color8: #555753
4624!! red
4625!*color1: #a40000
4626!*color9: #EF2929
4627!! green
4628!*color2: #4E9A06
4629!*color10: #8AE234
4630!! yellow
4631!*color3: #C4A000
4632!*color11: #FCE94F
4633!! blue
4634!*color4: #3465A4
4635!*color12: #729FCF
4636!! purple
4637!*color5: #75507B
4638!*color13: #AD7FA8
4639!! orange (replaces cyan)
4640!*color6: #ce5c00
4641!*color14: #fcaf3e
4642!! white
4643!*color7: #babdb9
4644!*color15: #EEEEEC
4645
4646! Tango colour theme for rxvt-unicode
4647URxvt.background: #FFFFFF
4648URxvt.foreground: #000000
4649
4650! Black
4651URxvt.color0: #2E3436
4652URxvt.color8: #757773
4653
4654! Red
4655URxvt.color1: #CC0000
4656URxvt.color9: #EF2929
4657
4658! Green
4659URxvt.color2: #4E9A06
4660URxvt.color10: #8AE234
4661
4662! Yellow
4663URxvt.color3: #C4A000
4664URxvt.color11: #FCE94F
4665
4666! Blue
4667URxvt.color4: #3465A4
4668URxvt.color12: #729FCF
4669
4670! Magenta
4671URxvt.color5: #75507B
4672URxvt.color13: #AD7FA8
4673
4674!! Cyan
4675!URxvt.color6: #06989A
4676!URxvt.color14: #34E2E2
4677! orange (replaces cyan)
4678*color6: #ce5c00
4679*color14: #fcaf3e
4680
4681! White
4682URxvt.color7: #D3D7CF
4683URxvt.color15: #EEEEEC
4684#+end_src
4685
69a6fe26
AB
4686** XDG
4687:PROPERTIES:
4688:header-args+: :tangle ~/.config/user-dirs.dirs
4689:END:
4690
4691#+begin_src conf
4692XDG_DESKTOP_DIR="$HOME/Desktop"
4693XDG_DOCUMENTS_DIR="$HOME/usr/docs"
4694XDG_DOWNLOAD_DIR="$HOME/usr/dls"
4695XDG_MUSIC_DIR="$HOME/usr/music"
4696XDG_PICTURES_DIR="$HOME/usr/pics"
4697XDG_PUBLICSHARE_DIR="$HOME/usr/Public"
4698XDG_TEMPLATES_DIR="$HOME/usr/Templates"
4699XDG_VIDEOS_DIR="$HOME/usr/vids"
4700#+end_src
4701
4702** Zathura
4703:PROPERTIES:
4704:header-args+: :tangle ~/.config/zathura/zathurarc
4705:END:
4706
4707#+begin_src conf
4708set smooth-scroll true
4709set selection-clipboard clipboard
4710set zoom-step 05
4711set default-bg "#272727"
4712set statusbar-bg "#272727"
4713set inputbar-bg "#373737"
4714#+end_src
4715
b1f6f894
AB
4716** Zsh
4717
4718My zsh setup is built on [[https://github.com/zimfw/zimfw][Zim]]. Further, my zshrc references [[https://github.com/junegunn/fzf][fzf]],
4719[[https://github.com/zsh-users/zsh-autosuggestions][zsh-autosuggestions]], and [[https://github.com/hlissner/zsh-autopair][zsh-autopair]]; so be sure to have them
4720installed.
4721
4722*** zimrc
4723:PROPERTIES:
4724:header-args+: :tangle ~/.zimrc
4725:END:
4726
4727#+begin_src sh
4728
4729
4730#################
4731# CORE SETTINGS #
4732#################
4733
4734#
4735# Zim settings
4736#
4737
4738# Select what modules you would like enabled.
4739# The second line of modules may depend on options set by modules in the first
4740# line. These dependencies are noted on the respective module's README.md.
4741zmodules=(directory environment git git-info history input ssh utility custom \
4742 syntax-highlighting history-substring-search prompt completion)
4743
4744
4745###################
4746# MODULE SETTINGS #
4747###################
4748
4749#
4750# Prompt
4751#
4752
4753# Set your desired prompt here
4754zprompt_theme='pure'
4755#PURE_PROMPT_SYMBOL=λ
4756#PURE_PROMPT_SYMBOL=δ
4757PURE_PROMPT_SYMBOL=➜
4758
4759#
4760# Completion
4761#
4762
4763# set an optional host-specific filename for the completion cache file
4764# if none is provided, the default '.zcompdump' is used.
4765#zcompdump_file=".zcompdump-${HOST}-${ZSH_VERSION}"
4766
4767#
4768# Utility
4769#
4770
4771# Uncomment to enable command correction prompts
4772# See: http://zsh.sourceforge.net/Doc/Release/Options.html#Input_002fOutput
4773setopt CORRECT
4774
4775#
4776# Environment
4777#
4778
4779# Set the string below to the desired terminal title format string.
4780# The terminal title is redrawn upon directory change, however, variables like
4781# ${PWD} are only evaluated once. Use prompt expansion strings for dynamic data:
4782# http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Simple-Prompt-Escapes
4783# The example below uses the following format: 'username@host:/current/directory'
4784ztermtitle='%n@%m:%~'
4785
4786#
4787# Input
4788#
4789
4790# Uncomment to enable double-dot expansion.
4791# This appends '../' to your input for each '.' you type after an initial '..'
4792#zdouble_dot_expand='true'
4793
4794#
4795# Syntax-Highlighting
4796#
4797
4798# This determines what highlighters will be used with the syntax-highlighting module.
4799# Documentation of the highlighters can be found here:
4800# https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md
4801# For (u)rxvt, termite and gnome-terminal users,
4802# removing the 'cursor' highlighter will fix the disappearing cursor problem
4803#zhighlighters=(main brackets cursor)
4804zhighlighters=(main brackets pattern)
4805
4806
4807#
4808# SSH
4809#
4810
4811# Load these ssh identities with the ssh module
835adbdb 4812zssh_ids=(id_ed25519_amin)
b1f6f894
AB
4813
4814
4815#
4816# Pacman
4817#
4818
4819# Set (optional) pacman front-end.
4820zpacman_frontend='yay'
4821
4822# Load any helper scripts as defined here
4823#zpacman_helper=(aur)
4824#+end_src
4825
4826*** zlogin
4827:PROPERTIES:
4828:header-args+: :tangle ~/.zlogin
4829:END:
4830
4831#+begin_src sh
4832
4833
4834#
4835# User configuration sourced by login shells
4836#
4837
4838# Initialize zim
4839[[ -s ${ZIM_HOME}/login_init.zsh ]] && source ${ZIM_HOME}/login_init.zsh
4840#+end_src
4841
4842*** zprofile
4843:PROPERTIES:
4844:header-args+: :tangle ~/.zprofile
4845:END:
4846
4847#+begin_src sh
4848#PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH"
4849#PATH=$HOME/.gem/ruby/2.4.0/bin:$PATH
50fff474 4850export PATH=$HOME/.local/bin:$HOME/.cabal/bin:$HOME/.cargo/bin:$HOME/.elan/bin:$PATH
b1f6f894
AB
4851export XDG_CONFIG_HOME=$HOME/.config
4852export XDG_DATA_HOME=$HOME/.local/share
4853export XDG_DATA_DIRS=/usr/local/share:/usr/share
4854export MAILDIR="$HOME/mail"
4855export CVS_RSH=ssh
4856#export MATHMODELS=$HOME/src/eiffel/mathmodels
4857#export RUST_SRC_PATH=~/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src
4858#export PATH=$PATH:$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/
4859
4860# Eiffel2Java stuff
4861#export JAVA_HOME=/usr/lib/jvm/default
4862#export CPATH=$CPATH:"$JAVA_HOME/include:$JAVA_HOME/include/linux"
4863#export LIBRARY_PATH=$LIBRARY_PATH:"$JAVA_HOME/jre/lib/amd64/server"
4864#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$JAVA_HOME/jre/lib/amd64/server"
4865
4866#export PATH="$HOME/usr/build/pvs:$PATH"
4867#export SBCLISP_HOME=/usr/share/sbcl-source
4868#export PVS_LIBRARY_PATH="$HOME/usr/build/pvs/nasalib"
4869
4870export MOZ_USE_XINPUT2=1 # precise scrolling in firefox
4871
4872#export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
4873#export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
4874
88bb4858 4875if [ -e /home/amin/.nix-profile/etc/profile.d/nix.sh ]; then . /home/amin/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
b1f6f894
AB
4876#+end_src
4877
4878*** zshenv
4879:PROPERTIES:
4880:header-args+: :tangle ~/.zshenv
4881:END:
4882
4883#+begin_src sh
4884# Ensure that a non-login, non-interactive shell has a defined environment.
4885if [[ "$SHLVL" -eq 1 && ! -o LOGIN && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then
4886 source "${ZDOTDIR:-$HOME}/.zprofile"
4887fi
4888#+end_src
4889
4890*** zshrc
4891:PROPERTIES:
4892:header-args+: :tangle ~/.zshrc
4893:END:
4894
4895#+begin_src sh
4896# Bash-like navigation
4897#export WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
4898#export WORDCHARS='*?-[]~=&;!#$%^(){}<>'
4899export WORDCHARS='*?[]~=&;!#$%^(){}<>'
4900#ZLE_SPACE_SUFFIX_CHARS=$'|&'
4901
4902#disable -r time # disable shell reserved word
4903#alias time='time -p' # -p for POSIX output
4904
4905# rehash if last command was pacaur or pacman
4906# (so that zsh picks up changes in $PATH immediately)
4907TRAPUSR1() { rehash}; precmd() { [[ $history[$[ HISTCMD -1 ]] == *(pacaur|pacman)* ]] && killall -USR1 zsh }
4908
4909#
4910# User configuration sourced by interactive shells
4911#
4912
4913# Change default zim location
4914export ZIM_HOME=${ZDOTDIR:-${HOME}}/.zim
4915
4916# Start zim
4917[[ -s ${ZIM_HOME}/init.zsh ]] && source ${ZIM_HOME}/init.zsh
4918
4919ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
4920#ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold'
4921
4922setopt globdots
4923
4924source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
4925source ~/.zsh/zsh-autopair/autopair.zsh
4926
4927
4928### fzf ###
4929
4930source /usr/share/fzf/key-bindings.zsh
4931source /usr/share/fzf/completion.zsh
4932
4933# Accept history selection instead of putting it on
4934# the command line
4935fzf-history-widget-accept() {
4936 fzf-history-widget
4937 zle accept-line
4938}
4939#zle -N fzf-history-widget-accept
4940#bindkey '^R' fzf-history-widget-accept
4941
4942# alt+c preview
4943export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -200'"
4944
4945### fzf ###
4946
4947
4948# aliases
4949alias mpv="mpv --ytdl-format mp4"
4950alias mv="mv -iv"
4951alias cp="cp -iv"
4952alias scl=systemctl
4953alias jcl=journalctl
4954alias m="mbsync -Va; getmail; notmuch new"
4955alias best="youtube-dl -f best"
2a1be6b4 4956alias nixx="ssh amin@nix.aminb.org"
373a060a 4957alias fence="ssh aminb@fencepost.gnu.org"
b1f6f894
AB
4958
4959aur() {
4960 cd ~/usr/build
4961 git clone https://aur.archlinux.org/${1}.git
4962 cd ${1}
4963}
4964
4965# i-beam cursor
4966echo -e "\033[5 q"
4967#echo -e "\033[6 q"
4968#+end_src
4969
b13e2dc1
AB
4970* Scripts
4971
4972This section contains various useful scripts and the ones used by the
4973programs above. For instance, =toggle-tablet= for switching to and
4974from tablet mode on my X220T, =toggle-presentation-mode= for toggling
4975Xfce's presentation mode which keeps the screen awake, and
4976=rofi-light= a small utility that uses [[https://github.com/DaveDavenport/rofi][Rofi]] to ask and [[https://github.com/haikarainen/light][light]] to set an
4977exact brightness value.
4978
683f2865
AB
4979** battery-percentage-time
4980:PROPERTIES:
7564bd4d 4981:header-args+: :tangle ~/.local/bin/battery-percentage-time :shebang "#!/bin/sh"
683f2865
AB
4982:END:
4983
6a056822 4984#+begin_src sh :tangle no
7564bd4d
AB
4985dbus_send() {
4986 label=$1
4987 dbus-send --print-reply=literal --system \
4988 --dest=org.freedesktop.UPower \
4989 /org/freedesktop/UPower/devices/battery_BAT0 \
4990 org.freedesktop.DBus.Properties.Get \
4991 string:org.freedesktop.UPower.Device \
4992 string:"${label}" | awk '{print $3}'
4993}
4994
4995perc=$(dbus_send 'Percentage')
4996state=$(dbus_send 'State')
be33ab1f
AB
4997
4998if [ "$state" -eq 2 ]; then # Discharging
7564bd4d 4999 secs=$(dbus_send 'TimeToEmpty')
be33ab1f 5000elif [ "$state" -eq 1 ]; then # Charging
7564bd4d 5001 secs=$(dbus_send 'TimeToFull')
be33ab1f 5002fi
7564bd4d 5003
ce79d14b 5004printf '%s%%%%%2dh%02dm \n' "$perc" $((secs / 3600)) $((secs % 3600 / 60))
683f2865
AB
5005#+end_src
5006
b13e2dc1
AB
5007** rofi-light
5008:PROPERTIES:
5009:header-args+: :tangle ~/.local/bin/rofi-light :shebang "#!/bin/bash"
5010:END:
5011
33c5a5cd 5012#+begin_src bash
b13e2dc1 5013cur=$(light -G)
c2ce9b12 5014val=$(rofi -dmenu -mesg "light $cur" -p "light -S " -l 0 -width 12)
b13e2dc1
AB
5015light -S $val
5016#+end_src
5017
ec002050
AB
5018** s (run sway)
5019:PROPERTIES:
5020:header-args+: :tangle ~/.local/bin/s :shebang "#!/bin/bash"
5021:END:
5022
5023#+begin_src bash
ec002050
AB
5024export _JAVA_AWT_WM_NONREPARENTING=1
5025export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'
5026light -Scrs "intel_backlight" 2
5027source $HOME/.zprofile
5028sway
5029#+end_src
5030
bfe0aa23
AB
5031** sway-ws-util
5032:PROPERTIES:
5033:header-args+: :tangle ~/.local/bin/sway-ws-util :shebang "#!/bin/bash"
5034:END:
5035
5036#+begin_src bash
5037curr_ws=$(swaymsg -t get_workspaces | jq -r '.[] | select(.focused==true).name')
e549b7c8
AB
5038[[ $curr_ws -eq 1 ]] && prev_ws=10 || prev_ws=$((curr_ws-1))
5039[[ $curr_ws -eq 10 ]] && next_ws=1 || next_ws=$((curr_ws+1))
bfe0aa23
AB
5040dest_ws=-1
5041op=-1
5042
5043if [ "$1" = "switch" ] || [ "$1" = "move" ]; then
5044 op="$1"
5045 if [ "$2" = "prev" ]; then
5046 dest_ws="$prev_ws"
5047 elif [ "$2" = "next" ]; then
5048 dest_ws="$next_ws"
5049 else
c60842dd 5050 echo "Usage: $0 $1 {prev|next} [follow]"
bfe0aa23
AB
5051 exit 1
5052 fi
5053else
5054 echo "Usage: $0 {switch|move} {prev|next} [follow]"
5055 exit 1
5056fi
5057
5058if [ "$op" = "switch" ]; then
5059 sway workspace "$dest_ws"
5060elif [ "$op" = "move" ]; then
5061 sway move container to workspace "$dest_ws"
5062 if [ "$3" = "follow" ]; then
5063 sway workspace "$dest_ws"
5064 fi
5065fi
5066#+end_src
5067
b13e2dc1
AB
5068** toggle-layout
5069:PROPERTIES:
5070:header-args+: :tangle ~/.local/bin/toggle-layout :shebang "#!/bin/bash"
5071:END:
5072
e388ae6f 5073#+begin_src bash :tangle no
b13e2dc1
AB
5074lang="$(setxkbmap -print | grep xkb_symbols | cut -d'+' -f 2)"
5075
5076if [ "$lang" = "us" ]; then
5077 setxkbmap ir
5078else
5079 setxkbmap us
5080 # xmodmap $HOME/.Xmodmap
5081fi
5082#+end_src
5083
5084** toggle-presentation-mode
5085:PROPERTIES:
5086:header-args+: :tangle ~/.local/bin/toggle-presentation-mode :shebang "#!/bin/bash"
5087:END:
5088
e388ae6f 5089#+begin_src bash :tangle no
b13e2dc1
AB
5090xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/presentation-mode -T
5091#+end_src
33c5a5cd 5092
72f329ba
AB
5093** toggle-tablet
5094:PROPERTIES:
5095:header-args+: :tangle ~/.local/bin/toggle-tablet :shebang "#!/bin/bash"
5096:END:
5097
5098This script toggles between a 'normal' mode and a 'tablet' mode, doing
5099a few things:
5100
5101- rotates the screen using =xrandr=, so that rotating the physical
5102 display of my X220t would have the laptop's battery on the right
5103 hand side,
5104- enables touch screen,
5105- properly rotates the stylus pen and touch screen pointers, and
5106- toggles between RGB and Vertical BGR sub-pixel order.
5107
e388ae6f 5108#+begin_src bash :tangle no
72f329ba
AB
5109case $(xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation) in
5110 0) # Screen is not rotated, we should rotate it right (90°)
5111 xrandr -o 3
5112 xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation -s 1
5113 xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Device_Enabled -s 1
5114 xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Wacom_Rotation -s 1
5115 xfconf-query -c xsettings -p /Xft/RGBA -s vbgr
5116 ;;
5117 1) # Currently top is rotated right, we should set it normal (0°)
5118 xrandr -o 0
5119 xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation -s 0
5120 xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Wacom_Rotation -s 0
5121 xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Device_Enabled -s 0
5122 xfconf-query -c xsettings -p /Xft/RGBA -s rgb
5123 ;;
5124 *)
5125 echo "Unknown result from 'xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation'" >&2
5126 exit 1
5127 ;;
5128esac
5129#+end_src
5130
2e877d14
AB
5131** unlock-def-gk.py
5132:PROPERTIES:
5133:header-args+: :tangle ~/.local/bin/unlock-def-gk.py :shebang "#!/usr/bin/env python2"
5134:END:
5135
e388ae6f 5136#+begin_src python :tangle no
2e877d14
AB
5137import gnomekeyring as gk
5138# list_item_ids_sync('login')[0] == 1L
5139gk.unlock_sync('Default_keyring',gk.item_get_info_sync('login',1L).get_secret())
5140#+end_src
5141
4fc8d5d2
AB
5142** volume-info
5143:PROPERTIES:
5144:header-args+: :tangle ~/.local/bin/volume-info :shebang "#!/bin/sh"
5145:END:
5146
6a056822 5147#+begin_src sh :tangle no
4fc8d5d2
AB
5148cur_vol=$(pamixer --get-volume)
5149
5150if [ $(pamixer --get-mute) = true ]; then
5151 printf 'mt \n' "$cur_vol"
5152else
5153 printf '%02d \n' "$cur_vol"
5154fi
5155#+end_src
5156
4f183f2a
AB
5157** wp
5158
5159My little wallpaper changer script.
5160
5161*** wp
5162:PROPERTIES:
5163:header-args+: :tangle ~/.local/bin/wp :shebang "#!/bin/bash"
5164:END:
5165
5166#+begin_src bash :tangle no
5167export DISPLAY=:0
5168
5169case "$1" in
5170 "day")
5171 feh --bg-scale $HOME/usr/pics/island_day_by_arsenixc-d6ctqon.jpg
5172 ;;
5173 "night")
5174 feh --bg-scale $HOME/usr/pics/island_night_by_arsenixc-d6cz757.jpg
5175 ;;
5176 *)
5177 echo $"Usage: $0 {day|night}"
5178 exit 1
5179esac
5180#+end_src
5181
5182*** wp-auto
5183:PROPERTIES:
5184:header-args+: :tangle ~/.local/bin/wp-auto :shebang "#!/bin/bash"
5185:END:
5186
5187#+begin_src bash :tangle no
5188SED=$(which sed)
5189ROFI=$(which rofi)
5190
5191export DISPLAY=:0
5192HOUR=$(date +%H)
5193
5194if [ -z "${SED}" ]
5195then
5196 echo "Did not find 'sed', script cannot continue."
5197 exit 1
5198fi
5199if [ -z "${ROFI}" ]
5200then
5201 echo "Did not find rofi, there is no point to continue."
5202 exit 1
5203fi
5204
5205###
5206# Create if not exists, then removes #include of .theme file (if present) and add the selected theme to the end.
5207# Repeated calls should leave the config clean-ish
5208###
5209function set_theme()
5210{
5211 CDIR="${HOME}/.config/rofi/"
5212 if [ ! -d "${CDIR}" ]
5213 then
5214 mkdir -p ${CDIR}
5215 fi
5216 if [ -f "${CDIR}/config" ]
5217 then
5218 ${SED} -i "/rofi\.theme: .*\.rasi$/d" "${CDIR}/config"
5219 fi
5220 echo "rofi.theme: ${1}" >> "${CDIR}/config"
5221
5222}
5223
5224if [ "$HOUR" -gt "19" ] || [ "$HOUR" -lt "7" ]
5225 then
5226 feh --bg-scale $HOME/usr/pics/island_night_by_arsenixc-d6cz757.jpg
5227 xrdb -merge $HOME/.Xresources.d/gruvbox-dark.xresources
5228 set_theme "/usr/share/rofi/themes//gruvbox-dark.rasi"
5229 else
5230 feh --bg-scale $HOME/usr/pics/island_day_by_arsenixc-d6ctqon.jpg
5231 xrdb -merge $HOME/.Xresources.d/gruvbox-light.xresources
5232 set_theme "/usr/share/rofi/themes//gruvbox-light.rasi"
5233fi
5234#+end_src
5235
5236*** wp.service
5237:PROPERTIES:
5238:header-args+: :tangle ~/.config/systemd/user/wp.service
5239:END:
5240
5241#+begin_src conf :tangle no
5242[Unit]
5243Description=wallpaper service
5244
5245[Service]
5246Type=oneshot
5247ExecStart=/usr/bin/bash -c %h/.local/bin/wp-auto
5248#+end_src
5249
5250*** wp.timer
5251:PROPERTIES:
5252:header-args+: :tangle ~/.config/systemd/user/wp.timer
5253:END:
5254
5255#+begin_src conf :tangle no
5256[Unit]
5257[Unit]
5258Description=wallpaper timer
5259
5260[Timer]
5261OnCalendar=07,21:00
5262Unit=wp.service
5263Persistent=true
5264
5265[Install]
5266WantedBy=timers.target
5267#+end_src
5268
69a6fe26
AB
5269** zathura-sync.sh
5270:PROPERTIES:
5271:header-args+: :tangle ~/.local/bin/zathura-sync.sh :shebang "#!/bin/sh"
5272:END:
5273
5274#+begin_src sh
5275pos="$1"
5276pdffile="$2"
5277zathura --synctex-forward "$pos" "$pdffile" || \
5278 (
5279 zathura -x "emacsclient --eval '(progn (switch-to-buffer (file-name-nondirectory \"%{input}\")) (goto-line %{line}))'" "$pdffile" &
5280 sleep 1; zathura --synctex-forward "$pos" "$pdffile" )
5281#+end_src
33c5a5cd
AB
5282** Fun :)
5283
5284*** eat-em
5285:PROPERTIES:
5286:header-args+: :tangle ~/.local/bin/eat-em :shebang "#!/bin/sh"
5287:END:
5288
5289#+begin_src sh
5290# Original Posted at http://crunchbang.org/forums/viewtopic.php?pid=126921%23p126921#p126921
5291# [ESC] character in original post removed here.
5292
5293# ANSI Color -- use these variables to easily have different color
5294# and format output. Make sure to output the reset sequence after
5295# colors (f = foreground, b = background), and use the 'off'
5296# feature for anything you turn on.
5297
5298initializeANSI()
5299{
5300 esc="$(echo -en '\e')"
5301
5302 blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m"
5303 yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m"
5304 cyanf="${esc}[36m"; whitef="${esc}[37m"
5305
5306 blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m"
5307 yellowb="${esc}[43m" blueb="${esc}[44m"; purpleb="${esc}[45m"
5308 cyanb="${esc}[46m"; whiteb="${esc}[47m"
5309
5310 boldon="${esc}[1m"; boldoff="${esc}[22m"
5311 italicson="${esc}[3m"; italicsoff="${esc}[23m"
5312 ulon="${esc}[4m"; uloff="${esc}[24m"
5313 invon="${esc}[7m"; invoff="${esc}[27m"
5314
5315 reset="${esc}[0m"
5316}
5317
5318# note in this first use that switching colors doesn't require a reset
5319# first - the new color overrides the old one.
5320
5321#clear
5322
5323initializeANSI
5324
5325cat << EOF
5326
5327 ${yellowf} ▄███████▄${reset} ${redf} ▄██████▄${reset} ${greenf} ▄██████▄${reset} ${bluef} ▄██████▄${reset} ${purplef} ▄██████▄${reset} ${cyanf} ▄██████▄${reset}
5328 ${yellowf}▄█████████▀▀${reset} ${redf}▄${whitef}█▀█${redf}██${whitef}█▀█${redf}██▄${reset} ${greenf}▄${whitef}█▀█${greenf}██${whitef}█▀█${greenf}██▄${reset} ${bluef}▄${whitef}█▀█${bluef}██${whitef}█▀█${bluef}██▄${reset} ${purplef}▄${whitef}█▀█${purplef}██${whitef}█▀█${purplef}██▄${reset} ${cyanf}▄${whitef}█▀█${cyanf}██${whitef}█▀█${cyanf}██▄${reset}
5329 ${yellowf}███████▀${reset} ${redf}█${whitef}▄▄█${redf}██${whitef}▄▄█${redf}███${reset} ${greenf}█${whitef}▄▄█${greenf}██${whitef}▄▄█${greenf}███${reset} ${bluef}█${whitef}▄▄█${bluef}██${whitef}▄▄█${bluef}███${reset} ${purplef}█${whitef}▄▄█${purplef}██${whitef}▄▄█${purplef}███${reset} ${cyanf}█${whitef}▄▄█${cyanf}██${whitef}▄▄█${cyanf}███${reset}
5330 ${yellowf}███████▄${reset} ${redf}████████████${reset} ${greenf}████████████${reset} ${bluef}████████████${reset} ${purplef}████████████${reset} ${cyanf}████████████${reset}
5331 ${yellowf}▀█████████▄▄${reset} ${redf}██▀██▀▀██▀██${reset} ${greenf}██▀██▀▀██▀██${reset} ${bluef}██▀██▀▀██▀██${reset} ${purplef}██▀██▀▀██▀██${reset} ${cyanf}██▀██▀▀██▀██${reset}
5332 ${yellowf} ▀███████▀${reset} ${redf}▀ ▀ ▀ ▀${reset} ${greenf}▀ ▀ ▀ ▀${reset} ${bluef}▀ ▀ ▀ ▀${reset} ${purplef}▀ ▀ ▀ ▀${reset} ${cyanf}▀ ▀ ▀ ▀${reset}
5333
5334 ${boldon}${yellowf} ▄███████▄ ${redf} ▄██████▄ ${greenf} ▄██████▄ ${bluef} ▄██████▄ ${purplef} ▄██████▄ ${cyanf} ▄██████▄${reset}
5335 ${boldon}${yellowf}▄█████████▀▀ ${redf}▄${whitef}█▀█${redf}██${whitef}█▀█${redf}██▄ ${greenf}▄${whitef}█▀█${greenf}██${whitef}█▀█${greenf}██▄ ${bluef}▄${whitef}█▀█${bluef}██${whitef}█▀█${bluef}██▄ ${purplef}▄${whitef}█▀█${purplef}██${whitef}█▀█${purplef}██▄ ${cyanf}▄${whitef}█▀█${cyanf}██${whitef}█▀█${cyanf}██▄${reset}
5336 ${boldon}${yellowf}███████▀ ${redf}█${whitef}▄▄█${redf}██${whitef}▄▄█${redf}███ ${greenf}█${whitef}▄▄█${greenf}██${whitef}▄▄█${greenf}███ ${bluef}█${whitef}▄▄█${bluef}██${whitef}▄▄█${bluef}███ ${purplef}█${whitef}▄▄█${purplef}██${whitef}▄▄█${purplef}███ ${cyanf}█${whitef}▄▄█${cyanf}██${whitef}▄▄█${cyanf}███${reset}
5337 ${boldon}${yellowf}███████▄ ${redf}████████████ ${greenf}████████████ ${bluef}████████████ ${purplef}████████████ ${cyanf}████████████${reset}
5338 ${boldon}${yellowf}▀█████████▄▄ ${redf}██▀██▀▀██▀██ ${greenf}██▀██▀▀██▀██ ${bluef}██▀██▀▀██▀██ ${purplef}██▀██▀▀██▀██ ${cyanf}██▀██▀▀██▀██${reset}
5339 ${boldon}${yellowf} ▀███████▀ ${redf}▀ ▀ ▀ ▀ ${greenf}▀ ▀ ▀ ▀ ${bluef}▀ ▀ ▀ ▀ ${purplef}▀ ▀ ▀ ▀ ${cyanf}▀ ▀ ▀ ▀${reset}
5340
5341EOF
5342#+end_src
5343
33c5a5cd
AB
5344*** invade-em
5345:PROPERTIES:
5346:header-args+: :tangle ~/.local/bin/invade-em :shebang "#!/bin/bash"
5347:END:
5348
5349#+begin_src bash
5350#
5351# ANSI color scheme script featuring Space Invaders
5352#
5353# Original: http://crunchbang.org/forums/viewtopic.php?pid=126921%23p126921#p126921
5354# Modified by lolilolicon
5355#
5356
5357f=3 b=4
5358for j in f b; do
5359 for i in {0..7}; do
5360 printf -v $j$i %b "\e[${!j}${i}m"
5361 done
5362done
5363bld=$'\e[1m'
5364rst=$'\e[0m'
5365
5366cat << EOF
5367
5368 $f1 ▀▄ ▄▀ $f2 ▄▄▄████▄▄▄ $f3 ▄██▄ $f4 ▀▄ ▄▀ $f5 ▄▄▄████▄▄▄ $f6 ▄██▄ $rst
5369 $f1 ▄█▀███▀█▄ $f2███▀▀██▀▀███ $f3▄█▀██▀█▄ $f4 ▄█▀███▀█▄ $f5███▀▀██▀▀███ $f6▄█▀██▀█▄$rst
5370 $f1█▀███████▀█ $f2▀▀███▀▀███▀▀ $f3▀█▀██▀█▀ $f4█▀███████▀█ $f5▀▀███▀▀███▀▀ $f6▀█▀██▀█▀$rst
5371 $f1▀ ▀▄▄ ▄▄▀ ▀ $f2 ▀█▄ ▀▀ ▄█▀ $f3▀▄ ▄▀ $f4▀ ▀▄▄ ▄▄▀ ▀ $f5 ▀█▄ ▀▀ ▄█▀ $f6▀▄ ▄▀$rst
5372
5373 $bld$f1▄ ▀▄ ▄▀ ▄ $f2 ▄▄▄████▄▄▄ $f3 ▄██▄ $f4▄ ▀▄ ▄▀ ▄ $f5 ▄▄▄████▄▄▄ $f6 ▄██▄ $rst
5374 $bld$f1█▄█▀███▀█▄█ $f2███▀▀██▀▀███ $f3▄█▀██▀█▄ $f4█▄█▀███▀█▄█ $f5███▀▀██▀▀███ $f6▄█▀██▀█▄$rst
5375 $bld$f1▀█████████▀ $f2▀▀▀██▀▀██▀▀▀ $f3▀▀█▀▀█▀▀ $f4▀█████████▀ $f5▀▀▀██▀▀██▀▀▀ $f6▀▀█▀▀█▀▀$rst
5376 $bld$f1 ▄▀ ▀▄ $f2▄▄▀▀ ▀▀ ▀▀▄▄ $f3▄▀▄▀▀▄▀▄ $f4 ▄▀ ▀▄ $f5▄▄▀▀ ▀▀ ▀▀▄▄ $f6▄▀▄▀▀▄▀▄$rst
5377
5378
5379 $f7▌$rst
5380
5381 $f7▌$rst
5382
5383 $f7 ▄█▄ $rst
5384 $f7▄█████████▄$rst
5385 $f7▀▀▀▀▀▀▀▀▀▀▀$rst
5386
5387EOF
5388#+end_src