X-Git-Url: https://git.shemshak.org/gitweb.cgi/~bandali/configs/blobdiff_plain/e5e4450f889a82197d845cc06a63fcb3e740583d..86dd267a49359f68d64da9fae11f2b30a8fa907f:/rc.org?ds=inline diff --git a/rc.org b/rc.org index 8533246..a45fcfe 100644 --- a/rc.org +++ b/rc.org @@ -1,5 +1,5 @@ #+title: rc.org -#+property: header-args :comments link :mkdirp yes :results silent +#+property: header-args :comments no :mkdirp yes :results silent * About @@ -10,9 +10,6 @@ this file using =org-babel=. Note: This file is best viewed inside Emacs with org mode. * Configs -:PROPERTIES: -:header-args+: :comments no -:END: This section contains the configuration files (dotfiles) of various programs I use besides GNU Emacs. @@ -556,7 +553,7 @@ Expunge Both ###### IMAPAccount shemshak Host mail.shemshak.org -User amin@shemshak.org +User bandali@shemshak.org PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/shemshak.gpg" SSLType IMAPS @@ -566,7 +563,7 @@ Account shemshak IMAPAccount shemshak-local Host 127.0.0.1 Port 143 -User amin@shemshak.local +User bandali@shemshak.local PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/shemshak-local.gpg" SSLType None @@ -581,7 +578,7 @@ Patterns * ###### IMAPAccount gnub Host mail.shemshak.org -User gnu@bandali.eu.org +User gnu@bndl.org PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/gnub.gpg" SSLType IMAPS @@ -616,7 +613,7 @@ Account uwaterloo IMAPAccount uwaterloo-local Host 127.0.0.1 Port 143 -User abandali@uw.local +User abandali@uwaterloo.local PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/uwaterloo-local.gpg" SSLType None @@ -641,7 +638,7 @@ Account csclub IMAPAccount csclub-local Host 127.0.0.1 Port 143 -User abandali@csc.uw.local +User abandali@csclub.uwaterloo.local PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/csclub-local.gpg" SSLType None @@ -1105,21 +1102,23 @@ logfile ~/.msmtp.log account shemshak host mail.shemshak.org # use `msmtp -a shemshak --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint -tls_fingerprint 01:6F:1B:92:0A:E8:47:35:62:80:DD:17:F5:9A:9D:26:7D:59:E2:EC:69:67:36:69:2F:58:8C:89:57:66:F6:B1 +tls_fingerprint A9:B8:79:CE:47:F7:E8:EB:7B:0D:C5:3E:1E:35:72:A0:03:E3:A2:1A:A9:1C:24:34:6E:F9:9E:78:89:67:11:E3 tls_starttls on from amin@shemshak.org -user amin@shemshak.org +user bandali@shemshak.org passwordeval gpg --no-tty -q -d ~/.passwd/shemshak.gpg +account bandali : shemshak +from bandali@shemshak.org account aminb : shemshak from amin@aminb.org account bndl : shemshak -from amin@bndl.org +from a@bndl.org account gnu host fencepost.gnu.org # use `msmtp -a gnu --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint -tls_fingerprint A5:E9:14:9F:46:3E:8E:0F:09:8C:5D:21:C2:BE:DE:77:BE:8B:E7:82:6C:56:78:0C:62:CA:46:D7:18:FE:33:05 +tls_fingerprint 36:A7:33:D0:57:25:BB:D8:A8:21:7B:A3:91:05:A9:4F:43:4E:87:AE:65:4B:0D:A4:A0:9A:08:89:AE:1F:A5:D7 tls_starttls on from bandali@gnu.org user bandali @@ -1154,660 +1153,18 @@ tls_trust_file /etc/ssl/certs/ca-certificates.crt account csclub-friendly : csclub from bandali@csclub.uwaterloo.ca +account sfl +host mail.savoirfairelinux.com +tls on +from amin.bandali@savoirfairelinux.com +user amin.bandali +passwordeval gpg --no-tty -q -d ~/.passwd/sfl.gpg +tls_trust_file /etc/ssl/certs/ca-certificates.crt + # Set a default account account default : shemshak #+end_src -** ncmpcpp - -*** config -:PROPERTIES: -:header-args+: :tangle ~/.ncmpcpp/config -:END: - -#+begin_src conf :tangle no -############################################################## -## This is the example configuration file. Copy it to ## -## $HOME/.ncmpcpp/config or $XDG_CONFIG_HOME/ncmpcpp/config ## -## and set up your preferences. ## -############################################################## -# -##### directories ###### -## -## Directory for storing ncmpcpp related files. -## Changing it is useful if you want to store -## everything somewhere else and provide command -## line setting for alternative location to config -## file which defines that while launching ncmpcpp. -## -# -ncmpcpp_directory = ~/.ncmpcpp -# -## -## Directory for storing downloaded lyrics. It -## defaults to ~/.lyrics since other MPD clients -## (eg. ncmpc) also use that location. -## -# -#lyrics_directory = ~/.lyrics -# -##### connection settings ##### -# -#mpd_host = localhost -# -#mpd_port = 6600 -# -#mpd_connection_timeout = 5 -# -## Needed for tag editor and file operations to work. -## -mpd_music_dir = ~/usr/music -# -#mpd_crossfade_time = 5 -# -##### music visualizer ##### -## -## Note: In order to make music visualizer work you'll -## need to use mpd fifo output, whose format parameter -## has to be set to 44100:16:1 for mono visualization -## or 44100:16:2 for stereo visualization. Example -## configuration (it has to be put into mpd.conf): -## -## audio_output { -## type "fifo" -## name "Visualizer feed" -## path "/tmp/mpd.fifo" -## format "44100:16:2" -## } -## -# -visualizer_fifo_path = /tmp/mpd.fifo -# -## -## Note: Below parameter is needed for ncmpcpp -## to determine which output provides data for -## visualizer and thus allow syncing between -## visualization and sound as currently there -## are some problems with it. -## -# -visualizer_output_name = my fifo -# -## -## If you set format to 44100:16:2, make it 'yes'. -## -visualizer_in_stereo = yes -# -## -## Multiply received samples by given value. Very -## useful for proper visualization of quiet music. -## -#visualizer_sample_multiplier = 1 -# -## -## Note: Below parameter defines how often ncmpcpp -## has to "synchronize" visualizer and audio outputs. -## 30 seconds is optimal value, but if you experience -## synchronization problems, set it to lower value. -## Keep in mind that sane values start with >=10. -## -# -visualizer_sync_interval = 30 -# -## -## Note: To enable spectrum frequency visualization -## you need to compile ncmpcpp with fftw3 support. -## -# -## Available values: spectrum, wave, wave_filled, ellipse. -## -visualizer_type = spectrum -# -#visualizer_look = ●▮ -visualizer_look = "●•" -# -#visualizer_color = blue, cyan, green, yellow, magenta, red -# -## Alternative subset of 256 colors for terminals that support it. -## -#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161 -# -##### system encoding ##### -## -## ncmpcpp should detect your charset encoding -## but if it failed to do so, you can specify -## charset encoding you are using here. -## -## Note: You can see whether your ncmpcpp build -## supports charset detection by checking output -## of `ncmpcpp --version`. -## -## Note: Since MPD uses UTF-8 by default, setting -## this option makes sense only if your encoding -## is different. -## -# -#system_encoding = "" -# -##### delays ##### -# -## Time of inactivity (in seconds) after playlist -## highlighting will be disabled (0 = always on). -## -#playlist_disable_highlight_delay = 5 -# -## Defines how long messages are supposed to be visible. -## -#message_delay_time = 5 -# -##### song format ##### -## -## For a song format you can use: -## -## %l - length -## %f - filename -## %D - directory -## %a - artist -## %A - album artist -## %t - title -## %b - album -## %y - date -## %n - track number (01/12 -> 01) -## %N - full track info (01/12 -> 01/12) -## %g - genre -## %c - composer -## %p - performer -## %d - disc -## %C - comment -## %P - priority -## $R - begin right alignment -## -## If you want to make sure that a part of the format is displayed -## only when certain tags are present, you can archieve it by -## grouping them with brackets, e.g. '{%a - %t}' will be evaluated -## to 'ARTIST - TITLE' if both tags are present or '' otherwise. -## It is also possible to define a list of alternatives by providing -## several groups and separating them with '|', e.g. '{%t}|{%f}' -## will be evaluated to 'TITLE' or 'FILENAME' if the former is not -## present. -## -## Note: If you want to set limit on maximal length of a tag, just -## put the appropriate number between % and character that defines -## tag type, e.g. to make album take max. 20 terminal cells, use '%20b'. -## -## In addition, formats support markers used for text attributes. -## They are followed by character '$'. After that you can put: -## -## - 0 - default window color (discards all other colors) -## - 1 - black -## - 2 - red -## - 3 - green -## - 4 - yellow -## - 5 - blue -## - 6 - magenta -## - 7 - cyan -## - 8 - white -## - 9 - end of current color -## - b - bold text -## - u - underline text -## - r - reverse colors -## - a - use alternative character set -## -## If you don't want to use a non-color attribute anymore, just put it -## again, but this time insert character '/' between '$' and attribute -## character, e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag -## or filename with reversed colors. -## -## If you want to use 256 colors and/or background colors in formats -## (the naming scheme is described below in section about color -## definitions), it can be done with the syntax $(COLOR), e.g. to set -## the artist tag to one of the non-standard colors and make it have -## yellow background, you need to write $(197_yellow)%a$(end). Note -## that for standard colors this is interchangable with attributes -## listed above. -## -## Note: colors can be nested. -## -# -#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9} -# -#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f} -# -#song_library_format = {%n - }{%t}|{%f} -# -# -#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b -# -#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D} -# -#now_playing_prefix = $b -# -#now_playing_suffix = $/b -# -#browser_playlist_prefix = "$2playlist$9 " -# -#selected_item_prefix = $6 -# -#selected_item_suffix = $9 -# -#modified_item_prefix = $3> $9 -# -## -## Note: attributes are not supported for the following variables. -## -#song_window_title_format = {%a - }{%t}|{%f} -## -## Note: Below variables are used for sorting songs in browser. -## The sort mode determines how songs are sorted, and can be used -## in combination with a sort format to specify a custom sorting format. -## Available values for browser_sort_mode are "name", "mtime", "format" -## and "noop". -## -# -#browser_sort_mode = name -# -#browser_sort_format = {%a - }{%t}|{%f} {(%l)} -# -##### columns settings ##### -## -## syntax of song columns list format is "column column etc." -## -## - syntax for each column is: -## -## (width of the column)[color of the column]{displayed tag} -## -## Note: Width is by default in %, if you want a column to -## have fixed size, add 'f' after the value, e.g. (10)[white]{a} -## will be the column that take 10% of screen (so the real width -## will depend on actual screen size), whereas (10f)[white]{a} -## will take 10 terminal cells, no matter how wide the screen is. -## -## - color is optional (if you want the default one, -## leave the field empty). -## -## Note: You can give a column additional attributes by putting appropriate -## character after displayed tag character. Available attributes are: -## -## - r - column will be right aligned -## - E - if tag is empty, empty tag marker won't be displayed -## -## You can also: -## -## - give a column custom name by putting it after attributes, -## separated with character ':', e.g. {lr:Length} gives you -## right aligned column of lengths named "Length". -## -## - define sequence of tags, that have to be displayed in case -## predecessor is empty in a way similar to the one in classic -## song format, i.e. using '|' character, e.g. {a|c|p:Owner} -## creates column named "Owner" that tries to display artist -## tag and then composer and performer if previous ones are -## not available. -## -# -#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l} -# -##### various settings ##### -# -## -## Note: Custom command that will be executed each -## time song changes. Useful for notifications etc. -## -#execute_on_song_change = "" -# -#playlist_show_mpd_host = no -# -#playlist_show_remaining_time = no -# -#playlist_shorten_total_times = no -# -#playlist_separate_albums = no -# -## -## Note: Possible display modes: classic, columns. -## -#playlist_display_mode = columns -# -#browser_display_mode = classic -# -#search_engine_display_mode = classic -# -#playlist_editor_display_mode = classic -# -#discard_colors_if_item_is_selected = yes -# -#incremental_seeking = yes -# -#seek_time = 1 -# -#volume_change_step = 2 -# -#autocenter_mode = no -# -#centered_cursor = no -# -## -## Note: You can specify third character which will -## be used to build 'empty' part of progressbar. -## -#progressbar_look = => -progressbar_look = "─╼╶" -#progressbar_look = "─⊙╶" -# -#progressbar_boldness = yes -# -## Available values: database, playlist. -## -#default_place_to_search_in = database -# -## Available values: classic, alternative. -## -#user_interface = classic -# -#data_fetching_delay = yes -# -## Available values: artist, album_artist, date, genre, composer, performer. -## -#media_library_primary_tag = artist -# -## Available values: wrapped, normal. -## -#default_find_mode = wrapped -# -#default_tag_editor_pattern = %n - %t -# -#header_visibility = yes -# -#statusbar_visibility = yes -# -#titles_visibility = yes -# -#header_text_scrolling = yes -# -#cyclic_scrolling = no -# -#lines_scrolled = 2 -# -#follow_now_playing_lyrics = no -# -#fetch_lyrics_for_current_song_in_background = no -# -#store_lyrics_in_song_dir = no -# -#generate_win32_compatible_filenames = yes -# -#allow_for_physical_item_deletion = no -# -## -## Note: If you set this variable, ncmpcpp will try to -## get info from last.fm in language you set and if it -## fails, it will fall back to english. Otherwise it will -## use english the first time. -## -## Note: Language has to be expressed as an ISO 639 alpha-2 code. -## -#lastfm_preferred_language = en -# -#show_hidden_files_in_local_browser = no -# -## -## How shall screen switcher work? -## -## - "previous" - switch between the current and previous screen. -## - "screen1,...,screenN" - switch between given sequence of screens. -## -## Screens available for use: help, playlist, browser, search_engine, -## media_library, playlist_editor, tag_editor, outputs, visualizer, clock. -## -#screen_switcher_mode = playlist, browser -# -## -## Note: You can define startup screen -## by choosing screen from the list above. -## -#startup_screen = playlist -# -## -## Note: You can define startup slave screen -## by choosing screen from the list above or -## an empty value for no slave screen. -## -#startup_slave_screen = "" -# -#startup_slave_screen_focus = no -# -## -## Default width of locked screen (in %). -## Acceptable values are from 20 to 80. -## -# -#locked_screen_width_part = 50 -# -#ask_for_locked_screen_width_part = yes -# -#jump_to_now_playing_song_at_start = yes -# -#ask_before_clearing_playlists = yes -# -#clock_display_seconds = no -# -#display_volume_level = yes -# -#display_bitrate = no -# -#display_remaining_time = no -# -## Available values: none, basic, extended, perl. -## -#regular_expressions = perl -# -## -## Note: If below is enabled, ncmpcpp will ignore leading -## "The" word while sorting items in browser, tags in -## media library, etc. -## -#ignore_leading_the = no -# -#block_search_constraints_change_if_items_found = yes -# -#mouse_support = yes -# -#mouse_list_scroll_whole_page = yes -# -#empty_tag_marker = -# -#tags_separator = " | " -# -#tag_editor_extended_numeration = no -# -#media_library_sort_by_mtime = no -# -#enable_window_title = yes -# -## -## Note: You can choose default search mode for search -## engine. Available modes are: -## -## - 1 - use mpd built-in searching (no regexes, pattern matching) -## - 2 - use ncmpcpp searching (pattern matching with support for regexes, -## but if your mpd is on a remote machine, downloading big database -## to process it can take a while -## - 3 - match only exact values (this mode uses mpd function for searching -## in database and local one for searching in current playlist) -## -# -#search_engine_default_search_mode = 1 -# -#external_editor = nano -# -## Note: set to yes if external editor is a console application. -## -#use_console_editor = yes -# -##### colors definitions ##### -## -## It is possible to set a background color by setting a color -## value "_", e.g. red_black will set -## foregound color to red and background color to black. -## -## In addition, for terminals that support 256 colors it -## is possible to set one of them by using a number in range -## [1, 256] instead of color name, e.g. numerical value -## corresponding to red_black is 2_1. To find out if the -## terminal supports 256 colors, run ncmpcpp and check out -## the bottom of the help screen for list of available colors -## and their numerical values. -## -## Note: due to technical limitations of ncurses, if 256 colors -## are used, it is possible to either use only the colors with -## default background color, or all pairs from 1_1 up to 254_127, -## depending on the ncurses version used. -## -# -#colors_enabled = yes -# -#empty_tag_color = cyan -# -#header_window_color = default -# -#volume_color = default -# -#state_line_color = default -# -#state_flags_color = default -# -#main_window_color = yellow -# -#color1 = white -# -#color2 = green -# -#main_window_highlight_color = yellow -# -#progressbar_color = black -# -#progressbar_elapsed_color = green -# -#statusbar_color = default -# -#alternative_ui_separator_color = black -# -#active_column_color = red -# -#window_border_color = green -# -#active_window_border = red -# -#+end_src - -*** bindings -:PROPERTIES: -:header-args+: :tangle ~/.ncmpcpp/bindings -:END: - -#+begin_src conf :tangle no -def_key "j" - scroll_down -def_key "k" - scroll_up - -def_key "ctrl-u" - page_up -def_key "ctrl-d" - page_down - -def_key "h" - previous_column -def_key "l" - next_column - -def_key "." - show_lyrics - -def_key "n" - next_found_item -def_key "N" - previous_found_item - -def_key "J" - move_sort_order_down -def_key "K" - move_sort_order_up -#+end_src - -** pigeonhole -*** amin.sieve -:PROPERTIES: -:header-args+: :tangle ~/mail/bndl.org/amin/sieve/amin.sieve :comments none -:END: - -#+begin_src conf -require ["regex", "variables", "fileinto", "envelope", - "mailbox", "imap4flags", "include"]; - -# webmasters -if anyof ( - address :is "from" ["webmasters@gnu.org", "webmasters-comment@gnu.org"]) { - fileinto :create "gnu.webmasters"; - stop; -} - -include :personal "lists"; -#+end_src - -*** lists.sieve -:PROPERTIES: -:header-args+: :tangle ~/mail/bndl.org/amin/sieve/lists.sieve :comments none -:END: - -#+begin_src conf -require ["regex", "variables", "fileinto", "envelope", - "mailbox", "imap4flags", "include"]; - -# mailing lists -if anyof ( - header :contains "list-id" - [ "" - , "" - , "" - , "" - , "" - , "" - , "" - , "" - , "" - , "" - , "" - , "" - , "" - , "" - , "" - ] ) { - if header :regex "list-id" "<([a-z_0-9-]+)[.@]" { - set :lower "listname" "${1}"; - fileinto :create "gnu.${listname}"; - stop; - } -} - -# sr.ht lists, with dots ('.') omitted -if anyof ( - header :contains "list-id" - [ "<~bandali/public-inbox@lists.sr.ht>" - , "<~sircmpwn/sr.ht-admins@lists.sr.ht>" - , "<~sircmpwn/sr.ht-announce@lists.sr.ht>" - , "<~sircmpwn/sr.ht-dev@lists.sr.ht>" - , "<~sircmpwn/sr.ht-discuss@lists.sr.ht>" - ] ) { - if header :regex "list-id" "(~[a-z_0-9-]+)/([^.]*)\\.?([^.]*)\\.?([^.]*)\\.?([^.]*)\\.?([^.]*)\\.?([^.]*)@" { - set :lower "username" "${1}"; - set :lower "listname" "${2}${3}${4}${5}${6}${7}"; - fileinto :create "gnu.${username}.${listname}"; - stop; - } -} -#+end_src - ** Readline :PROPERTIES: :header-args+: :tangle ~/.config/readline/inputrc @@ -2095,7 +1452,6 @@ fi export EDITOR="emacsclient -nw" export VISUAL="emcl" -PATH="$HOME/usr/local/bin:$HOME/.local/bin:$PATH" PATH="$HOME/.cabal/bin:$HOME/.cargo/bin:$HOME/.elan/bin:$PATH" if [ -z "$IS_GUIX_SYSTEM" ]; then PATH="$HOME/.config/guix/current/bin${PATH:+:}$PATH" @@ -2161,6 +1517,8 @@ for p in $MY_GUIX_PROFILES/*; do unset profile done +export PATH="$HOME/usr/local/bin:$HOME/.local/bin:$PATH" + # start an ssh-agent (with guix's openssh) if [ -z "$IS_GUIX_SYSTEM" ]; then if ! pgrep -u "$USER" ssh-agent > /dev/null; then @@ -2178,6 +1536,8 @@ fi # see https://docs.xfce.org/xfce/xfce4-session/advanced#ssh_and_gpg_agents # also, MATE does something similar with gnome-keyring-daemon: # http://william.shallum.net/random-notes/disabling-gnome-keyring-daemon-ssh-agent-on-mate-desktop + +export PATH="$HOME/.cargo/bin:$PATH" #+end_src *** per-host profiles @@ -2309,10 +1669,9 @@ adjustment-method=randr My email signature. #+begin_src -Amin Bandali +https://bndl.org Free Software activist | GNU maintainer & webmaster GPG: BE62 7373 8E61 6D6D 1B3A 08E8 A21A 0202 4881 6103 -https://bandali.eu.org #+end_src ** systemd @@ -2326,414 +1685,9 @@ TTYVTDisallocate=no ** TLP -*** langa +*** darrud -#+begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "langa")) "/sudo::/etc/default/tlp") -# ------------------------------------------------------------------------------ -# tlp - Parameters for power saving -# See full explanation: https://linrunner.de/en/tlp/docs/tlp-configuration.html - -# Notes: -# - Some parameters are disabled, remove the leading '#' to enable # them; -# shown values are suggestions not defaults -# - Default *: intrinsic default that is effective when the parameter is missing -# or disabled by a leading '#'; use PARAM="" to disable intrinsic defaults for -# parameters with text string values -# - Default : do nothing or use kernel/hardware defaults - -# Set to 0 to disable, 1 to enable TLP. -# Default: 0 -TLP_ENABLE=1 - -# Operation mode when no power supply can be detected: AC, BAT. -# Concerns some desktop and embedded hardware only. -# Default: -TLP_DEFAULT_MODE=AC - -# Operation mode select: 0=depend on power source, 1=always use TLP_DEFAULT_MODE -# Hint: use in conjunction with TLP_DEFAULT_MODE=BAT for BAT settings on AC. -# Default: 0 -TLP_PERSISTENT_DEFAULT=0 - -# Seconds laptop mode has to wait after the disk goes idle before doing a sync. -# Non-zero value enables, zero disables laptop mode. -# Default: 0 (AC), 2 (BAT) -DISK_IDLE_SECS_ON_AC=0 -DISK_IDLE_SECS_ON_BAT=2 - -# Dirty page values (timeouts in secs). -# Default: 15 (AC + BAT) -MAX_LOST_WORK_SECS_ON_AC=15 -MAX_LOST_WORK_SECS_ON_BAT=60 - -# Note: CPU parameters below are disabled by default, remove the leading # -# to enable them, otherwise kernel defaults will be used. - -# Select a CPU frequency scaling governor. -# Intel Core i processor with intel_pstate driver: -# powersave(*), performance. -# Older hardware with acpi-cpufreq driver: -# ondemand(*), powersave, performance, conservative, schedutil. -# (*) is recommended. -# Use tlp-stat -p to show the active driver and available governors. -# Important: -# powersave for intel_pstate and ondemand for acpi-cpufreq are power -# efficient for *almost all* workloads and therefore kernel and most -# distributions have chosen them as defaults. If you still want to change, -# you should know what you're doing! You *must* disable your distribution's -# governor settings or conflicts will occur. -# Default: -#CPU_SCALING_GOVERNOR_ON_AC=powersave -#CPU_SCALING_GOVERNOR_ON_BAT=powersave - -# Set the min/max frequency available for the scaling governor. -# Possible values depend on your CPU. For available frequencies see -# the output of tlp-stat -p. -# Default: -#CPU_SCALING_MIN_FREQ_ON_AC=0 -#CPU_SCALING_MAX_FREQ_ON_AC=0 -#CPU_SCALING_MIN_FREQ_ON_BAT=0 -#CPU_SCALING_MAX_FREQ_ON_BAT=0 - -# Set energy performance hints (HWP) for Intel P-state governor: -# performance, balance_performance, default, balance_power, power -# Values are given in order of increasing power saving. -# Note: Intel Skylake or newer CPU and Kernel >= 4.10 required. -# Default: -CPU_HWP_ON_AC=balance_performance -CPU_HWP_ON_BAT=balance_power - -# Set Intel P-state performance: 0..100 (%). -# Limit the max/min P-state to control the power dissipation of the CPU. -# Values are stated as a percentage of the available performance. -# Requires an Intel Core i processor with intel_pstate driver. -# Default: -#CPU_MIN_PERF_ON_AC=0 -#CPU_MAX_PERF_ON_AC=100 -#CPU_MIN_PERF_ON_BAT=0 -#CPU_MAX_PERF_ON_BAT=30 - -# Set the CPU "turbo boost" feature: 0=disable, 1=allow -# Requires an Intel Core i processor. -# Important: -# - This may conflict with your distribution's governor settings -# - A value of 1 does *not* activate boosting, it just allows it -# Default: -#CPU_BOOST_ON_AC=1 -#CPU_BOOST_ON_BAT=0 - -# Minimize number of used CPU cores/hyper-threads under light load conditions: -# 0=disable, 1=enable. -# Default: -SCHED_POWERSAVE_ON_AC=0 -SCHED_POWERSAVE_ON_BAT=1 - -# Kernel NMI Watchdog: -# 0=disable (default, saves power), 1=enable (for kernel debugging only). -# Default: -NMI_WATCHDOG=0 - -# Change CPU voltages aka "undervolting" - Kernel with PHC patch required. -# Frequency voltage pairs are written to: -# /sys/devices/system/cpu/cpu0/cpufreq/phc_controls -# CAUTION: only use this, if you thoroughly understand what you are doing! -# Default: . -#PHC_CONTROLS="F:V F:V F:V F:V" - -# Set CPU performance versus energy savings policy: -# performance, balance-performance, default, balance-power, power. -# Values are given in order of increasing power saving. -# Requires kernel module msr and x86_energy_perf_policy from linux-tools. -# Default: -ENERGY_PERF_POLICY_ON_AC=performance -ENERGY_PERF_POLICY_ON_BAT=balance-power - -# Disk devices; separate multiple devices with spaces. -# Devices can be specified by disk ID also (lookup with: tlp diskid). -# Note: DISK parameters below are effective only when this option is configured. -# Default: "nvme0n1 sda" -DISK_DEVICES="sda sdb" - -# Disk advanced power management level: 1..254, 255 (max saving, min, off). -# Levels 1..127 may spin down the disk; 255 allowable on most drives. -# Separate values for multiple disks with spaces. Use the special value 'keep' -# to keep the hardware default for the particular disk. -# Default: -DISK_APM_LEVEL_ON_AC="254 254" -DISK_APM_LEVEL_ON_BAT="128 128" - -# Hard disk spin down timeout: -# 0: spin down disabled -# 1..240: timeouts from 5s to 20min (in units of 5s) -# 241..251: timeouts from 30min to 5.5 hours (in units of 30min) -# See 'man hdparm' for details. -# Separate values for multiple disks with spaces. Use the special value 'keep' -# to keep the hardware default for the particular disk. -# Default: -#DISK_SPINDOWN_TIMEOUT_ON_AC="0 0" -#DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0" - -# Select I/O scheduler for the disk devices. -# Multi queue (blk-mq) schedulers: -# mq-deadline(*), none, kyber, bfq -# Single queue schedulers: -# deadline(*), cfq, bfq, noop -# (*) recommended. -# Separate values for multiple disks with spaces. Use the special value 'keep' -# to keep the kernel default scheduler for the particular disk. -# Notes: -# - Multi queue (blk-mq) may need kernel boot option 'scsi_mod.use_blk_mq=1' -# and 'modprobe mq-deadline-iosched|kyber|bfq' on kernels < 5.0 -# - Single queue schedulers are legacy now and were removed together with -# the old block layer in kernel 5.0 -# Default: keep -#DISK_IOSCHED="mq-deadline mq-deadline" - -# AHCI link power management (ALPM) for disk devices: -# min_power, med_power_with_dipm(*), medium_power, max_performance. -# (*) Kernel >= 4.15 required, then recommended. -# Multiple values separated with spaces are tried sequentially until success. -# Default: -SATA_LINKPWR_ON_AC="med_power_with_dipm max_performance" -SATA_LINKPWR_ON_BAT="med_power_with_dipm min_power" - -# Exclude host devices from AHCI link power management. -# Separate multiple hosts with spaces. -# Default: -#SATA_LINKPWR_BLACKLIST="host1" - -# Runtime Power Management for AHCI host and disks devices: -# on=disable, auto=enable. -# EXPERIMENTAL ** WARNING: auto may cause system lockups/data loss. -# Default: -#AHCI_RUNTIME_PM_ON_AC=on -#AHCI_RUNTIME_PM_ON_BAT=on - -# Seconds of inactivity before disk is suspended. -# Note: effective only when AHCI_RUNTIME_PM_ON_AC/BAT is activated. -# Default: 15 -AHCI_RUNTIME_PM_TIMEOUT=15 - -# PCI Express Active State Power Management (PCIe ASPM): -# default(*), performance, powersave. -# (*) keeps BIOS ASPM defaults (recommended) -# Default: -#PCIE_ASPM_ON_AC=default -#PCIE_ASPM_ON_BAT=default - -# Set the min/max/turbo frequency for the Intel GPU. -# Possible values depend on your hardware. For available frequencies see -# the output of tlp-stat -g. -# Default: -#INTEL_GPU_MIN_FREQ_ON_AC=0 -#INTEL_GPU_MIN_FREQ_ON_BAT=0 -#INTEL_GPU_MAX_FREQ_ON_AC=0 -#INTEL_GPU_MAX_FREQ_ON_BAT=0 -#INTEL_GPU_BOOST_FREQ_ON_AC=0 -#INTEL_GPU_BOOST_FREQ_ON_BAT=0 - -# Radeon graphics clock speed (profile method): low, mid, high, auto, default; -# auto = mid on BAT, high on AC. -# Default: default -RADEON_POWER_PROFILE_ON_AC=default -RADEON_POWER_PROFILE_ON_BAT=default - -# Radeon dynamic power management method (DPM): battery, performance. -# Default: -RADEON_DPM_STATE_ON_AC=performance -RADEON_DPM_STATE_ON_BAT=battery - -# Radeon DPM performance level: auto, low, high; auto is recommended. -# Note: effective only when RADEON_DPM_STATE_ON_AC/BAT is activated. -# Default: auto -RADEON_DPM_PERF_LEVEL_ON_AC=auto -RADEON_DPM_PERF_LEVEL_ON_BAT=auto - -# WiFi power saving mode: on=enable, off=disable; not supported by all adapters. -# Default: -WIFI_PWR_ON_AC=off -WIFI_PWR_ON_BAT=on - -# Disable wake on LAN: Y/N. -# Default: N -WOL_DISABLE=Y - -# Enable audio power saving for Intel HDA, AC97 devices (timeout in secs). -# A value of 0 disables, >=1 enables power saving (recommended: 1). -# Default: -SOUND_POWER_SAVE_ON_AC=0 -SOUND_POWER_SAVE_ON_BAT=0 - -# Disable controller too (HDA only): Y/N. -# Note: effective only when SOUND_POWER_SAVE_ON_AC/BAT is activated. -# Default: Y -SOUND_POWER_SAVE_CONTROLLER=N - -# Power off optical drive in UltraBay/MediaBay: 0=disable, 1=enable. -# Drive can be powered on again by releasing (and reinserting) the eject lever -# or by pressing the disc eject button on newer models. -# Note: an UltraBay/MediaBay hard disk is never powered off. -# Default: 0 -BAY_POWEROFF_ON_AC=0 -BAY_POWEROFF_ON_BAT=0 -# Optical drive device to power off -# Default: sr0 -BAY_DEVICE="sr0" - -# Runtime Power Management for PCI(e) bus devices: on=disable, auto=enable. -# Default: -RUNTIME_PM_ON_AC=on -RUNTIME_PM_ON_BAT=auto - -# Exclude PCI(e) device adresses the following list from Runtime PM -# (separate with spaces). Use lspci to get the adresses (1st column). -# Default: -#RUNTIME_PM_BLACKLIST="bb:dd.f 11:22.3 44:55.6" - -# Exclude PCI(e) devices assigned to the listed drivers from Runtime PM. -# Default when unconfigured is "amdgpu nouveau nvidia radeon" which -# prevents accidential power-on of dGPU in hybrid graphics setups. -# Separate multiple drivers with spaces. -# Default: "amdgpu mei_me nouveau nvidia pcieport radeon", use "" to disable -# completely. -#RUNTIME_PM_DRIVER_BLACKLIST="amdgpu mei_me nouveau nvidia pcieport radeon" - -# Set to 0 to disable, 1 to enable USB autosuspend feature. -# Default: 0 -USB_AUTOSUSPEND=1 - -# Exclude listed devices from USB autosuspend (separate with spaces). -# Use lsusb to get the ids. -# Note: input devices (usbhid) are excluded automatically -# Default: -#USB_BLACKLIST="1111:2222 3333:4444" - -# Bluetooth devices are excluded from USB autosuspend: -# 0=do not exclude, 1=exclude. -# Default: 0 -USB_BLACKLIST_BTUSB=0 - -# Phone devices are excluded from USB autosuspend: -# 0=do not exclude, 1=exclude (enable charging). -# Default: 0 -USB_BLACKLIST_PHONE=0 - -# Printers are excluded from USB autosuspend: -# 0=do not exclude, 1=exclude. -# Default: 1 -USB_BLACKLIST_PRINTER=1 - -# WWAN devices are excluded from USB autosuspend: -# 0=do not exclude, 1=exclude. -# Default: 0 -USB_BLACKLIST_WWAN=0 - -# Include listed devices into USB autosuspend even if already excluded -# by the blacklists above (separate with spaces). Use lsusb to get the ids. -# Default: -#USB_WHITELIST="1111:2222 3333:4444" - -# Set to 1 to disable autosuspend before shutdown, 0 to do nothing -# (workaround for USB devices that cause shutdown problems). -# Default: 0 -#USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=1 - -# Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown -# on system startup: 0=disable, 1=enable. -# Note: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below -# are ignored when this is enabled. -# Default: 0 -#RESTORE_DEVICE_STATE_ON_STARTUP=0 -RESTORE_DEVICE_STATE_ON_STARTUP=1 - -# Radio devices to disable on startup: bluetooth, wifi, wwan. -# Separate multiple devices with spaces. -# Default: -#DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan" - -# Radio devices to enable on startup: bluetooth, wifi, wwan. -# Separate multiple devices with spaces. -# Default: -#DEVICES_TO_ENABLE_ON_STARTUP="wifi" - -# Radio devices to disable on shutdown: bluetooth, wifi, wwan. -# (workaround for devices that are blocking shutdown). -# Default: -#DEVICES_TO_DISABLE_ON_SHUTDOWN="bluetooth wifi wwan" - -# Radio devices to enable on shutdown: bluetooth, wifi, wwan. -# (to prevent other operating systems from missing radios). -# Default: -#DEVICES_TO_ENABLE_ON_SHUTDOWN="wwan" - -# Radio devices to enable on AC: bluetooth, wifi, wwan. -# Default: -#DEVICES_TO_ENABLE_ON_AC="bluetooth wifi wwan" - -# Radio devices to disable on battery: bluetooth, wifi, wwan. -# Default: -#DEVICES_TO_DISABLE_ON_BAT="bluetooth wifi wwan" -DEVICES_TO_DISABLE_ON_BAT="bluetooth" - -# Radio devices to disable on battery when not in use (not connected): -# bluetooth, wifi, wwan. -# Default: -#DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth wifi wwan" - -# Battery charge thresholds (ThinkPad only, tp-smapi or acpi-call kernel module -# required). Charging starts when the remaining capacity falls below the -# START_CHARGE_THRESH value and stops when exceeding the STOP_CHARGE_THRESH value. -# Main / Internal battery (values in %) -# Default: -#START_CHARGE_THRESH_BAT0=75 -#STOP_CHARGE_THRESH_BAT0=80 -# Ultrabay / Slice / Replaceable battery (values in %) -# Default: -#START_CHARGE_THRESH_BAT1=75 -#STOP_CHARGE_THRESH_BAT1=80 - -# Restore charge thresholds when AC is unplugged: 0=disable, 1=enable. -# Default: 0 -#RESTORE_THRESHOLDS_ON_BAT=1 - -# Battery feature drivers: 0=disable, 1=enable -# Default: 1 (all) -NATACPI_ENABLE=1 -TPACPI_ENABLE=1 -TPSMAPI_ENABLE=1 - -# ------------------------------------------------------------------------------ -# tlp-rdw - Parameters for the radio device wizard -# Possible devices: bluetooth, wifi, wwan. - -# Notes: -# - Parameters are disabled by default, remove the leading # to enable them -# - Separate multiple radio devices with spaces - -# Default: (for all parameters below) - -# Radio devices to disable on connect. -#DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan" -#DEVICES_TO_DISABLE_ON_WIFI_CONNECT="wwan" -#DEVICES_TO_DISABLE_ON_WWAN_CONNECT="wifi" - -# Radio devices to enable on disconnect. -#DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan" -#DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT="" -#DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT="" - -# Radio devices to enable/disable when docked. -#DEVICES_TO_ENABLE_ON_DOCK="" -#DEVICES_TO_DISABLE_ON_DOCK="" - -# Radio devices to enable/disable when undocked. -#DEVICES_TO_ENABLE_ON_UNDOCK="wifi" -#DEVICES_TO_DISABLE_ON_UNDOCK="" -#+end_src - -*** shemshak - -#+begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "shemshak")) "/sudo::/etc/default/tlp") +#+begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "darrud")) "/sudo::/etc/default/tlp") # ------------------------------------------------------------------------------ # tlp - Parameters for power saving # See full explanation: http://linrunner.de/en/tlp/docs/tlp-configuration.html @@ -2779,6 +1733,8 @@ MAX_LOST_WORK_SECS_ON_BAT=60 # governor settings or conflicts will occur. #CPU_SCALING_GOVERNOR_ON_AC=powersave #CPU_SCALING_GOVERNOR_ON_BAT=powersave +CPU_SCALING_GOVERNOR_ON_AC=conservative +CPU_SCALING_GOVERNOR_ON_BAT=conservative # Set the min/max frequency available for the scaling governor. # Possible values strongly depend on your CPU. For available frequencies see @@ -3044,6 +2000,51 @@ RESTORE_DEVICE_STATE_ON_STARTUP=1 #DEVICES_TO_DISABLE_ON_UNDOCK="" #+end_src +** Tridactyl +:PROPERTIES: +:header-args+: :tangle ~/.config/tridactyl/tridactylrc +:END: + +#+begin_src conf +bind n scrollline 2 +bind p scrollline -2 + +bind 0 scrollto 0 x +bind - scrollto 100 x + +bind P tabprev +bind N tabnext + +bind d scrollpage 0.5 +bind u scrollpage -0.5 +unbind +unbind + +bind x tabclose +bind X undo +bind stop + +bind gd tabduplicate +bind gw tabdetach + +bind O fillcmdline bmarks + +bind ; fillcmdline_notrail + +unbind + +set hintfiltermode vimperator-reflow +set hintnames numeric +set urlparenttrailingslash false + +set browser abrowser +" set newtab https://bandali.eu.org + +seturl warrior.uwaterloo.ca noiframe true + +" autocmd DocStart www.reddit.com js tri.excmds.urlmodify("-t", "www", "old") +#+end_src + ** X *** xinit @@ -3073,7 +2074,8 @@ Emacs.menuBar: off Emacs.toolBar: off Emacs.verticalScrollBars: off Emacs.cursorBlink: off -Emacs.FontBackend: xft,x +Emacs.FontBackend: ftcrhb,x +!Emacs.FontBackend: xft,x ! Emacs.font: Ubuntu Mono-12 ! Emacs.font: Triplicate T4C-11 ! Emacs.font: Ubuntu Mono-10.5 @@ -3087,6 +2089,7 @@ Emacs.FontBackend: xft,x ! Emacs.font: Inconsolata LGC:size=14 ! Emacs.font: Source Code Pro Medium-10.5 Emacs.font: Source Code Pro Medium:size=14 +!Emacs.font: Vazir:size=14 ! Emacs.font: Ubuntu Mono:size=16 ! Emacs.font: Iosevka:size=16 #+end_src @@ -3379,3 +2382,250 @@ map [normal] i toggle_index map [index] i toggle_index map [index] q toggle_index #+end_src + +* Scripts + +This section contains various useful scripts including ones used by +the programs above. For instance, =toggle-tablet= for switching to +and from tablet mode on my X220T, =toggle-presentation-mode= for +toggling Xfce's presentation mode which keeps the screen awake, and +=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 +exact brightness value. + +** battery-percentage-time +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/battery-percentage-time :shebang "#!/bin/sh" +:END: + +#+begin_src sh :tangle no +dbus_send() { + label=$1 + dbus-send --print-reply=literal --system \ + --dest=org.freedesktop.UPower \ + /org/freedesktop/UPower/devices/battery_BAT0 \ + org.freedesktop.DBus.Properties.Get \ + string:org.freedesktop.UPower.Device \ + string:"${label}" | awk '{print $3}' +} + +perc=$(dbus_send 'Percentage') +state=$(dbus_send 'State') + +if [ "$state" -eq 2 ]; then # Discharging + secs=$(dbus_send 'TimeToEmpty') +elif [ "$state" -eq 1 ]; then # Charging + secs=$(dbus_send 'TimeToFull') +fi + +printf '%s%%%%%2dh%02dm \n' "$perc" $((secs / 3600)) $((secs % 3600 / 60)) +#+end_src + +** emcl +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/emcl :shebang "#!/bin/sh" +:END: + +#+begin_src sh +exec emacsclient --alternate-editor="" -c "$@" +#+end_src + +** my-i3status +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/my-i3status :shebang "#!/usr/bin/env python2" +:END: + +#+begin_src python +# -*- coding: utf-8 -*- + +# This script is a simple wrapper which prefixes each i3status line with custom +# information. It is based on: +# https://github.com/i3/i3status/blob/master/contrib/wrapper.py +# +# In ~/.i3status.conf, add the following line: +# output_format = "i3bar" +# in the 'general' section. +# Then, in ~/.config/i3/config or ~/.config/sway/config add: +# status_command i3status | my-i3status.py +# in the 'bar' section. Make sure my-i3status.py is in $PATH. +# +# © 2012 Valentin Haenel +# © 2018 Amin Bandali +# +# This program is free software. It comes without any warranty, to the extent +# permitted by applicable law. You can redistribute it and/or modify it under +# the terms of the Do What The Fuck You Want To Public License (WTFPL), Version +# 2, as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more +# details. + +import sys +import json +import os + +def get_nosleep(): + """ Return true if ~/.nosleep exists. """ + return os.path.isfile(os.path.expanduser("~/.nosleep")) + +def print_line(message): + """ Non-buffered printing to stdout. """ + sys.stdout.write(message + '\n') + sys.stdout.flush() + +def read_line(): + """ Interrupted respecting reader for stdin. """ + # try reading a line, removing any extra whitespace + try: + line = sys.stdin.readline().strip() + # i3status sends EOF, or an empty line + if not line: + sys.exit(3) + return line + # exit on ctrl-c + except KeyboardInterrupt: + sys.exit() + +if __name__ == '__main__': + # Skip the first line which contains the version header. + print_line(read_line()) + + # The second line contains the start of the infinite array. + print_line(read_line()) + + while True: + line, prefix = read_line(), '' + # ignore comma at start of lines + if line.startswith(','): + line, prefix = line[1:], ',' + + if get_nosleep(): + j = json.loads(line) + # insert information into the start of the json, but could be anywhere + j.insert(0, {'full_text' : '•', 'name' : 'nosleep'}) + # and echo back new encoded json + print_line(prefix+json.dumps(j)) + else: + print_line(prefix+line) +#+end_src + +** rofi-light +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/rofi-light :shebang "#!/bin/sh" +:END: + +#+begin_src sh +cur=$(light -G) +val=$(rofi -dmenu -mesg "light $cur" -p "light -S " -l 0 -width 12) +[ -n "$val" ] && light -S "$val" +#+end_src + +** rofi-remmina +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/rofi-remmina :shebang "#!/usr/bin/env python2" +:END: + +#+begin_src python +import ConfigParser +import os +from subprocess import Popen, PIPE + +remmina_dir = os.path.expanduser("~/.local/share/remmina") + +fdict = dict() + +for f in os.listdir(remmina_dir): + fp = os.path.join(remmina_dir, f) + c = ConfigParser.ConfigParser() + c.read(fp) + n = c.get('remmina', 'name') + fdict[n] = fp + +lines = max(min(15, len(fdict)), 1); +width = len(max(fdict.keys(), key=len)) +rofi = Popen(["rofi", "-i", "-dmenu", \ + "-l", str(lines), "-width", str(width), \ + "-p", "connection"], stdout=PIPE, stdin=PIPE) +selected = rofi.communicate("\n" \ + .join(fdict.keys()) \ + .encode("utf-8"))[0] \ + .decode("utf-8") \ + .strip() +rofi.wait() + +r = Popen(["remmina", "-c", fdict[selected]]) +r.wait() +#+end_src + +** toggle-presentation-mode +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/toggle-presentation-mode :shebang "#!/bin/sh" +:END: + +#+begin_src sh +xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/presentation-mode -T +#+end_src + +** toggle-tablet +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/toggle-tablet :shebang "#!/bin/sh" +:END: + +#+begin_src sh +# This script toggles between a 'normal' mode and a 'tablet' mode, doing +# a few things: + +# - rotates the screen using =xrandr=, so that rotating the physical +# display of my X220t would have the laptop's battery on the right +# hand side, +# - enables touch screen, +# - properly rotates the stylus pen and touch screen pointers, and +# - toggles between RGB and Vertical BGR sub-pixel order. + +case $(xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation) in + 0) # Screen is not rotated, we should rotate it right (90°) + xrandr -o 3 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation -s 1 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Device_Enabled -s 1 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Wacom_Rotation -s 1 + xfconf-query -c xsettings -p /Xft/RGBA -s vbgr + ;; + 1) # Currently top is rotated right, we should set it normal (0°) + xrandr -o 0 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation -s 0 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Wacom_Rotation -s 0 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Device_Enabled -s 0 + xfconf-query -c xsettings -p /Xft/RGBA -s rgb + ;; + ,*) + echo "Unknown result from 'xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation'" >&2 + exit 1 + ;; +esac +#+end_src + +** volume-info +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/volume-info :shebang "#!/bin/sh" +:END: + +#+begin_src sh +cur_vol=$(pamixer --get-volume) + +if [ $(pamixer --get-mute) = true ]; then + printf 'mt \n' "$cur_vol" +else + printf '%02d \n' "$cur_vol" +fi +#+end_src + +** zathura-sync +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/zathura-sync :shebang "#!/bin/sh" +:END: + +#+begin_src sh +pos="$1" +pdffile="$2" +zathura --synctex-forward "$pos" "$pdffile" || \ + ( + zathura -x "emacsclient --eval '(progn (switch-to-buffer (file-name-nondirectory \"%{input}\")) (goto-line %{line}))'" "$pdffile" & + sleep 1; zathura --synctex-forward "$pos" "$pdffile" ) +#+end_src