-:header-args+: :tangle ~/.ncmpcpp/config
-:END:
-
-#+begin_src conf :tangle no
-##############################################################
-## This is the example configuration file. Copy it to ##
-## $HOME/.ncmpcpp/config or $XDG_CONFIG_HOME/ncmpcpp/config ##
-## and set up your preferences. ##
-##############################################################
-#
-##### directories ######
-##
-## Directory for storing ncmpcpp related files.
-## Changing it is useful if you want to store
-## everything somewhere else and provide command
-## line setting for alternative location to config
-## file which defines that while launching ncmpcpp.
-##
-#
-ncmpcpp_directory = ~/.ncmpcpp
-#
-##
-## Directory for storing downloaded lyrics. It
-## defaults to ~/.lyrics since other MPD clients
-## (eg. ncmpc) also use that location.
-##
-#
-#lyrics_directory = ~/.lyrics
-#
-##### connection settings #####
-#
-#mpd_host = localhost
-#
-#mpd_port = 6600
-#
-#mpd_connection_timeout = 5
-#
-## Needed for tag editor and file operations to work.
-##
-mpd_music_dir = ~/usr/music
-#
-#mpd_crossfade_time = 5
-#
-##### music visualizer #####
-##
-## Note: In order to make music visualizer work you'll
-## need to use mpd fifo output, whose format parameter
-## has to be set to 44100:16:1 for mono visualization
-## or 44100:16:2 for stereo visualization. Example
-## configuration (it has to be put into mpd.conf):
-##
-## audio_output {
-## type "fifo"
-## name "Visualizer feed"
-## path "/tmp/mpd.fifo"
-## format "44100:16:2"
-## }
-##
-#
-visualizer_fifo_path = /tmp/mpd.fifo
-#
-##
-## Note: Below parameter is needed for ncmpcpp
-## to determine which output provides data for
-## visualizer and thus allow syncing between
-## visualization and sound as currently there
-## are some problems with it.
-##
-#
-visualizer_output_name = my fifo
-#
-##
-## If you set format to 44100:16:2, make it 'yes'.
-##
-visualizer_in_stereo = yes
-#
-##
-## Multiply received samples by given value. Very
-## useful for proper visualization of quiet music.
-##
-#visualizer_sample_multiplier = 1
-#
-##
-## Note: Below parameter defines how often ncmpcpp
-## has to "synchronize" visualizer and audio outputs.
-## 30 seconds is optimal value, but if you experience
-## synchronization problems, set it to lower value.
-## Keep in mind that sane values start with >=10.
-##
-#
-visualizer_sync_interval = 30
-#
-##
-## Note: To enable spectrum frequency visualization
-## you need to compile ncmpcpp with fftw3 support.
-##
-#
-## Available values: spectrum, wave, wave_filled, ellipse.
-##
-visualizer_type = spectrum
-#
-#visualizer_look = ●▮
-visualizer_look = "●•"
-#
-#visualizer_color = blue, cyan, green, yellow, magenta, red
-#
-## Alternative subset of 256 colors for terminals that support it.
-##
-#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161
-#
-##### system encoding #####
-##
-## ncmpcpp should detect your charset encoding
-## but if it failed to do so, you can specify
-## charset encoding you are using here.
-##
-## Note: You can see whether your ncmpcpp build
-## supports charset detection by checking output
-## of `ncmpcpp --version`.
-##
-## Note: Since MPD uses UTF-8 by default, setting
-## this option makes sense only if your encoding
-## is different.
-##
-#
-#system_encoding = ""
-#
-##### delays #####
-#
-## Time of inactivity (in seconds) after playlist
-## highlighting will be disabled (0 = always on).
-##
-#playlist_disable_highlight_delay = 5
-#
-## Defines how long messages are supposed to be visible.
-##
-#message_delay_time = 5
-#
-##### song format #####
-##
-## For a song format you can use:
-##
-## %l - length
-## %f - filename
-## %D - directory
-## %a - artist
-## %A - album artist
-## %t - title
-## %b - album
-## %y - date
-## %n - track number (01/12 -> 01)
-## %N - full track info (01/12 -> 01/12)
-## %g - genre
-## %c - composer
-## %p - performer
-## %d - disc
-## %C - comment
-## %P - priority
-## $R - begin right alignment
-##
-## If you want to make sure that a part of the format is displayed
-## only when certain tags are present, you can archieve it by
-## grouping them with brackets, e.g. '{%a - %t}' will be evaluated
-## to 'ARTIST - TITLE' if both tags are present or '' otherwise.
-## It is also possible to define a list of alternatives by providing
-## several groups and separating them with '|', e.g. '{%t}|{%f}'
-## will be evaluated to 'TITLE' or 'FILENAME' if the former is not
-## present.
-##
-## Note: If you want to set limit on maximal length of a tag, just
-## put the appropriate number between % and character that defines
-## tag type, e.g. to make album take max. 20 terminal cells, use '%20b'.
-##
-## In addition, formats support markers used for text attributes.
-## They are followed by character '$'. After that you can put:
-##
-## - 0 - default window color (discards all other colors)
-## - 1 - black
-## - 2 - red
-## - 3 - green
-## - 4 - yellow
-## - 5 - blue
-## - 6 - magenta
-## - 7 - cyan
-## - 8 - white
-## - 9 - end of current color
-## - b - bold text
-## - u - underline text
-## - r - reverse colors
-## - a - use alternative character set
-##
-## If you don't want to use a non-color attribute anymore, just put it
-## again, but this time insert character '/' between '$' and attribute
-## character, e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag
-## or filename with reversed colors.
-##
-## If you want to use 256 colors and/or background colors in formats
-## (the naming scheme is described below in section about color
-## definitions), it can be done with the syntax $(COLOR), e.g. to set
-## the artist tag to one of the non-standard colors and make it have
-## yellow background, you need to write $(197_yellow)%a$(end). Note
-## that for standard colors this is interchangable with attributes
-## listed above.
-##
-## Note: colors can be nested.
-##
-#
-#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
-#
-#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f}
-#
-#song_library_format = {%n - }{%t}|{%f}
-#
-#
-#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
-#
-#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
-#
-#now_playing_prefix = $b
-#
-#now_playing_suffix = $/b
-#
-#browser_playlist_prefix = "$2playlist$9 "
-#
-#selected_item_prefix = $6
-#
-#selected_item_suffix = $9
-#
-#modified_item_prefix = $3> $9
-#
-##
-## Note: attributes are not supported for the following variables.
-##
-#song_window_title_format = {%a - }{%t}|{%f}
-##
-## Note: Below variables are used for sorting songs in browser.
-## The sort mode determines how songs are sorted, and can be used
-## in combination with a sort format to specify a custom sorting format.
-## Available values for browser_sort_mode are "name", "mtime", "format"
-## and "noop".
-##
-#
-#browser_sort_mode = name
-#
-#browser_sort_format = {%a - }{%t}|{%f} {(%l)}
-#
-##### columns settings #####
-##
-## syntax of song columns list format is "column column etc."
-##
-## - syntax for each column is:
-##
-## (width of the column)[color of the column]{displayed tag}
-##
-## Note: Width is by default in %, if you want a column to
-## have fixed size, add 'f' after the value, e.g. (10)[white]{a}
-## will be the column that take 10% of screen (so the real width
-## will depend on actual screen size), whereas (10f)[white]{a}
-## will take 10 terminal cells, no matter how wide the screen is.
-##
-## - color is optional (if you want the default one,
-## leave the field empty).
-##
-## Note: You can give a column additional attributes by putting appropriate
-## character after displayed tag character. Available attributes are:
-##
-## - r - column will be right aligned
-## - E - if tag is empty, empty tag marker won't be displayed
-##
-## You can also:
-##
-## - give a column custom name by putting it after attributes,
-## separated with character ':', e.g. {lr:Length} gives you
-## right aligned column of lengths named "Length".
-##
-## - define sequence of tags, that have to be displayed in case
-## predecessor is empty in a way similar to the one in classic
-## song format, i.e. using '|' character, e.g. {a|c|p:Owner}
-## creates column named "Owner" that tries to display artist
-## tag and then composer and performer if previous ones are
-## not available.
-##
-#
-#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l}
-#
-##### various settings #####
-#
-##
-## Note: Custom command that will be executed each
-## time song changes. Useful for notifications etc.
-##
-#execute_on_song_change = ""
-#
-#playlist_show_mpd_host = no
-#
-#playlist_show_remaining_time = no
-#
-#playlist_shorten_total_times = no
-#
-#playlist_separate_albums = no
-#
-##
-## Note: Possible display modes: classic, columns.
-##
-#playlist_display_mode = columns
-#
-#browser_display_mode = classic
-#
-#search_engine_display_mode = classic
-#
-#playlist_editor_display_mode = classic
-#
-#discard_colors_if_item_is_selected = yes
-#
-#incremental_seeking = yes
-#
-#seek_time = 1
-#
-#volume_change_step = 2
-#
-#autocenter_mode = no
-#
-#centered_cursor = no
-#
-##
-## Note: You can specify third character which will
-## be used to build 'empty' part of progressbar.
-##
-#progressbar_look = =>
-progressbar_look = "─╼╶"
-#progressbar_look = "─⊙╶"
-#
-#progressbar_boldness = yes
-#
-## Available values: database, playlist.
-##
-#default_place_to_search_in = database
-#
-## Available values: classic, alternative.
-##
-#user_interface = classic
-#
-#data_fetching_delay = yes
-#
-## Available values: artist, album_artist, date, genre, composer, performer.
-##
-#media_library_primary_tag = artist
-#
-## Available values: wrapped, normal.
-##
-#default_find_mode = wrapped
-#
-#default_tag_editor_pattern = %n - %t
-#
-#header_visibility = yes
-#
-#statusbar_visibility = yes
-#
-#titles_visibility = yes
-#
-#header_text_scrolling = yes
-#
-#cyclic_scrolling = no
-#
-#lines_scrolled = 2
-#
-#follow_now_playing_lyrics = no
-#
-#fetch_lyrics_for_current_song_in_background = no
-#
-#store_lyrics_in_song_dir = no
-#
-#generate_win32_compatible_filenames = yes
-#
-#allow_for_physical_item_deletion = no
-#
-##
-## Note: If you set this variable, ncmpcpp will try to
-## get info from last.fm in language you set and if it
-## fails, it will fall back to english. Otherwise it will
-## use english the first time.
-##
-## Note: Language has to be expressed as an ISO 639 alpha-2 code.
-##
-#lastfm_preferred_language = en
-#
-#show_hidden_files_in_local_browser = no
-#
-##
-## How shall screen switcher work?
-##
-## - "previous" - switch between the current and previous screen.
-## - "screen1,...,screenN" - switch between given sequence of screens.
-##
-## Screens available for use: help, playlist, browser, search_engine,
-## media_library, playlist_editor, tag_editor, outputs, visualizer, clock.
-##
-#screen_switcher_mode = playlist, browser
-#
-##
-## Note: You can define startup screen
-## by choosing screen from the list above.
-##
-#startup_screen = playlist
-#
-##
-## Note: You can define startup slave screen
-## by choosing screen from the list above or
-## an empty value for no slave screen.
-##
-#startup_slave_screen = ""
-#
-#startup_slave_screen_focus = no
-#
-##
-## Default width of locked screen (in %).
-## Acceptable values are from 20 to 80.
-##
-#
-#locked_screen_width_part = 50
-#
-#ask_for_locked_screen_width_part = yes
-#
-#jump_to_now_playing_song_at_start = yes
-#
-#ask_before_clearing_playlists = yes
-#
-#clock_display_seconds = no
-#
-#display_volume_level = yes
-#
-#display_bitrate = no
-#
-#display_remaining_time = no
-#
-## Available values: none, basic, extended, perl.
-##
-#regular_expressions = perl
-#
-##
-## Note: If below is enabled, ncmpcpp will ignore leading
-## "The" word while sorting items in browser, tags in
-## media library, etc.
-##
-#ignore_leading_the = no
-#
-#block_search_constraints_change_if_items_found = yes
-#
-#mouse_support = yes
-#
-#mouse_list_scroll_whole_page = yes
-#
-#empty_tag_marker = <empty>
-#
-#tags_separator = " | "
-#
-#tag_editor_extended_numeration = no
-#
-#media_library_sort_by_mtime = no
-#
-#enable_window_title = yes
-#
-##
-## Note: You can choose default search mode for search
-## engine. Available modes are:
-##
-## - 1 - use mpd built-in searching (no regexes, pattern matching)
-## - 2 - use ncmpcpp searching (pattern matching with support for regexes,
-## but if your mpd is on a remote machine, downloading big database
-## to process it can take a while
-## - 3 - match only exact values (this mode uses mpd function for searching
-## in database and local one for searching in current playlist)
-##
-#
-#search_engine_default_search_mode = 1
-#
-#external_editor = nano
-#
-## Note: set to yes if external editor is a console application.
-##
-#use_console_editor = yes
-#
-##### colors definitions #####
-##
-## It is possible to set a background color by setting a color
-## value "<foreground>_<background>", e.g. red_black will set
-## foregound color to red and background color to black.
-##
-## In addition, for terminals that support 256 colors it
-## is possible to set one of them by using a number in range
-## [1, 256] instead of color name, e.g. numerical value
-## corresponding to red_black is 2_1. To find out if the
-## terminal supports 256 colors, run ncmpcpp and check out
-## the bottom of the help screen for list of available colors
-## and their numerical values.
-##
-## Note: due to technical limitations of ncurses, if 256 colors
-## are used, it is possible to either use only the colors with
-## default background color, or all pairs from 1_1 up to 254_127,
-## depending on the ncurses version used.
-##
-#
-#colors_enabled = yes
-#
-#empty_tag_color = cyan
-#
-#header_window_color = default
-#
-#volume_color = default
-#
-#state_line_color = default
-#
-#state_flags_color = default
-#
-#main_window_color = yellow
-#
-#color1 = white
-#
-#color2 = green
-#
-#main_window_highlight_color = yellow
-#
-#progressbar_color = black
-#
-#progressbar_elapsed_color = green
-#
-#statusbar_color = default
-#
-#alternative_ui_separator_color = black
-#
-#active_column_color = red
-#
-#window_border_color = green
-#
-#active_window_border = red
-#
-#+end_src
-
-*** bindings
-:PROPERTIES:
-:header-args+: :tangle ~/.ncmpcpp/bindings
-:END:
-
-#+begin_src conf :tangle no
-def_key "j"
- scroll_down
-def_key "k"
- scroll_up
-
-def_key "ctrl-u"
- page_up
-def_key "ctrl-d"
- page_down
-
-def_key "h"
- previous_column
-def_key "l"
- next_column
-
-def_key "."
- show_lyrics
-
-def_key "n"
- next_found_item
-def_key "N"
- previous_found_item
-
-def_key "J"
- move_sort_order_down
-def_key "K"
- move_sort_order_up
-#+end_src
-
-** notmuch
-
-*** notmuch-config
-:PROPERTIES:
-:header-args+: :tangle ~/.notmuch-config
-:END:
-
-#+begin_src conf
-# .notmuch-config - Configuration file for the notmuch mail system
-#
-# For more information about notmuch, see https://notmuchmail.org
-
-# Database configuration
-#
-# The only value supported here is 'path' which should be the top-level
-# directory where your mail currently exists and to where mail will be
-# delivered in the future. Files should be individual email messages.
-# Notmuch will store its database within a sub-directory of the path
-# configured here named ".notmuch".
-#
-[database]
-path=/home/amin/oldmail
-
-# User configuration
-#
-# Here is where you can let notmuch know how you would like to be
-# addressed. Valid settings are
-#
-# name Your full name.
-# primary_email Your primary email address.
-# other_email A list (separated by ';') of other email addresses
-# at which you receive email.
-#
-# Notmuch will use the various email addresses configured here when
-# formatting replies. It will avoid including your own addresses in the
-# recipient list of replies, and will set the From address based on the
-# address to which the original email was addressed.
-#
-[user]
-name=Amin Bandali
-primary_email=amin@aminb.org
-other_email=bandali@gnu.org;abandali@uwaterloo.ca;
-
-# Configuration for "notmuch new"
-#
-# The following options are supported here:
-#
-# tags A list (separated by ';') of the tags that will be
-# added to all messages incorporated by "notmuch new".
-#
-# ignore A list (separated by ';') of file and directory names
-# that will not be searched for messages by "notmuch new".
-#
-# NOTE: *Every* file/directory that goes by one of those
-# names will be ignored, independent of its depth/location
-# in the mail store.
-#
-[new]
-tags=new;
-#tags=unread;inbox;
-ignore=.uidvalidity;.mbsyncstate;/.*/dovecot*/
-
-# Search configuration
-#
-# The following option is supported here:
-#
-# exclude_tags
-# A ;-separated list of tags that will be excluded from
-# search results by default. Using an excluded tag in a
-# query will override that exclusion.
-#
-[search]
-exclude_tags=deleted;spam;
-
-# Maildir compatibility configuration
-#
-# The following option is supported here:
-#
-# synchronize_flags Valid values are true and false.
-#
-# If true, then the following maildir flags (in message filenames)
-# will be synchronized with the corresponding notmuch tags:
-#
-# Flag Tag
-# ---- -------
-# D draft
-# F flagged
-# P passed
-# R replied
-# S unread (added when 'S' flag is not present)
-#
-# The "notmuch new" command will notice flag changes in filenames
-# and update tags, while the "notmuch tag" and "notmuch restore"
-# commands will notice tag changes and update flags in filenames
-#
-[maildir]
-synchronize_flags=true
-
-# Cryptography related configuration
-#
-# The following option is supported here:
-#
-# gpg_path
-# binary name or full path to invoke gpg.
-#
-[crypto]
-gpg_path=gpg
-#+end_src
-
-*** pre-new hook
-:PROPERTIES:
-:header-args+: :tangle ~/mail/.notmuch/hooks/pre-new :shebang "#!/bin/sh"
-:END:
-
-#+begin_src sh
-touch /tmp/gnusieve.log
-sieve-filter -eW -o postmaster_address=postmaster@aminb.org \
- -o mail_location=maildir:$MAILDIR/gnu:LAYOUT=fs:INBOX=$MAILDIR/gnu/Inbox ~/sieve/gnu.sieve INBOX delete &>>/tmp/gnusieve.log
-#+end_src
-
-*** post-new hook
-:PROPERTIES:
-:header-args+: :tangle ~/mail/.notmuch/hooks/post-new :shebang "#!/bin/sh"
-:END:
-
-#+begin_src sh
-# apply sent tag to messages sent by me
-notmuch tag -new +sent -- from:amin@aminb.org or from:bandali@gnu.org or from:aminb@gnu.org or from:amin@gnu.org or from:mab@gnu.org or from:abandali@uwaterloo.ca
-
-# initial tagging
-notmuch tag -latest -- tag:latest
-notmuch tag +inbox +unread +latest -new -- tag:new
-
-
-# apply tags to lists
-
-# <aminb>
-notmuch tag -inbox +lists/hackernewsletter -- folder:amin/lists/hackernewsletter
-notmuch tag -inbox +lists/haskell-weekly -- folder:amin/lists/haskell-weekly
-
-notmuch tag -inbox +pay -- folder:amin/pay
-notmuch tag -inbox +banking -- folder:amin/banking
-notmuch tag -inbox +work -- folder:amin/work
-# </aminb>
-
-# <uw>
-notmuch tag -inbox +uw/cs136 -- folder:uwaterloo/lists/cs136
-notmuch tag -inbox +uw/cs846 -- folder:uwaterloo/lists/cs846
-notmuch tag -inbox +uw/ece750 -- folder:uwaterloo/lists/ece750
-notmuch tag -inbox +uw/se212 -- folder:uwaterloo/lists/se212
-notmuch tag -inbox +uw/se463 -- folder:uwaterloo/lists/se463
-
-notmuch tag -inbox +lists/alloytools -- folder:uwaterloo/lists/alloytools
-notmuch tag -inbox +lists/clvsingle -- folder:uwaterloo/lists/Clvsingle
-notmuch tag -inbox +lists/gsa -- folder:uwaterloo/lists/GSA
-notmuch tag -inbox +lists/math-grad -- folder:uwaterloo/lists/Math-grad
-notmuch tag -inbox +lists/scs-grads -- folder:uwaterloo/lists/scs-grads
-notmuch tag -inbox +lists/watform-students -- folder:uwaterloo/lists/Watform-students
-# </uw>
-
-# <gnu>
-notmuch tag -inbox +l/emacs-devel -- folder:gnu/l/emacs-devel
-notmuch tag -inbox +l/emacs-orgmode -- folder:gnu/l/emacs-orgmode
-notmuch tag -inbox +l/emacsconf-discuss -- folder:gnu/l/emacsconf-discuss
-notmuch tag -inbox +l/fencepost-users -- folder:gnu/l/fencepost-users
-notmuch tag -inbox +l/guix-devel -- folder:gnu/l/guix-devel
-notmuch tag -inbox +l/guile-devel -- folder:gnu/l/guile-devel
-notmuch tag -inbox +l/help-gnu-emacs -- folder:gnu/l/help-gnu-emacs
-notmuch tag -inbox +l/info-gnu-emacs -- folder:gnu/l/info-gnu-emacs
-notmuch tag -inbox +l/www-commits -- folder:gnu/l/www-commits
-notmuch tag -inbox +l/www-discuss -- folder:gnu/l/www-discuss
-notmuch tag -inbox +webmasters -- folder:gnu/webmasters
-
-notmuch tag -inbox +l/deepspec -- folder:gnu/l/deepspec
-notmuch tag -inbox +l/haskell-cafe -- folder:gnu/l/haskell-cafe
-notmuch tag -inbox +l/haskell-art -- folder:gnu/l/haskell-art
-notmuch tag -inbox +l/notmuch -- folder:gnu/l/notmuch
-
-notmuch tag -inbox +l/~aminb/test-priv -- folder:gnu/l/~aminb/test-priv
-notmuch tag -inbox +l/~sircmpwn/sr.ht-admins -- folder:gnu/l/~sircmpwn/sr.ht-admins
-notmuch tag -inbox +l/~sircmpwn/sr.ht-announce -- folder:gnu/l/~sircmpwn/sr.ht-announce
-notmuch tag -inbox +l/~sircmpwn/sr.ht-dev -- folder:gnu/l/~sircmpwn/sr.ht-dev
-notmuch tag -inbox +l/~sircmpwn/sr.ht-discuss -- folder:gnu/l/~sircmpwn/sr.ht-discuss
-# </gnu>
-
-notmuch tag -inbox -unread +archive/notmuch -- path:archive/notmuch/**
-notmuch tag -inbox -unread +archive/emacs-devel -- path:archive/emacs-devel/**
-#+end_src
-
-*** notmuch.service
-:PROPERTIES:
-:header-args+: :tangle ~/.config/systemd/user/notmuch.service
-:END:
-
-#+begin_src conf :tangle no
-[Unit]
-Description=notmuch service
-
-[Service]
-Type=oneshot
-ExecStart=/usr/bin/notmuch new
-StandardOutput=syslog
-StandardError=syslog
-#+end_src
-
-*** notmuch.timer
-:PROPERTIES:
-:header-args+: :tangle ~/.config/systemd/user/notmuch.timer
-:END:
-
-#+begin_src conf :tangle no
-[Unit]
-Description=notmuch timer
-
-[Timer]
-OnCalendar=*:0/5
-Persistent=true
-Unit=notmuch.service
-
-[Install]
-WantedBy=timers.target
-#+end_src
-
-** offlineimap
-
-*** offlineimaprc
-:PROPERTIES:
-:header-args+: :tangle ~/.offlineimaprc
-:END:
-
-#+begin_src conf :tangle no
-[general]
-pythonfile = ~/.offlineimap.py
-accounts = Gmail, aminb
-maxsyncaccounts = 3
-
-[Account Gmail]
-localrepository = GmailL
-remoterepository = GmailR
-
-[Account aminb]
-localrepository = aminbL
-remoterepository = aminbR
-
-[Repository GmailL]
-type = Maildir
-localfolders = ~/Maildir/Gmail
-
-[Repository GmailR]
-type = IMAP
-remotehost = imap.gmail.com
-remoteusereval = mailuser("gmail")
-remotepasseval = mailpasswd("gmail")
-sslcacertfile = /etc/ssl/certs/ca-certificates.crt
-ssl = yes
-folderfilter = lambda foldername: foldername not in '[Gmail]/All Mail'
-maxconnections = 1
-realdelete = no
-
-[Repository aminbL]
-type = Maildir
-localfolders = ~/Maildir/aminb
-
-[Repository aminbR]
-type = IMAP
-remotehost = mail.aminb.org
-remoteusereval = mailuser("aminb")
-remotepasseval = mailpasswd("aminb")
-sslcacertfile = /etc/ssl/certs/ca-certificates.crt
-ssl = yes
-folderfilter = lambda foldername: foldername not in 'dovecot.sieve'
-maxconnections = 1
-realdelete = no
-#+end_src
-
-*** offlineimap.py
-:PROPERTIES:
-:header-args+: :tangle ~/.offlineimap.py
-:END:
-
-#+begin_src python :tangle no
-import os
-import subprocess
-
-def mailpasswd(acct):
- acct = os.path.basename(acct)
- path = "/home/amin/.passwd/%s.gpg" % acct
- args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path]
- try:
- return subprocess.check_output(args).strip()
- except subprocess.CalledProcessError:
- return ""
-
-def mailuser(acct):
- acct = os.path.basename(acct)
- path = "/home/amin/.passwd/%s" % acct
- args = ["cat", path]
- try:
- return subprocess.check_output(args).strip()
- except subprocess.CalledProcessError:
- return ""
-
-def prime_gpg_agent():
- ret = False
- i = 1
- while not ret:
- ret = (mailpasswd("prime") == "prime")
- if i > 2:
- from offlineimap.ui import getglobalui
- sys.stderr.write("Error reading in passwords. Terminating.\n")
- getglobalui().terminate()
- i += 1
- return ret
-
-prime_gpg_agent()
-#+end_src
-
-** pigeonhole
-*** gnu.sieve
-:PROPERTIES:
-:header-args+: :tangle ~/sieve/gnu.sieve :comments none
-:END:
-
-#+begin_src conf
-require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", "include" ];
-
-if anyof (
- address :is "from" "webmasters@gnu.org",
- address :is "from" "webmasters-comment@gnu.org") {
- fileinto :create "webmasters";
- stop;
-}
-
-include :personal "lists";
-#+end_src
-
-*** lists.sieve
-:PROPERTIES:
-:header-args+: :tangle ~/sieve/lists.sieve :comments none
-:END:
-
-#+begin_src conf
-require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags",
- "include" ];
-
-if anyof (
- header :contains "list-id" "<emacs-devel.gnu.org>",
- header :contains "list-id" "<emacs-orgmode.gnu.org>",
- header :contains "list-id" "<emacsconf-discuss.gnu.org>",
- header :contains "list-id" "<fencepost-users.gnu.org>",
- header :contains "list-id" "<guix-devel.gnu.org>",
- header :contains "list-id" "<guile-devel.gnu.org>",
- header :contains "list-id" "<help-gnu-emacs.gnu.org>",
- header :contains "list-id" "<info-gnu-emacs.gnu.org>",
- header :contains "list-id" "<www-commits.gnu.org>",
- header :contains "list-id" "<www-discuss.gnu.org>",
- header :contains "list-id" "<deepspec.lists.cs.princeton.edu>",
- header :contains "list-id" "<haskell-cafe.haskell.org>",
- header :contains "list-id" "<haskell-art.we.lurk.org>",
- header :contains "list-id" "<notmuch.notmuchmail.org>") {
- if header :regex "list-id" "<([a-z_0-9-]+)[.@]" {
- set :lower "listname" "${1}";
- fileinto :create "l/${listname}";
- }
-}
-
-if anyof (
- header :contains "list-id" "<~aminb/test-priv@lists.sr.ht>",
- header :contains "list-id" "<~sircmpwn/sr.ht-admins@lists.sr.ht>",
- header :contains "list-id" "<~sircmpwn/sr.ht-announce@lists.sr.ht>",
- header :contains "list-id" "<~sircmpwn/sr.ht-dev@lists.sr.ht>",
- header :contains "list-id" "<~sircmpwn/sr.ht-discuss@lists.sr.ht>") {
- if header :regex "list-id" "(~[a-z_0-9-]+)/([a-z_0-9.-]+)@" {
- set :lower "username" "${1}";
- set :lower "listname" "${2}";
- fileinto :create "l/${username}/${listname}";
- }
-}
-#+end_src
-
-** polybar
-
-*** config
-:PROPERTIES:
-:header-args+: :tangle ~/.config/polybar/config
-:END:
-
-#+begin_src conf :tangle no
-;=====================================================
-;
-; To learn more about how to configure Polybar
-; go to https://github.com/jaagr/polybar
-;
-; The README contains alot of information
-;
-;=====================================================
-
-[colors]
-;background = ${xrdb:color0:#222}
-background = #222
-background-alt = #444
-;foreground = ${xrdb:color7:#222}
-foreground = #eee
-foreground-alt = #888
-primary = #ffb52a
-secondary = #e60053
-alert = #bd2c40
-
-[bar/main]
-;monitor = ${env:MONITOR:HDMI-1}
-width = 100%
-height = 27
-;offset-x = 1%
-;offset-y = 1%
-radius = 3.0
-fixed-center = true
-
-background = ${colors.background}
-foreground = ${colors.foreground}
-
-line-size = 3
-line-color = #f00
-
-border-size = 4
-border-color = #00000000
-
-padding-left = 0
-padding-right = 2
-
-module-margin-left = 2
-module-margin-right = 2
-
-font-0 = Ubuntu:fontformat=truetype:antialias=true:pixelsize=9;1
-font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
-font-2 = Wuncon Siji:pixelsize=10;1
-font-3 = FontAwesome:pixelsize=10;1
-
-modules-left = bspwm xwindow
-modules-center =
-modules-right = volume filesystem mail xkeyboard memory cpu temperature date powermenu
-
-tray-position = right
-tray-padding = 1
-;tray-transparent = true
-;tray-background = #0063ff
-tray-maxsize = 18
-
-wm-restack = bspwm
-
-;override-redirect = true
-
-scroll-up = bspwm-desknext
-scroll-down = bspwm-deskprev
-
-[module/xwindow]
-type = internal/xwindow
-label = %title:0:50:...%
-
-[module/xkeyboard]
-type = internal/xkeyboard
-blacklist-0 = num lock
-
-format-prefix = " "
-format-prefix-foreground = ${colors.foreground-alt}
-format-prefix-underline = ${colors.secondary}
-
-label-layout = %layout%
-label-layout-underline = ${colors.secondary}
-
-label-indicator-padding = 2
-label-indicator-margin = 1
-label-indicator-background = ${colors.secondary}
-label-indicator-underline = ${colors.secondary}
-
-[module/filesystem]
-type = internal/fs
-interval = 25
-
-mount-0 = /
-
-label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
-label-unmounted = %mountpoint% not mounted
-label-unmounted-foreground = ${colors.foreground-alt}
-
-[module/bspwm]
-type = internal/bspwm
-
-label-focused = %index%
-label-focused-background = ${colors.background-alt}
-label-focused-underline= ${colors.primary}
-label-focused-padding = 2
-
-label-occupied = %index%
-label-occupied-padding = 2
-
-label-urgent = %index%!
-label-urgent-background = ${colors.alert}
-label-urgent-padding = 2
-
-label-empty = %index%
-label-empty-foreground = ${colors.foreground-alt}
-label-empty-padding = 2
-
-[module/i3]
-type = internal/i3
-format = <label-state> <label-mode>
-index-sort = true
-wrapping-scroll = false
-
-; Only show workspaces on the same output as the bar
-;pin-workspaces = true
-
-label-mode-padding = 2
-label-mode-foreground = #000
-label-mode-background = ${colors.primary}
-
-; focused = Active workspace on focused monitor
-label-focused = %index%
-label-focused-background = ${module/bspwm.label-focused-background}
-label-focused-underline = ${module/bspwm.label-focused-underline}
-label-focused-padding = ${module/bspwm.label-focused-padding}
-
-; unfocused = Inactive workspace on any monitor
-label-unfocused = %index%
-label-unfocused-padding = ${module/bspwm.label-occupied-padding}
-
-; visible = Active workspace on unfocused monitor
-label-visible = %index%
-label-visible-background = ${self.label-focused-background}
-label-visible-underline = ${self.label-focused-underline}
-label-visible-padding = ${self.label-focused-padding}
-
-; urgent = Workspace with urgency hint set
-label-urgent = %index%
-label-urgent-background = ${module/bspwm.label-urgent-background}
-label-urgent-padding = ${module/bspwm.label-urgent-padding}
-
-[module/mpd]
-type = internal/mpd
-format-online = <label-song> <icon-prev> <icon-stop> <toggle> <icon-next>
-
-icon-prev =
-icon-stop =
-icon-play =
-icon-pause =
-icon-next =
-
-label-song-maxlen = 25
-label-song-ellipsis = true
-
-[module/xbacklight]
-type = internal/xbacklight
-
-format = <label> <bar>
-label = BL
-
-bar-width = 10
-bar-indicator = |
-bar-indicator-foreground = #ff
-bar-indicator-font = 2
-bar-fill = ─
-bar-fill-font = 2
-bar-fill-foreground = #9f78e1
-bar-empty = ─
-bar-empty-font = 2
-bar-empty-foreground = ${colors.foreground-alt}
-
-[module/backlight-acpi]
-inherit = module/xbacklight
-type = internal/backlight
-;card = intel_backlight
-card = mba6x_backlight
-
-[module/cpu]
-type = internal/cpu
-interval = 2
-format-prefix = " "
-format-prefix-foreground = ${colors.foreground-alt}
-format-underline = #f90000
-label = %percentage%%
-
-[module/memory]
-type = internal/memory
-interval = 2
-format-prefix = " "
-format-prefix-foreground = ${colors.foreground-alt}
-format-underline = #4bffdc
-label = %percentage_used%%
-
-[module/wlan]
-type = internal/network
-interface =
-interval = 3.0
-
-format-connected = <ramp-signal> <label-connected>
-format-connected-underline = #9f78e1
-label-connected = %essid%
-
-format-disconnected =
-;format-disconnected = <label-disconnected>
-;format-disconnected-underline = ${self.format-connected-underline}
-;label-disconnected = %ifname% disconnected
-;label-disconnected-foreground = ${colors.foreground-alt}
-
-ramp-signal-0 =
-ramp-signal-1 =
-ramp-signal-2 =
-ramp-signal-3 =
-ramp-signal-4 =
-ramp-signal-foreground = ${colors.foreground-alt}
-
-[module/eth]
-type = internal/network
-interface =
-interval = 3.0
-
-format-connected-underline = #55aa55
-format-connected-prefix = " "
-format-connected-prefix-foreground = ${colors.foreground-alt}
-label-connected = %local_ip%
-
-format-disconnected =
-;format-disconnected = <label-disconnected>
-;format-disconnected-underline = ${self.format-connected-underline}
-;label-disconnected = %ifname% disconnected
-;label-disconnected-foreground = ${colors.foreground-alt}
-
-[module/date]
-type = internal/date
-interval = 5
-
-date =
-date-alt = " %Y-%m-%d"
-
-time = %H:%M
-time-alt = %H:%M:%S
-
-format-prefix =
-format-prefix-foreground = ${colors.foreground-alt}
-format-underline = #0a6cf5
-
-label = %date% %time%
-
-[module/volume]
-type = internal/volume
-
-format-volume = <label-volume> <bar-volume>
-label-volume = vol
-label-volume-foreground = ${root.foreground}
-
-format-muted-prefix = " "
-format-muted-foreground = ${colors.foreground-alt}
-label-muted = mute
-
-bar-volume-width = 10
-bar-volume-foreground-0 = #55aa55
-bar-volume-foreground-1 = #55aa55
-bar-volume-foreground-2 = #55aa55
-bar-volume-foreground-3 = #55aa55
-bar-volume-foreground-4 = #55aa55
-bar-volume-foreground-5 = #f5a70a
-bar-volume-foreground-6 = #ff5555
-bar-volume-gradient = false
-bar-volume-indicator = |
-bar-volume-indicator-font = 2
-bar-volume-fill = ─
-bar-volume-fill-font = 2
-bar-volume-empty = ─
-bar-volume-empty-font = 2
-bar-volume-empty-foreground = ${colors.foreground-alt}
-
-[module/battery]
-type = internal/battery
-battery = BAT0
-adapter = ADP1
-full-at = 64
-
-format-charging = <animation-charging> <label-charging>
-format-charging-underline = #ffb52a
-
-format-discharging = <ramp-capacity> <label-discharging>
-format-discharging-underline = ${self.format-charging-underline}
-
-format-full-prefix = " "
-format-full-prefix-foreground = ${colors.foreground-alt}
-format-full-underline = ${self.format-charging-underline}
-
-ramp-capacity-0 =
-ramp-capacity-1 =
-ramp-capacity-2 =
-ramp-capacity-foreground = ${colors.foreground-alt}
-
-animation-charging-0 =
-animation-charging-1 =
-animation-charging-2 =
-animation-charging-foreground = ${colors.foreground-alt}
-animation-charging-framerate = 750
-
-[module/temperature]
-type = internal/temperature
-thermal-zone = 1
-warn-temperature = 66
-
-format = <ramp> <label>
-format-underline = #f50a4d
-format-warn = <ramp> <label-warn>
-format-warn-underline = ${self.format-underline}
-
-label = %temperature%
-label-warn = %temperature%
-label-warn-foreground = ${colors.secondary}
-
-ramp-0 =
-ramp-1 =
-ramp-2 =
-ramp-foreground = ${colors.foreground-alt}
-
-[module/powermenu]
-type = custom/menu
-
-format-spacing = 1
-
-label-open =
-label-open-foreground = ${colors.secondary}
-label-close = cancel
-label-close-foreground = ${colors.secondary}
-label-separator = |
-label-separator-foreground = ${colors.foreground-alt}
-
-menu-0-0 = reboot
-menu-0-0-exec = menu-open-1
-menu-0-1 = power off
-menu-0-1-exec = menu-open-2
-
-menu-1-0 = cancel
-menu-1-0-exec = menu-open-0
-menu-1-1 = reboot
-menu-1-1-exec = sudo reboot
-
-menu-2-0 = power off
-menu-2-0-exec = sudo poweroff
-menu-2-1 = cancel
-menu-2-1-exec = menu-open-0
-
-[module/mail]
-type = custom/script
-interval = 60
-format = <label>
-format-prefix = " "
-format-prefix-foreground = ${colors.foreground-alt}
-format-underline = #0a6cf5
-exec = notmuch count tag:unread
-
-[settings]
-screenchange-reload = true
-;compositing-background = xor
-;compositing-background = screen
-;compositing-foreground = source
-;compositing-border = over
-
-[global/wm]
-margin-top = 0
-margin-bottom = 0
-
-; vim:ft=dosini
-#+end_src
-
-*** polybar-launch
-:PROPERTIES:
-:header-args+: :tangle ~/.local/bin/polybar-launch :shebang "#!/usr/bin/env sh"
-:END:
-
-#+begin_src sh :tangle no
-# Terminate already running bar instances
-killall -q polybar
-
-# Wait until the processes have been shut down
-while pgrep -x polybar >/dev/null; do sleep 1; done
-
-# Launch main bar
-polybar main &
-
-echo "Bars launched..."
-#+end_src
-
-** PowerTOP
-:PROPERTIES:
-:header-args+: :tangle "/sudo::/etc/systemd/system/powertop.service"
-:END:
-
-#+begin_src conf
-[Unit]
-Description=Powertop tunings
-
-[Service]
-ExecStart=/usr/bin/powertop --auto-tune
-RemainAfterExit=true
-
-[Install]
-WantedBy=multi-user.target
-#+end_src
-
-** ranger
-
-*** rc.conf
-:PROPERTIES:
-:header-args+: :tangle ~/.config/ranger/rc.conf
-:END:
-
-#+begin_src conf :tangle no
-# ===================================================================
-# This file contains the default startup commands for ranger.
-# To change them, it is recommended to create the file
-# ~/.config/ranger/rc.conf and add your custom commands there.
-#
-# If you copy this whole file there, you may want to set the environment
-# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
-#
-# The purpose of this file is mainly to define keybindings and settings.
-# For running more complex python code, please create a plugin in "plugins/" or
-# a command in "commands.py".
-#
-# Each line is a command that will be run before the user interface
-# is initialized. As a result, you can not use commands which rely
-# on the UI such as :delete or :mark.
-# ===================================================================
-
-# ===================================================================
-# == Options
-# ===================================================================
-
-# How many columns are there, and what are their relative widths?
-set column_ratios 1,3,4
-
-# Which files should be hidden? (regular expression)
-set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
-
-# Show hidden files? You can toggle this by typing 'zh'
-set show_hidden false
-
-# Ask for a confirmation when running the "delete" command?
-# Valid values are "always" (default), "never", "multiple"
-# With "multiple", ranger will ask only if you delete multiple files at once.
-set confirm_on_delete multiple
-
-# Which script is used to generate file previews?
-# ranger ships with scope.sh, a script that calls external programs (see
-# README for dependencies) to preview images, archives, etc.
-set preview_script ~/.config/ranger/scope.sh
-
-# Use the external preview script or display simple plain text previews?
-set use_preview_script true
-
-# Open all images in this directory when running certain image viewers
-# like feh or sxiv? You can still open selected files by marking them.
-set open_all_images true
-
-# Be aware of version control systems and display information.
-set vcs_aware false
-
-# State of the three backends git, hg, bzr. The possible states are
-# disabled, local (only show local info), enabled (show local and remote
-# information).
-set vcs_backend_git enabled
-set vcs_backend_hg disabled
-set vcs_backend_bzr disabled
-
-# Preview images in full color with the external command "w3mimgpreview"?
-# This requires the console web browser "w3m" and a supported terminal.
-# It has been successfully tested with "xterm" and "urxvt" without tmux.
-set preview_images true
-
-# Use a unicode "..." character to mark cut-off filenames?
-set unicode_ellipsis false
-
-# Show dotfiles in the bookmark preview box?
-set show_hidden_bookmarks true
-
-# Which colorscheme to use? These colorschemes are available by default:
-# default, jungle, snow
-set colorscheme default
-
-# Preview files on the rightmost column?
-# And collapse (shrink) the last column if there is nothing to preview?
-set preview_files true
-set preview_directories true
-set collapse_preview true
-
-# Save the console history on exit?
-set save_console_history true
-
-# Draw the status bar on top of the browser window (default: bottom)
-set status_bar_on_top false
-
-# Draw a progress bar in the status bar which displays the average state of all
-# currently running tasks which support progress bars?
-set draw_progress_bar_in_status_bar true
-
-# Draw borders around columns?
-set draw_borders true
-
-# Display the directory name in tabs?
-set dirname_in_tabs false
-
-# Enable the mouse support?
-set mouse_enabled true
-
-# Display the file size in the main column or status bar?
-set display_size_in_main_column true
-set display_size_in_status_bar true
-
-# Display files tags in all columns or only in main column?
-set display_tags_in_all_columns true
-
-# Set a title for the window?
-set update_title false
-
-# Set the title to "ranger" in the tmux program?
-set update_tmux_title false
-
-# Shorten the title if it gets long? The number defines how many
-# directories are displayed at once, 0 turns off this feature.
-set shorten_title 3
-
-# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
-set tilde_in_titlebar false
-
-# How many directory-changes or console-commands should be kept in history?
-set max_history_size 20
-set max_console_history_size 50
-
-# Try to keep so much space between the top/bottom border when scrolling:
-set scroll_offset 8
-
-# Flush the input after each key hit? (Noticable when ranger lags)
-set flushinput true
-
-# Padding on the right when there's no preview?
-# This allows you to click into the space to run the file.
-set padding_right true
-
-# Save bookmarks (used with mX and `X) instantly?
-# This helps to synchronize bookmarks between multiple ranger
-# instances but leads to *slight* performance loss.
-# When false, bookmarks are saved when ranger is exited.
-set autosave_bookmarks true
-
-# You can display the "real" cumulative size of directories by using the
-# command :get_cumulative_size or typing "dc". The size is expensive to
-# calculate and will not be updated automatically. You can choose
-# to update it automatically though by turning on this option:
-set autoupdate_cumulative_size false
-
-# Turning this on makes sense for screen readers:
-set show_cursor false
-
-# One of: size, basename, mtime, type
-set sort natural
-
-# Additional sorting options
-set sort_reverse false
-set sort_case_insensitive true
-set sort_directories_first true
-
-# Enable this if key combinations with the Alt Key don't work for you.
-# (Especially on xterm)
-set xterm_alt_key false
-
-# ===================================================================
-# == Local Options
-# ===================================================================
-# You can set local options that only affect a single directory.
-
-# Examples:
-# setlocal path=~/downloads sort mtime
-
-# ===================================================================
-# == Command Aliases in the Console
-# ===================================================================
-
-alias e edit
-alias q quit
-alias q! quitall
-alias qall quitall
-alias setl setlocal
-
-alias filter scout -prt
-alias find scout -aet
-alias mark scout -mr
-alias unmark scout -Mr
-alias search scout -rs
-alias search_inc scout -rts
-alias travel scout -aefiklst
-
-# ===================================================================
-# == Define keys for the browser
-# ===================================================================
-
-# Basic
-map Q quit!
-map q quit
-copymap q ZZ ZQ
-
-map R reload_cwd
-map <C-r> reset
-map <C-l> redraw_window
-map <C-c> abort
-map <esc> change_mode normal
-
-map i display_file
-map ? help
-map W display_log
-map w taskview_open
-map S shell $SHELL
-
-map : console
-map ; console
-map ! console shell
-map @ console -p6 shell %%s
-map # console shell -p
-map s console shell
-map r chain draw_possible_programs; console open_with
-map f console find
-map cd console cd
-
-# Tagging / Marking
-map t tag_toggle
-map ut tag_remove
-map "<any> tag_toggle tag=%any
-map <Space> mark_files toggle=True
-map v mark_files all=True toggle=True
-map uv mark_files all=True val=False
-map V toggle_visual_mode
-map uV toggle_visual_mode reverse=True
-
-# For the nostalgics: Midnight Commander bindings
-map <F1> help
-map <F3> display_file
-map <F4> edit
-map <F5> copy
-map <F6> cut
-map <F7> console mkdir
-map <F8> console delete
-map <F10> exit
-
-# In case you work on a keyboard with dvorak layout
-map <UP> move up=1
-map <DOWN> move down=1
-map <LEFT> move left=1
-map <RIGHT> move right=1
-map <HOME> move to=0
-map <END> move to=-1
-map <PAGEDOWN> move down=1 pages=True
-map <PAGEUP> move up=1 pages=True
-map <CR> move right=1
-map <DELETE> console delete
-map <INSERT> console touch
-
-# VIM-like
-copymap <UP> k
-copymap <DOWN> j
-copymap <LEFT> h
-copymap <RIGHT> l
-copymap <HOME> gg
-copymap <END> G
-copymap <PAGEDOWN> <C-F>
-copymap <PAGEUP> <C-B>
-
-map J move down=0.5 pages=True
-map K move up=0.5 pages=True
-copymap J <C-D>
-copymap K <C-U>
-
-# Jumping around
-map H history_go -1
-map L history_go 1
-map ] move_parent 1
-map [ move_parent -1
-map } traverse
-
-map gh cd ~
-map ge cd /etc
-map gu cd /usr
-map gd cd /dev
-map gl cd -r .
-map gL cd -r %f
-map go cd /opt
-map gv cd /var
-map gm cd /media
-map gM cd /mnt
-map gs cd /srv
-map gr cd /
-map gR eval fm.cd(ranger.RANGERDIR)
-map g/ cd /
-map g? cd /usr/share/doc/ranger
-
-# External Programs
-map E edit
-map du shell -p du --max-depth=1 -h --apparent-size
-map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
-map yp shell -d echo -n %d/%f | xsel -i
-map yd shell -d echo -n %d | xsel -i
-map yn shell -d echo -n %f | xsel -i
-
-# Filesystem Operations
-map = chmod
-
-map cw console rename
-map A eval fm.open_console('rename ' + fm.thisfile.basename)
-map I eval fm.open_console('rename ' + fm.thisfile.basename, position=7)
-
-map pp paste
-map po paste overwrite=True
-map pl paste_symlink relative=False
-map pL paste_symlink relative=True
-map phl paste_hardlink
-map pht paste_hardlinked_subtree
-
-map dd cut
-map ud uncut
-map da cut mode=add
-map dr cut mode=remove
-
-map yy copy
-map uy uncut
-map ya copy mode=add
-map yr copy mode=remove
-
-# Temporary workarounds
-map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
-map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
-map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
-map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
-map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
-map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
-map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
-map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
-
-# Searching
-map / console search
-map n search_next
-map N search_next forward=False
-map ct search_next order=tag
-map cs search_next order=size
-map ci search_next order=mimetype
-map cc search_next order=ctime
-map cm search_next order=mtime
-map ca search_next order=atime
-
-# Tabs
-map <C-n> tab_new ~
-map <C-w> tab_close
-map <TAB> tab_move 1
-map <S-TAB> tab_move -1
-map <A-Right> tab_move 1
-map <A-Left> tab_move -1
-map gt tab_move 1
-map gT tab_move -1
-map gn tab_new ~
-map gc tab_close
-map uq tab_restore
-map <a-1> tab_open 1
-map <a-2> tab_open 2
-map <a-3> tab_open 3
-map <a-4> tab_open 4
-map <a-5> tab_open 5
-map <a-6> tab_open 6
-map <a-7> tab_open 7
-map <a-8> tab_open 8
-map <a-9> tab_open 9
-
-# Sorting
-map or toggle_option sort_reverse
-map os chain set sort=size; set sort_reverse=False
-map ob chain set sort=basename; set sort_reverse=False
-map on chain set sort=natural; set sort_reverse=False
-map om chain set sort=mtime; set sort_reverse=False
-map oc chain set sort=ctime; set sort_reverse=False
-map oa chain set sort=atime; set sort_reverse=False
-map ot chain set sort=type; set sort_reverse=False
-
-map oS chain set sort=size; set sort_reverse=True
-map oB chain set sort=basename; set sort_reverse=True
-map oN chain set sort=natural; set sort_reverse=True
-map oM chain set sort=mtime; set sort_reverse=True
-map oC chain set sort=ctime; set sort_reverse=True
-map oA chain set sort=atime; set sort_reverse=True
-map oT chain set sort=type; set sort_reverse=True
-
-map dc get_cumulative_size
-
-# Settings
-map zc toggle_option collapse_preview
-map zd toggle_option sort_directories_first
-map zh toggle_option show_hidden
-map <C-h> toggle_option show_hidden
-map zi toggle_option flushinput
-map zm toggle_option mouse_enabled
-map zp toggle_option preview_files
-map zP toggle_option preview_directories
-map zs toggle_option sort_case_insensitive
-map zu toggle_option autoupdate_cumulative_size
-map zv toggle_option use_preview_script
-map zf console filter
-
-# Bookmarks
-map `<any> enter_bookmark %any
-map '<any> enter_bookmark %any
-map m<any> set_bookmark %any
-map um<any> unset_bookmark %any
-
-map m<bg> draw_bookmarks
-copymap m<bg> um<bg> `<bg> '<bg>
-
-# Generate all the chmod bindings with some python help:
-eval for arg in "rwxXst": cmd("map +u{0} shell -d chmod u+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +g{0} shell -d chmod g+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +o{0} shell -d chmod o+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +a{0} shell -d chmod a+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +{0} shell -d chmod u+{0} %s".format(arg))
-
-eval for arg in "rwxXst": cmd("map -u{0} shell -d chmod u-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -g{0} shell -d chmod g-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -o{0} shell -d chmod o-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -a{0} shell -d chmod a-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -{0} shell -d chmod u-{0} %s".format(arg))
-
-# ===================================================================
-# == Define keys for the console
-# ===================================================================
-# Note: Unmapped keys are passed directly to the console.
-
-# Basic
-cmap <tab> eval fm.ui.console.tab()
-cmap <s-tab> eval fm.ui.console.tab(-1)
-cmap <ESC> eval fm.ui.console.close()
-cmap <CR> eval fm.ui.console.execute()
-cmap <C-l> redraw_window
-
-copycmap <ESC> <C-c>
-copycmap <CR> <C-j>
-
-# Move around
-cmap <up> eval fm.ui.console.history_move(-1)
-cmap <down> eval fm.ui.console.history_move(1)
-cmap <left> eval fm.ui.console.move(left=1)
-cmap <right> eval fm.ui.console.move(right=1)
-cmap <home> eval fm.ui.console.move(right=0, absolute=True)
-cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
-
-# Line Editing
-cmap <backspace> eval fm.ui.console.delete(-1)
-cmap <delete> eval fm.ui.console.delete(0)
-cmap <C-w> eval fm.ui.console.delete_word()
-cmap <C-k> eval fm.ui.console.delete_rest(1)
-cmap <C-u> eval fm.ui.console.delete_rest(-1)
-cmap <C-y> eval fm.ui.console.paste()
-
-# And of course the emacs way
-copycmap <up> <C-p>
-copycmap <down> <C-n>
-copycmap <left> <C-b>
-copycmap <right> <C-f>
-copycmap <home> <C-a>
-copycmap <end> <C-e>
-copycmap <delete> <C-d>
-copycmap <backspace> <C-h>
-
-# Note: There are multiple ways to express backspaces. <backspace> (code 263)
-# and <backspace2> (code 127). To be sure, use both.
-copycmap <backspace> <backspace2>
-
-# This special expression allows typing in numerals:
-cmap <allow_quantifiers> false
-
-# ===================================================================
-# == Pager Keybindings
-# ===================================================================
-
-# Movement
-pmap <down> pager_move down=1
-pmap <up> pager_move up=1
-pmap <left> pager_move left=4
-pmap <right> pager_move right=4
-pmap <home> pager_move to=0
-pmap <end> pager_move to=-1
-pmap <pagedown> pager_move down=1.0 pages=True
-pmap <pageup> pager_move up=1.0 pages=True
-pmap <C-d> pager_move down=0.5 pages=True
-pmap <C-u> pager_move up=0.5 pages=True
-
-copypmap <UP> k <C-p>
-copypmap <DOWN> j <C-n> <CR>
-copypmap <LEFT> h
-copypmap <RIGHT> l
-copypmap <HOME> g
-copypmap <END> G
-copypmap <C-d> d
-copypmap <C-u> u
-copypmap <PAGEDOWN> n f <C-F> <Space>
-copypmap <PAGEUP> p b <C-B>
-
-# Basic
-pmap <ESC> pager_close
-copypmap <ESC> q Q i <F3>
-pmap E edit_file
-
-# ===================================================================
-# == Taskview Keybindings
-# ===================================================================
-
-# Movement
-tmap <up> taskview_move up=1
-tmap <down> taskview_move down=1
-tmap <home> taskview_move to=0
-tmap <end> taskview_move to=-1
-tmap <pagedown> taskview_move down=1.0 pages=True
-tmap <pageup> taskview_move up=1.0 pages=True
-tmap <C-d> taskview_move down=0.5 pages=True
-tmap <C-u> taskview_move up=0.5 pages=True
-
-copytmap <UP> k <C-p>
-copytmap <DOWN> j <C-n> <CR>
-copytmap <HOME> g
-copytmap <END> G
-copytmap <C-u> u
-copytmap <PAGEDOWN> n f <C-F> <Space>
-copytmap <PAGEUP> p b <C-B>
-
-# Changing priority and deleting tasks
-tmap J eval -q fm.ui.taskview.task_move(-1)
-tmap K eval -q fm.ui.taskview.task_move(0)
-tmap dd eval -q fm.ui.taskview.task_remove()
-tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
-tmap <pageup> eval -q fm.ui.taskview.task_move(0)
-tmap <delete> eval -q fm.ui.taskview.task_remove()
-
-# Basic
-tmap <ESC> taskview_close
-copytmap <ESC> q Q w <C-c>
-#+end_src
-
-*** scope.sh
-:PROPERTIES:
-:header-args+: :tangle ~/.config/ranger/scope.sh :shebang "#!/usr/bin/env sh"
-:END:
-
-#+begin_src sh :tangle no
-# ranger supports enhanced previews. If the option "use_preview_script"
-# is set to True and this file exists, this script will be called and its
-# output is displayed in ranger. ANSI color codes are supported.
-
-# NOTES: This script is considered a configuration file. If you upgrade
-# ranger, it will be left untouched. (You must update it yourself.)
-# Also, ranger disables STDIN here, so interactive scripts won't work properly
-
-# Meanings of exit codes:
-# code | meaning | action of ranger
-# -----+------------+-------------------------------------------
-# 0 | success | success. display stdout as preview
-# 1 | no preview | failure. display no preview at all
-# 2 | plain text | display the plain content of the file
-# 3 | fix width | success. Don't reload when width changes
-# 4 | fix height | success. Don't reload when height changes
-# 5 | fix both | success. Don't ever reload
-
-# Meaningful aliases for arguments:
-path="$1" # Full path of the selected file
-width="$2" # Width of the preview pane (number of fitting characters)
-height="$3" # Height of the preview pane (number of fitting characters)
-
-maxln=200 # Stop after $maxln lines. Can be used like ls | head -n $maxln
-
-# Find out something about the file:
-mimetype=$(file --mime-type -Lb "$path")
-extension=${path##*.}
-
-# Functions:
-# runs a command and saves its output into $output. Useful if you need
-# the return value AND want to use the output in a pipe
-try() { output=$(eval '"$@"'); }
-
-# writes the output of the previouosly used "try" command
-dump() { echo "$output"; }
-
-# a common post-processing function used after most commands
-trim() { head -n "$maxln"; }
-
-# wraps highlight to treat exit code 141 (killed by SIGPIPE) as success
-highlight() { command highlight "$@"; test $? = 0 -o $? = 141; }
-
-case "$extension" in
- # Archive extensions:
- 7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
- rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
- try als "$path" && { dump | trim; exit 0; }
- try acat "$path" && { dump | trim; exit 3; }
- try bsdtar -lf "$path" && { dump | trim; exit 0; }
- exit 1;;
- rar)
- try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;;
- # PDF documents:
- pdf)
- try pdftotext -l 10 -nopgbrk -q "$path" - && \
- { dump | trim | fmt -s -w $width; exit 0; } || exit 1;;
- # BitTorrent Files
- torrent)
- try transmission-show "$path" && { dump | trim; exit 5; } || exit 1;;
- # HTML Pages:
- htm|html|xhtml)
- try w3m -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
- try lynx -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
- try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
- ;; # fall back to highlight/cat if the text browsers fail
-esac
-
-case "$mimetype" in
- # Syntax highlight for text files:
- text/* | */xml)
- try highlight --out-format=ansi "$path" && { dump | trim; exit 5; } || exit 2;;
- # Ascii-previews of images:
- image/*)
- img2txt --gamma=0.6 --width="$width" "$path" && exit 4 || exit 1;;
- # Display information about media files:
- video/* | audio/*)
- exiftool "$path" && exit 5
- # Use sed to remove spaces so the output fits into the narrow window
- try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } || exit 1;;
-esac
-
-exit 1
-#+end_src
-
-** redshift
-:PROPERTIES:
-:header-args+: :tangle ~/.config/redshift.conf :comments none
-:END:
-
-#+begin_src conf
-; Global settings for redshift
-[redshift]
-; Set the day and night screen temperatures (Neutral is 6500K)
-;temp-day=5700
-;temp-night=3500
-
-;temp-day=6500
-temp-day=6200
-;temp-night=4800
-;temp-night=5000
-;temp-night=4500
-temp-night=4000
-
-; Enable/Disable a smooth transition between day and night
-; 0 will cause a direct change from day to night screen temperature.
-; 1 will gradually increase or decrease the screen temperature.
-transition=1
-
-; Set the screen brightness. Default is 1.0.
-;brightness=0.9
-; It is also possible to use different settings for day and night
-; since version 1.8.
-;brightness-day=0.7
-;brightness-night=0.4
-; Set the screen gamma (for all colors, or each color channel
-; individually)
-;gamma=0.8
-;gamma=1.0
-;gamma=0.8:0.7:0.8
-; This can also be set individually for day and night since
-; version 1.10.
-;gamma-day=0.8:0.7:0.8
-;gamma-night=0.6
-
-; Set the location-provider: 'geoclue2' or 'manual'
-; type 'redshift -l list' to see possible values.
-; The location provider settings are in a different section.
-;location-provider=manual
-location-provider=geoclue2
-
-; Set the adjustment-method: 'randr', 'vidmode'
-; type 'redshift -m list' to see all possible values.
-; 'randr' is the preferred method, 'vidmode' is an older API.
-; but works in some cases when 'randr' does not.
-; The adjustment method settings are in a different section.
-adjustment-method=randr
-
-; Configuration of the location-provider:
-; type 'redshift -l PROVIDER:help' to see the settings.
-; ex: 'redshift -l manual:help'
-; Keep in mind that longitudes west of Greenwich (e.g. the Americas)
-; are negative numbers.
-;[manual]
-;lat=48.1
-;lon=11.6
-
-; Configuration of the adjustment-method
-; type 'redshift -m METHOD:help' to see the settings.
-; ex: 'redshift -m randr:help'
-; In this example, randr is configured to adjust screen 1.
-; Note that the numbering starts from 0, so this is actually the
-; second screen. If this option is not specified, Redshift will try
-; to adjust _all_ screens.
-;[randr]
-;screen=1
-#+end_src
-
-** rofi
-:PROPERTIES:
-:header-args+: :tangle ~/.config/rofi/config