#+title: rc.org #+property: header-args :comments link :mkdirp yes :results silent * About This org file contains the configuration files of pretty much every program I use. The files are tangled (i.e. exported, or derived) from this file using =org-babel=. Note: This file is best viewed inside Emacs with org mode. * Configs This section contains the configuration files (dotfiles) of various programs I use. ** dovecot :PROPERTIES: :header-args+: :tangle "/sudo::/etc/dovecot/dovecot.conf" :END: #+begin_src conf protocols = imap listen = 127.0.0.1 log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log ssl = no disable_plaintext_auth = no auth_verbose = yes auth_mechanisms = plain passdb { driver = passwd-file args = /etc/dovecot/passwd } userdb { driver = static args = uid=amin gid=amin home=/home/amin/mail/%d/%n default_fields = mail=maildir:/home/amin/mail/%d/%n/mail } # mail_home = /home/amin/mail/%d/%n # mail_location = maildir:/home/amin/mail/%d/%n/mail:LAYOUT=fs:INBOX=/home/amin/mail/%d/%n/mail/Inbox # namespace { # inbox = yes # separator = / # } mail_plugins = $mail_plugins fts fts_lucene plugin { fts = lucene fts_lucene = whitespace_chars=@. fts_autoindex = yes } #+end_src ** libinput Improve XPS 15 9560's touchpad experience. # begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "plasma")) "/sudo::/etc/X11/xorg.conf.d/30-touchpad.conf") #+begin_src conf :tangle no Section "InputClass" Identifier "libinput touchpad catchall" Driver "libinput" MatchIsTouchpad "on" Option "ClickMethod" "clickfinger" Option "NaturalScrolling" "true" Option "Tapping" "on" Option "TappingButtonMap" "lrm" EndSection #+end_src ** mkinitcpio #+begin_src conf :tangle /sudo::/etc/mkinitcpio.conf :comments none # vim:set ft=sh # MODULES # The following modules are loaded before any boot hooks are # run. Advanced users may wish to specify all system modules # in this array. For instance: # MODULES=(piix ide_disk reiserfs) MODULES=(i915) # BINARIES # This setting includes any additional binaries a given user may # wish into the CPIO image. This is run last, so it may be used to # override the actual binaries included by a given hook # BINARIES are dependency parsed, so you may safely ignore libraries BINARIES=() # FILES # This setting is similar to BINARIES above, however, files are added # as-is and are not parsed in any way. This is useful for config files. FILES=() # HOOKS # This is the most important setting in this file. The HOOKS control the # modules and scripts added to the image, and what happens at boot time. # Order is important, and it is recommended that you do not change the # order in which HOOKS are added. Run 'mkinitcpio -H ' for # help on a given hook. # 'base' is _required_ unless you know precisely what you are doing. # 'udev' is _required_ in order to automatically load modules # 'filesystems' is _required_ unless you specify your fs modules in MODULES # Examples: ## This setup specifies all modules in the MODULES setting above. ## No raid, lvm2, or encrypted root is needed. # HOOKS=(base) # ## This setup will autodetect all modules for your system and should ## work as a sane default # HOOKS=(base udev autodetect block filesystems) # ## This setup will generate a 'full' image which supports most systems. ## No autodetection is done. # HOOKS=(base udev block filesystems) # ## This setup assembles a pata mdadm array with an encrypted root FS. ## Note: See 'mkinitcpio -H mdadm' for more information on raid devices. # HOOKS=(base udev block mdadm encrypt filesystems) # ## This setup loads an lvm2 volume group on a usb device. # HOOKS=(base udev block lvm2 filesystems) # ## NOTE: If you have /usr on a separate partition, you MUST include the # usr, fsck and shutdown hooks. HOOKS=(base udev autodetect modconf block keyboard encrypt lvm2 resume filesystems fsck) # COMPRESSION # Use this to compress the initramfs image. By default, gzip compression # is used. Use 'cat' to create an uncompressed image. #COMPRESSION="gzip" #COMPRESSION="bzip2" #COMPRESSION="lzma" #COMPRESSION="xz" #COMPRESSION="lzop" #COMPRESSION="lz4" # COMPRESSION_OPTIONS # Additional options for the compressor #COMPRESSION_OPTIONS=() #+end_src ** mpd :PROPERTIES: :header-args+: :tangle ~/.config/mpd/mpd.conf :END: #+begin_src conf # An example configuration file for MPD. # Read the user manual for documentation: http://www.musicpd.org/doc/user/ # Files and directories ####################################################### # # This setting controls the top directory which MPD will search to discover the # available audio files and add them to the daemon's online database. This # setting defaults to the XDG directory, otherwise the music directory will be # be disabled and audio files will only be accepted over ipc socket (using # file:// protocol) or streaming files over an accepted protocol. # music_directory "~/usr/music" # # This setting sets the MPD internal playlist directory. The purpose of this # directory is storage for playlists created by MPD. The server will use # playlist files not created by the server but only if they are in the MPD # format. This setting defaults to playlist saving being disabled. # playlist_directory "~/.mpd/playlists" # # This setting sets the location of the MPD database. This file is used to # load the database at server start up and store the database while the # server is not up. This setting defaults to disabled which will allow # MPD to accept files over ipc socket (using file:// protocol) or streaming # files over an accepted protocol. # db_file "~/.mpd/database" # # These settings are the locations for the daemon log files for the daemon. # These logs are great for troubleshooting, depending on your log_level # settings. # # The special value "syslog" makes MPD use the local syslog daemon. This # setting defaults to logging to syslog, otherwise logging is disabled. # log_file "~/.mpd/log" # # This setting sets the location of the file which stores the process ID # for use of mpd --kill and some init scripts. This setting is disabled by # default and the pid file will not be stored. # pid_file "~/.mpd/pid" # # This setting sets the location of the file which contains information about # most variables to get MPD back into the same general shape it was in before # it was brought down. This setting is disabled by default and the server # state will be reset on server start up. # state_file "~/.mpd/state" # # The location of the sticker database. This is a database which # manages dynamic information attached to songs. # sticker_file "~/.mpd/sticker.sql" # ############################################################################### # General music daemon options ################################################ # # This setting specifies the user that MPD will run as. MPD should never run as # root and you may use this setting to make MPD change its user ID after # initialization. This setting is disabled by default and MPD is run as the # current user. # #user "nobody" # # This setting specifies the group that MPD will run as. If not specified # primary group of user specified with "user" setting will be used (if set). # This is useful if MPD needs to be a member of group such as "audio" to # have permission to use sound card. # #group "nogroup" # # This setting sets the address for the daemon to listen on. Careful attention # should be paid if this is assigned to anything other then the default, any. # This setting can deny access to control of the daemon. Not effective if # systemd socket activiation is in use. # # For network #bind_to_address "any" # # And for Unix Socket #bind_to_address "~/.mpd/socket" # # This setting is the TCP port that is desired for the daemon to get assigned # to. # #port "6600" # # This setting controls the type of information which is logged. Available # setting arguments are "default", "secure" or "verbose". The "verbose" setting # argument is recommended for troubleshooting, though can quickly stretch # available resources on limited hardware storage. # #log_level "default" # # If you have a problem with your MP3s ending abruptly it is recommended that # you set this argument to "no" to attempt to fix the problem. If this solves # the problem, it is highly recommended to fix the MP3 files with vbrfix # (available from ), at which # point gapless MP3 playback can be enabled. # #gapless_mp3_playback "yes" # # Setting "restore_paused" to "yes" puts MPD into pause mode instead # of starting playback after startup. # #restore_paused "no" # # This setting enables MPD to create playlists in a format usable by other # music players. # #save_absolute_paths_in_playlists "no" # # This setting defines a list of tag types that will be extracted during the # audio file discovery process. The complete list of possible values can be # found in the user manual. #metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" # # This setting enables automatic update of MPD's database when files in # music_directory are changed. # #auto_update "yes" # # Limit the depth of the directories being watched, 0 means only watch # the music directory itself. There is no limit by default. # #auto_update_depth "3" # ############################################################################### # Symbolic link behavior ###################################################### # # If this setting is set to "yes", MPD will discover audio files by following # symbolic links outside of the configured music_directory. # #follow_outside_symlinks "yes" # # If this setting is set to "yes", MPD will discover audio files by following # symbolic links inside of the configured music_directory. # #follow_inside_symlinks "yes" # ############################################################################### # Zeroconf / Avahi Service Discovery ########################################## # # If this setting is set to "yes", service information will be published with # Zeroconf / Avahi. # #zeroconf_enabled "yes" # # The argument to this setting will be the Zeroconf / Avahi unique name for # this MPD server on the network. # #zeroconf_name "Music Player" # ############################################################################### # Permissions ################################################################# # # If this setting is set, MPD will require password authorization. The password # setting can be specified multiple times for different password profiles. # #password "password@read,add,control,admin" # # This setting specifies the permissions a user has who has not yet logged in. # #default_permissions "read,add,control,admin" # ############################################################################### # Database ####################################################################### # #database { # plugin "proxy" # host "other.mpd.host" # port "6600" #} # Input ####################################################################### # input { plugin "curl" # proxy "proxy.isp.com:8080" # proxy_user "user" # proxy_password "password" } # ############################################################################### # Audio Output ################################################################ # audio_output { type "pulse" name "pulse audio" } audio_output { type "fifo" name "my_fifo" path "/tmp/mpd.fifo" format "44100:16:2" } # MPD supports various audio output types, as well as playing through multiple # audio outputs at the same time, through multiple audio_output settings # blocks. Setting this block is optional, though the server will only attempt # autodetection for one sound card. # # An example of an ALSA output: # #audio_output { # type "alsa" # name "My ALSA Device" ## device "hw:0,0" # optional ## mixer_type "hardware" # optional ## mixer_device "default" # optional ## mixer_control "PCM" # optional ## mixer_index "0" # optional #} # # An example of an OSS output: # #audio_output { # type "oss" # name "My OSS Device" ## device "/dev/dsp" # optional ## mixer_type "hardware" # optional ## mixer_device "/dev/mixer" # optional ## mixer_control "PCM" # optional #} # # An example of a shout output (for streaming to Icecast): # #audio_output { # type "shout" # encoder "vorbis" # optional # name "My Shout Stream" # host "localhost" # port "8000" # mount "/mpd.ogg" # password "hackme" # quality "5.0" # bitrate "128" # format "44100:16:1" ## protocol "icecast2" # optional ## user "source" # optional ## description "My Stream Description" # optional ## url "http://example.com" # optional ## genre "jazz" # optional ## public "no" # optional ## timeout "2" # optional ## mixer_type "software" # optional #} # # An example of a recorder output: # #audio_output { # type "recorder" # name "My recorder" # encoder "vorbis" # optional, vorbis or lame # path "/var/lib/mpd/recorder/mpd.ogg" ## quality "5.0" # do not define if bitrate is defined # bitrate "128" # do not define if quality is defined # format "44100:16:1" #} # # An example of a httpd output (built-in HTTP streaming server): # #audio_output { # type "httpd" # name "My HTTP Stream" # encoder "vorbis" # optional, vorbis or lame # port "8000" # bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 ## quality "5.0" # do not define if bitrate is defined # bitrate "128" # do not define if quality is defined # format "44100:16:1" # max_clients "0" # optional 0=no limit #} # # An example of a pulseaudio output (streaming to a remote pulseaudio server) # #audio_output { # type "pulse" # name "My Pulse Output" ## server "remote_server" # optional ## sink "remote_server_sink" # optional #} # # An example of a winmm output (Windows multimedia API). # #audio_output { # type "winmm" # name "My WinMM output" ## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional # or ## device "0" # optional ## mixer_type "hardware" # optional #} # # An example of an openal output. # #audio_output { # type "openal" # name "My OpenAL output" ## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional #} # # An example of an sndio output. # #audio_output { # type "sndio" # name "sndio output" # mixer_type "software" #} # # An example of an OS X output: # #audio_output { # type "osx" # name "My OS X Device" ## device "Built-in Output" # optional ## channel_map "-1,-1,0,1" # optional #} # ## Example "pipe" output: # #audio_output { # type "pipe" # name "my pipe" # command "aplay -f cd 2>/dev/null" ## Or if you're want to use AudioCompress # command "AudioCompress -m | aplay -f cd 2>/dev/null" ## Or to send raw PCM stream through PCM: # command "nc example.org 8765" # format "44100:16:2" #} # ## An example of a null output (for no audio output): # #audio_output { # type "null" # name "My Null Output" # mixer_type "none" # optional #} # ############################################################################### # Normalization automatic volume adjustments ################################## # # This setting specifies the type of ReplayGain to use. This setting can have # the argument "off", "album", "track" or "auto". "auto" is a special mode that # chooses between "track" and "album" depending on the current state of # random playback. If random playback is enabled then "track" mode is used. # See for more details about ReplayGain. # This setting is off by default. # #replaygain "album" # # This setting sets the pre-amp used for files that have ReplayGain tags. By # default this setting is disabled. # #replaygain_preamp "0" # # This setting sets the pre-amp used for files that do NOT have ReplayGain tags. # By default this setting is disabled. # #replaygain_missing_preamp "0" # # This setting enables or disables ReplayGain limiting. # MPD calculates actual amplification based on the ReplayGain tags # and replaygain_preamp / replaygain_missing_preamp setting. # If replaygain_limit is enabled MPD will never amplify audio signal # above its original level. If replaygain_limit is disabled such amplification # might occur. By default this setting is enabled. # #replaygain_limit "yes" # # This setting enables on-the-fly normalization volume adjustment. This will # result in the volume of all playing audio to be adjusted so the output has # equal "loudness". This setting is disabled by default. # #volume_normalization "no" # ############################################################################### # Character Encoding ########################################################## # # If file or directory names do not display correctly for your locale then you # may need to modify this setting. # #filesystem_charset "UTF-8" # ############################################################################### #+end_src ** 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 ** pacman *** conf #+begin_src conf :tangle /sudo::/etc/pacman.conf :comments none # # /etc/pacman.conf # # See the pacman.conf(5) manpage for option and repository directives # # GENERAL OPTIONS # [options] # The following paths are commented out with their default values listed. # If you wish to use different paths, uncomment and update the paths. #RootDir = / #DBPath = /var/lib/pacman/ #CacheDir = /var/cache/pacman/pkg/ #LogFile = /var/log/pacman.log #GPGDir = /etc/pacman.d/gnupg/ #HookDir = /etc/pacman.d/hooks/ HoldPkg = pacman glibc #XferCommand = /usr/bin/curl -L -C - -f -o %o %u #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u #CleanMethod = KeepInstalled #UseDelta = 0.7 Architecture = auto # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup #IgnorePkg = #IgnoreGroup = #NoUpgrade = #NoExtract = # Misc options #UseSyslog Color TotalDownload CheckSpace VerbosePkgLists # By default, pacman accepts packages signed by keys that its local keyring # trusts (see pacman-key and its man page), as well as unsigned packages. SigLevel = Required DatabaseOptional LocalFileSigLevel = Optional #RemoteFileSigLevel = Required # NOTE: You must run `pacman-key --init` before first using pacman; the local # keyring can then be populated with the keys of all Arch/Parabola packagers # with `pacman-key --populate archlinux` and `pacman-key --populate parabola`. # # REPOSITORIES # - can be defined here or included from another file # - pacman will search repositories in the order defined here # - local/custom mirrors can be added here or in separate files # - repositories listed first will take precedence when packages # have identical names, regardless of version number # - URLs will have $repo replaced by the name of the current repo # - URLs will have $arch replaced by the name of the architecture # # Repository entries are of the format: # [repo-name] # Server = ServerName # Include = IncludePath # # The header [repo-name] is crucial - it must be present and # uncommented to enable the repo. # # The testing repositories are disabled by default. To enable, uncomment the # repo name header and Include lines. You can add preferred servers immediately # after the header, and they will be used before the default mirrors. # NOTE: Nonprism is a particular repository that aims to provide software built # and patched without services under global data surveillance programs like PRISM, # XKeyscore and Tempora. For more info see: https://wiki.parabola.nu/Nonprism #[nonprism-testing] #Include = /etc/pacman.d/mirrorlist #[nonprism] #Include = /etc/pacman.d/mirrorlist [libre-testing] Include = /etc/pacman.d/mirrorlist [libre] Include = /etc/pacman.d/mirrorlist #[testing] #Include = /etc/pacman.d/mirrorlist [core] Include = /etc/pacman.d/mirrorlist [extra] Include = /etc/pacman.d/mirrorlist #[community-testing] #Include = /etc/pacman.d/mirrorlist [community] Include = /etc/pacman.d/mirrorlist # The PCR (Parabola Community Repository) contains packages maintained by trusted # members of the Parabola community. It also contains packages maintained by # Parabola developers, but that the developer decided didn't belong in core/libre. #[pcr-testing] #Include = /etc/pacman.d/mirrorlist [pcr] Include = /etc/pacman.d/mirrorlist # If you want to run 32 bit applications on your x86_64 system, # enable the libre-multilib, multilib and pcr-multilib repositories as required here. #[nonprism-multilib-testing] #Include = /etc/pacman.d/mirrorlist #[nonprism-multilib] #Include = /etc/pacman.d/mirrorlist #[libre-multilib-testing] #Include = /etc/pacman.d/mirrorlist #[libre-multilib] #Include = /etc/pacman.d/mirrorlist #[multilib-testing] #Include = /etc/pacman.d/mirrorlist #[multilib] #Include = /etc/pacman.d/mirrorlist #[pcr-multilib-testing] #Include = /etc/pacman.d/mirrorlist #[pcr-multilib] #Include = /etc/pacman.d/mirrorlist # Parabola also supports another community projects and personal repositories, to # find them check out this wiki page: https://wiki.parabola.nu/Repositories # An example of a custom package repository. See the pacman manpage for # tips on creating your own repositories. #[custom] #SigLevel = Optional TrustAll #Server = file:///home/custompkgs Include = /etc/pacman.d/*.conf #+end_src *** mirrorlist #+begin_src conf :tangle /sudo::/etc/pacman.d/mirrorlist :comments none # Parabola GNU/Linux-libre - Last Updated: Wed Dec 20 02:59:35 GMT 2017 Server = http://mirror.fsf.org/parabola/$repo/os/$arch Server = http://mirror.fsf.org/parabola/$repo/os/$arch Server = http://mirror.fsf.org/parabola/$repo/os/$arch Server = http://mirror.fsf.org/parabola/$repo/os/$arch # Location: London, UK # Responsible: Parabola Project # Note: Not really a mirror, automatically redirects you to an Arch # mirror when possible. Works best specifying it a few times in a # row (404s workaround). # Server = http://redirector.parabola.nu/$repo/os/$arch Server = https://redirector.parabola.nu/$repo/os/$arch # Location: Reykjavík, Iceland # Responsible: Parabola Project # Note: Not really a mirror, automatically redirects you to a Parabola # mirror that has the file you are looking for. # Server = http://repomirror.parabola.nu/$repo/os/$arch Server = https://repomirror.parabola.nu/$repo/os/$arch # Location: Falkenstein, Germany # Server = http://mirror.grapentin.org/parabola/$repo/os/$arch Server = https://mirror.grapentin.org/parabola/$repo/os/$arch # Location: Volendam, Netherlands Server = https://jeweet.net/repo/parabola/$repo/os/$arch # Location: Amsterdam, Netherlands # Note: Not really a mirror, but a high-speed 10GiB cache for # mirror.yandex.ru/mirrors/parabola # Server = http://parabola.isacdaavid.info:8080/$repo/os/$arch Server = https://parabola.isacdaavid.info:8081/$repo/os/$arch # Location: Moscow, Russian Federation # Server = http://mirror.yandex.ru/mirrors/parabola/$repo/os/$arch Server = https://mirror.yandex.ru/mirrors/parabola/$repo/os/$arch # Location: Ho Chi Minh City, Vietnam # Server = http://mirror.freedif.org/Parabola/$repo/os/$arch Server = https://mirror.freedif.org/Parabola/$repo/os/$arch # Location: Los Angeles, CA, USA # Note: Also visit http://alfplayer.com/ for its SNAPSHOTS ARCHIVE Server = http://alfplayer.com/parabola/$repo/os/$arch # Location: Boston, MA, USA Server = http://mirror.fsf.org/parabola/$repo/os/$arch # Location: Austin, TX, USA # Server = http://parabola.serverpit.com/ Server = https://parabola.serverpit.com/ # Location: Reykjavík, Iceland # Responsible: Parabola Project # Note: Currently pointing to repomirror.parabola.nu # Server = http://repo.parabola.nu/$repo/os/$arch Server = https://repo.parabola.nu/$repo/os/$arch #+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 ** 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 ** 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 ** systemd Keep boot messages on tty1 (see [[https://wiki.archlinux.org/index.php/getty#Have_boot_messages_stay_on_tty1][here]]) #+begin_src conf :tangle /sudo::/etc/systemd/system/getty@tty1.service.d/noclear.conf [Service] TTYVTDisallocate=no #+end_src ** TLP *** langa #+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") # ------------------------------------------------------------------------------ # tlp - Parameters for power saving # See full explanation: http://linrunner.de/en/tlp/docs/tlp-configuration.html # Hint: some features are disabled by default, remove the leading # to enable # them. # Set to 0 to disable, 1 to enable TLP. TLP_ENABLE=1 # Operation mode when no power supply can be detected: AC, BAT. # Concerns some desktop and embedded hardware only. 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. 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. DISK_IDLE_SECS_ON_AC=0 DISK_IDLE_SECS_ON_BAT=2 # Dirty page values (timeouts in secs). MAX_LOST_WORK_SECS_ON_AC=15 MAX_LOST_WORK_SECS_ON_BAT=60 # Hint: CPU parameters below are disabled by default, remove the leading # # to enable them, otherwise kernel default values are 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. # Hint: 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. #CPU_SCALING_GOVERNOR_ON_AC=powersave #CPU_SCALING_GOVERNOR_ON_BAT=powersave # Set the min/max frequency available for the scaling governor. # Possible values strongly depend on your CPU. For available frequencies see # the output of tlp-stat -p. #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. 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. #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 #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. SCHED_POWERSAVE_ON_AC=0 SCHED_POWERSAVE_ON_BAT=1 # Kernel NMI Watchdog: # 0=disable (default, saves power), 1=enable (for kernel debugging only). 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! #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. ENERGY_PERF_POLICY_ON_AC=performance ENERGY_PERF_POLICY_ON_BAT=balance-power # Disk devices; separate multiple devices with spaces (default: sda). # Devices can be specified by disk ID also (lookup with: tlp diskid). 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. 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. #DISK_SPINDOWN_TIMEOUT_ON_AC="0 0" #DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0" # Select IO scheduler for the disk devices: cfq, deadline, noop (Default: cfq). # Separate values for multiple disks with spaces. Use the special value 'keep' # to keep the kernel default scheduler for the particular disk. #DISK_IOSCHED="cfq cfq" # 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. 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. #SATA_LINKPWR_BLACKLIST="host1" # Runtime Power Management for AHCI host and disks devices: # on=disable, auto=enable. # EXPERIMENTAL ** WARNING: auto will most likely cause system lockups/data loss. #AHCI_RUNTIME_PM_ON_AC=on #AHCI_RUNTIME_PM_ON_BAT=on # Seconds of inactivity before disk is suspended. AHCI_RUNTIME_PM_TIMEOUT=15 # PCI Express Active State Power Management (PCIe ASPM): # default, performance, powersave. PCIE_ASPM_ON_AC=performance PCIE_ASPM_ON_BAT=powersave # Radeon graphics clock speed (profile method): low, mid, high, auto, default; # auto = mid on BAT, high on AC; default = use hardware defaults. RADEON_POWER_PROFILE_ON_AC=high RADEON_POWER_PROFILE_ON_BAT=low # Radeon dynamic power management method (DPM): battery, performance. RADEON_DPM_STATE_ON_AC=performance RADEON_DPM_STATE_ON_BAT=battery # Radeon DPM performance level: auto, low, high; auto is recommended. 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. WIFI_PWR_ON_AC=off WIFI_PWR_ON_BAT=on # Disable wake on LAN: Y/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). SOUND_POWER_SAVE_ON_AC=0 SOUND_POWER_SAVE_ON_BAT=0 # Disable controller too (HDA only): Y/N. 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. 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. 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). #RUNTIME_PM_BLACKLIST="bb:dd.f 11:22.3 44:55.6" RUNTIME_PM_BLACKLIST="01:00.0" # 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. # Use "" to disable the feature completely. # Separate multiple drivers with spaces. #RUNTIME_PM_DRIVER_BLACKLIST="amdgpu nouveau nvidia radeon" # Set to 0 to disable, 1 to enable USB autosuspend feature. 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 #USB_BLACKLIST="1111:2222 3333:4444" # Bluetooth devices are excluded from USB autosuspend: # 0=do not exclude, 1=exclude. USB_BLACKLIST_BTUSB=0 # Phone devices are excluded from USB autosuspend: # 0=do not exclude, 1=exclude (enable charging). USB_BLACKLIST_PHONE=0 # Printers are excluded from USB autosuspend: # 0=do not exclude, 1=exclude. USB_BLACKLIST_PRINTER=1 # WWAN devices are excluded from USB autosuspend: # 0=do not exclude, 1=exclude. USB_BLACKLIST_WWAN=1 # Include listed devices into USB autosuspend even if already excluded # by the blacklists above (separate with spaces). # Use lsusb to get the ids. #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). #USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=1 # Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown # on system startup: 0=disable, 1=enable. # Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below # are ignored when this is enabled! #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. #DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan" # Radio devices to enable on startup: bluetooth, wifi, wwan. # Separate multiple devices with spaces. #DEVICES_TO_ENABLE_ON_STARTUP="wifi" # Radio devices to disable on shutdown: bluetooth, wifi, wwan. # (workaround for devices that are blocking shutdown). #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). #DEVICES_TO_ENABLE_ON_SHUTDOWN="wwan" # Radio devices to enable on AC: bluetooth, wifi, wwan. #DEVICES_TO_ENABLE_ON_AC="bluetooth wifi wwan" # Radio devices to disable on battery: bluetooth, wifi, wwan. #DEVICES_TO_DISABLE_ON_BAT="bluetooth wifi wwan" # Radio devices to disable on battery when not in use (not connected): # bluetooth, wifi, wwan. #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 %) #START_CHARGE_THRESH_BAT0=75 #STOP_CHARGE_THRESH_BAT0=80 # Ultrabay / Slice / Replaceable battery (values in %) #START_CHARGE_THRESH_BAT1=75 #STOP_CHARGE_THRESH_BAT1=80 # Restore charge thresholds when AC is unplugged: 0=disable, 1=enable. #RESTORE_THRESHOLDS_ON_BAT=1 # ------------------------------------------------------------------------------ # tlp-rdw - Parameters for the radio device wizard # Possible devices: bluetooth, wifi, wwan. # Hints: # - Parameters are disabled by default, remove the leading # to enable them # - Separate multiple radio devices with spaces # 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 ** X *** xprofile :PROPERTIES: :header-args+: :tangle ~/.xprofile :END: =~/.xprofile= is similar in style to =~/.xinitrc=, but on the contrary, it's automatically sourced by LightDM, my display manager of choice. #+begin_src sh :tangle no xset -b # disable bell xset r rate 200 45 # repeat delay (ms) and rate (repeats/sec) # setxkbmap -option compose:ralt setxkbmap -option ctrl:nocaps # turn capslock into control setxkbmap -option altwin:swap_alt_win # swap alt and super if [ $(hostname) = "plasma" ] then setxkbmap -option ctrl:rctrl_ralt # turn right control into right alt fi if [ $(hostname) = "enigma" ] then xmodmap -e "keycode 135 = Alt_R" # remap menu key to alt fi light -Scrs "intel_backlight" 2 source $HOME/.zprofile export _JAVA_AWT_WM_NONREPARENTING=1 export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true' if [ $(hostname) = "plasma" ] then unlock-def-gk.py & fi bspwm & #+end_src *** xkb us_ab keyboard layout #+begin_src conf :tangle "/sudo::/usr/share/X11/xkb/symbols/us_ab" :comments none default partial alphanumeric_keys xkb_symbols "us_ab" { include "us(basic)" name[Group1]= "English (US)(aminb)"; key { [ Alt_R ] }; }; #+end_src ** Zsh My zsh setup is built on [[https://github.com/zimfw/zimfw][Zim]]. Further, my zshrc references [[https://github.com/junegunn/fzf][fzf]], [[https://github.com/zsh-users/zsh-autosuggestions][zsh-autosuggestions]], and [[https://github.com/hlissner/zsh-autopair][zsh-autopair]]; so be sure to have them installed. *** zimrc :PROPERTIES: :header-args+: :tangle ~/.zimrc :END: #+begin_src sh ################# # CORE SETTINGS # ################# # # Zim settings # # Select what modules you would like enabled. # The second line of modules may depend on options set by modules in the first # line. These dependencies are noted on the respective module's README.md. zmodules=(directory environment git git-info history input ssh utility custom \ syntax-highlighting history-substring-search prompt completion) ################### # MODULE SETTINGS # ################### # # Prompt # # Set your desired prompt here zprompt_theme='pure' #PURE_PROMPT_SYMBOL=λ #PURE_PROMPT_SYMBOL=δ PURE_PROMPT_SYMBOL=➜ # # Completion # # set an optional host-specific filename for the completion cache file # if none is provided, the default '.zcompdump' is used. #zcompdump_file=".zcompdump-${HOST}-${ZSH_VERSION}" # # Utility # # Uncomment to enable command correction prompts # See: http://zsh.sourceforge.net/Doc/Release/Options.html#Input_002fOutput setopt CORRECT # # Environment # # Set the string below to the desired terminal title format string. # The terminal title is redrawn upon directory change, however, variables like # ${PWD} are only evaluated once. Use prompt expansion strings for dynamic data: # http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Simple-Prompt-Escapes # The example below uses the following format: 'username@host:/current/directory' ztermtitle='%n@%m:%~' # # Input # # Uncomment to enable double-dot expansion. # This appends '../' to your input for each '.' you type after an initial '..' #zdouble_dot_expand='true' # # Syntax-Highlighting # # This determines what highlighters will be used with the syntax-highlighting module. # Documentation of the highlighters can be found here: # https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md # For (u)rxvt, termite and gnome-terminal users, # removing the 'cursor' highlighter will fix the disappearing cursor problem #zhighlighters=(main brackets cursor) zhighlighters=(main brackets pattern) # # SSH # # Load these ssh identities with the ssh module zssh_ids=(id_ed25519_bandali) # # Pacman # # Set (optional) pacman front-end. zpacman_frontend='yay' # Load any helper scripts as defined here #zpacman_helper=(aur) #+end_src *** zlogin :PROPERTIES: :header-args+: :tangle ~/.zlogin :END: #+begin_src sh # # User configuration sourced by login shells # # Initialize zim [[ -s ${ZIM_HOME}/login_init.zsh ]] && source ${ZIM_HOME}/login_init.zsh #+end_src *** zprofile :PROPERTIES: :header-args+: :tangle ~/.zprofile :END: #+begin_src sh #PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH" #PATH=$HOME/.gem/ruby/2.4.0/bin:$PATH export PATH=$HOME/.local/bin:$HOME/.cabal/bin:$HOME/.cargo/bin:$HOME/.elan/bin:$PATH export XDG_CONFIG_HOME=$HOME/.config export XDG_DATA_HOME=$HOME/.local/share export XDG_DATA_DIRS=/usr/local/share:/usr/share export MAILDIR="$HOME/mail" export CVS_RSH=ssh #export MATHMODELS=$HOME/src/eiffel/mathmodels #export RUST_SRC_PATH=~/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src #export PATH=$PATH:$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/ # Eiffel2Java stuff #export JAVA_HOME=/usr/lib/jvm/default #export CPATH=$CPATH:"$JAVA_HOME/include:$JAVA_HOME/include/linux" #export LIBRARY_PATH=$LIBRARY_PATH:"$JAVA_HOME/jre/lib/amd64/server" #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$JAVA_HOME/jre/lib/amd64/server" #export PATH="$HOME/usr/build/pvs:$PATH" #export SBCLISP_HOME=/usr/share/sbcl-source #export PVS_LIBRARY_PATH="$HOME/usr/build/pvs/nasalib" export MOZ_USE_XINPUT2=1 # precise scrolling in firefox #export JAVA_HOME=/usr/lib/jvm/java-8-openjdk #export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G" export NIXPKGS=$HOME/src/git/nixpkgs if [ -e /home/amin/.nix-profile/etc/profile.d/nix.sh ]; then . /home/amin/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale" export PATH="/$HOME/.config/guix/current/bin${PATH:+:}$PATH" export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs" export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt" export GIT_SSL_CAINFO="$SSL_CERT_FILE" #+end_src *** zshenv :PROPERTIES: :header-args+: :tangle ~/.zshenv :END: #+begin_src sh # Ensure that a non-login, non-interactive shell has a defined environment. if [[ "$SHLVL" -eq 1 && ! -o LOGIN && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then source "${ZDOTDIR:-$HOME}/.zprofile" fi #+end_src *** zshrc :PROPERTIES: :header-args+: :tangle ~/.zshrc :END: #+begin_src sh # Bash-like navigation #export WORDCHARS='*?_-.[]~=&;!#$%^(){}<>' #export WORDCHARS='*?-[]~=&;!#$%^(){}<>' export WORDCHARS='*?[]~=&;!#$%^(){}<>' #ZLE_SPACE_SUFFIX_CHARS=$'|&' #disable -r time # disable shell reserved word #alias time='time -p' # -p for POSIX output # rehash if last command was pacaur or pacman # (so that zsh picks up changes in $PATH immediately) TRAPUSR1() { rehash}; precmd() { [[ $history[$[ HISTCMD -1 ]] == *(pacaur|pacman)* ]] && killall -USR1 zsh } # # User configuration sourced by interactive shells # # Define zim location export ZIM_HOME=${ZDOTDIR:-${HOME}}/.zim # Start zim [[ -s ${ZIM_HOME}/init.zsh ]] && source ${ZIM_HOME}/init.zsh ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red') #ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold' setopt globdots source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh # source ~/.zsh/zsh-autopair/autopair.zsh ### fzf ### source /usr/share/fzf/key-bindings.zsh source /usr/share/fzf/completion.zsh # Accept history selection instead of putting it on # the command line fzf-history-widget-accept() { fzf-history-widget zle accept-line } #zle -N fzf-history-widget-accept #bindkey '^R' fzf-history-widget-accept # alt+c preview export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -200'" ### fzf ### # aliases alias mpv="mpv --ytdl-format mp4" alias mv="mv -iv" alias cp="cp -iv" alias scl=systemctl alias jcl=journalctl alias m="mbsync csclub; mbsync uwaterloo; mbsync amin" alias best="youtube-dl -f best" alias sd="ssh deb" alias sf="ssh fp" alias sn="ssh nix" aur() { cd ~/usr/build git clone https://aur.archlinux.org/${1}.git cd ${1} } # i-beam cursor echo -e "\033[5 q" #echo -e "\033[6 q" #+end_src * Scripts This section contains various useful scripts and the 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 ** my-i3status.py :PROPERTIES: :header-args+: :tangle ~/.local/bin/my-i3status.py :shebang "#!/usr/bin/env python2" :END: #+begin_src python :comments none # -*- 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/bash" :END: #+begin_src bash 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.py :PROPERTIES: :header-args+: :tangle ~/.local/bin/rofi-remmina.py :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 ** s (run sway) :PROPERTIES: :header-args+: :tangle ~/.local/bin/s :shebang "#!/bin/bash" :END: #+begin_src bash export _JAVA_AWT_WM_NONREPARENTING=1 export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true' light -Nr 2 source $HOME/.zprofile sway #+end_src ** sway-ws-util :PROPERTIES: :header-args+: :tangle ~/.local/bin/sway-ws-util :shebang "#!/bin/bash" :END: #+begin_src bash curr_ws=$(swaymsg -t get_workspaces | jq -r '.[] | select(.focused==true).name') [[ $curr_ws -eq 1 ]] && prev_ws=10 || prev_ws=$((curr_ws-1)) [[ $curr_ws -eq 10 ]] && next_ws=1 || next_ws=$((curr_ws+1)) dest_ws=-1 op=-1 if [ "$1" = "switch" ] || [ "$1" = "move" ]; then op="$1" if [ "$2" = "prev" ]; then dest_ws="$prev_ws" elif [ "$2" = "next" ]; then dest_ws="$next_ws" else echo "Usage: $0 $1 {prev|next} [follow]" exit 1 fi else echo "Usage: $0 {switch|move} {prev|next} [follow]" exit 1 fi if [ "$op" = "switch" ]; then sway workspace "$dest_ws" elif [ "$op" = "move" ]; then sway move container to workspace "$dest_ws" if [ "$3" = "follow" ]; then sway workspace "$dest_ws" fi fi #+end_src ** toggle-presentation-mode :PROPERTIES: :header-args+: :tangle ~/.local/bin/toggle-presentation-mode :shebang "#!/bin/bash" :END: #+begin_src bash :tangle no 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/bash" :END: 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. #+begin_src bash :tangle no 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 :tangle no 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.sh :PROPERTIES: :header-args+: :tangle ~/.local/bin/zathura-sync.sh :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