├── .Xresources
├── .bash_aliases
├── .bash_functions
├── .bash_profile
├── .bashrc
├── .config
├── .gitignore
├── alacritty
│ └── alacritty.toml
├── aria2
│ └── aria2.conf
├── bat
│ └── config
├── captive-browser.toml
├── dircolors
├── dircolors.256color
├── dunst
│ └── dunstrc
├── flameshot
│ └── flameshot.ini
├── fontconfig
│ ├── conf.d
│ │ └── 90-preferred-fonts.conf
│ └── fonts.conf
├── git
│ ├── attributes
│ ├── config
│ ├── config.archlinux
│ ├── config.cvut
│ ├── config.github
│ └── ignore
├── gnupg
│ ├── dirmngr.conf
│ ├── gpg-agent.conf
│ ├── gpg.conf
│ └── scdaemon.conf
├── goldendict
│ └── config
├── gtk-3.0
│ └── settings.ini
├── gtk-4.0
│ └── settings.ini
├── htop
│ └── htoprc
├── i3
│ └── config
├── i3status-rust
│ └── config.toml
├── inputrc
├── keepassxc
│ └── keepassxc.ini
├── lf
│ ├── colors
│ ├── lfrc
│ └── previewer.sh
├── mimeapps.list
├── mpd
│ └── mpd.conf
├── mpv
│ └── config
├── mutt
│ ├── colors.muttrc
│ ├── gpg.rc
│ ├── mailcap
│ ├── muttrc
│ ├── neomuttrc
│ └── smime.rc
├── nvim
│ ├── diagnostics.lua
│ ├── init.vim
│ └── plugin
│ │ ├── auto-save.lua
│ │ ├── cmp.lua
│ │ ├── guess-indent.lua
│ │ ├── lsp.lua
│ │ └── tree.lua
├── pacman
│ └── makepkg.conf
├── picom.conf
├── python
│ └── startup.py
├── qpdfview
│ ├── pdf-plugin.conf
│ ├── qpdfview.conf
│ └── shortcuts.conf
├── rmshit.yaml
├── screenrc
├── shellcheckrc
├── sway
│ └── config
├── swaylock
│ └── config
├── sxiv
│ └── exec
│ │ └── image-info
├── systemd
│ └── user
│ │ ├── old-services
│ │ ├── chromium.service
│ │ ├── dropbox.service
│ │ ├── dropbox.timer
│ │ ├── graphical.target
│ │ ├── graphical.target.wants
│ │ │ └── mpd.service
│ │ ├── i3.service
│ │ ├── mpd-notify.service
│ │ ├── offlineimap.service
│ │ ├── qpdfview.service
│ │ ├── rsnapshot-daily.service
│ │ ├── rsnapshot-weekly.service
│ │ ├── tinyterm-wrapper.service
│ │ ├── tmux@.service
│ │ ├── twmnd.service
│ │ ├── urxvtd.service
│ │ ├── wm.target
│ │ ├── wmfs-statusbar.service
│ │ ├── wmfs.service
│ │ ├── xorg.service
│ │ ├── xorg.target
│ │ └── xorg.target.wants
│ │ │ ├── autotouchpadoff.service
│ │ │ └── xinit.service
│ │ ├── timer-daily.target
│ │ ├── timer-daily.timer
│ │ ├── timer-weekly.target
│ │ ├── timer-weekly.timer
│ │ └── timers.target.wants
│ │ ├── timer-daily.timer
│ │ └── timer-weekly.timer
├── tmux
│ └── tmux.conf
├── user-dirs.dirs
├── vim
│ └── vimrc
├── waybar
│ ├── config
│ └── style.css
└── wiki-scripts
│ ├── default.conf
│ └── local.conf
├── .gitignore
├── .gitmodules
├── .gnupg
├── .toprc
├── .xinitrc
├── .xprofile
├── .xserverrc
└── bin
├── README
├── aria2c
├── fdm
├── lock-session
├── mutt
├── qpdfview
├── screen
└── ssh
/.Xresources:
--------------------------------------------------------------------------------
1 | Sxiv.font: DejaVu Sans Mono
2 |
--------------------------------------------------------------------------------
/.bash_aliases:
--------------------------------------------------------------------------------
1 | # vim: ft=sh
2 |
3 | # enable color support
4 | alias ls='ls --color=auto'
5 | alias grep='grep --color=auto'
6 | alias ip='ip --color=auto'
7 |
8 | # some more ls aliases
9 | alias ll='ls -alFh'
10 | alias la='ls -A'
11 | alias l='ls -CF'
12 |
13 | alias mv='mv -i'
14 | alias cp='cp -i --preserve=all --reflink=auto'
15 |
16 | alias rm='rm -i'
17 |
18 | alias vi='vim'
19 | alias vim='nvim -p'
20 | alias vimdiff='nvim -d'
21 |
22 | alias du='du -h'
23 | alias df='df -h'
24 | alias free='free -h'
25 | alias top='top -cd 01.00'
26 | alias ps='ps aux'
27 | alias mt='findmnt -rnuc -o SOURCE,TARGET,FSTYPE,OPTIONS | sort | column -t'
28 |
29 | alias cal='cal -m'
30 | alias dirs='dirs -v'
31 |
32 | alias subdl='/usr/bin/subdl -i --lang=eng,cze'
33 |
34 | # slurm
35 | if [[ $(command -v sinfo) ]]; then
36 | alias sinfo='sinfo --long'
37 | alias squeue='squeue -o"%.15i %.9P %.8j %.8u %.8T %.11M %.11l %.5D %.4C %.7m %.8Q %R"'
38 | alias sprio='sprio -o"%.15i %9r %.8u %.10Y %.10S %.10A %.10B %.10F %.10J %.10P %.10Q %.11N %.32T"'
39 | alias sacct='sacct --format="JobID,JobName,Partition,User,End,State,ExitCode,AllocNodes,AllocCPUS,ReqMem"'
40 | alias sshare='sshare --all'
41 | fi
42 |
--------------------------------------------------------------------------------
/.bash_functions:
--------------------------------------------------------------------------------
1 | #! /usr/bin/bash
2 |
3 | ## h -- grep history
4 | function h() {
5 | fc -l 1 -1 | sed -n "/$1/s/^ */!/p" | tail -n 50
6 | }
7 | alias h=' h'
8 |
9 |
10 | ## simple notes taking utility
11 | function n() {
12 | local dir="$HOME/Documents/Notes/"
13 | (
14 | builtin cd "$dir"
15 | nvim -c NvimTreeOpen todo.md
16 | )
17 | }
18 |
19 |
20 | ## frequently used pacman commands
21 | function orphans() {
22 | if [[ ! -n $(pacman -Qdtt) ]]; then
23 | echo "no orphans to remove"
24 | else
25 | sudo pacman -Rnsc $(pacman -Qdttq)
26 | fi
27 | }
28 |
29 |
30 | ## custom cd function
31 | # implements 'autopushd'
32 | # 'cd -' flips last visited dir (exactly what pushd without aruments does)
33 | function cd() {
34 | if [[ $# -eq 0 ]]; then
35 | builtin pushd "$HOME"
36 | else
37 | # remove '--' from the parameters
38 | if [[ "$1" == "--" ]]; then
39 | set -- "${@:2:$#}"
40 | fi
41 |
42 | if [[ $# -eq 1 ]]; then
43 | if [[ "$1" == "-" ]]; then
44 | builtin pushd
45 | elif [[ -f "$1" ]]; then
46 | # auxiliary variable is necessary to handle spaces in the path
47 | local dir
48 | dir=$(dirname "$1")
49 | builtin pushd -- "$dir"
50 | else
51 | builtin pushd -- "$1"
52 | fi
53 | else
54 | echo "cd: Too many arguments"
55 | fi
56 | fi
57 | }
58 |
59 |
60 | ## path synchronization for lf
61 | # (reference: https://github.com/gokcehan/lf/blob/master/etc/lfcd.sh)
62 | function lf {
63 | tempfile="$(mktemp -t lf-cd.XXXXXX)"
64 | command lf -last-dir-path="$tempfile" "${@:-$(pwd)}"
65 | if [[ -f "$tempfile" ]] && [[ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]]; then
66 | cd -- "$(cat "$tempfile")"
67 | fi
68 | rm -f -- "$tempfile"
69 | }
70 |
71 |
72 | ## system upgrade
73 | function syu {
74 | sudo pacman -Syu "$@"
75 | local ret=$?
76 | if [[ $ret -ne 0 ]]; then
77 | return $ret
78 | fi
79 | if command -v checkservices > /dev/null; then
80 | echo "==> Running checkservices"
81 | sudo checkservices
82 | fi
83 | if command -v flatpak > /dev/null; then
84 | echo "==> Running flatpak update"
85 | flatpak update
86 | echo "==> Running flatpak --user update"
87 | flatpak --user update
88 | fi
89 | }
90 | alias suy='syu'
91 |
--------------------------------------------------------------------------------
/.bash_profile:
--------------------------------------------------------------------------------
1 | # shellcheck shell=bash
2 |
3 | #umask 0077
4 | umask 0022
5 |
6 | ## set up session environment
7 | # export other directories to PATH
8 | PATH=$HOME/bin:$PATH:$HOME/Scripts
9 |
10 | # TNL
11 | export PATH="$HOME/.local/bin:$PATH"
12 | export LD_LIBRARY_PATH="$HOME/.local/lib:$LD_LIBRARY_PATH"
13 | # compilers (-L and -isystem)
14 | export LIBRARY_PATH="$HOME/.local/lib:$LIBRARY_PATH"
15 | export C_INCLUDE_PATH="$HOME/.local/include"
16 | export CPLUS_INCLUDE_PATH="$HOME/.local/include"
17 |
18 | export PKG_CONFIG_PATH="$HOME/.local/lib/pkgconfig:$HOME/.local/share/pkgconfig:$PKG_CONFIG_PATH"
19 |
20 | # default applications
21 | export TERMINAL=alacritty
22 | export BROWSER=librewolf
23 | export EDITOR=nvim
24 | export DIFFPROG="nvim -d"
25 | export PAGER="less -FRXMKij4"
26 | export SYSTEMD_LESS=FRXMKij4 # omit 'S' to disable "chopping" long lines
27 | export QUOTING_STYLE=literal # http://unix.stackexchange.com/questions/258679/why-is-ls-suddenly-surrounding-items-with-spaces-in-single-quotes
28 | [[ $(command -v bat) ]] && [[ $(command -v batmanpager) ]] && export MANPAGER=batmanpager
29 |
30 | # detect the current DRM driver
31 | if [[ -f /sys/class/drm/card1/device/uevent ]]; then
32 | # based on https://unix.stackexchange.com/a/207175
33 | driver=$(grep -oP 'DRIVER=\K\w+' /sys/class/drm/card1/device/uevent)
34 | else
35 | driver=""
36 | fi
37 |
38 | # video acceleration
39 | if [[ "$driver" == "nvidia" ]]; then
40 | export LIBVA_DRIVER_NAME=nvidia
41 | else
42 | export LIBVA_DRIVER_NAME=iHD
43 | fi
44 |
45 | #MAKEFLAGS=-j$(grep "core id" /proc/cpuinfo | sort -u | wc -l) # counts physical cores
46 | MAKEFLAGS=-j$(grep "processor" /proc/cpuinfo | sort -u | wc -l) # counts all cores
47 | export MAKEFLAGS
48 |
49 | # setup default dirs
50 | [ "$XDG_CACHE_HOME" ] || export XDG_CACHE_HOME="$HOME/.cache"
51 | [ "$XDG_CONFIG_HOME" ] || export XDG_CONFIG_HOME="$HOME/.config"
52 | [ "$XDG_DATA_HOME" ] || export XDG_DATA_HOME="$HOME/.local/share"
53 | [ "$XDG_STATE_HOME" ] || export XDG_STATE_HOME="$HOME/.local/state"
54 |
55 | # see https://github.com/grawity/dotfiles/blob/master/.dotfiles.notes
56 |
57 | # hacks to respect XDG_CONFIG_HOME
58 | export IPYTHONDIR="$XDG_CONFIG_HOME/ipython"
59 | export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch-config"
60 | export INPUTRC="$XDG_CONFIG_HOME/inputrc"
61 | export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME/jupyter"
62 | export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java"
63 | export ANSIBLE_CONFIG="${XDG_CONFIG_HOME}/ansible.cfg"
64 | export SCREENRC="$XDG_CONFIG_HOME"/screenrc
65 |
66 | # hacks to respect XDG_CACHE_HOME
67 | export __GL_SHADER_DISK_CACHE_PATH="$XDG_CACHE_HOME/nv"
68 | export CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv"
69 | export ANSIBLE_LOCAL_TEMP="$XDG_CACHE_HOME/ansible/tmp"
70 | export ANSIBLE_GALAXY_CACHE_DIR="${XDG_CACHE_HOME}/ansible/galaxy_cache"
71 | export RUFF_CACHE_DIR="$XDG_CACHE_HOME/ruff"
72 | export MYPY_CACHE_DIR="$XDG_CACHE_HOME/mypy"
73 |
74 | # hacks to respect XDG_STATE_HOME
75 | export LESSHISTFILE="$XDG_STATE_HOME/less_history"
76 | export MYSQL_HISTFILE="$XDG_STATE_HOME/mysql_history"
77 | export PSQL_HISTORY="$XDG_STATE_HOME/psql_history"
78 | export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/startup.py" # ~/.python_history is overridden there
79 | export SCREENDIR="$XDG_RUNTIME_DIR/screen"
80 | export W3M_DIR="$XDG_RUNTIME_DIR/w3m"
81 |
82 | export UNISON="$XDG_DATA_HOME/unison"
83 |
84 | export TEXMFHOME=$XDG_DATA_HOME/texmf
85 | export TEXMFVAR=$XDG_CACHE_HOME/texlive/texmf-var
86 | export TEXMFCONFIG=$XDG_CONFIG_HOME/texlive/texmf-config
87 |
88 | # source bashrc in interactive login shells (SSH)
89 | # shellcheck source=/dev/null
90 | [[ -f ~/.bashrc ]] && source ~/.bashrc
91 |
92 | # autostart X or Wayland session on tty1, unless $XDG_CURRENT_DESKTOP is already set (e.g. SDDM sources this file before starting the session)
93 | if [[ "$(tty)" == "/dev/tty1" ]] && [[ -z "$XDG_CURRENT_DESKTOP" ]]; then
94 | if [[ $(command -v sway) ]]; then
95 | export QT_QPA_PLATFORM=wayland
96 | export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
97 | systemctl --user import-environment QT_QPA_PLATFORM QT_WAYLAND_DISABLE_WINDOWDECORATION
98 | export GOLDENDICT_FORCE_WAYLAND=1
99 | # sway does not set $XDG_CURRENT_DESKTOP
100 | export XDG_CURRENT_DESKTOP=sway
101 | exec sway
102 | elif [[ $(command -v xinit) ]]; then
103 | # i3 sets this, but exporting it manually makes the condition above work
104 | export XDG_CURRENT_DESKTOP=i3
105 | exec xinit -- :0
106 | fi
107 | fi
108 |
--------------------------------------------------------------------------------
/.bashrc:
--------------------------------------------------------------------------------
1 | # shellcheck shell=bash
2 |
3 | # check for interactive
4 | [[ $- = *i* ]] || return
5 |
6 | # bash options ------------------------------------
7 | set -o vi # Vi mode
8 | set -o noclobber # do not overwrite files
9 | shopt -s autocd # change to named directory
10 | shopt -s cdable_vars # if cd arg is not valid, assumes its a var defining a dir
11 | shopt -s cdspell # autocorrects cd misspellings
12 | shopt -s checkwinsize # update the value of LINES and COLUMNS after each command if altered
13 | shopt -s cmdhist # save multi-line commands in history as single line
14 | shopt -s histappend # do not overwrite history
15 | shopt -s dotglob # include dotfiles in pathname expansion
16 | shopt -s expand_aliases # expand aliases
17 | shopt -s extglob # enable extended pattern-matching features
18 | shopt -s globstar # recursive globbing
19 | shopt -s progcomp # programmable completion
20 | shopt -s hostcomplete # attempt hostname expansion when @ is at the beginning of a word
21 | # nocaseglob breaks pacman completion: https://bugs.archlinux.org/task/67808
22 | #shopt -s nocaseglob # pathname expansion will be treated as case-insensitive
23 |
24 | set bell-style visual # visual bell
25 |
26 | # function setting prompt string
27 | bash_prompt() {
28 | # some colors
29 | local color_reset="\033[00m"
30 | local red="\033[01;31m"
31 | local green="\033[01;32m"
32 | local yellow="\033[01;33m"
33 | local blue="\033[01;34m"
34 | local magenta="\033[01;35m"
35 | local cyan="\033[01;36m"
36 |
37 | # green for user
38 | local user_color="$green"
39 | # red for root
40 | [[ $UID == 0 ]] && user_color="$red"
41 |
42 | # green for local session
43 | local host_color="$green"
44 | # cyan for SSH sessions
45 | [[ -n "$SSH_CONNECTION" ]] && host_color="$cyan"
46 |
47 | # colorized return value of last command
48 | local ret="\$(if [[ \$? == 0 ]]; then echo \"\[$green\]\$?\"; else echo \"\[$red\]\$?\"; fi)"
49 |
50 | # blue for writable directories, yellow for non-writable directories
51 | local dir="\$(if [[ -w \$PWD ]]; then echo \"\[$blue\]\"; else echo \"\[$yellow\]\"; fi)\w"
52 |
53 | if [[ $(type -t "__git_ps1") == "function" ]]; then
54 | # configuration for __git_ps1 function
55 | export GIT_PS1_SHOWDIRTYSTATE=1
56 | export GIT_PS1_SHOWSTASHSTATE=1
57 | export GIT_PS1_SHOWUPSTREAM="auto"
58 |
59 | # check if we're on local filesystem and skip git prompt on remote paths
60 | local git="\$(if [[ \"\$(df --output=fstype . | tail -n +2)\" != \"fuse.sshfs\" ]]; then __git_ps1; fi)"
61 | else
62 | local git=""
63 | fi
64 |
65 | PS1="$ret \[$user_color\]\u\[$host_color\]@\h\[$color_reset\]:$dir\[$magenta\]$git\[$color_reset\]\$ "
66 | }
67 | # Arch
68 | if [[ -r /usr/share/git/completion/git-prompt.sh ]]; then
69 | # shellcheck source=/dev/null
70 | source /usr/share/git/completion/git-prompt.sh
71 | # Rocky 8.X
72 | elif [[ -r /usr/share/git-core/contrib/completion/git-prompt.sh ]]; then
73 | # shellcheck source=/dev/null
74 | source /usr/share/git-core/contrib/completion/git-prompt.sh
75 | # Debian, Ubuntu
76 | elif [[ -r /etc/bash_completion.d/git-prompt ]]; then
77 | # shellcheck source=/dev/null
78 | source /etc/bash_completion.d/git-prompt
79 | # others
80 | elif [[ -r "$HOME/bin/git-prompt.sh" ]]; then
81 | # shellcheck source=/dev/null
82 | source "$HOME/bin/git-prompt.sh"
83 | fi
84 | bash_prompt
85 |
86 | # export $PWD in window title
87 | # shellcheck disable=SC2016
88 | PROMPT_COMMAND=('echo -ne "\033]0;$PWD\007"')
89 |
90 | # set history variables
91 | unset HISTFILESIZE
92 | HISTSIZE=100000
93 | HISTCONTROL=ignoredups:ignorespace
94 | # share history across all terminals
95 | #PROMPT_COMMAND+=("history -a; history -c; history -r")
96 | # update the $HISTFILE immediately after it is executed
97 | PROMPT_COMMAND+=('history -a')
98 |
99 | #if [[ "$TERM" =~ ".*256color.*" && -f ~/.dircolors.256colors ]]; then
100 | if [[ "$TERM" != "linux" && -f "$XDG_CONFIG_HOME/dircolors.256color" ]]; then
101 | eval "$(dircolors "$XDG_CONFIG_HOME/dircolors.256color")"
102 | elif [[ -f "$XDG_CONFIG_HOME/dircolors" ]]; then
103 | eval "$(dircolors "$XDG_CONFIG_HOME/dircolors")"
104 | fi
105 |
106 | ## source useful files
107 | # shellcheck source=/dev/null
108 | [[ -r /usr/share/bash-completion/bash_completion ]] && source /usr/share/bash-completion/bash_completion
109 | # shellcheck source=/dev/null
110 | [[ -f ~/.bash_aliases ]] && source ~/.bash_aliases
111 | # shellcheck source=/dev/null
112 | [[ -f ~/.bash_functions ]] && source ~/.bash_functions
113 |
114 | # set the right path to be used by the SSH agent, but do not override the existing value
115 | # (e.g. set by SSH when agent forwarding is enabled)
116 | export SSH_AUTH_SOCK="${SSH_AUTH_SOCK:-/run/user/$UID/gnupg/S.gpg-agent.ssh}"
117 | # set up SSH agent to use gpg-agent -- needed to show the right pinentry when the
118 | # user switches between console and X
119 | if [[ -S "$SSH_AUTH_SOCK" ]] && [[ $UID != 0 ]]; then
120 | GPG_TTY="$(tty)"
121 | export GPG_TTY
122 | gpg-connect-agent updatestartuptty /bye >/dev/null
123 | fi
124 |
125 |
126 | # FIXME: i3 interferes with the inheritance of bash functions defined by lmod
127 | if [[ "$DESKTOP_SESSION" =~ "i3" ]] && [[ -f /etc/profile.d/modules.sh ]]; then
128 | # shellcheck source=/dev/null
129 | source /etc/profile.d/modules.sh
130 | fi
131 |
132 |
133 | # don't use sudo in vscode (it has a key logger)
134 | if [[ "$TERM_PROGRAM" == "vscode" ]]; then
135 | alias sudo='echo "Dont use sudo in VSCode!!!"; false'
136 | fi
137 |
--------------------------------------------------------------------------------
/.config/.gitignore:
--------------------------------------------------------------------------------
1 | # GUI programs (mostly saved state, recently used files and binary cache anyway)
2 | /gaupol
3 | /gimp
4 | /gnuplot
5 | /gpicview
6 | /gtk-2.0/gtkfilechooser.ini
7 | /inkscape
8 | /kcachegrind*
9 | /libreoffice
10 | /mozilla
11 | /MusicBrainz
12 | /ParaView
13 | /puddletag
14 | /qpdfview
15 | /qupzilla
16 | /qstardict
17 | /QtProject.conf
18 | /Scan Tailor
19 | /spacefm
20 | /SpeedCrunch
21 | /sqlitebrowser
22 | /syncthing
23 | /Trolltech.conf
24 |
25 | # non-GUI programs ignored for the same reason
26 | /htop
27 | /ipython
28 | /pulse/*
29 | !/pulse/*.conf
30 | !/pulse/*.pa
31 |
32 | # personal
33 | /gnupg/*
34 | !/gnupg/*.conf
35 | /mpd/playlists
36 | /mpv/watch_later
37 | /mutt/alias
38 | /mutt/smime
39 | /newsbeuter/urls
40 |
41 | # vim dictionaries
42 | /vim/spell/*.add
43 | /vim/spell/*.spl
44 |
45 | # encrypted files
46 | *.gpg
47 |
48 | # certificates
49 | *.pem
50 | certificates
51 |
52 | # binary (definitely not created by me...)
53 | *.dat
54 | *.db
55 | *.ldb
56 |
57 | # backups (not me...)
58 | *.bak
59 | *.old
60 |
--------------------------------------------------------------------------------
/.config/alacritty/alacritty.toml:
--------------------------------------------------------------------------------
1 | # Reference: https://alacritty.org/config-alacritty.html
2 |
3 | [general]
4 | # Live config reload (changes require restart)
5 | live_config_reload = true
6 |
7 | # Any items in the `env` entry below will be added as
8 | # environment variables. Some entries may override variables
9 | # set by alacritty itself.
10 | [env]
11 | # override $TERM, vim does not work correctly with TERM=alacritty
12 | # e.g. https://github.com/alacritty/alacritty/issues/5363
13 | # also the :autoread feature does not work (no window focus event?)
14 | TERM = "xterm-256color"
15 |
16 | [scrolling]
17 | # Maximum number of lines in the scrollback buffer.
18 | # Specifying '0' will disable scrolling.
19 | history = 10000
20 | # Scrolling distance multiplier.
21 | #multiplier = 3
22 |
23 | [font]
24 | size = 9
25 |
26 | # Offset is the extra space around each character. `offset.y` can be thought
27 | # of as modifying the line spacing, and `offset.x` as modifying the letter
28 | # spacing.
29 | [font.offset]
30 | x = 0
31 | y = 2
32 |
33 | [colors]
34 | # If `true`, bold text is drawn using the bright color variants.
35 | draw_bold_text_with_bright_colors = true
36 |
37 | [colors.primary]
38 | background = "#000000"
39 | foreground = "#bebebe"
40 | # The dimmed foreground color is calculated automatically if it is not
41 | # present. If the bright foreground color is not set, or
42 | # `draw_bold_text_with_bright_colors` is `false`, the normal foreground
43 | # color will be used.
44 | #dim_foreground: '#828482'
45 | bright_foreground = "#ffffff"
46 |
47 | # Colors which should be used to draw the selection area.
48 | #
49 | # Allowed values are CellForeground/CellBackground, which reference the
50 | # affected cell, or hexadecimal colors like #ff00ff.
51 | [colors.selection]
52 | background = "#2f2f2f"
53 | text = "CellForeground"
54 |
55 | [colors.normal]
56 | black = "#000000"
57 | blue = "#2346ae"
58 | cyan = "#58c6ed"
59 | green = "#00a000"
60 | magenta = "#aa00aa"
61 | red = "#b22222"
62 | white = "#e5e5e5"
63 | yellow = "#cdcd00"
64 |
65 | [colors.bright]
66 | black = "#4d4d4d"
67 | blue = "#2b65ec"
68 | cyan = "#00dfff"
69 | green = "#32cd32"
70 | magenta = "#c154c1"
71 | red = "#ed2939"
72 | white = "#ffffff"
73 | yellow = "#ffff00"
74 |
75 | [mouse]
76 | # If this is `true`, the cursor is temporarily hidden when typing.
77 | hide_when_typing = true
78 |
79 | [hints]
80 | # Keys used for the hint labels.
81 | alphabet = "jklfdsůahgurieowpq"
82 |
83 | [[hints.enabled]]
84 | command = "xdg-open"
85 | post_processing = true
86 | regex = "(mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
87 |
88 | [hints.enabled.binding]
89 | key = "U"
90 | mods = "Control|Shift"
91 |
92 | [hints.enabled.mouse]
93 | enabled = true
94 | mods = "None"
95 |
96 | # special matching for ArchWiki diff URLs - highlights exactly 2 links in
97 | # the notification emails, so the inapt bottom-to-top assignment of hints
98 | # can be lived with...
99 | # https://github.com/alacritty/alacritty/issues/5354
100 | [[hints.enabled]]
101 | command = "xdg-open"
102 | post_processing = true
103 | regex = "https://wiki.archlinux.org/index.php\\?[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+diff=[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
104 |
105 | [hints.enabled.binding]
106 | key = "X"
107 | mods = "Control|Shift"
108 |
109 | [hints.enabled.mouse]
110 | enabled = true
111 | mods = "None"
112 |
113 | [[hints.enabled]]
114 | post_processing = false
115 | regex = '''\[\[[\w :;/\-_(),.?!"'#]+\]\]'''
116 |
117 | [hints.enabled.command]
118 | args = ["-c", "import sys, subprocess; page = sys.argv[1].lstrip(\"[\").rstrip(\"]\"); url = f\"https://wiki.archlinux.org/title/{page}\"; subprocess.run([\"xdg-open\", url])"]
119 | program = "python"
120 |
121 | [hints.enabled.mouse]
122 | enabled = true
123 | mods = "None"
124 |
--------------------------------------------------------------------------------
/.config/aria2/aria2.conf:
--------------------------------------------------------------------------------
1 | # Basic Options
2 | dir=/home/lahwaacz/stuff
3 | check-integrity=true
4 | continue=true
5 |
6 | # HTTP/FTP Options
7 | connect-timeout=30
8 | max-connection-per-server=5
9 | min-split-size=5M
10 | remote-time=true
11 | timeout=5
12 | max-tries=0
13 |
14 | # HTTP Specific Options
15 | enable-http-pipelining=true
16 |
17 | # BitTorrent Specific Options
18 | bt-min-crypto-level=arc4
19 | bt-require-crypto=true
20 | bt-max-peers=100
21 | bt-request-peer-speed-limit=500K
22 | bt-save-metadata=false
23 | enable-dht=true
24 | enable-dht6=false
25 | enable-peer-exchange=true
26 | follow-torrent=mem
27 | max-overall-upload-limit=50K
28 | seed-time=0
29 |
30 | # Metalink Specific Options
31 | follow-metalink=mem
32 |
33 | # Advanced Options
34 | allow-overwrite=true
35 | disable-ipv6=true
36 | file-allocation=falloc
37 | human-readable=true
38 | log-level=warn
39 | summary-interval=0
40 |
41 | # Paths (override default to use XDG)
42 | dht-file-path=/home/lahwaacz/.cache/aria2/dht.dat
43 | dht-file-path6=/home/lahwaacz/.cache/aria2/dht6.dat
44 |
--------------------------------------------------------------------------------
/.config/bat/config:
--------------------------------------------------------------------------------
1 | # This is `bat`s configuration file. Each line either contains a comment or
2 | # a command-line option that you want to pass to `bat` by default. You can
3 | # run `bat --help` to get a list of all possible configuration options.
4 |
5 | # Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes`
6 | # for a list of all available themes
7 | --theme="Solarized (dark)"
8 |
9 | # Enable this to use italic text on the terminal. This is not supported on all
10 | # terminal emulators (like tmux, by default):
11 | #--italic-text=always
12 |
13 | # Uncomment the following line to disable automatic paging:
14 | #--paging=never
15 |
16 | # Uncomment the following line if you are using less version >= 551 and want to
17 | # enable mouse scrolling support in `bat` when running inside tmux. This might
18 | # disable text selection, unless you press shift.
19 | #--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse"
20 |
21 | # Syntax mappings: map a certain filename pattern to a language.
22 | # Example 1: use the C++ syntax for .ino files
23 | # Example 2: Use ".gitignore"-style highlighting for ".ignore" files
24 | #--map-syntax "*.ino:C++"
25 | #--map-syntax ".ignore:Git Ignore"
26 |
--------------------------------------------------------------------------------
/.config/captive-browser.toml:
--------------------------------------------------------------------------------
1 | # browser is the shell (/bin/sh) command executed once the proxy starts.
2 | # When browser exits, the proxy exits. An extra env var PROXY is available.
3 | #
4 | # Here, we use a separate Chrome instance in Incognito mode, so that
5 | # it can run (and be waited for) alongside the default one, and that
6 | # it maintains no state across runs. To configure this browser open a
7 | # normal window in it, settings will be preserved.
8 | browser = """
9 | chromium \
10 | --user-data-dir="/tmp/captive-browser-$USER" \
11 | --proxy-server="socks5://$PROXY" \
12 | --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE localhost" \
13 | --no-first-run --no-default-browser-check \
14 | --new-window --incognito \
15 | http://example.org
16 | """
17 |
18 | # dhcp-dns is the shell (/bin/sh) command executed to obtain the DHCP
19 | # DNS server address. The first match of an IPv4 regex is used.
20 | # IPv4 only, because let's be real, it's a captive portal.
21 | #
22 | # To install the systemd-networkd-dns command, run:
23 | #
24 | # $ go get github.com/FiloSottile/captive-browser/cmd/systemd-networkd-dns
25 | #
26 | #dhcp-dns = "$(go env GOPATH)/bin/systemd-networkd-dns wlan0"
27 | #dhcp-dns = "ip route | grep default | awk '{ print $3 }'"
28 | # this command selects the *first* DNS server in the networkctl output
29 | #dhcp-dns = "networkctl status | grep DNS | awk '{print $2}'"
30 | # this command selects the *last* DNS server in the networkctl output
31 | dhcp-dns = "networkctl status --json=short | jq -r '.Interfaces | map(select(.DNS) | .DNS) | .[] | map(.Address) | map(join(\".\")) | .[]' | tail -n1"
32 |
33 | # socks5-addr is the listen address for the SOCKS5 proxy server.
34 | socks5-addr = "localhost:1666"
35 |
36 | # bind-device is the interface over which outbound connections (both HTTP
37 | # and DNS) will be established. It can be used to avoid address space collisions
38 | # but it requires CAP_NET_RAW or root privileges. Disabled by default.
39 | #bind-device = "wlan0"
40 |
--------------------------------------------------------------------------------
/.config/dircolors:
--------------------------------------------------------------------------------
1 | # COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
2 | # pipes. 'all' adds color characters to all output. 'none' shuts colorization
3 | # off.
4 | COLOR tty
5 |
6 | # Below, there should be one TERM entry for each termtype that is colorizable
7 | TERM ansi
8 | TERM color_xterm
9 | TERM color-xterm
10 | TERM con132x25
11 | TERM con132x30
12 | TERM con132x43
13 | TERM con132x60
14 | TERM con80x25
15 | TERM con80x28
16 | TERM con80x30
17 | TERM con80x43
18 | TERM con80x50
19 | TERM con80x60
20 | TERM cons25
21 | TERM console
22 | TERM cygwin
23 | TERM dtterm
24 | TERM Eterm
25 | TERM eterm-color
26 | TERM gnome
27 | TERM gnome-256color
28 | TERM jfbterm
29 | TERM konsole
30 | TERM kterm
31 | TERM linux
32 | TERM linux-c
33 | TERM mach-color
34 | TERM mlterm
35 | TERM nxterm
36 | TERM putty
37 | TERM rxvt
38 | TERM rxvt-256color
39 | TERM rxvt-cygwin
40 | TERM rxvt-cygwin-native
41 | TERM rxvt-unicode
42 | TERM rxvt-unicode256
43 | TERM rxvt-unicode-256color
44 | TERM screen
45 | TERM screen-256color
46 | TERM screen-256color-bce
47 | TERM screen-bce
48 | TERM screen.linux
49 | TERM screen-w
50 | TERM vt100
51 | TERM xterm
52 | TERM xterm-16color
53 | TERM xterm-256color
54 | TERM xterm-88color
55 | TERM xterm-color
56 | TERM xterm-debian
57 |
58 | # EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
59 | EIGHTBIT 1
60 |
61 | #############################################################################
62 | # Below are the color init strings for the basic file types. A color init
63 | # string consists of one or more of the following numeric codes:
64 | #
65 | # Attribute codes:
66 | # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
67 | # Text color codes:
68 | # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
69 | # Background color codes:
70 | # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
71 | #
72 | # NOTES:
73 | # - See http://www.oreilly.com/catalog/wdnut/excerpt/color_names.html
74 | # - Color combinations
75 | # ANSI Color code Solarized Notes Universal
76 | # ~~~~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~ ~~~~~~~~~
77 | # 00 none NORMAL, FILE
78 | # 30 black base02
79 | # 01;30 bright black base03 bg of SolDark
80 | # 31 red red docs & mm src
81 | # 01;31 bright red orange EXEC
82 | # 32 green green editable text
83 | # 01;32 bright green base01 unimportant text
84 | # 33 yellow yellow unclear in light bg multimedia
85 | # 01;33 bright yellow base00 fg of SolLight
86 | # 34 blue blue unclear in dark bg user customized
87 | # 01;34 bright blue base0 fg in SolDark
88 | # 35 magenta magenta LINK
89 | # 01;35 bright magenta violet archive/compressed
90 | # 36 cyan cyan DIR
91 | # 01;36 bright cyan base1 unimportant non-text
92 | # 37 white base2
93 | # 01;37 bright white base3 bg in SolLight
94 | # 05;37;41 unclear in Putty dark
95 |
96 |
97 | ### By file type
98 |
99 | # global default
100 | NORMAL 00
101 | # normal file
102 | FILE 00
103 | # directory
104 | DIR 01;34
105 | # symbolic link
106 | LINK 01;36
107 |
108 | # pipe, socket, block device, character device (blue bg)
109 | FIFO 30;44
110 | SOCK 30;45
111 | BLK 30;43
112 | CHR 30;43
113 |
114 |
115 | #############################################################################
116 | ### By file attributes
117 |
118 | # Orphaned symlinks (blinking white on red)
119 | # Blink may or may not work (works on iTerm dark or light, and Putty dark)
120 | #ORPHAN 05;37;41
121 | # ... and the files that orphaned symlinks point to (blinking white on red)
122 | MISSING 01;31
123 |
124 | # files with execute permission
125 | EXEC 01;32 # Unix
126 | #.cmd 01;31 # Win
127 | #.exe 01;31 # Win
128 | #.com 01;31 # Win
129 | #.bat 01;31 # Win
130 | #.reg 01;31 # Win
131 | #.app 01;31 # OSX
132 |
133 | #############################################################################
134 | ## By extension
135 |
136 | # List any file extensions like '.gz' or '.tar' that you would like ls
137 | # to colorize below. Put the extension, a space, and the color init string.
138 | # (and any comments you want to add after a '#')
139 |
140 | ## Text that we can edit with a regular editor
141 | #.txt 32
142 | #.org 32
143 | #.md 32
144 | #.mkd 32
145 |
146 | ## Source text
147 | .h 35
148 | .c 35
149 | .C 35
150 | .cc 35
151 | .cpp 35
152 | .cxx 35
153 | .hpp 35
154 | .cu 35
155 | .objc 35
156 | .sh 35
157 | .csh 35
158 | .zsh 35
159 | .el 35
160 | .vim 35
161 | .java 35
162 | .pl 35
163 | .pm 35
164 | .py 35
165 | .rb 35
166 | .hs 35
167 | .php 35
168 | .htm 35
169 | .html 35
170 | .shtml 35
171 | .xml 35
172 | .rdf 35
173 | .css 35
174 | .js 35
175 | .man 35
176 | .pod 35
177 | .tex 35
178 | .gpi 35
179 |
180 | ## Image
181 | .bmp 32
182 | .cgm 32
183 | .dl 32
184 | .dvi 32
185 | .emf 32
186 | .eps 32
187 | .gif 32
188 | .jpeg 32
189 | .jpg 32
190 | .JPG 32
191 | .mng 32
192 | .pbm 32
193 | .pcx 32
194 | .pgm 32
195 | .png 32
196 | .ppm 32
197 | .pps 32
198 | .ppsx 32
199 | .ps 32
200 | .svg 32
201 | .svgz 32
202 | .tga 32
203 | .tif 32
204 | .tiff 32
205 | .xbm 32
206 | .xcf 32
207 | .xpm 32
208 | .xwd 32
209 | .yuv 32
210 |
211 | ## Audio
212 | .aac 33
213 | .au 33
214 | .flac 33
215 | .mid 33
216 | .midi 33
217 | .mka 33
218 | .mp3 33
219 | .mpa 33
220 | .mpeg 33
221 | .mpg 33
222 | .ogg 33
223 | .ra 33
224 | .wav 33
225 |
226 | ## Video
227 | .anx 01;33
228 | .asf 01;33
229 | .avi 01;33
230 | .axv 01;33
231 | .flc 01;33
232 | .fli 01;33
233 | .flv 01;33
234 | .gl 01;33
235 | .m2v 01;33
236 | .m4v 01;33
237 | .mkv 01;33
238 | .mov 01;33
239 | .mp4 01;33
240 | .mp4v 01;33
241 | .mpeg 01;33
242 | .mpg 01;33
243 | .nuv 01;33
244 | .ogm 01;33
245 | .ogv 01;33
246 | .ogx 01;33
247 | .qt 01;33
248 | .rm 01;33
249 | .rmvb 01;33
250 | .swf 01;33
251 | .vob 01;33
252 | .wmv 01;33
253 |
254 | ## Binary document formats and multimedia source
255 | .doc 36
256 | .docx 36
257 | .rtf 36
258 | .dot 36
259 | .dotx 36
260 | .xls 36
261 | .xlsx 36
262 | .ppt 36
263 | .pptx 36
264 | .fla 36
265 | .psd 36
266 | .pdf 36
267 | .djvu 36
268 | .odt 36
269 | .fodt 36
270 | .ods 36
271 | .fods 36
272 | .odp 36
273 | .fodp 36
274 | .odg 36
275 | .fodg 36
276 | .odb 36
277 | .odf 36
278 |
279 | ## Archives, compressed
280 | .7z 31
281 | .apk 31
282 | .arj 31
283 | .bin 31
284 | .bz 31
285 | .bz2 31
286 | .cab 31 # Win
287 | .deb 31
288 | .dmg 31 # OSX
289 | .gem 31
290 | .gz 31
291 | .iso 31
292 | .jar 31
293 | .msi 31 # Win
294 | .rar 31
295 | .rpm 31
296 | .tar 31
297 | .tbz 31
298 | .tbz2 31
299 | .tgz 31
300 | .tx 31
301 | .war 31
302 | .xpi 31
303 | .xz 31
304 | .z 31
305 | .Z 31
306 | .zip 31
307 | .zst 31
308 |
309 | ## Unimportant files
310 | .log 01;30
311 | *~ 01;30
312 | *# 01;30
313 | .bak 01;30
314 | .BAK 01;30
315 | .old 01;30
316 | .OLD 01;30
317 | .off 01;30
318 | .OFF 01;30
319 | .dist 01;30
320 | .DIST 01;30
321 | .orig 01;30
322 | .ORIG 01;30
323 | .swp 01;30
324 | .swo 01;30
325 | .tmp 01;30
326 | .aux 01;30
327 | .bbl 01;30
328 | .blg 01;30
329 | .toc 01;30
330 |
--------------------------------------------------------------------------------
/.config/dircolors.256color:
--------------------------------------------------------------------------------
1 |
2 | # Dark 256 color solarized theme for the color GNU ls utility.
3 | # Used and tested with dircolors (GNU coreutils) 8.5
4 | #
5 | # @author {@link http://sebastian.tramp.name Sebastian Tramp}
6 | # @license http://sam.zoy.org/wtfpl/ Do What The Fuck You Want To Public License (WTFPL)
7 | #
8 | # More Information at
9 | # https://github.com/seebi/dircolors-solarized
10 |
11 | # Term Section
12 | TERM Eterm
13 | TERM ansi
14 | TERM color-xterm
15 | TERM con132x25
16 | TERM con132x30
17 | TERM con132x43
18 | TERM con132x60
19 | TERM con80x25
20 | TERM con80x28
21 | TERM con80x30
22 | TERM con80x43
23 | TERM con80x50
24 | TERM con80x60
25 | TERM cons25
26 | TERM console
27 | TERM cygwin
28 | TERM dtterm
29 | TERM eterm-color
30 | TERM gnome
31 | TERM gnome-256color
32 | TERM jfbterm
33 | TERM konsole
34 | TERM kterm
35 | TERM linux
36 | TERM linux-c
37 | TERM mach-color
38 | TERM mlterm
39 | TERM putty
40 | TERM rxvt
41 | TERM rxvt-256color
42 | TERM rxvt-cygwin
43 | TERM rxvt-cygwin-native
44 | TERM rxvt-unicode
45 | TERM rxvt-unicode256
46 | TERM rxvt-unicode-256color
47 | TERM screen
48 | TERM screen-256color
49 | TERM screen-256color-bce
50 | TERM screen-bce
51 | TERM screen-w
52 | TERM screen.linux
53 | TERM vt100
54 | TERM xterm
55 | TERM xterm-16color
56 | TERM xterm-256color
57 | TERM xterm-88color
58 | TERM xterm-color
59 | TERM xterm-debian
60 | TERM xterm-termite
61 | TERM alacritty
62 |
63 | ## Documentation
64 | #
65 | # standard colors
66 | #
67 | # Below are the color init strings for the basic file types. A color init
68 | # string consists of one or more of the following numeric codes:
69 | # Attribute codes:
70 | # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
71 | # Text color codes:
72 | # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
73 | # Background color codes:
74 | # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
75 | #
76 | #
77 | # 256 color support
78 | # see here: http://www.mail-archive.com/bug-coreutils@gnu.org/msg11030.html)
79 | #
80 | # Text 256 color coding:
81 | # 38;5;COLOR_NUMBER
82 | # Background 256 color coding:
83 | # 48;5;COLOR_NUMBER
84 |
85 | ## Special files
86 |
87 | NORMAL 00;38;5;244 # no color code at all
88 | #FILE 00 # regular file: use no color at all
89 | RESET 0 # reset to "normal" color
90 | DIR 00;38;5;33 # directory 01;34
91 | LINK 01;38;5;37 # symbolic link. (If you set this to 'target' instead of a
92 | # numerical value, the color is as for the file pointed to.)
93 | MULTIHARDLINK 00 # regular file with more than one link
94 | FIFO 48;5;230;38;5;136;01 # pipe
95 | SOCK 48;5;230;38;5;136;01 # socket
96 | DOOR 48;5;230;38;5;136;01 # door
97 | BLK 48;5;230;38;5;244;01 # block device driver
98 | CHR 48;5;230;38;5;244;01 # character device driver
99 | ORPHAN 48;5;235;38;5;160 # symlink to nonexistent file, or non-stat'able file
100 | SETUID 48;5;160;38;5;230 # file that is setuid (u+s)
101 | SETGID 48;5;136;38;5;230 # file that is setgid (g+s)
102 | CAPABILITY 30;41 # file with capability
103 | STICKY_OTHER_WRITABLE 48;5;64;38;5;230 # dir that is sticky and other-writable (+t,o+w)
104 | OTHER_WRITABLE 48;5;235;38;5;33 # dir that is other-writable (o+w) and not sticky
105 | STICKY 48;5;33;38;5;230 # dir with the sticky bit set (+t) and not other-writable
106 | # This is for files with execute permission:
107 | EXEC 01;38;5;64
108 |
109 | ## Archives or compressed (bold for compression)
110 | .tar 00;38;5;88
111 | .tgz 01;38;5;88
112 | .arj 01;38;5;88
113 | .taz 01;38;5;88
114 | .lzh 01;38;5;88
115 | .lzma 01;38;5;88
116 | .tlz 01;38;5;88
117 | .txz 01;38;5;88
118 | .zip 01;38;5;88
119 | .z 01;38;5;88
120 | .Z 01;38;5;88
121 | .zst 01;38;5;88
122 | .dz 01;38;5;88
123 | .gz 01;38;5;88
124 | .lz 01;38;5;88
125 | .xz 01;38;5;88
126 | .bz2 01;38;5;88
127 | .bz 01;38;5;88
128 | .tbz 01;38;5;88
129 | .tbz2 01;38;5;88
130 | .tz 01;38;5;88
131 | .deb 01;38;5;88
132 | .rpm 01;38;5;88
133 | .jar 01;38;5;88
134 | .rar 01;38;5;88
135 | .ace 01;38;5;88
136 | .zoo 01;38;5;88
137 | .cpio 01;38;5;88
138 | .7z 01;38;5;88
139 | .rz 01;38;5;88
140 | .apk 01;38;5;88
141 |
142 | # Image formats (yellow)
143 | .jpg 00;38;5;136
144 | .JPG 00;38;5;136 #stupid but needed
145 | .jpeg 00;38;5;136
146 | .gif 00;38;5;136
147 | .bmp 00;38;5;136
148 | .pbm 00;38;5;136
149 | .pgm 00;38;5;136
150 | .ppm 00;38;5;136
151 | .tga 00;38;5;136
152 | .xbm 00;38;5;136
153 | .xpm 00;38;5;136
154 | .tif 00;38;5;136
155 | .tiff 00;38;5;136
156 | .png 00;38;5;136
157 | .webp 00;38;5;136
158 | .svg 00;38;5;136
159 | .svgz 00;38;5;136
160 | .mng 00;38;5;136
161 | .pcx 00;38;5;136
162 | .dl 00;38;5;136
163 | .xcf 00;38;5;136
164 | .xwd 00;38;5;136
165 | .yuv 00;38;5;136
166 | .cgm 00;38;5;136
167 | .emf 00;38;5;136
168 | .eps 00;38;5;136
169 | .CR2 00;38;5;136
170 | .ico 00;38;5;136
171 |
172 | ## Source text
173 | .h 00;38;5;177
174 | .c 00;38;5;177
175 | .C 00;38;5;177
176 | .cc 00;38;5;177
177 | .cpp 00;38;5;177
178 | .cxx 00;38;5;177
179 | .hpp 00;38;5;177
180 | .cu 00;38;5;177
181 | .objc 00;38;5;177
182 | .sh 00;38;5;177
183 | .csh 00;38;5;177
184 | .zsh 00;38;5;177
185 | .el 00;38;5;177
186 | .vim 00;38;5;177
187 | .java 00;38;5;177
188 | .pl 00;38;5;177
189 | .pm 00;38;5;177
190 | .py 00;38;5;177
191 | .rb 00;38;5;177
192 | .hs 00;38;5;177
193 | .php 00;38;5;177
194 | .htm 00;38;5;177
195 | .html 00;38;5;177
196 | .shtml 00;38;5;177
197 | .xml 00;38;5;177
198 | .rdf 00;38;5;177
199 | .css 00;38;5;177
200 | .js 00;38;5;177
201 | .man 00;38;5;177
202 | .pod 00;38;5;177
203 | .tex 00;38;5;177
204 | .gpi 00;38;5;177
205 |
206 | # Files of special interest (base1 + bold)
207 | .rdf 01;38;5;245
208 | .owl 01;38;5;245
209 | .n3 01;38;5;245
210 | .ttl 01;38;5;245
211 | .nt 01;38;5;245
212 | .torrent 01;38;5;245
213 | *Makefile 01;38;5;245
214 | *Rakefile 01;38;5;245
215 | *build.xml 01;38;5;245
216 | *rc 01;38;5;245
217 | .nfo 01;38;5;245
218 | *README 01;38;5;245
219 | *README.txt 01;38;5;245
220 | *readme.txt 01;38;5;245
221 | .md 01;38;5;245
222 | *README.markdown 01;38;5;245
223 | .ini 01;38;5;245
224 | .yml 01;38;5;245
225 | .cfg 01;38;5;245
226 | .conf 01;38;5;245
227 |
228 | # "unimportant" files as logs and backups (base01)
229 | .log 00;38;5;240
230 | .bak 00;38;5;240
231 | .aux 00;38;5;240
232 | .bbl 00;38;5;240
233 | .blg 00;38;5;240
234 | *~ 00;38;5;240
235 | *# 00;38;5;240
236 | .part 00;38;5;240
237 | .incomplete 00;38;5;240
238 | .swp 00;38;5;240
239 | .tmp 00;38;5;240
240 | .temp 00;38;5;240
241 | .o 00;38;5;240
242 | .cuo 00;38;5;240 # substitute for .cu.o
243 | .d 00;38;5;240
244 | .pyc 00;38;5;240
245 | .class 00;38;5;240
246 | .cache 00;38;5;240
247 |
248 | ## Binary document formats and multimedia source
249 | .doc 00;38;5;99
250 | .docx 00;38;5;99
251 | .rtf 00;38;5;99
252 | .dot 00;38;5;99
253 | .dotx 00;38;5;99
254 | .xls 00;38;5;99
255 | .xlsx 00;38;5;99
256 | .ppt 00;38;5;99
257 | .pptx 00;38;5;99
258 | .fla 00;38;5;99
259 | .psd 00;38;5;99
260 | .pdf 00;38;5;99
261 | .djvu 00;38;5;99
262 | .odt 00;38;5;99
263 | .fodt 00;38;5;99
264 | .ods 00;38;5;99
265 | .fods 00;38;5;99
266 | .odp 00;38;5;99
267 | .fodp 00;38;5;99
268 | .odg 00;38;5;99
269 | .fodg 00;38;5;99
270 | .odb 00;38;5;99
271 | .odf 00;38;5;99
272 |
273 | # Audio formats (orange)
274 | .aac 00;38;5;166
275 | .au 00;38;5;166
276 | .flac 00;38;5;166
277 | .mid 00;38;5;166
278 | .midi 00;38;5;166
279 | .mka 00;38;5;166
280 | .mp3 00;38;5;166
281 | .mpc 00;38;5;166
282 | .ogg 00;38;5;166
283 | .ra 00;38;5;166
284 | .wav 00;38;5;166
285 | .m4a 00;38;5;166
286 | # http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
287 | .axa 00;38;5;166
288 | .oga 00;38;5;166
289 | .spx 00;38;5;166
290 | .xspf 00;38;5;166
291 |
292 | # Video formats (as audio + bold)
293 | .mov 01;38;5;166
294 | .mpg 01;38;5;166
295 | .mpeg 01;38;5;166
296 | .m2v 01;38;5;166
297 | .mkv 01;38;5;166
298 | .ogm 01;38;5;166
299 | .mp4 01;38;5;166
300 | .m4v 01;38;5;166
301 | .mp4v 01;38;5;166
302 | .vob 01;38;5;166
303 | .qt 01;38;5;166
304 | .nuv 01;38;5;166
305 | .wmv 01;38;5;166
306 | .asf 01;38;5;166
307 | .rm 01;38;5;166
308 | .rmvb 01;38;5;166
309 | .flc 01;38;5;166
310 | .avi 01;38;5;166
311 | .fli 01;38;5;166
312 | .flv 01;38;5;166
313 | .gl 01;38;5;166
314 | .m2ts 01;38;5;166
315 | .divx 01;38;5;166
316 | .webm 01;38;5;166
317 | # http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
318 | .axv 01;38;5;166
319 | .anx 01;38;5;166
320 | .ogv 01;38;5;166
321 | .ogx 01;38;5;166
322 |
323 |
324 |
--------------------------------------------------------------------------------
/.config/dunst/dunstrc:
--------------------------------------------------------------------------------
1 | # vim: ft=dosini
2 |
3 | [global]
4 | font = Monospace 10
5 |
6 | # allow a small subset of html markup:
7 | # bold
8 | # italic
9 | # strikethrough
10 | # underline
11 | #
12 | # for a complete reference see http://developer.gnome.org/pango/stable/PangoMarkupFormat.html
13 | # If markup is not allowed, those tags will be stripped out of the message.
14 | allow_markup = yes
15 |
16 | # The format of the message. Possible variables are:
17 | # %a appname
18 | # %s summary
19 | # %b body
20 | # %i iconname (including its path)
21 | # %I iconname (without its path)
22 | # %p progress value if set ([ 0%] to [100%]) or nothing
23 | # Markup is allowed
24 | format = "%s\n%b"
25 |
26 | # Sort messages by urgency
27 | sort = yes
28 |
29 | # Show how many messages are currently hidden (because of geometry)
30 | indicate_hidden = yes
31 |
32 | # alignment of message text.
33 | # Possible values are "left", "center" and "right"
34 | alignment = left
35 |
36 | # The frequency with wich text that is longer than the notification
37 | # window allows bounces back and forth.
38 | # This option conflicts with 'word_wrap'.
39 | # Set to 0 to disable
40 | bounce_freq = 0
41 |
42 | # show age of message if message is older than show_age_threshold seconds.
43 | # set to -1 to disable
44 | show_age_threshold = 60
45 |
46 | # split notifications into multiple lines if they don't fit into geometry
47 | word_wrap = yes
48 |
49 | # ignore newlines '\n' in notifications
50 | ignore_newline = no
51 |
52 |
53 | # the geometry of the window
54 | # geometry [{width}]x{height}][+/-{x}+/-{y}]
55 | # The geometry of the message window.
56 | # The height is measured in number of notifications everything else in pixels. If the width
57 | # is omitted but the height is given ("-geometry x2"), the message window
58 | # expands over the whole screen (dmenu-like). If width is 0,
59 | # the window expands to the longest message displayed.
60 | # A positive x is measured from the left, a negative from the
61 | # right side of the screen. Y is measured from the top and down respectevly.
62 | # The width can be negative. In this case the actual width is the
63 | # screen width minus the width defined in within the geometry option.
64 | geometry = "300x5-0+20"
65 |
66 | # The transparency of the window. range: [0; 100]
67 | # This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..)
68 | transparency = 0
69 |
70 | # Don't remove messages, if the user is idle (no mouse or keyboard input)
71 | # for longer than idle_threshold seconds.
72 | # Set to 0 to disable.
73 | idle_threshold = 0
74 |
75 | # Which monitor should the notifications be displayed on.
76 | monitor = 0
77 |
78 | # Display notification on focused monitor. Possible modes are:
79 | # mouse: follow mouse pointer
80 | # keyboard: follow window with keyboard focus
81 | # none: don't follow anything
82 | #
83 | # "keyboard" needs a windowmanager that exports the _NET_ACTIVE_WINDOW property.
84 | # This should be the case for almost all modern windowmanagers.
85 | #
86 | # If this option is set to mouse or keyboard, the monitor option will be
87 | # ignored.
88 | follow = none
89 |
90 | # should a notification popped up from history be sticky or
91 | # timeout as if it would normally do.
92 | sticky_history = no
93 |
94 | # The height of a single line. If the height is smaller than the font height,
95 | # it will get raised to the font height.
96 | # This adds empty space above and under the text.
97 | line_height = 0
98 |
99 | # Draw a line of 'separatpr_height' pixel height between two notifications.
100 | # Set to 0 to disable
101 | separator_height = 2
102 |
103 | # padding between text and separator
104 | padding = 8
105 |
106 | # horizontal padding
107 | horizontal_padding = 8
108 |
109 | # Define a color for the separator.
110 | # possible values are:
111 | # * auto: dunst tries to find a color fitting to the background
112 | # * foreground: use the same color as the foreground
113 | # * frame: use the same color as the frame.
114 | # * anything else will be interpreted as a X color
115 | separator_color = frame
116 |
117 | # print a notification on startup
118 | # This is mainly for error detection, since dbus (re-)starts dunst
119 | # automatically after a crash.
120 | startup_notification = false
121 |
122 | # dmenu path
123 | dmenu = /usr/bin/dmenu -p dunst:
124 |
125 | # browser for opening urls in context menu
126 | browser = /usr/bin/dwb
127 |
128 |
129 | [frame]
130 | width = 1
131 | color = "#dddddd"
132 |
133 |
134 | [shortcuts]
135 | # shortcuts are specified as [modifier+][modifier+]...key
136 | # available modifiers are 'ctrl', 'mod1' (the alt-key), 'mod2', 'mod3'
137 | # and 'mod4' (windows-key)
138 | # xev might be helpful to find names for keys
139 |
140 | # close notification
141 | close = ctrl+space
142 |
143 | # close all notifications
144 | close_all = ctrl+shift+space
145 |
146 | # redisplay last message(s)
147 | history = ctrl+semicolon
148 |
149 | # context menu
150 | context = ctrl+shift+period
151 |
152 |
153 | # IMPORTANT: colors have to be defined in quotation marks.
154 | # Otherwise the '#' and following would be interpreted as a comment.
155 | [urgency_low]
156 | background = "#333333"
157 | foreground = "#dddddd"
158 | timeout = 5
159 |
160 | [urgency_normal]
161 | background = "#333333"
162 | foreground = "#1793d0"
163 | timeout = 5
164 |
165 | [urgency_critical]
166 | background = "#333333"
167 | foreground = "#cc6600"
168 | timeout = 20
169 |
170 |
171 | # Every section that isn't one of the above is interpreted as a rules
172 | # to override settings for certain messages.
173 | # Messages can be matched by 'appname', 'summary', 'body' or 'icon'
174 | # and you can override the 'timeout', 'urgency', 'foreground', 'background'
175 | # and 'format'.
176 | # Shell-like globbing will get expanded.
177 | #
178 | # SCRIPTING
179 | # you can specify a script that gets run when the rule matches by setting
180 | # the 'script' option.
181 | # The script will be called as follows:
182 | # script appname summary body icon urgency
183 | # where urgency can be "LOW", "NORMAL" or "CRITICAL".
184 | #
185 | # NOTE: if you don't want a notification to be displayed, set the format to ""
186 | # NOTE: It might be helpful to run dunst -print in a terminal in order to find
187 | # fitting options for rules.
188 |
189 | #[espeak]
190 | # summary = "*"
191 | # script = dunst_espeak.sh
192 |
193 | #[script-test]
194 | # summary = "*script*"
195 | # script = dunst_test.sh
196 |
197 | #[ignore]
198 | ## This notification will not be displayed
199 | # summary = "foobar"
200 | # format = ""
201 |
--------------------------------------------------------------------------------
/.config/flameshot/flameshot.ini:
--------------------------------------------------------------------------------
1 | [General]
2 | autoCloseIdleDaemon=true
3 | filenamePattern=screenshot-%F@%T
4 | saveAsFileExtension=png
5 | savePath=/home/lahwaacz/stuff/screenshots
6 | savePathFixed=true
7 |
--------------------------------------------------------------------------------
/.config/fontconfig/conf.d/90-preferred-fonts.conf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | serif
9 |
10 | DejaVu Serif
11 |
12 |
13 |
14 |
15 | sans-serif
16 |
17 | DejaVu Sans
18 |
19 |
20 |
21 |
22 | monospace
23 |
24 | Hack Nerd Font
25 |
26 |
27 |
28 |
29 | cursive
30 |
31 | DejaVu Sans
32 |
33 |
34 |
35 |
36 | fantasy
37 |
38 | DejaVu Sans
39 |
40 |
41 |
42 |
43 | clean
44 |
45 | DejaVu Sans
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/.config/fontconfig/fonts.conf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ~/.local/share/fonts
7 |
8 |
9 |
10 |
11 |
12 | Clean
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | true
23 |
24 |
25 |
26 |
27 |
28 |
29 | rgb
30 |
31 |
32 |
33 |
34 |
35 |
36 | lcddefault
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/.config/git/attributes:
--------------------------------------------------------------------------------
1 | *.tex diff=latex
2 |
--------------------------------------------------------------------------------
/.config/git/config:
--------------------------------------------------------------------------------
1 | [user]
2 | name = Jakub Klinkovský
3 | email = j.l.k@gmx.com
4 | # NOTE: the "!" at the end forces git to use the specific key and not a subkey
5 | signingkey = C889BD52BCF056C5!
6 |
7 | [init]
8 | defaultBranch = main
9 |
10 | [color]
11 | branch = auto
12 | diff = auto
13 | interactive = auto
14 | status = auto
15 | grep = auto
16 |
17 | # https://difftastic.wilfred.me.uk/git.html
18 | [difftool "difftastic"]
19 | # See `man git-difftool` for a description of MERGED, LOCAL and REMOTE.
20 | cmd = difft "$MERGED" "$LOCAL" "abcdef1" "100644" "$REMOTE" "abcdef2" "100644"
21 |
22 | [difftool]
23 | # Run the difftool immediately, don't ask 'are you sure' each time.
24 | prompt = false
25 |
26 | [pager]
27 | # Use a pager if the difftool output is larger than one screenful,
28 | # consistent with the behaviour of `git diff`.
29 | difftool = true
30 |
31 | [diff]
32 | # also detect copies
33 | renames = copies
34 | # Use difftastic by default for diff.
35 | # NOTE: inline mode is broken ☹️ https://github.com/Wilfred/difftastic/issues/349
36 | #external = difft --display inline
37 | # Set difftastic as the default difftool, so we don't need to specify
38 | # `-t difftastic` every time.
39 | tool = difftastic
40 |
41 | [merge]
42 | tool = nvimdiff
43 | log = true
44 |
45 | [log]
46 | decorate = full
47 | showSignature = true
48 | # Continue listing the history of a file beyond renames (works only for a single file).
49 | follow = true
50 |
51 | [push]
52 | default = simple
53 | autoSetupRemote = true
54 |
55 | [pull]
56 | rebase = true
57 |
58 | [fetch]
59 | prune = true
60 |
61 | [alias]
62 | last = show --stat HEAD
63 | countcommits = shortlog -sn --no-merges
64 | stash-pop-if-not-empty = "![[ $(git stash list | wc -l) -gt 0 ]] && git stash pop || true"
65 | stashreset = "!git stash save && git fetch && git reset --hard FETCH_HEAD && git stash-pop-if-not-empty"
66 | amend = commit --amend
67 | tags = tag -n99
68 | ll = log --oneline --graph --all --decorate
69 |
70 | [help]
71 | # execute corrected commands immediately
72 | autocorrect = -1
73 |
74 | # http://stackoverflow.com/questions/7542543/use-gits-word-diff-for-latex-files
75 | #[diff "latex"]
76 | # wordRegex = "\\\\[a-zA-Z]+|[{}]|\\\\.|[^\\{}[:space:]]+"
77 | # command = ~/bin/diff-words.sh
78 |
79 | [filter "lfs"]
80 | clean = git-lfs clean -- %f
81 | smudge = git-lfs smudge -- %f
82 | process = git-lfs filter-process
83 | required = true
84 |
85 | [includeIf "hasconfig:remote.*.url:**/*archlinux.org*/**"]
86 | path = ~/.config/git/config.archlinux
87 | [includeIf "hasconfig:remote.*.url:**/*cvut.cz:*/**"]
88 | path = ~/.config/git/config.cvut
89 | [includeIf "hasconfig:remote.*.url:**/*github.com:*/**"]
90 | path = ~/.config/git/config.github
91 |
92 | [includeIf "gitdir:*/tnl-project/"]
93 | path = ~/.config/git/config.cvut
94 |
--------------------------------------------------------------------------------
/.config/git/config.archlinux:
--------------------------------------------------------------------------------
1 | [user]
2 | name = Jakub Klinkovský
3 | email = lahwaacz@archlinux.org
4 | signingKey = 109415E692007609CA7EBFE4001CF4810BE8D911
5 |
--------------------------------------------------------------------------------
/.config/git/config.cvut:
--------------------------------------------------------------------------------
1 | [user]
2 | name = Jakub Klinkovský
3 | email = jakub.klinkovsky@fjfi.cvut.cz
4 | signingKey = ""
5 |
6 | [commit]
7 | gpgSign = false
8 |
9 | [push]
10 | gpgSign = false
11 |
12 | [tag]
13 | gpgSign = false
14 |
--------------------------------------------------------------------------------
/.config/git/config.github:
--------------------------------------------------------------------------------
1 | [user]
2 | name = Jakub Klinkovský
3 | email = 1289205+lahwaacz@users.noreply.github.com
4 |
--------------------------------------------------------------------------------
/.config/git/ignore:
--------------------------------------------------------------------------------
1 | # Compiled source #
2 | ###################
3 | *.com
4 | *.class
5 | *.dll
6 | *.exe
7 | *.o
8 | *.so
9 | *.pyc
10 | *.pyo
11 |
12 | # Packages #
13 | ############
14 | # it's better to unpack these files and commit the raw source
15 | # git has its own built in compression methods
16 | *.7z
17 | *.dmg
18 | *.gz
19 | *.iso
20 | *.jar
21 | *.rar
22 | *.tar
23 | *.zip
24 |
25 | # Logs and databases #
26 | ######################
27 | *.log
28 | *.sqlite
29 |
30 | # OS generated files #
31 | ######################
32 | .DS_Store
33 | .DS_Store?
34 | ._*
35 | .Spotlight-V100
36 | .Trashes
37 | Icon?
38 | ehthumbs.db
39 | Thumbs.db
40 |
41 | # IDEs etc.
42 | .vscode/
43 | .ycm_extra_conf.py
44 | .mypy_cache/
45 | .ruff_cache/
46 |
--------------------------------------------------------------------------------
/.config/gnupg/dirmngr.conf:
--------------------------------------------------------------------------------
1 | # GnuPG can send and receive keys to and from a keyserver. These
2 | # servers can be HKP, email, or LDAP (if GnuPG is built with LDAP
3 | # support).
4 | #
5 | # Example HKP keyserver:
6 | # hkp://keys.gnupg.net
7 | # hkp://subkeys.pgp.net
8 | #
9 | # Example email keyserver:
10 | # mailto:pgp-public-keys@keys.pgp.net
11 | #
12 | # Example LDAP keyservers:
13 | # ldap://keyserver.pgp.com
14 | #
15 | # Regular URL syntax applies, and you can set an alternate port
16 | # through the usual method:
17 | # hkp://keyserver.example.net:22742
18 | #
19 | # Most users just set the name and type of their preferred keyserver.
20 | # Note that most servers (with the notable exception of
21 | # ldap://keyserver.pgp.com) synchronize changes with each other. Note
22 | # also that a single server name may actually point to multiple
23 | # servers via DNS round-robin. hkp://keys.gnupg.net is an example of
24 | # such a "server", which spreads the load over a number of physical
25 | # servers. To see the IP address of the server actually used, you may use
26 | # the "--keyserver-options debug".
27 |
28 | #keyserver hkp://keys.gnupg.net
29 | #keyserver hkp://pgp.mit.edu
30 | #keyserver mailto:pgp-public-keys@keys.nl.pgp.net
31 | #keyserver ldap://keyserver.pgp.com
32 |
33 | # https://wiki.archlinux.org/index.php/GnuPG#Key_servers
34 | #keyserver hkp://pool.sks-keyservers.net
35 | #keyserver hkp://keyserver.ubuntu.com
36 | #hkp-cacert /usr/share/gnupg/sks-keyservers.netCA.pem
37 | # https://keys.openpgp.org/about/usage
38 | keyserver hkps://keys.openpgp.org
39 |
--------------------------------------------------------------------------------
/.config/gnupg/gpg-agent.conf:
--------------------------------------------------------------------------------
1 | enable-ssh-support
2 |
3 | # cache gpg and ssh keys for 6 hours
4 | default-cache-ttl 21600
5 | max-cache-ttl 21600
6 | default-cache-ttl-ssh 21600
7 | max-cache-ttl-ssh 21600
8 |
9 | # pinentry settings
10 | pinentry-program /usr/bin/pinentry-qt
11 |
12 | # disable calls to the org.freedesktop.secrets DBus service from pinentry
13 | no-allow-external-cache
14 |
--------------------------------------------------------------------------------
/.config/gnupg/gpg.conf:
--------------------------------------------------------------------------------
1 | # Options for GnuPG
2 | # Copyright 1998, 1999, 2000, 2001, 2002, 2003,
3 | # 2010 Free Software Foundation, Inc.
4 | #
5 | # This file is free software; as a special exception the author gives
6 | # unlimited permission to copy and/or distribute it, with or without
7 | # modifications, as long as this notice is preserved.
8 | #
9 | # This file is distributed in the hope that it will be useful, but
10 | # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
11 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | #
13 | # Unless you specify which option file to use (with the command line
14 | # option "--options filename"), GnuPG uses the file ~/.gnupg/gpg.conf
15 | # by default.
16 | #
17 | # An options file can contain any long options which are available in
18 | # GnuPG. If the first non white space character of a line is a '#',
19 | # this line is ignored. Empty lines are also ignored.
20 | #
21 | # See the man page for a list of options.
22 |
23 | # Uncomment the following option to get rid of the copyright notice
24 |
25 | no-greeting
26 |
27 | # If you have more than 1 secret key in your keyring, you may want to
28 | # uncomment the following option and set your preferred keyid.
29 |
30 | #default-key 621CC013
31 |
32 | # If you do not pass a recipient to gpg, it will ask for one. Using
33 | # this option you can encrypt to a default key. Key validation will
34 | # not be done in this case. The second form uses the default key as
35 | # default recipient.
36 |
37 | #default-recipient some-user-id
38 | #default-recipient-self
39 |
40 | # Use --encrypt-to to add the specified key as a recipient to all
41 | # messages. This is useful, for example, when sending mail through a
42 | # mail client that does not automatically encrypt mail to your key.
43 | # In the example, this option allows you to read your local copy of
44 | # encrypted mail that you've sent to others.
45 |
46 | #encrypt-to some-key-id
47 |
48 | # By default GnuPG creates version 4 signatures for data files as
49 | # specified by OpenPGP. Some earlier (PGP 6, PGP 7) versions of PGP
50 | # require the older version 3 signatures. Setting this option forces
51 | # GnuPG to create version 3 signatures.
52 |
53 | #force-v3-sigs
54 |
55 | # Because some mailers change lines starting with "From " to ">From "
56 | # it is good to handle such lines in a special way when creating
57 | # cleartext signatures; all other PGP versions do it this way too.
58 |
59 | #no-escape-from-lines
60 |
61 | # If you do not use the Latin-1 (ISO-8859-1) charset, you should tell
62 | # GnuPG which is the native character set. Please check the man page
63 | # for supported character sets. This character set is only used for
64 | # metadata and not for the actual message which does not undergo any
65 | # translation. Note that future version of GnuPG will change to UTF-8
66 | # as default character set. In most cases this option is not required
67 | # as GnuPG is able to figure out the correct charset at runtime.
68 |
69 | charset utf-8
70 |
71 | # Group names may be defined like this:
72 | # group mynames = paige 0x12345678 joe patti
73 | #
74 | # Any time "mynames" is a recipient (-r or --recipient), it will be
75 | # expanded to the names "paige", "joe", and "patti", and the key ID
76 | # "0x12345678". Note there is only one level of expansion - you
77 | # cannot make an group that points to another group. Note also that
78 | # if there are spaces in the recipient name, this will appear as two
79 | # recipients. In these cases it is better to use the key ID.
80 |
81 | #group mynames = paige 0x12345678 joe patti
82 |
83 | # Lock the file only once for the lifetime of a process. If you do
84 | # not define this, the lock will be obtained and released every time
85 | # it is needed, which is usually preferable.
86 |
87 | #lock-once
88 |
89 | # automatically retrieve keys from a keyserver when verifying
90 | # signatures made by keys that are not on the local keyring
91 |
92 | auto-key-retrieve
93 |
94 | # Display photo user IDs in key listings
95 |
96 | # list-options show-photos
97 |
98 | # Display photo user IDs when a signature from a key with a photo is
99 | # verified
100 |
101 | # verify-options show-photos
102 |
103 | # Use this program to display photo user IDs
104 | #
105 | # %i is expanded to a temporary file that contains the photo.
106 | # %I is the same as %i, but the file isn't deleted afterwards by GnuPG.
107 | # %k is expanded to the key ID of the key.
108 | # %K is expanded to the long OpenPGP key ID of the key.
109 | # %t is expanded to the extension of the image (e.g. "jpg").
110 | # %T is expanded to the MIME type of the image (e.g. "image/jpeg").
111 | # %f is expanded to the fingerprint of the key.
112 | # %% is %, of course.
113 | #
114 | # If %i or %I are not present, then the photo is supplied to the
115 | # viewer on standard input. If your platform supports it, standard
116 | # input is the best way to do this as it avoids the time and effort in
117 | # generating and then cleaning up a secure temp file.
118 | #
119 | # If no photo-viewer is provided, GnuPG will look for xloadimage, eog,
120 | # or display (ImageMagick). On Mac OS X and Windows, the default is
121 | # to use your regular JPEG image viewer.
122 | #
123 | # Some other viewers:
124 | # photo-viewer "qiv %i"
125 | # photo-viewer "ee %i"
126 | #
127 | # This one saves a copy of the photo ID in your home directory:
128 | # photo-viewer "cat > ~/photoid-for-key-%k.%t"
129 | #
130 | # Use your MIME handler to view photos:
131 | # photo-viewer "metamail -q -d -b -c %T -s 'KeyID 0x%k' -f GnuPG"
132 |
133 | # Passphrase agent
134 | #
135 | # We support the old experimental passphrase agent protocol as well as
136 | # the new Assuan based one (currently available in the "newpg" package
137 | # at ftp.gnupg.org/gcrypt/alpha/aegypten/). To make use of the agent,
138 | # you have to run an agent as daemon and use the option
139 | #
140 | use-agent
141 | #
142 | # which tries to use the agent but will fallback to the regular mode
143 | # if there is a problem connecting to the agent. The normal way to
144 | # locate the agent is by looking at the environment variable
145 | # GPG_AGENT_INFO which should have been set during gpg-agent startup.
146 | # In certain situations the use of this variable is not possible, thus
147 | # the option
148 | #
149 | # --gpg-agent-info=::1
150 | #
151 | # may be used to override it.
152 |
153 | # Automatic key location
154 | #
155 | # GnuPG can automatically locate and retrieve keys as needed using the
156 | # auto-key-locate option. This happens when encrypting to an email
157 | # address (in the "user@example.com" form), and there are no
158 | # user@example.com keys on the local keyring. This option takes the
159 | # following arguments, in the order they are to be tried:
160 | #
161 | # cert = locate a key using DNS CERT, as specified in RFC-4398.
162 | # GnuPG can handle both the PGP (key) and IPGP (URL + fingerprint)
163 | # CERT methods.
164 | #
165 | # pka = locate a key using DNS PKA.
166 | #
167 | # ldap = locate a key using the PGP Universal method of checking
168 | # "ldap://keys.(thedomain)". For example, encrypting to
169 | # user@example.com will check ldap://keys.example.com.
170 | #
171 | # keyserver = locate a key using whatever keyserver is defined using
172 | # the keyserver option.
173 | #
174 | # You may also list arbitrary keyservers here by URL.
175 | #
176 | # Try CERT, then PKA, then LDAP, then hkp://subkeys.net:
177 | #auto-key-locate cert pka ldap hkp://subkeys.pgp.net
178 |
--------------------------------------------------------------------------------
/.config/gnupg/scdaemon.conf:
--------------------------------------------------------------------------------
1 | pcsc-driver /usr/lib/libpcsclite.so
2 | card-timeout 5
3 | disable-ccid
4 | pcsc-shared
5 |
--------------------------------------------------------------------------------
/.config/goldendict/config:
--------------------------------------------------------------------------------
1 |
2 |
3 | /usr/share/stardict/dic
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 0
16 | 0
17 | 0
18 | 0
19 |
20 | 0
21 | 1
22 | 1
23 | 1
24 |
25 |
26 | 0
27 | 1
28 | 0
29 | 0
30 | 1
31 | 1
32 |
33 |
34 | 0
35 |
36 |
37 |
38 |
39 | 1
40 |
41 |
42 |
43 | 0
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | DejaVu Sans
82 |
83 |
84 | Default
85 | 0
86 | 1
87 | 1
88 | 0
89 | 0
90 | 0
91 | 0
92 | 1
93 | 0
94 | 1
95 | 0
96 | 1
97 | 0
98 | 0
99 | 0
100 | 1
101 | 1
102 | 0
103 | 0
104 | Ctrl+F11, F11
105 | 0
106 | Ctrl+C, C
107 | 0
108 | 0
109 | 0
110 | 0
111 | 0
112 | 0
113 | 1
114 | 0
115 | 0
116 | 0
117 | 0
118 | 500
119 | 0
120 | 0
121 | 1
122 | Qt Multimedia
123 | mplayer
124 | 0
125 | 0
126 | 0
127 | 0
128 | 1
129 |
130 | 0
131 |
132 | 3128
133 |
134 |
135 |
136 |
137 |
138 |
139 | 127.0.0.1
140 | 8765
141 |
142 |
143 | selected_text
144 | word
145 | marked_sentence
146 |
147 | 0
148 | 1
149 | 1
150 | 50
151 | 1
152 | 0
153 | 500
154 | 0
155 | 1
156 |
157 | 0
158 | 2000
159 | 0
160 | 1000
161 | 20
162 | 1
163 | 0
164 | 1
165 |
166 | 0
167 |
168 |
169 | 1
170 | 0
171 | 3
172 |
173 |
174 | 0
175 | 0
176 | AAAA/wAAAAD9AAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAQAAAAEAAAAaAGQAaQBjAHQAaQBvAG4AYQByAHkAQgBhAHIDAAAAAP////8AAAAAAAAAAA==
177 | AdnQywADAAAAAAABAAAAGQAAAi0AAAGrAAAAAQAAABkAAAItAAABqwAAAAAAAAAAB4AAAAABAAAAGQAAAi0AAAGr
178 | 0
179 | 0
180 | AAAA/wAAAAD9AAAAAgAAAAAAAABVAAAB4PwCAAAAAfsAAAAUAHMAZQBhAHIAYwBoAFAAYQBuAGUAAAAAOgAAAeAAAACEAP///wAAAAEAAADMAAAD6/wCAAAAA/sAAAASAGQAaQBjAHQAcwBQAGEAbgBlAQAAADoAAAFKAAAAYAD////7AAAAGgBmAGEAdgBvAHIAaQB0AGUAcwBQAGEAbgBlAQAAAYoAAAFLAAAAYAD////7AAAAFgBoAGkAcwB0AG8AcgB5AFAAYQBuAGUBAAAC2wAAAUoAAABgAP///wAABq4AAAPrAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAIAAAAUAG4AYQB2AFQAbwBvAGwAYgBhAHIBAAAAAP////8AAAAAAAAAAAAAABoAZABpAGMAdABpAG8AbgBhAHIAeQBCAGEAcgEAAAIv/////wAAAAAAAAAA
181 | AdnQywADAAAAAAAAAAAAEwAAB38AAAQ3AAADwQAAABkAAAd+AAAENgAAAAACAAAAB4AAAAAAAAAAEwAAB38AAAQ3
182 |
183 |
184 |
185 |
186 |
187 | 0
188 | 0
189 |
190 | 256
191 | 0
192 |
193 | 0
194 | 0
195 | 0
196 |
197 |
198 |
199 |
200 |
--------------------------------------------------------------------------------
/.config/gtk-3.0/settings.ini:
--------------------------------------------------------------------------------
1 | [Settings]
2 | gtk-theme-name=Adwaita:dark
3 | gtk-icon-theme-name=Adwaita
4 | gtk-font-name=Open Sans 10
5 | gtk-cursor-theme-name=Adwaita
6 | gtk-cursor-theme-size=0
7 | gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
8 | gtk-toolbar-icon-size=GTK_ICON_SIZE_MENU
9 | gtk-button-images=0
10 | gtk-menu-images=1
11 | gtk-enable-event-sounds=0
12 | gtk-enable-input-feedback-sounds=0
13 | gtk-xft-antialias=1
14 | gtk-xft-hinting=1
15 | gtk-xft-hintstyle=hintmedium
16 | gtk-xft-rgba=rgb
17 | gtk-application-prefer-dark-theme = true
18 |
--------------------------------------------------------------------------------
/.config/gtk-4.0/settings.ini:
--------------------------------------------------------------------------------
1 | [Settings]
2 | gtk-theme-name=Adwaita:dark
3 | gtk-icon-theme-name=Adwaita
4 | gtk-font-name=Open Sans 10
5 | gtk-cursor-theme-name=Adwaita
6 | gtk-cursor-theme-size=0
7 | gtk-enable-event-sounds=0
8 | gtk-enable-input-feedback-sounds=0
9 | gtk-xft-antialias=1
10 | gtk-xft-hinting=1
11 | gtk-xft-hintstyle=hintmedium
12 | gtk-xft-rgba=rgb
13 | gtk-application-prefer-dark-theme = true
14 |
--------------------------------------------------------------------------------
/.config/htop/htoprc:
--------------------------------------------------------------------------------
1 | # Beware! This file is rewritten by htop when settings are changed in the interface.
2 | # The parser is also very primitive, and not human-friendly.
3 | htop_version=3.2.2
4 | config_reader_min_version=3
5 | fields=0 48 17 18 38 39 40 2 46 47 49 1
6 | hide_kernel_threads=0
7 | hide_userland_threads=0
8 | hide_running_in_container=0
9 | shadow_other_users=0
10 | show_thread_names=0
11 | show_program_path=1
12 | highlight_base_name=1
13 | highlight_deleted_exe=1
14 | shadow_distribution_path_prefix=0
15 | highlight_megabytes=1
16 | highlight_threads=1
17 | highlight_changes=0
18 | highlight_changes_delay_secs=5
19 | find_comm_in_cmdline=1
20 | strip_exe_from_cmdline=1
21 | show_merged_command=0
22 | header_margin=1
23 | screen_tabs=0
24 | detailed_cpu_time=1
25 | cpu_count_from_one=0
26 | show_cpu_usage=1
27 | show_cpu_frequency=0
28 | show_cpu_temperature=0
29 | degree_fahrenheit=0
30 | update_process_names=1
31 | account_guest_in_cpu_meter=0
32 | color_scheme=0
33 | enable_mouse=1
34 | delay=15
35 | hide_function_bar=0
36 | header_layout=two_50_50
37 | column_meters_0=LeftCPUs2 Memory Swap
38 | column_meter_modes_0=1 1 1
39 | column_meters_1=RightCPUs2 Tasks LoadAverage Uptime
40 | column_meter_modes_1=1 2 2 2
41 | tree_view=0
42 | sort_key=46
43 | tree_sort_key=0
44 | sort_direction=-1
45 | tree_sort_direction=1
46 | tree_view_always_by_pid=0
47 | all_branches_collapsed=0
48 | screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
49 | .sort_key=PERCENT_CPU
50 | .tree_sort_key=PID
51 | .tree_view=0
52 | .tree_view_always_by_pid=0
53 | .sort_direction=-1
54 | .tree_sort_direction=1
55 | .all_branches_collapsed=0
56 | screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
57 | .sort_key=IO_RATE
58 | .tree_sort_key=PID
59 | .tree_view=0
60 | .tree_view_always_by_pid=0
61 | .sort_direction=-1
62 | .tree_sort_direction=1
63 | .all_branches_collapsed=0
64 |
--------------------------------------------------------------------------------
/.config/i3/config:
--------------------------------------------------------------------------------
1 | # i3 config file (v4)
2 | #
3 | # Please see http://i3wm.org/docs/userguide.html for a complete reference!
4 | #
5 | # vim: ft=i3config
6 |
7 | set $mod Mod1
8 |
9 | # Font for window titles. Will also be used by the bar unless a different font
10 | # is used in the bar {} block below.
11 | #font pango:DejaVu Sans Mono 10
12 | #font pango:monospace 10
13 | font pango:Hack 9
14 |
15 | # Use Mouse+$mod to drag floating windows to their wanted position
16 | floating_modifier Shift+$mod
17 | floating_maximum_size 1920 x 1080
18 |
19 | # reload configuration file
20 | bindsym $mod+Shift+c reload
21 |
22 | # restart i3 inplace (preserves your layout/session)
23 | bindsym $mod+Shift+r restart
24 |
25 | # xrandr wrapper to init multi-monitor settings
26 | bindsym $mod+Shift+s exec initscreen.sh
27 |
28 | # exit i3
29 | #bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
30 | bindsym $mod+Shift+e exec i3-msg exit
31 |
32 | # start a terminal
33 | bindsym $mod+Return exec sway-sensible-terminal
34 |
35 | # kill focused window
36 | bindsym $mod+Shift+q kill
37 |
38 | # launchers
39 | bindsym $mod+d exec bemenu-run -ip "Run: " --line-height 20 --fn "monospace bold" --tf "#1793d0" --hf "#1793d0"
40 | bindsym $mod+o exec rofimoji --prompt " " --action copy --selector bemenu --selector-args "--line-height 20 --tf #1793d0 --hf #1793d0 --list 10"
41 |
42 | # change focus
43 | bindsym $mod+h focus left
44 | bindsym $mod+j focus down
45 | bindsym $mod+k focus up
46 | bindsym $mod+l focus right
47 |
48 | # alternatively, you can use the cursor keys:
49 | bindsym $mod+Left focus left
50 | bindsym $mod+Down focus down
51 | bindsym $mod+Up focus up
52 | bindsym $mod+Right focus right
53 |
54 | # move focused window
55 | bindsym $mod+Shift+h move left
56 | bindsym $mod+Shift+j move down
57 | bindsym $mod+Shift+k move up
58 | bindsym $mod+Shift+l move right
59 |
60 | # alternatively, you can use the cursor keys:
61 | bindsym $mod+Shift+Left move left
62 | bindsym $mod+Shift+Down move down
63 | bindsym $mod+Shift+Up move up
64 | bindsym $mod+Shift+Right move right
65 |
66 | # split in horizontal orientation
67 | bindsym $mod+n split h
68 |
69 | # split in vertical orientation
70 | bindsym $mod+v split v
71 |
72 | # enter fullscreen mode for the focused container
73 | bindsym $mod+f fullscreen
74 |
75 | # change container layout (stacked, tabbed, toggle split)
76 | bindsym $mod+s layout stacking
77 | bindsym $mod+w layout tabbed
78 | bindsym $mod+e layout toggle split
79 |
80 | # toggle tiling / floating
81 | bindsym $mod+Shift+space floating toggle
82 |
83 | # toggle between hide state and show state
84 | bindsym $mod+b bar mode toggle
85 | bindsym $mod+Shift+b bar output primary
86 |
87 | # change focus between tiling / floating windows
88 | bindsym $mod+space focus mode_toggle
89 |
90 | # focus the parent container
91 | bindsym $mod+p focus parent
92 |
93 | # focus the child container
94 | bindsym $mod+c focus child
95 |
96 | # switch to workspace
97 | bindsym $mod+1 workspace 1
98 | bindsym $mod+2 workspace 2
99 | bindsym $mod+3 workspace 3
100 | bindsym $mod+4 workspace 4
101 | bindsym $mod+5 workspace 5
102 | bindsym $mod+6 workspace 6
103 | bindsym $mod+7 workspace 7
104 | bindsym $mod+8 workspace 8
105 | bindsym $mod+9 workspace 9
106 | bindsym $mod+0 workspace 10
107 | bindsym $mod+F1 workspace 11
108 | bindsym $mod+F2 workspace 12
109 | bindsym $mod+F3 workspace 13
110 | bindsym $mod+F4 workspace 14
111 | bindsym $mod+F5 workspace 15
112 | bindsym $mod+F6 workspace 16
113 | bindsym $mod+F7 workspace 17
114 | bindsym $mod+F8 workspace 18
115 | bindsym $mod+F9 workspace 19
116 | bindsym $mod+F10 workspace 20
117 | bindsym $mod+F11 workspace 21
118 | bindsym $mod+F12 workspace 22
119 |
120 | # move focused container to workspace
121 | bindsym $mod+Shift+1 move container to workspace 1
122 | bindsym $mod+Shift+2 move container to workspace 2
123 | bindsym $mod+Shift+3 move container to workspace 3
124 | bindsym $mod+Shift+4 move container to workspace 4
125 | bindsym $mod+Shift+5 move container to workspace 5
126 | bindsym $mod+Shift+6 move container to workspace 6
127 | bindsym $mod+Shift+7 move container to workspace 7
128 | bindsym $mod+Shift+8 move container to workspace 8
129 | bindsym $mod+Shift+9 move container to workspace 9
130 | bindsym $mod+Shift+0 move container to workspace 10
131 | bindsym $mod+Shift+F1 move container to workspace 11
132 | bindsym $mod+Shift+F2 move container to workspace 12
133 | bindsym $mod+Shift+F3 move container to workspace 13
134 | bindsym $mod+Shift+F4 move container to workspace 14
135 | bindsym $mod+Shift+F5 move container to workspace 15
136 | bindsym $mod+Shift+F6 move container to workspace 16
137 | bindsym $mod+Shift+F7 move container to workspace 17
138 | bindsym $mod+Shift+F8 move container to workspace 18
139 | bindsym $mod+Shift+F9 move container to workspace 19
140 | bindsym $mod+Shift+F10 move container to workspace 20
141 | bindsym $mod+Shift+F11 move container to workspace 21
142 | bindsym $mod+Shift+F12 move container to workspace 22
143 |
144 | # default assignment (when more outputs available)
145 | workspace 1 output HDMI-1
146 | workspace 2 output HDMI-1
147 | workspace 3 output HDMI-1
148 | workspace 4 output HDMI-1
149 | workspace 5 output HDMI-1
150 | workspace 6 output HDMI-1
151 | workspace 7 output HDMI-1
152 | workspace 8 output HDMI-1
153 | workspace 9 output HDMI-1
154 | workspace 10 output HDMI-1
155 | workspace 11 output HDMI-1
156 | workspace 12 output eDP-1
157 | workspace 13 output HDMI-1
158 | workspace 14 output HDMI-1
159 | workspace 15 output eDP-1
160 | workspace 16 output eDP-1
161 | workspace 17 output eDP-1
162 | workspace 18 output eDP-1
163 | workspace 19 output eDP-1
164 | workspace 20 output eDP-1
165 | workspace 21 output eDP-1
166 | workspace 22 output eDP-1
167 |
168 | bindsym $mod+i workspace next_on_output
169 | bindsym $mod+u workspace prev_on_output
170 | bindsym $mod+a workspace back_and_forth
171 |
172 | # scratchpad
173 | bindsym $mod+Shift+minus move scratchpad
174 | bindsym $mod+minus scratchpad show
175 |
176 | # resize window
177 | mode "resize" {
178 | bindsym h resize grow left 2 px
179 | bindsym Shift+h resize shrink left 2 px
180 |
181 | bindsym j resize grow down 2 px
182 | bindsym Shift+j resize shrink down 2 px
183 |
184 | bindsym k resize grow up 2 px
185 | bindsym Shift+k resize shrink up 2 px
186 |
187 | bindsym l resize grow right 2 px
188 | bindsym Shift+l resize shrink right 2 px
189 |
190 | # back to normal: Enter or Escape
191 | bindsym Return mode "default"
192 | bindsym Escape mode "default"
193 | }
194 | bindsym $mod+r mode "resize"
195 |
196 | # mpd mode
197 | mode "mpd" {
198 | bindsym i exec --no-startup-id notify-send -a mpd "Now playing" "$(mpc current -f '[[%artist% - ]%title%]|[%file%]')"
199 | bindsym greater exec --no-startup-id mpc -q next
200 | bindsym less exec --no-startup-id mpc -q prev
201 | bindsym space exec --no-startup-id mpc -q toggle
202 | bindsym e exec --no-startup-id notify-send -a mpd "$(mpc repeat)"
203 | bindsym r exec --no-startup-id notify-send -a mpd "$(mpc random)"
204 | bindsym s exec --no-startup-id notify-send -a mpd "$(mpc single)"
205 | bindsym c exec --no-startup-id notify-send -a mpd "$(mpc consume)"
206 | bindsym u exec --no-startup-id mpc -q update
207 | bindsym Left exec --no-startup-id mpc -q seek -00:00:10
208 | bindsym Right exec --no-startup-id mpc -q seek +00:00:10
209 | bindsym Up exec --no-startup-id mpc -q seek +00:01:00
210 | bindsym Down exec --no-startup-id mpc -q seek -00:01:00
211 | bindsym minus exec --no-startup-id mpc -q volume -5
212 | bindsym plus exec --no-startup-id mpc -q volume +5
213 |
214 | bindsym Return mode "default"
215 | bindsym Escape mode "default"
216 | }
217 |
218 | bindsym $mod+m mode "mpd"
219 |
220 | # multimedia keys
221 | bindsym XF86AudioRaiseVolume exec notify-volume.sh up
222 | bindsym XF86AudioLowerVolume exec notify-volume.sh down
223 | bindsym XF86AudioMute exec notify-volume.sh mute
224 |
225 | bindsym XF86AudioPlay exec playerctl play-pause
226 | bindsym XF86AudioStop exec playerctl stop
227 | bindsym XF86AudioPrev exec playerctl previous
228 | bindsym XF86AudioNext exec playerctl next
229 | bindsym $mod+Ctrl+Down exec playerctl play-pause
230 | bindsym $mod+Ctrl+Up exec playerctl stop
231 | bindsym $mod+Ctrl+Left exec playerctl previous
232 | bindsym $mod+Ctrl+Right exec playerctl next
233 |
234 | bindsym XF86MonBrightnessUp exec light -A 10 && notify-brightness.sh
235 | bindsym XF86MonBrightnessDown exec light -U 10 && notify-brightness.sh
236 |
237 | bindsym XF86ScreenSaver exec xss-lock --transfer-sleep-lock -- lock-session
238 | bindsym Print exec screenshot.sh full
239 |
240 | # Start i3bar to display a bar with workspaces and system status
241 | bar {
242 | status_command i3status-rs
243 | mode dock
244 | position top
245 | tray_output primary
246 | colors {
247 | background "#111111"
248 | statusline "#dddddd"
249 | separator "#888888"
250 | }
251 | }
252 |
253 | default_border pixel 1
254 | default_floating_border pixel 1
255 | hide_edge_borders smart
256 | workspace_auto_back_and_forth yes
257 | # http://i3wm.org/docs/userguide.html#focus_on_window_activation
258 | # smart (default): focus if on an active workspace, otherwise urgent
259 | # urgent: always mark as urgent, but never forus
260 | # focus: always focus and never mark as urgent
261 | # none: neither focus, nor mark as urgent
262 | focus_on_window_activation urgent
263 |
264 | # do not move cursor to window center when a window on different output is focused
265 | mouse_warping none
266 |
267 | # assign windows to workspaces
268 | assign [instance="goldendict"] 10
269 | assign [instance="qpdfview"] 12
270 | assign [class="qemu-system-i386"] 19
271 | assign [instance="keepassxc" window_type="normal"] 21
272 | assign [instance="alacritty::journalctl"] 22
273 |
274 | # move windows popping up from scripts into their own workspace
275 | assign [title="^ParaView$"] paraview_workspace
276 | for_window [title="^ParaView$"] floating enable
277 |
278 | # per-window settings
279 | for_window [class="mpv"] floating enable
280 | for_window [class="lxqt-openssh-askpass"] floating enable
281 |
282 | # handle floating dialogs properly
283 | for_window [window_role="About"] floating enable
284 | for_window [window_role="Organizer"] floating enable
285 | for_window [window_role="Preferences"] floating enable
286 | for_window [window_role="bubble"] floating enable
287 | for_window [window_role="page-info"] floating enable
288 | for_window [window_role="pop-up"] floating enable
289 | for_window [window_role="task_dialog"] floating enable
290 | for_window [window_role="toolbox"] floating enable
291 | for_window [window_role="webconsole"] floating enable
292 | for_window [window_type="dialog"] floating enable
293 | for_window [window_type="menu"] floating enable
294 |
295 | # MS shit
296 | for_window [title="Microsoft Teams Notification"] floating enable
297 |
298 | # autostart applications
299 | exec_always initscreen.sh
300 | exec count-unread-mails.sh
301 | exec alacritty --class "alacritty::journalctl" --hold --command journalctl -f -n 100
302 | exec qpdfview
303 | exec goldendict
304 | exec keepassxc
305 | exec unclutter
306 | exec picom -b
307 | exec gammastep
308 | exec xss-lock --transfer-sleep-lock -- lock-session
309 |
--------------------------------------------------------------------------------
/.config/i3status-rust/config.toml:
--------------------------------------------------------------------------------
1 | # https://docs.rs/i3status-rs/latest/i3status_rs/blocks/index.html
2 |
3 | icons_format = "{icon}"
4 |
5 | [theme]
6 | [theme.overrides]
7 | idle_bg = "#111111"
8 | idle_fg = "#888888" # gray
9 | info_bg = "#111111"
10 | info_fg = "#93a1a1"
11 | good_bg = "#111111"
12 | good_fg = "#859900" # olive
13 | warning_bg = "#111111"
14 | warning_fg = "#b58900" # orange
15 | critical_bg = "#111111"
16 | critical_fg = "#bc1e1e" # red
17 | separator = "|"
18 | separator_bg = "#111111"
19 | separator_fg = "#888888" # gray
20 |
21 | [[block]]
22 | block = "maildir"
23 | format = " $icon $status.eng(w:1) "
24 | inboxes = [
25 | "~/Maildir/FJFI/*",
26 | ]
27 | interval = 10
28 | threshold_critical = 1
29 |
30 | [[block]]
31 | block = "net"
32 | device = "wlan0"
33 | format = " $icon ($signal_strength at $ssid, $bitrate) {$ip|} "
34 | inactive_format = ""
35 | missing_format = ""
36 | [block.theme_overrides]
37 | idle_fg = "#1793d0" # blue
38 |
39 | [[block]]
40 | block = "net"
41 | device = "eth0"
42 | format = " $icon {$ip|down} "
43 | [block.theme_overrides]
44 | idle_fg = "#1793d0" # blue
45 |
46 | [[block]]
47 | block = "memory"
48 | format = " $icon $mem_used_percents.eng(w:2) "
49 |
50 | [[block]]
51 | block = "cpu"
52 |
53 | [[block]]
54 | block = "temperature"
55 | format = " $icon $max "
56 | chip = "*-isa-*"
57 | good = 20
58 | idle = 55
59 | info = 70
60 | warning = 80
61 |
62 | [[block]]
63 | block = "load"
64 | format = " $icon $1m.eng(w:4) "
65 |
66 | [[block]]
67 | block = "battery"
68 | missing_format = ""
69 |
70 | [[block]]
71 | block = "sound"
72 | show_volume_when_muted = false
73 | format = " $icon{ $volume.eng(w:2)|} "
74 | headphones_indicator = true
75 | [[block.click]]
76 | button = "left"
77 | cmd = "pavucontrol"
78 |
79 | [[block]]
80 | block = "time"
81 | interval = 1
82 | format = " $timestamp.datetime(f:'%a, %d %b %Y %H:%M:%S')"
83 | [block.theme_overrides]
84 | idle_fg = "#dddddd" # white
85 |
--------------------------------------------------------------------------------
/.config/inputrc:
--------------------------------------------------------------------------------
1 | $include /etc/inputrc
2 |
3 | # TAB completion
4 | set show-all-if-ambiguous on
5 | set show-all-if-unmodified on
6 |
7 | # character denoting file's type appended to filename (like ls -F)
8 | set visible-stats on
9 | # display possible completions using different colors to indicate their file type
10 | set colored-stats on
11 |
12 | # case-insensitive completion
13 | set completion-ignore-case on
14 |
15 |
16 | # for vi mode
17 | set editing-mode vi
18 | set show-mode-in-prompt on
19 | set vi-ins-mode-string ""
20 | set vi-cmd-mode-string "(cmd)"
21 |
22 | $if mode=vi
23 |
24 | set keymap vi-command
25 | # these are for vi-command mode
26 | "\e[A": history-search-backward
27 | "\e[B": history-search-forward
28 | "\ep": yank-last-arg
29 | "\en": yank-nth-arg
30 | Control-l: clear-screen
31 |
32 | set keymap vi-insert
33 | # these are for vi-insert mode
34 | "\e[A": history-search-backward
35 | "\e[B": history-search-forward
36 | "\ep": yank-last-arg
37 | "\en": yank-nth-arg
38 | Control-l: clear-screen
39 |
40 | $endif
41 |
--------------------------------------------------------------------------------
/.config/keepassxc/keepassxc.ini:
--------------------------------------------------------------------------------
1 | [General]
2 | AutoReloadOnChange=true
3 | AutoSaveAfterEveryChange=true
4 | AutoSaveOnExit=true
5 | AutoTypeEntryTitleMatch=true
6 | AutoTypeEntryURLMatch=true
7 | BackupBeforeSave=true
8 | ConfigVersion=1
9 | DropToBackgroundOnCopy=false
10 | FaviconDownloadTimeout=10
11 | HideWindowOnCopy=false
12 | MinimizeAfterUnlock=true
13 | MinimizeOnCopy=true
14 | MinimizeOnOpenUrl=false
15 | OpenPreviousDatabasesOnStartup=true
16 | RememberLastDatabases=true
17 | RememberLastKeyFiles=true
18 | SingleInstance=true
19 | UseAtomicSaves=true
20 | UseGroupIconOnEntryCreation=true
21 |
22 | [Browser]
23 | AllowExpiredCredentials=false
24 | AlwaysAllowAccess=false
25 | AlwaysAllowUpdate=false
26 | BestMatchOnly=false
27 | CustomProxyLocation=
28 | Enabled=false
29 | HttpAuthPermission=false
30 | MatchUrlScheme=true
31 | NoMigrationPrompt=false
32 | SearchInAllDatabases=false
33 | ShowNotification=true
34 | SortByUsername=false
35 | SupportBrowserProxy=true
36 | SupportKphFields=true
37 | UnlockDatabase=true
38 | UpdateBinaryPath=true
39 | UseCustomProxy=false
40 |
41 | [FdoSecrets]
42 | Enabled=true
43 | NoConfirmDeleteItem=false
44 | ShowNotification=true
45 |
46 | [GUI]
47 | CheckForUpdates=false
48 | CheckForUpdatesIncludeBetas=false
49 | HidePreviewPanel=false
50 | HideToolbar=false
51 | HideUsernames=false
52 | Language=system
53 | MinimizeOnClose=true
54 | MinimizeOnStartup=false
55 | MinimizeToTray=false
56 | MonospaceNotes=true
57 | MovableToolbar=false
58 | ShowTrayIcon=true
59 | ToolButtonStyle=0
60 |
61 | [KeeShare]
62 | Active="\n\n \n\n"
63 | Foreign="\n\n \n\n"
64 | Own="\n\n \n \n\n"
65 | QuietSuccess=true
66 |
67 | [PasswordGenerator]
68 | AdditionalChars=
69 | AdvancedMode=true
70 | ExcludedChars=
71 | SpecialChars=false
72 |
73 | [Security]
74 | ClearClipboardTimeout=30
75 | LockDatabaseIdle=true
76 | LockDatabaseIdleSeconds=600
77 |
--------------------------------------------------------------------------------
/.config/lf/colors:
--------------------------------------------------------------------------------
1 | fi 00;38;5;244
2 |
--------------------------------------------------------------------------------
/.config/lf/lfrc:
--------------------------------------------------------------------------------
1 | # Documentation: https://pkg.go.dev/github.com/gokcehan/lf#section-documentation
2 | # Tips and tricks: https://github.com/gokcehan/lf/wiki/Tips
3 |
4 | # warn about nested instances
5 | %[ $LF_LEVEL -ne 1 ] && lf -remote "send $id echoerr WARNING: You are in a nested lf instance!"
6 |
7 | # interpreter for shell commands
8 | set shell bash
9 |
10 | # set '-eu' options for shell commands
11 | # These options are used to have safer shell commands. Option '-e' is used to
12 | # exit on error and option '-u' is used to give error for unset variables.
13 | # Option '-f' disables pathname expansion which can be useful when $f, $fs, and
14 | # $fx variables contain names with '*' or '?' characters. However, this option
15 | # is used selectively within individual commands as it can be limiting at
16 | # times.
17 | set shellopts '-eu'
18 |
19 | # set internal field separator (IFS) to "\n" for shell commands
20 | # This is useful to automatically split file names in $fs and $fx properly
21 | # since default file separator used in these variables (i.e. 'filesep' option)
22 | # is newline. You need to consider the values of these options and create your
23 | # commands accordingly.
24 | set ifs "\n"
25 |
26 | # leave some space at the top and the bottom of the screen
27 | set scrolloff 10
28 |
29 | # the interval in seconds for periodic checks of directory updates
30 | set period 60
31 |
32 | # show current directory in the terminal window title
33 | cmd on-cd &{{
34 | # '&' commands run silently in background (which is what we want here),
35 | # but are not connected to stdout.
36 | # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
37 | printf "\033]0;$PWD\007" > /dev/tty
38 | }}
39 | # also run at startup
40 | on-cd
41 |
42 | # create an empty file
43 | cmd touch %{{
44 | set -f
45 | # combine all arguments with a space into a single name
46 | IFS=" " name="$*"
47 | touch -- "$name"
48 | lf -remote "send $id select ${name@Q}"
49 | }}
50 |
51 | # create an empty directory
52 | cmd mkdir %{{
53 | set -f
54 | # combine all arguments with a space into a single name
55 | IFS=" " name="$*"
56 | mkdir -- "$name"
57 | lf -remote "send $id select ${name@Q}"
58 | }}
59 |
60 | # change file mode bits
61 | cmd chmod %{{
62 | set -f
63 | for f in $fx; do
64 | chmod $1 -- "$f"
65 | done
66 | # reloaing once not refreshing file information at the bottom
67 | # https://github.com/gokcehan/lf/issues/831
68 | lf -remote "send $id reload"
69 | lf -remote "send $id reload"
70 | }}
71 |
72 | # clear tag
73 | cmd tag-clear :tag; tag-toggle
74 |
75 | # override the default 'paste' command with the 'lf-paste' script (uses cp-p: cp/mv with progress)
76 | # (lf does not preserve file attributes and modification timestamps and it does
77 | # not support CoW)
78 | cmd paste &lf-paste $id
79 |
80 | # compress current file or selected files with tar and gunzip
81 | cmd tar ${{
82 | set -f
83 | mkdir $1
84 | cp -r $fx $1
85 | tar czf $1.tar.gz $1
86 | rm -rf $1
87 | }}
88 |
89 | # compress current file or selected files with zip
90 | cmd zip ${{
91 | set -f
92 | mkdir $1
93 | cp -r $fx $1
94 | zip -r $1.zip $1
95 | rm -rf $1
96 | }}
97 |
98 | # custom bindings
99 | map R reload
100 | map S $$SHELL
101 | map w # unmap
102 | map u # unmap
103 | map uv unselect
104 | map ut tag-clear
105 | map d # unmap
106 | map dd cut
107 | map dD delete
108 | map y # unmap
109 | map yy copy
110 | map c # unmap
111 | map uy clear
112 | map ud clear
113 | map p # unmap
114 | map pp paste
115 | # map pl paste-symlink-absolute # TODO
116 | # map pL paste-symlink-relative # TODO
117 | # map phl paste-hardlink # TODO
118 | # map pht paste-hardlinked-subtree # TODO
119 | map = push :chmod
120 | map m mark-load
121 | map M mark-save
122 | map um mark-remove
123 |
124 | map gh cd ~
125 | map ge cd /etc
126 | map gu cd /usr
127 | map gd cd /dev
128 | map go cd /opt
129 | map gv cd /var
130 | map gm cd /media
131 | map gM cd /mnt
132 | map gs cd /srv
133 | map gr cd /
134 | map g/ cd /
135 |
136 | # extract the current file with the `x` script
137 | map x !x "$f"
138 |
139 | # override the default open command
140 | # This command is called when current file is not a directory. You may want to
141 | # use either file extensions and/or mime types here. Below uses an editor for
142 | # text files and a file opener for the rest.
143 | cmd open ${{
144 | test -L "$f" && f="$(readlink -f "$f")"
145 | case $(file --mime-type "$f" -b) in
146 | image/vnd.djvu | text/html)
147 | # if the file is not on a local filesystem, open it from $HOME
148 | df -l "$f" >/dev/null 2>/dev/null || cd "$HOME"
149 | setsid -f $OPENER "$f" > /dev/null 2> /dev/null
150 | ;;
151 | image/*)
152 | lf -remote "send $id openimages"
153 | ;;
154 | text/* | inode/x-empty)
155 | # if the file is not on a local filesystem, open it from $HOME
156 | df -l "$f" >/dev/null 2>/dev/null || cd "$HOME"
157 | $EDITOR -- "$f"
158 | ;;
159 | *)
160 | # if the file is not on a local filesystem, open it from $HOME
161 | df -l "$f" >/dev/null 2>/dev/null || cd "$HOME"
162 | setsid -f $OPENER "$f" > /dev/null 2> /dev/null
163 | ;;
164 | esac
165 | }}
166 |
167 | # open the current image (and all images in the same directory) with sxiv,
168 | # then read all marked files from sxiv and select them in lf
169 | cmd openimages &{{
170 | test -L "$f" && f="$(readlink -f "$f")"
171 | dir="$(dirname "$f")"
172 | # list of the images to view
173 | images="$(find -L "$dir" -maxdepth 1 -type f -regextype posix-extended -iregex '.*\.(jpe?g|png|gif|svg|webp|tiff|heif|avif|ico|bmp)$' -print | sort -fV)"
174 | # index of the selected image
175 | index="$(grep -nF -- "$f" <<< "$images" | cut -f1 -d: || echo "")"
176 |
177 | if [[ -n "$index" ]]; then
178 | # pass it to sxiv
179 | sxiv -aiop -n "$index" 2>/dev/null <<< "$images" |
180 | (lf -remote "send $id unselect"
181 | while read -r file; do
182 | lf -remote "send $id select \"$file\""
183 | lf -remote "send toggle \"$file\""
184 | done)
185 | else
186 | # fallback in case the file did not have a valid extension
187 | sxiv -aiop 2>/dev/null <<< "$f"
188 | fi
189 | }}
190 |
191 | # open the selected files or the current file in vim (cannot use $EDITOR due to -p)
192 | map e $nvim -p -- $fx
193 |
194 | # configure the previewer script
195 | set previewer ~/.config/lf/previewer.sh
196 |
197 | # open the selected files or the current file in bat
198 | map i $bat -- $fx
199 |
200 | # disable cursor underline in the preview pane
201 | set cursorpreviewfmt ""
202 |
--------------------------------------------------------------------------------
/.config/lf/previewer.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Meaningful aliases for arguments:
4 | path="$1" # Full path of the selected file
5 | width="$2" # Width of the preview pane (number of fitting characters)
6 | height="$3" # Height of the preview pane (number of fitting characters)
7 | x="$4" # x position of the preview in terminal
8 | y="$5" # y position of the preview in terminal
9 |
10 | # Find out something about the file:
11 | mimetype=$(file --mime-type -Lb "$path")
12 | extension=$(/bin/echo "${path##*.}" | awk '{print tolower($0)}')
13 |
14 | # Functions:
15 | # runs a command and saves its output into $output. Useful if you need
16 | # the return value AND want to use the output in a pipe
17 | try() { output=$(eval '"$@"'); }
18 |
19 | # writes the output of the previously used "try" command
20 | dump() { cat <<< "$output"; }
21 |
22 | # a common post-processing function used after most commands
23 | trim() { head -n "$height"; }
24 |
25 | # Skip previews on dirs mounted through sshfs
26 | if [[ "$path" == "$HOME/mnt/"* ]]; then
27 | exit 0
28 | fi
29 |
30 | case "$extension" in
31 | # Archive extensions:
32 | a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
33 | rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
34 | try bsdtar -tf "$path" && { dump | trim; exit 0; }
35 | exit 0
36 | ;;
37 | rar)
38 | # avoid password prompt by providing empty password
39 | try unrar -p- lt "$path" && { dump | trim; exit 0; }
40 | exit 0
41 | ;;
42 | 7z)
43 | # avoid password prompt by providing empty password
44 | try 7z -p l "$path" && { dump | trim; exit 0; }
45 | exit 0
46 | ;;
47 | # PDF documents:
48 | pdf)
49 | if [[ "$TERM" == *"kitty"* ]]; then
50 | CACHE="$XDG_CACHE_HOME/lf-pdf-preview"
51 | pdftoppm -jpeg -f 1 -singlefile "$path" "$CACHE"
52 | kitty +kitten icat --silent --stdin no --transfer-mode file --place "${width}x${height}@${x}x${y}" "$CACHE".jpg /dev/tty
53 | exit 1
54 | else
55 | try pdftotext -l 10 -nopgbrk -q "$path" - && { dump | trim | fmt -s -w $width; exit 0; }
56 | exit 0
57 | fi
58 | ;;
59 | # ODT Files
60 | odt|ods|odp|sxw)
61 | try odt2txt "$path" && { dump | trim; exit 5; }
62 | exit 0
63 | ;;
64 | # HTML Pages:
65 | htm|html|xhtml)
66 | try w3m -dump "$path" && { dump | trim | fmt -s -w $width; exit 0; }
67 | try lynx -dump "$path" && { dump | trim | fmt -s -w $width; exit 0; }
68 | try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 0; }
69 | ;; # fall back to highlight/cat if the text browsers fail
70 | # disable preview of VTK files
71 | vtk|vtu|vti)
72 | exit 0
73 | ;;
74 | # disable highlighting of subtitles
75 | srt|sub)
76 | exit 0
77 | ;;
78 | esac
79 |
80 | case "$mimetype" in
81 | # Syntax highlight for text files:
82 | text/* | */xml)
83 | try bat --paging=never --style=numbers --terminal-width $(($width-5)) -f "$path" \
84 | && { dump | trim; exit 0; }
85 | ;;
86 | # Display information about media files:
87 | video/* | audio/*)
88 | exiftool "$path"
89 | ;;
90 | esac
91 |
--------------------------------------------------------------------------------
/.config/mimeapps.list:
--------------------------------------------------------------------------------
1 | [Default Applications]
2 | image/bmp=vimiv.desktop;
3 | image/gif=vimiv.desktop;
4 | image/jpeg=vimiv.desktop;
5 | image/jpg=vimiv.desktop;
6 | image/png=vimiv.desktop;
7 | image/webp=vimiv.desktop;
8 | image/svg+xml=vimiv.desktop;
9 | image/svg-xml=vimiv.desktop;
10 | image/tiff=vimiv.desktop;
11 | image/vnd.djvu=qpdfview.desktop;
12 | image/x-bmp=vimiv.desktop;
13 | image/x-eps=qpdfview.desktop;
14 | image/x-pcx=vimiv.desktop;
15 | image/x-portable-bitmap=vimiv.desktop;
16 | image/x-portable-greymap=vimiv.desktop;
17 | image/x-portable-pixmap=vimiv.desktop;
18 | image/x-targa=vimiv.desktop;
19 | image/x-tga=vimiv.desktop;
20 | application/pdf=qpdfview.desktop;
21 | text/plain=gvim.desktop;
22 | application/xml=gvim.desktop;
23 | text/htm=io.gitlab.librewolf-community.desktop;
24 | text/html=io.gitlab.librewolf-community.desktop;
25 | x-scheme-handler/http=io.gitlab.librewolf-community.desktop;
26 | x-scheme-handler/https=io.gitlab.librewolf-community.desktop;
27 | x-scheme-handler/ftp=io.gitlab.librewolf-community.desktop;
28 |
29 | [Added Associations]
30 | audio/mpeg=mpv.desktop;
31 | video/mp4=mpv.desktop;
32 | video/x-matroska=mpv.desktop;
33 | video/x-msvideo=mpv.desktop;
34 |
35 |
--------------------------------------------------------------------------------
/.config/mpv/config:
--------------------------------------------------------------------------------
1 | [default]
2 |
3 | quiet
4 |
5 | profile=high-quality
6 | ao=pipewire
7 | gpu-context=wayland
8 | vo=gpu
9 | hwdec=auto
10 |
11 | # audio normalization using EBU R128
12 | # https://wiki.archlinux.org/index.php/Mpv#Volume_normalization
13 | # https://superuser.com/a/323127
14 | af=loudnorm=I=-20
15 |
16 | # load all subs containing movie name
17 | sub-auto=fuzzy
18 |
19 | # apply filter removing subtitle additions for the deaf (SDH)
20 | sub-filter-sdh=yes
21 | sub-filter-sdh-harder=yes
22 |
23 | # filter some ads
24 | sub-filter-regex-append=opensubtitles\.org
25 |
26 | # sub font size. The unit is the size in scaled pixels at a window height of 720
27 | #sub-font-size=45
28 |
29 | # sub vertical position (in % of screen height)
30 | #sub-pos=10
31 |
32 | # black background behind subtitles (to hide forced subtitles)
33 | #sub-border-style=outline-and-shadow
34 | ##sub-border-style=opaque-box
35 | #sub-outline-color="#111111"
36 | #sub-outline-size=3
37 | #sub-ass=no # do not render ASS subtitles natively
38 |
39 | # try to guess subtitle encoding, fall back to UTF-8
40 | # (enca was deprecated and removed, auto-detection should be done by default)
41 | #sub-codepage=enca
42 |
43 | # https://github.com/mpv-player/mpv/blob/master/TOOLS/lua/autocrop.lua
44 | script-opts-append=autocrop-auto=no
45 |
46 | alang=jpn,ger,eng,en
47 | slang=eng,en
48 |
49 | ytdl-format=bestvideo[width<=?1920]+bestaudio/best
50 |
--------------------------------------------------------------------------------
/.config/mutt/colors.muttrc:
--------------------------------------------------------------------------------
1 | # vim: filetype=muttrc
2 |
3 | #
4 | #
5 | # make sure that you are using mutt linked against slang, not ncurses, or
6 | # suffer the consequences of weird color issues. use "mutt -v" to check this.
7 |
8 | # custom body highlights -----------------------------------------------
9 | # highlight my name and other personally relevant strings
10 | #color body color136 color234 "(ethan|schoonover)"
11 | # custom index highlights ----------------------------------------------
12 | # messages which mention my name in the body
13 | #color index color136 color234 "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P"
14 | #color index J_cream color255 "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P"
15 | #color index color136 color37 "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P"
16 | #color index color136 J_magent "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P"
17 | ## messages which are in reference to my mails
18 | #color index J_magent color234 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P"
19 | #color index J_magent color255 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P"
20 | #color index J_magent color37 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P"
21 | #color index J_magent color160 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P"
22 |
23 | # for background in 16 color terminal, valid background colors include:
24 | # base03, bg, black, any of the non brights
25 |
26 | # basic colors ---------------------------------------------------------
27 | color normal color244 color234
28 | color error color160 color234
29 | color tilde color235 color234
30 | color message color37 color234
31 | color markers color160 color252
32 | color attachment color252 color234
33 | color search color207 color234
34 | #color status J_black J_status
35 | color status color245 color235
36 | color indicator color234 color136
37 | color tree color136 color234 # arrow in threads
38 |
39 | # basic monocolor screen
40 | mono bold bold
41 | mono underline underline
42 | mono indicator reverse
43 | mono error bold
44 |
45 | # index ----------------------------------------------------------------
46 |
47 | #color index color160 color234 "~D(!~p|~p)" # deleted
48 | #color index color235 color234 ~F # flagged
49 | #color index color166 color234 ~= # duplicate messages
50 | #color index color240 color234 "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest
51 | #color index J_base color234 "~A~N!~T!~p!~Q!~F!~D" # the rest, new
52 | color index color160 color234 "~A" # all messages
53 | color index color166 color234 "~E" # expired messages
54 | color index color33 color234 "~N" # new messages
55 | color index color33 color234 "~O" # old messages
56 | color index color207 color234 "~Q" # messages that have been replied to
57 | color index color244 color234 "~R" # read messages
58 | color index color33 color234 "~U" # unread messages
59 | color index color33 color234 "~U~$" # unread, unreferenced messages
60 | color index color241 color234 "~v" # messages part of a collapsed thread
61 | color index color241 color234 "~P" # messages from me
62 | color index color37 color234 "~p!~F" # messages to me
63 | color index color37 color234 "~N~p!~F" # new messages to me
64 | color index color37 color234 "~U~p!~F" # unread messages to me
65 | color index color244 color234 "~R~p!~F" # messages to me
66 | color index color160 color234 "~F" # flagged messages
67 | color index color160 color234 "~F~p" # flagged messages to me
68 | color index color160 color234 "~N~F" # new flagged messages
69 | color index color160 color234 "~N~F~p" # new flagged messages to me
70 | color index color160 color234 "~U~F~p" # new flagged messages to me
71 | color index color235 color160 "~D" # deleted messages
72 | color index color248 color234 "~v~(!~N)" # collapsed thread with no unread
73 | color index color136 color234 "~v~(~N)" # collapsed thread with some unread
74 | color index color64 color234 "~N~v~(~N)" # collapsed thread with unread parent
75 | # statusbg used to indicated flagged when foreground color shows other status
76 | # for collapsed thread
77 | color index color160 color235 "~v~(~F)!~N" # collapsed thread with flagged, no unread
78 | color index color136 color235 "~v~(~F~N)" # collapsed thread with some unread & flagged
79 | color index color64 color235 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
80 | color index color64 color235 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged
81 | color index color37 color235 "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly
82 | color index color136 color160 "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial)
83 | #color index color136 color234 "~(~N)" # messages in threads with some unread
84 | #color index color64 color234 "~S" # superseded messages
85 | #color index color160 color234 "~T" # tagged messages
86 | #color index color166 color160 "~=" # duplicated messages
87 |
88 | # message headers ------------------------------------------------------
89 |
90 | #color header color244 color234 "^"
91 | color hdrdefault color244 color234
92 | color header color207 color234 "^from:"
93 | color header color64 color234 "^to:"
94 | color header color136 color234 "^cc:"
95 | color header color33 color234 "^date:"
96 | color header color37 color234 "^subject:"
97 |
98 | # body -----------------------------------------------------------------
99 |
100 | color quoted color33 color234
101 | color quoted1 color37 color234
102 | color quoted2 color136 color234
103 | color quoted3 color160 color234
104 | color quoted4 color166 color234
105 |
106 | color signature color240 color234
107 | color bold color235 color234
108 | color underline color235 color234
109 | color normal color244 color234
110 | #
111 | color body color248 color234 "[;:][-o][)/(|]" # emoticons
112 | color body color248 color234 "[;:][)(|]" # emoticons
113 | color body color248 color234 "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
114 | |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
115 | |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
116 | color body color248 color234 "[ ][*][^*]*[*][ ]?" # more emoticon?
117 | color body color248 color234 "[ ]?[*][^*]*[*][ ]" # more emoticon?
118 |
119 | ## pgp
120 |
121 | color body color160 color234 "(BAD signature)"
122 | color body color37 color234 "(Good signature)"
123 | color body color234 color234 "^gpg: Good signature .*"
124 | color body color241 color234 "^gpg: "
125 | color body color252 color160 "^gpg: BAD signature from.*"
126 | mono body bold "^gpg: Good signature"
127 | mono body bold "^gpg: BAD signature from.*"
128 |
129 | # yes, an insance URL regex
130 | color body color160 color234 "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
131 | # and a heavy handed email regex
132 | #color body J_magent color234 "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
133 |
134 | # Various smilies and the like
135 | #color body color255 color234 "<[Gg]>" #
136 | #color body color255 color234 "<[Bb][Gg]>" #
137 | #color body color136 color234 " [;:]-*[})>{(<|]" # :-) etc...
138 | # *bold*
139 | #color body color33 color234 "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
140 | #mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
141 | # _underline_
142 | #color body color33 color234 "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
143 | #mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
144 | # /italic/ (Sometimes gets directory names)
145 | #color body color33 color234 "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
146 | #mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
147 |
148 | # Border lines.
149 | #color body color33 color234 "( *[-+=#*~_]){6,}"
150 |
151 | #folder-hook . "color status J_black J_status "
152 | #folder-hook gmail/inbox "color status J_black color136 "
153 | #folder-hook gmail/important "color status J_black color136 "
154 |
155 |
156 |
157 | # sidebar
158 | color sidebar_indicator color234 color136
159 | color sidebar_highlight color234 color130
160 | color sidebar_new color33 color234
161 | color sidebar_flagged color37 color234
162 | color sidebar_divider color244 color234
163 |
--------------------------------------------------------------------------------
/.config/mutt/gpg.rc:
--------------------------------------------------------------------------------
1 | # vim:fenc=utf-8:nu:ai:si:et:ts=2:sw=2:ft=muttrc
2 | #
3 | # Command formats for gpg.
4 | #
5 | # This version uses gpg-2comp from
6 | # http://70t.de/download/gpg-2comp.tar.gz
7 | #
8 | # $Id$
9 | #
10 | # %p The empty string when no passphrase is needed,
11 | # the string "PGPPASSFD=0" if one is needed.
12 | #
13 | # This is mostly used in conditional % sequences.
14 | #
15 | # %f Most PGP commands operate on a single file or a file
16 | # containing a message. %f expands to this file's name.
17 | #
18 | # %s When verifying signatures, there is another temporary file
19 | # containing the detached signature. %s expands to this
20 | # file's name.
21 | #
22 | # %a In "signing" contexts, this expands to the value of the
23 | # configuration variable $pgp_sign_as. You probably need to
24 | # use this within a conditional % sequence.
25 | #
26 | # %r In many contexts, mutt passes key IDs to pgp. %r expands to
27 | # a list of key IDs.
28 |
29 | # Note that we explicitly set the comment armor header since GnuPG, when used
30 | # in some localiaztion environments, generates 8bit data in that header, thereby
31 | # breaking PGP/MIME.
32 |
33 | # decode application/pgp
34 | set pgp_decode_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f"
35 |
36 | # verify a pgp/mime signature
37 | set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f"
38 |
39 | # decrypt a pgp/mime attachment
40 | set pgp_decrypt_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f"
41 |
42 | # create a pgp/mime signed attachment
43 | # set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
44 | set pgp_sign_command="gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
45 |
46 | # create a application/pgp signed (old-style) message
47 | # set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
48 | set pgp_clearsign_command="gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
49 |
50 | # create a pgp/mime encrypted attachment
51 | # set pgp_encrypt_only_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
52 | set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
53 |
54 | # create a pgp/mime encrypted and signed attachment
55 | # set pgp_encrypt_sign_command="pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
56 | set pgp_encrypt_sign_command="pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
57 |
58 | # import a key into the public key ring
59 | set pgp_import_command="gpg --no-verbose --import %f"
60 |
61 | # export a key from the public key ring
62 | set pgp_export_command="gpg --no-verbose --export --armor %r"
63 |
64 | # verify a key
65 | set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r"
66 |
67 | # read in the public key ring
68 | set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --list-keys %r"
69 |
70 | # read in the secret key ring
71 | set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --list-secret-keys %r"
72 |
73 | # fetch keys
74 | # set pgp_getkeys_command="pkspxycwrap %r"
75 |
76 | set pgp_good_sign="^gpgv?: Good signature from "
77 |
78 |
--------------------------------------------------------------------------------
/.config/mutt/mailcap:
--------------------------------------------------------------------------------
1 | message/rfc822; less %s; edit=${EDITOR-vi} %s; compose=${EDITOR-vi} %s; needsterminal;
2 | text/html; dwb %s; test=test -n "$DISPLAY"; needsterminal;
3 | text/html; w3m -I %{charset} -T text/html; copiousoutput;
4 | image/*; dwb %s; test=test -n "$DISPLAY"; needsterminal;
5 | audio/*; mplayer %s
6 | video/*; mplayer %s
7 | text/*; vim %s
8 | application/pdf; qpdfview --unique %s
9 | application/odt; libreoffice %s
10 | application/ods; libreoffice %s
11 | application/msword; libreoffice %s
12 | application/vnd.oasis.opendocument.text; libreoffice %s
13 |
--------------------------------------------------------------------------------
/.config/mutt/muttrc:
--------------------------------------------------------------------------------
1 | # vim:fenc=utf-8:nu:ai:si:et:ts=2:sw=2:ft=muttrc
2 |
3 | # --- directories and commands
4 | set header_cache = ~/.cache/mutt/headers-cache # where to store headers
5 | set certificate_file = ~/.config/mutt/certificates # where to store certs
6 | set mailcap_path = ~/.config/mutt/mailcap # entries for filetypes
7 | set tmpdir = ~/.cache/mutt/temp # where to keep temp files
8 | set editor = "/usr/bin/nvim -c 'set tw=76 ft=mail' -c 'set wrap' -c 'set spell'"
9 | set ispell = "/usr/bin/aspell -e -c" # use aspell as ispell
10 |
11 | # --- main options
12 | set mbox_type = Maildir # mailbox type
13 | set folder = ~/Maildir # mailbox location
14 | set spoolfile = "+FJFI/INBOX" # default inbox
15 | set timeout = 3 # idle time before scanning
16 | set mail_check = 0 # minimum time between scans
17 | unset move # gmail does that
18 | set delete # don't ask, just do
19 | unset confirmappend # don't ask, just do!
20 | set quit # don't ask, just do!!
21 | unset mark_old # read/new is good enough for me
22 | #set beep_new # bell on new mails
23 | set pipe_decode # strip headers and eval mimes when piping
24 | set thorough_search # strip headers and eval mimes before searching
25 | #unset help
26 |
27 | # --- index options
28 | set sort = threads # like gmail
29 | set sort_aux = reverse-last-date-received # like gmail
30 | set uncollapse_jump # don't collapse on an unread message
31 | set sort_re # thread based on regex
32 | set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
33 |
34 | # --- pager options
35 | set pager_index_lines = 10 # number of index lines to show
36 | set pager_context = 5 # number of context lines to show
37 | set pager_stop # don't go to next message automatically
38 | set menu_scroll # scroll in menus
39 | set smart_wrap # don't split words
40 | set tilde # show tildes like in vim
41 | unset markers # no ugly plus signs
42 | set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
43 | set status_on_top # as you'd expect
44 | auto_view text/html # view html automatically
45 | alternative_order text/plain text/enriched text/html # save html for last
46 |
47 | # --- formats
48 | set date_format = "%d.%m.%y at %k:%M"
49 | #set index_format = "%3C %S %D | %-26.26L %-50.100s %> %c"
50 | # workaround for the default %L format messing up with mailing lists
51 | folder-hook .*[sS]ent.* 'set index_format="%3C %S %D | %-26.26t %-50.100s %> %c"'
52 | folder-hook ! .*[sS]ent.* 'set index_format="%3C %S %D | %-26.26n %-50.100s %> %c"'
53 | set pager_format = "Reading message %C of %m %> %lL [%P]" # pager statusbar
54 | set folder_format = "%2C %t %N %8s %d %f" # mailbox list view
55 | set status_format = " %?M?%M/?%m total: %?n?%n new, ?%?u?%u unread, ?%?p?%p drafts, ?%?t?%t +tagged, ?%?d?%d deleted, ?[%f %l] %?b?%b mailboxes with new messages. ?%> %V sort by: %s/%S (%P)"
56 |
57 | # --- composing mail
58 | set realname = "Jakub Klinkovský" # who am i?
59 | set envelope_from # which from?
60 | set sig_dashes # dashes before my sig... sweet
61 | set edit_headers # show headers when composing
62 | set fast_reply # skip to compose when replying
63 | set sendmail_wait = -1 # don't wait for sending... to complete
64 | #set askcc # ask for CC
65 | #set askbcc # and blind CC
66 | set fcc_attach # save attachments with the body
67 | set mime_forward # forward attachments as part of body
68 | set mime_forward_rest # include attachments
69 | set forward_format = "Fwd: %s" # format for subject when forwarding
70 | set forward_decode # decode when forwarding
71 | set attribution = "On %d (UTC%{%Z}), %n wrote:" # attribution line (string preceding quoted replies)
72 | set reply_to # reply to Reply to: field
73 | set reverse_name # reply as whomever it was to
74 | set include # include message in replies
75 | set forward_quote # include message in forwards
76 |
77 | # --- headers to show
78 | ignore * # ignore all headers
79 | unignore from: to: cc: date: subject: # show only these
80 | hdr_order from: to: cc: date: subject: # and in this order
81 |
82 | # --- sourced bits
83 | source ~/Maildir/muttrc # account specific configuration
84 | source ~/.config/mutt/colors.muttrc # source colors file
85 | source ~/.config/mutt/gpg.rc # use GPG
86 | source ~/.config/mutt/smime.rc # use S/MIME
87 |
88 | # --- bindings
89 | bind pager q exit
90 | bind pager / search
91 | bind pager previous-line
92 | bind pager next-line
93 | bind pager k previous-line
94 | bind pager j next-line
95 | bind pager gg top
96 | bind pager G bottom
97 | bind index gg first-entry
98 | bind index G last-entry
99 | bind index C delete-pattern
100 | bind pager K previous-undeleted
101 | bind pager J next-undeleted
102 | bind index K previous-unread
103 | bind index J next-unread
104 | bind index W clear-flag
105 | bind index w set-flag
106 | bind index,pager R group-reply
107 | bind compose p pgp-menu
108 | bind attach view-mailcap
109 |
110 | # --- macros
111 | macro index \Cr "N" "mark tagged messages as read"
112 | macro index \Cs "cat > ~/" "save message as"
113 | macro index B "~b " "search message bodies"
114 |
115 | macro index,pager "less /usr/share/doc/mutt/manual.txt" "Show Mutt documentation"
116 | macro index,pager ":toggle help:set ?help" "toggle help status line"
117 | macro index,pager ":source ~/.config/mutt/muttrc\n" "Reload the muttrc"
118 |
119 | macro compose \Cg "Fgpg --clearsign\ny"
120 | macro compose \Cp "Fgpg --clearsign\ny^T^Uapplication/pgp; format=text; x-action=sign\n"
121 | macro compose Y pfy "send mail without pgp"
122 |
123 | # --- address book - khard integration
124 | # reference: https://khard.readthedocs.io/en/latest/scripting.html#mutt
125 | set query_command = "echo %s | xargs khard email --parsable --"
126 | bind editor complete-query
127 | bind editor ^T complete
128 | # disable mutt's internal alias support
129 | set alias_file = /dev/null
130 | # add email addresses to khard’s address book
131 | macro index,pager A \
132 | "khard add-email" \
133 | "add the sender email address to khard"
134 | macro index,pager \Ca \
135 | "khard add-email --headers=from,cc --skip-already-added" \
136 | "add the sender and cc email addresses to khard"
137 |
138 | # --- misc
139 | #set print_command = /usr/bin/enscript # print with enscript
140 | set read_inc=5 # display download progress every 5K
141 | set sleep_time=0
142 | set send_charset="us-ascii:utf-8" # charset priority
143 | set auto_tag # apply functions in index menu only to tagged messages (if any)
144 |
145 | # quick-sync ~/Maildir immediately
146 | macro index Z "fetchmail" "fetch new mail"
147 |
148 | # --- sidebar
149 | # documentation: http://www.neomutt.org/feature/sidebar/
150 | set sidebar_visible = yes # set sidebar visible
151 | set sidebar_width = 24 # width of sidebar in chars
152 | set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S" # format string for sidebar
153 | set sidebar_divider_char = "|" # characters to be drawn between the sidebar and other panels
154 | set mail_check_stats
155 | set mail_check_stats_interval = 1
156 |
157 | bind index,pager \CP sidebar-prev # Ctrl-n to select next folder
158 | bind index,pager \CN sidebar-next # Ctrl-p to select previous folder
159 | bind index,pager \CO sidebar-open # Ctrl-o to open selected folder
160 | bind index,pager \CB sidebar-toggle-visible # Ctrl-b to toggle visibility of the sidebar
161 |
--------------------------------------------------------------------------------
/.config/mutt/neomuttrc:
--------------------------------------------------------------------------------
1 | # avoid warnings due to duplicate binding, see
2 | # https://neomutt.org/guide/configuration.html#6-2-%C2%A0warnings-about-duplicated-bindings
3 | unbind pager g
4 | unbind index g
5 |
6 | source ~/.config/mutt/muttrc
7 |
8 | # neomutt-specific variables
9 | color sidebar_unread color33 color234
10 |
--------------------------------------------------------------------------------
/.config/mutt/smime.rc:
--------------------------------------------------------------------------------
1 | # vim:fenc=utf-8:nu:ai:si:et:ts=2:sw=2:ft=muttrc
2 |
3 | # References:
4 | # - https://kb.wisc.edu/middleware/page.php?id=4091
5 | # - http://equiraptor.com/smime_mutt_how-to.html
6 |
7 | # If you compiled mutt with support for both PGP and S/MIME, PGP
8 | # will be the default method unless the following option is set
9 | #set smime_is_default
10 |
11 | # Uncomment this if you don't want to set labels for certificates you add.
12 | # unset smime_ask_cert_label
13 |
14 | # Passphrase expiration
15 | set smime_timeout=300
16 |
17 | # Global crypto options -- these affect PGP operations as well.
18 | #set crypt_autosign = yes
19 | #set crypt_replyencrypt = yes
20 | #set crypt_replysign = yes
21 | #set crypt_replysignencrypted = yes
22 | #set crypt_verify_sig = yes
23 |
24 |
25 | # Section A: Key Management
26 |
27 | # The default keyfile for encryption (used by $smime_self_encrypt and
28 | # $postpone_encrypt).
29 | #
30 | # It will also be used for decryption unless
31 | # $smime_decrypt_use_default_key is unset.
32 | #
33 | # It will additionally be used for signing unless $smime_sign_as is
34 | # set to a key.
35 | #
36 | # Unless your key does not have encryption capability, uncomment this
37 | # line and replace the keyid with your own.
38 | #
39 | # set smime_default_key="12345678.0"
40 |
41 | # If you have a separate signing key, or your key _only_ has signing
42 | # capability, uncomment this line and replace the keyid with your
43 | # signing keyid.
44 | #
45 | # set smime_sign_as="87654321.0"
46 |
47 | # Uncomment to make mutt ask what key to use when trying to decrypt a message.
48 | # It will use the default key above (if that was set) else.
49 | # unset smime_decrypt_use_default_key
50 |
51 | # Path to a file or directory with trusted certificates
52 | #set smime_ca_location="~/.smime/ca-bundle.crt"
53 | set smime_ca_location="/etc/ssl/certs/ca-certificates.crt"
54 |
55 | # Path to where all known certificates go. (must exist!)
56 | set smime_certificates="~/.config/mutt/smime/certificates"
57 |
58 | # Path to where all private keys go. (must exist!)
59 | set smime_keys="~/.config/mutt/smime/keys"
60 |
61 | # These are used to extract a certificate from a message.
62 | # First generate a PKCS#7 structure from the message.
63 | set smime_pk7out_command="openssl smime -verify -in %f -noverify -pk7out"
64 |
65 | # Extract the included certificate(s) from a PKCS#7 structure.
66 | set smime_get_cert_command="openssl pkcs7 -print_certs -in %f"
67 |
68 | # Extract the signer's certificate only from a S/MIME signature (sender verification)
69 | set smime_get_signer_cert_command="openssl smime -verify -in %f -noverify -signer %c -out /dev/null"
70 |
71 | # This is used to get the email address the certificate was issued to.
72 | set smime_get_cert_email_command="openssl x509 -in %f -noout -email"
73 |
74 | # Add a certificate to the database using smime_keys.
75 | set smime_import_cert_command="smime_keys add_cert %f"
76 |
77 |
78 |
79 | # Section B: Outgoing messages
80 |
81 | # Algorithm to use for encryption.
82 | # valid choices are aes128, aes192, aes256, rc2-40, rc2-64, rc2-128, des, des3
83 | set smime_encrypt_with="aes256"
84 |
85 | # Encrypt a message. Input file is a MIME entity.
86 | set smime_encrypt_command="openssl smime -encrypt -%a -outform DER -in %f %c"
87 |
88 | # Algorithm for the signature message digest.
89 | # Valid choices are md5, sha1, sha224, sha256, sha384, sha512.
90 | set smime_sign_digest_alg="sha256"
91 |
92 | # Sign.
93 | set smime_sign_command="openssl smime -sign -md %d -signer %c -inkey %k -passin stdin -in %f -certfile %i -outform DER"
94 |
95 |
96 |
97 | # Section C: Incoming messages
98 |
99 | # Decrypt a message. Output is a MIME entity.
100 | set smime_decrypt_command="openssl smime -decrypt -passin stdin -inform DER -in %f -inkey %k -recip %c"
101 |
102 | # Verify a signature of type multipart/signed
103 | set smime_verify_command="openssl smime -verify -inform DER -in %s %C -content %f"
104 |
105 | # Verify a signature of type application/x-pkcs7-mime
106 | set smime_verify_opaque_command="\
107 | openssl smime -verify -inform DER -in %s %C || \
108 | openssl smime -verify -inform DER -in %s -noverify 2>/dev/null"
109 |
110 |
111 |
112 | # Section D: Alternatives
113 |
114 | # Sign. If you wish to NOT include the certificate your CA used in signing
115 | # your public key, use this command instead.
116 | # set smime_sign_command="openssl smime -sign -md %d -signer %c -inkey %k -passin stdin -in %f -outform DER"
117 | #
118 | # In order to verify the signature only and skip checking the certificate chain:
119 | #
120 | # set smime_verify_command="openssl smime -verify -inform DER -in %s -content %f -noverify"
121 | # set smime_verify_opaque_command="openssl smime -verify -inform DER -in %s -noverify"
122 | #
123 |
--------------------------------------------------------------------------------
/.config/nvim/diagnostics.lua:
--------------------------------------------------------------------------------
1 | -- Based on https://smarttech101.com/nvim-lsp-diagnostics-keybindings-signs-virtual-texts
2 |
3 | -- Note: is the `\` key
4 | vim.api.nvim_set_keymap('n', 'do', 'lua vim.diagnostic.open_float()', { noremap = true, silent = true })
5 | vim.api.nvim_set_keymap('n', 'dp', 'lua vim.diagnostic.goto_prev()', { noremap = true, silent = true })
6 | vim.api.nvim_set_keymap('n', 'dn', 'lua vim.diagnostic.goto_next()', { noremap = true, silent = true })
7 | -- The following command requires plug-ins "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim", and optionally "kyazdani42/nvim-web-devicons" for icon support
8 | --vim.api.nvim_set_keymap('n', 'dd', 'Telescope diagnostics', { noremap = true, silent = true })
9 | -- If you don't want to use the telescope plug-in but still want to see all the errors/warnings, comment out the telescope line and uncomment this:
10 | vim.api.nvim_set_keymap('n', 'dd', 'lua vim.diagnostic.setloclist()', { noremap = true, silent = true })
11 |
12 | vim.diagnostic.config({
13 | virtual_text = {
14 | source = "always", -- Or "if_many"
15 | prefix = '●', -- Could be '■', '▎', 'x'
16 | },
17 | severity_sort = true,
18 | float = {
19 | source = "always", -- Or "if_many"
20 | },
21 | })
22 |
--------------------------------------------------------------------------------
/.config/nvim/init.vim:
--------------------------------------------------------------------------------
1 | set nocompatible
2 | set ttyfast
3 |
4 | " Tabs, spaces, indentation, wrapping
5 | set expandtab " use spaces for tabs
6 | set tabstop=4 " number of spaces to use for tabs
7 | set shiftwidth=4 " number of spaces to autoindent
8 | set softtabstop=4 " number of spaces for a tab
9 | set autoindent " set autoindenting on
10 | set smartindent " automatically insert another level of indent when needed
11 | if has('breakindent') " not available before 7.4.338, see https://retracile.net/blog/2014/07/18/18.00
12 | set breakindent " autoindent wrapped lines, see https://retracile.net/wiki/VimBreakIndent
13 | autocmd FileType python,c,cpp setlocal breakindentopt=shift:4 " shift wrapped lines another 4 chars
14 | endif
15 | set linebreak " break at character in 'breakat' rather than at the last character that fits on the screen
16 | set backspace=indent,eol,start " more flexible backspace
17 | "retab " spaces instead of tabs
18 | set list " apply highlighting as per listchars
19 | "set listchars=tab:␉·,trail:␠,nbsp:⎵ " highlighting of special white-space characters
20 | set listchars=tab:»·,trail:· " highlighting of special white-space characters
21 |
22 | " Backup
23 | set nobackup " don't backup files
24 | set nowritebackup
25 | set noswapfile
26 |
27 | " Searching
28 | set hlsearch " highlight search terms
29 | set incsearch " show search matches as you type
30 | set ignorecase " ignore case when searching
31 | set smartcase " make searches case sensitive only if they contain uppercase stuff
32 |
33 | " Encoding
34 | set encoding=utf-8 " use utf-8 everywhere
35 | set fileencoding=utf-8 " use utf-8 everywhere
36 |
37 | " Various
38 | set ruler " show the cursor position
39 | set scrolloff=5 " show 5 lines above/below the cursor when scrolling
40 | set number " show numbers
41 | set showcmd " shows the command in the last line of the screen
42 | set autoread " read files when they've been changed outside of Vim
43 | set showmatch " matching brackets & the like
44 | set tabpagemax=25 " max number of tabs that can be opened with '-p' option
45 | set fillchars="fold:\ " " fill fold lines with spaces instead of dashes
46 |
47 | set history=500 " number of command lines stored in the history tables
48 | set undolevels=500 " number of levels of undo
49 | set sessionoptions-=options " don't store any options and mappings (global and local values)
50 |
51 | set splitright " open new vertical split windows to the right of the current one, not the left
52 | set splitbelow " same as above - opens new windows below, not above
53 | set wildignorecase " ignore case when completing file names and directories
54 | set wildmenu " enable enhanced command-line completion
55 | set wildmode=longest,list,full " file and directory matching mode
56 | set notitle " don't set xterm window title
57 | set nrformats=hex " allow incrementing and decrementing numbers that start with 0 using and
58 | set clipboard+=unnamedplus " use + register (X Window clipboard) as unnamed register"
59 | set viminfo='100,<1000,s10,h " large registers (for copying between sessions)
60 |
61 | if !exists('g:vscode')
62 |
63 | set guifont=Monospace\ 9 " font in gvim
64 |
65 | " Load pathogen.vim (manage runtime path)
66 | runtime bundle/vim-pathogen/autoload/pathogen.vim
67 | execute pathogen#infect()
68 |
69 | " Load vim-plug plugins
70 | " Note: some useful commands to manage the pugins:
71 | " :PlugInstall to install the plugins
72 | " :PlugUpdate to install or update the plugins
73 | " :PlugDiff to review the changes from the last update
74 | " :PlugClean to remove plugins no longer in the list
75 | call plug#begin()
76 | " https://github.com/ellisonleao/gruvbox.nvim
77 | Plug 'ellisonleao/gruvbox.nvim'
78 | " https://github.com/rebelot/kanagawa.nvim
79 | Plug 'rebelot/kanagawa.nvim'
80 | " https://github.com/shaunsingh/solarized.nvim
81 | Plug 'shaunsingh/solarized.nvim'
82 | " https://github.com/craftzdog/solarized-osaka.nvim
83 | Plug 'craftzdog/solarized-osaka.nvim'
84 | " https://github.com/nvim-tree/nvim-tree.lua
85 | Plug 'nvim-tree/nvim-tree.lua'
86 | Plug 'nvim-tree/nvim-web-devicons'
87 | " https://github.com/okuuva/auto-save.nvim
88 | Plug 'okuuva/auto-save.nvim'
89 | " https://github.com/hrsh7th/nvim-cmp/
90 | Plug 'hrsh7th/cmp-nvim-lsp'
91 | Plug 'hrsh7th/cmp-buffer'
92 | Plug 'hrsh7th/cmp-path'
93 | Plug 'hrsh7th/cmp-cmdline'
94 | Plug 'hrsh7th/nvim-cmp'
95 | " For vsnip users.
96 | Plug 'hrsh7th/cmp-vsnip'
97 | Plug 'hrsh7th/vim-vsnip'
98 | " https://github.com/NMAC427/guess-indent.nvim
99 | Plug 'NMAC427/guess-indent.nvim'
100 | call plug#end()
101 |
102 | syntax on " syntax highlighting
103 | filetype plugin on " load file type plugins
104 | filetype indent on " load file type based indentation
105 | " disable file type based indentation for cmake files https://superuser.com/a/865581
106 | autocmd FileType cmake let b:did_indent = 1
107 | autocmd FileType cmake setlocal indentexpr=
108 |
109 |
110 | " colorscheme
111 | if &t_Co < 256
112 | " colorscheme for the 8 color linux term
113 | colorscheme vim
114 | else
115 | set background=dark
116 | colorscheme solarized-osaka
117 | endif
118 |
119 |
120 | " Map keys to toggle functions
121 | function! MapToggle(key, opt)
122 | let cmd = ':set '.a:opt.'! \| set '.a:opt."?\"
123 | exec 'nnoremap '.a:key.' '.cmd
124 | exec 'inoremap '.a:key." \".cmd
125 | endfunction
126 | command! -nargs=+ MapToggle call MapToggle()
127 |
128 | " Keys & functions
129 | MapToggle number
130 | MapToggle spell
131 | MapToggle paste
132 | MapToggle hlsearch
133 | MapToggle wrap
134 |
135 | " Map F1 to Esc instead of the stupid help crap
136 | inoremap
137 | nnoremap
138 | vnoremap
139 |
140 | " space bar un-highligts search
141 | :noremap :silent nohecho
142 |
143 | " Make a curly brace automatically insert an indented line
144 | "inoremap { {}O
145 |
146 | " Make jj exit insert mode (since it's almost never typed normally)
147 | "imap jj :w
148 | "imap kk :w
149 | imap jj
150 | imap kk
151 |
152 | " Tab navigation
153 | nnoremap :tabprevious
154 | nnoremap :tabnext
155 | nnoremap :tabprevious
156 | nnoremap :tabnext
157 | nnoremap :tabprevious
158 | nnoremap :tabnext
159 | nnoremap :execute 'silent! tabmove ' . (tabpagenr()-2)
160 | nnoremap :execute 'silent! tabmove ' . (tabpagenr()+1)
161 |
162 |
163 | " jumps to the last known position in a file just after opening it
164 | autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
165 |
166 | " automatic absolute/relative numbers toggling
167 | "set relativenumber
168 | "autocmd InsertEnter * :set number
169 | "autocmd InsertLeave * :set relativenumber
170 |
171 | " Don't screw up folds when inserting text that might affect them, until
172 | " leaving insert mode. Foldmethod is local to the window. Protect against
173 | " screwing up folding when switching between windows.
174 | " ref: http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text
175 | autocmd InsertEnter * if !exists('w:last_fdm') | let w:last_fdm=&foldmethod | setlocal foldmethod=manual | endif
176 | autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif
177 |
178 | " force wrapping of long lines in diff mode
179 | autocmd FilterWritePre * if &diff | setlocal wrap< | endif
180 |
181 | " Removes trailing whitespace
182 | function TrimWhiteSpace()
183 | %s/\s\+$//e
184 | endfunction
185 | map :call TrimWhiteSpace()
186 |
187 | " spell checking
188 | set spelllang=en,cs
189 | set spellfile=$XDG_DATA_HOME/nvim/site/spell/custom.utf-8.add " my whitelist
190 | autocmd FileType tex,text,markdown,mediawiki,rst setlocal spell
191 | autocmd FileType help setlocal nospell " help pages are first recognized as 'text' and then set to 'help'
192 |
193 | " Syntax based folding for C-family languages
194 | autocmd FileType c,cpp setlocal foldmethod=syntax
195 | autocmd FileType c,cpp setlocal foldnestmax=2
196 |
197 | " open all folds by default in tex files
198 | autocmd FileType tex normal zR
199 |
200 | " Syntax based folding for Markdown
201 | let g:markdown_folding = 1
202 | " open all folds by default in Markdown files
203 | autocmd FileType markdown normal zR
204 |
205 | " textwidth
206 | autocmd FileType gitcommit setlocal textwidth=72
207 | autocmd FileType rst setlocal textwidth=80
208 |
209 | " source configuration from lua files
210 | source ~/.config/nvim/diagnostics.lua
211 |
212 | endif "!exists('g:vscode')
213 |
--------------------------------------------------------------------------------
/.config/nvim/plugin/auto-save.lua:
--------------------------------------------------------------------------------
1 | -- Documentation: https://github.com/okuuva/auto-save.nvim
2 |
3 | -- not in vscode...
4 | if not vim.g.vscode then
5 |
6 | require("auto-save").setup {
7 | -- activate on startup
8 | enabled = true,
9 | -- delay after which a pending save is executed
10 | debounce_delay = 10000,
11 | }
12 |
13 | local group = vim.api.nvim_create_augroup('autosave', {})
14 |
15 | vim.api.nvim_create_autocmd('User', {
16 | pattern = 'AutoSaveWritePost',
17 | group = group,
18 | callback = function(opts)
19 | if opts.data.saved_buffer ~= nil then
20 | local filename = vim.api.nvim_buf_get_name(opts.data.saved_buffer)
21 | vim.notify('AutoSave: saved ' .. filename .. ' at ' .. vim.fn.strftime('%H:%M:%S'), vim.log.levels.INFO)
22 | end
23 | end,
24 | })
25 |
26 | end
27 |
--------------------------------------------------------------------------------
/.config/nvim/plugin/cmp.lua:
--------------------------------------------------------------------------------
1 | -- Documentation: https://github.com/hrsh7th/nvim-cmp?tab=readme-ov-file#setup
2 |
3 | -- not in vscode...
4 | if not vim.g.vscode then
5 |
6 | -- Set up nvim-cmp.
7 | local cmp = require'cmp'
8 |
9 | local has_words_before = function()
10 | unpack = unpack or table.unpack
11 | local line, col = unpack(vim.api.nvim_win_get_cursor(0))
12 | return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
13 | end
14 |
15 | local feedkey = function(key, mode)
16 | vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true)
17 | end
18 |
19 | local primary_cmp_sources = {
20 | { name = 'nvim_lsp' },
21 | { name = 'vsnip' }, -- For vsnip users.
22 | -- { name = 'luasnip' }, -- For luasnip users.
23 | -- { name = 'ultisnips' }, -- For ultisnips users.
24 | -- { name = 'snippy' }, -- For snippy users.
25 | }
26 |
27 | cmp.setup({
28 | snippet = {
29 | -- REQUIRED - you must specify a snippet engine
30 | expand = function(args)
31 | vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
32 | -- require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
33 | -- require('snippy').expand_snippet(args.body) -- For `snippy` users.
34 | -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
35 | -- vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+)
36 | end,
37 | },
38 |
39 | window = {
40 | -- completion = cmp.config.window.bordered(),
41 | -- documentation = cmp.config.window.bordered(),
42 | },
43 |
44 | view = {
45 | entries = {name = 'custom', selection_order = 'near_cursor' }
46 | },
47 |
48 | mapping = cmp.mapping.preset.insert({
49 | [''] = cmp.mapping.scroll_docs(-4),
50 | [''] = cmp.mapping.scroll_docs(4),
51 | [''] = cmp.mapping.complete(),
52 | [''] = cmp.mapping.abort(),
53 | [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
54 |
55 | -- https://github.com/hrsh7th/nvim-cmp/wiki/Example-mappings#super-tab-like-mapping
56 | [""] = cmp.mapping(function(fallback)
57 | if cmp.visible() then
58 | cmp.select_next_item()
59 | elseif vim.fn["vsnip#available"](1) == 1 then
60 | feedkey("(vsnip-expand-or-jump)", "")
61 | elseif has_words_before() then
62 | cmp.complete()
63 | else
64 | fallback() -- The fallback function sends a already mapped key. In this case, it's probably ``.
65 | end
66 | end, { "i", "s" }),
67 | [""] = cmp.mapping(function()
68 | if cmp.visible() then
69 | cmp.select_prev_item()
70 | elseif vim.fn["vsnip#jumpable"](-1) == 1 then
71 | feedkey("(vsnip-jump-prev)", "")
72 | end
73 | end, { "i", "s" }),
74 | }),
75 |
76 | sources = cmp.config.sources(
77 | -- primary group (group_index = 1)
78 | primary_cmp_sources,
79 | -- secondary group (group_index = 2) -- will not be visible when items from the primary group are available
80 | {
81 | { name = 'buffer' },
82 | }
83 | )
84 | })
85 |
86 | -- Disable buffer completion for "prose"-like file types.
87 | cmp.setup.filetype({
88 | "gitcommit",
89 | "markdown",
90 | "mail",
91 | "text",
92 | },
93 | { sources = primary_cmp_sources }
94 | )
95 |
96 | -- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below
97 | -- Set configuration for specific filetype.
98 | --[[ cmp.setup.filetype('gitcommit', {
99 | sources = cmp.config.sources({
100 | { name = 'git' },
101 | }, {
102 | { name = 'buffer' },
103 | })
104 | )
105 | equire("cmp_git").setup() ]]--
106 |
107 | -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
108 | cmp.setup.cmdline({ '/', '?' }, {
109 | mapping = cmp.mapping.preset.cmdline(),
110 | sources = {
111 | { name = 'buffer' }
112 | },
113 | view = {
114 | entries = { name = 'wildmenu', separator = ' | ' }
115 | },
116 | })
117 |
118 | -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
119 | cmp.setup.cmdline(':', {
120 | mapping = cmp.mapping.preset.cmdline(),
121 | sources = cmp.config.sources({
122 | { name = 'path' }
123 | }, {
124 | { name = 'cmdline' }
125 | }),
126 | matching = { disallow_symbol_nonprefix_matching = false }
127 | })
128 |
129 | -- Set up lspconfig.
130 | --local capabilities = require('cmp_nvim_lsp').default_capabilities()
131 | -- Replace with each lsp server you've enabled.
132 | --require('lspconfig')[''].setup {
133 | -- capabilities = capabilities
134 | --}
135 |
136 | end
137 |
--------------------------------------------------------------------------------
/.config/nvim/plugin/guess-indent.lua:
--------------------------------------------------------------------------------
1 | -- https://github.com/NMAC427/guess-indent.nvim#configuration
2 |
3 | -- not in vscode...
4 | if not vim.g.vscode then
5 |
6 | require'guess-indent'.setup{}
7 |
8 | end
9 |
--------------------------------------------------------------------------------
/.config/nvim/plugin/lsp.lua:
--------------------------------------------------------------------------------
1 | -- not in vscode...
2 | if not vim.g.vscode then
3 |
4 | local capabilities = require('cmp_nvim_lsp').default_capabilities()
5 |
6 | vim.lsp.config("*", {
7 | capabilities = capabilities,
8 | })
9 |
10 | require'lspconfig'.bashls.setup{
11 | autostart = false,
12 | }
13 | require'lspconfig'.pkgbuild_language_server.setup{}
14 | require'lspconfig'.clangd.setup{}
15 | require'lspconfig'.texlab.setup{}
16 | require'lspconfig'.neocmake.setup{}
17 |
18 | -- ruff does not have completion support
19 | require'lspconfig'.ruff.setup{}
20 | -- pyright does static type checking and completion
21 | require'lspconfig'.pyright.setup{}
22 |
23 | require'lspconfig'.cssls.setup{}
24 | require'lspconfig'.html.setup{}
25 | require'lspconfig'.jsonls.setup{}
26 | require'lspconfig'.yamlls.setup{}
27 | require'lspconfig'.ansiblels.setup{}
28 | require'lspconfig'.typos_lsp.setup{}
29 | require'lspconfig'.vale_ls.setup{
30 | settings = {
31 | root_markers = {".vale.ini"},
32 | },
33 | -- do not start the lsp if none of the root markers is found
34 | single_file_support = false,
35 | }
36 |
37 | -- starh bashls for filetype=sh, but not filename=PKGBUILD
38 | vim.api.nvim_create_autocmd(
39 | "FileType",
40 | {
41 | pattern = "sh",
42 | callback = function()
43 | if vim.fn.expand('%') ~= 'PKGBUILD' and not vim.fn.expand('%'):match('.*/PKGBUILD$') then
44 | vim.lsp.start({
45 | name = 'bash-language-server',
46 | cmd = { 'bash-language-server', 'start' },
47 | })
48 | end
49 | end
50 | }
51 | )
52 |
53 | -- configure efmls for markdownlint-cli2
54 | -- based on https://github.com/mattn/efm-langserver?tab=readme-ov-file#configuration-for-neovim-builtin-lsp-with-nvim-lspconfig
55 | require "lspconfig".efm.setup {
56 | settings = {
57 | root_markers = {".git/"},
58 | languages = {
59 | markdown = {
60 | {
61 | lintCommand = "markdownlint-cli2 -",
62 | lintStdin = true,
63 | lintFormats = { '%f:%l:%c %m', '%f:%l %m', '%f: %l: %m' },
64 | }
65 | }
66 | }
67 | }
68 | }
69 |
70 | end
71 |
--------------------------------------------------------------------------------
/.config/nvim/plugin/tree.lua:
--------------------------------------------------------------------------------
1 | -- Documentation: https://github.com/nvim-tree/nvim-tree.lua
2 |
3 | -- not in vscode...
4 | if not vim.g.vscode then
5 |
6 | -- disable netrw at the very start of your init.lua
7 | vim.g.loaded_netrw = 1
8 | vim.g.loaded_netrwPlugin = 1
9 |
10 | -- optionally enable 24-bit colour
11 | vim.opt.termguicolors = true
12 |
13 | -- empty setup using defaults
14 | --require("nvim-tree").setup()
15 |
16 | -- OR setup with some options
17 | require("nvim-tree").setup({
18 | -- sort = {
19 | -- sorter = "case_sensitive",
20 | -- },
21 | -- view = {
22 | -- width = 30,
23 | -- },
24 | -- renderer = {
25 | -- group_empty = true,
26 | -- },
27 | filters = {
28 | dotfiles = true,
29 | },
30 | })
31 |
32 | end
33 |
--------------------------------------------------------------------------------
/.config/pacman/makepkg.conf:
--------------------------------------------------------------------------------
1 | #########################################################################
2 | # BUILD ENVIRONMENT
3 | #########################################################################
4 | #
5 | # Makepkg defaults: BUILDENV=(!distcc !color !ccache check !sign)
6 | # A negated environment option will do the opposite of the comments below.
7 | #
8 | #-- distcc: Use the Distributed C/C++/ObjC compiler
9 | #-- color: Colorize output messages
10 | #-- ccache: Use ccache to cache compilation
11 | #-- check: Run the check() function if present in the PKGBUILD
12 | #-- sign: Generate PGP signature file
13 | #
14 | BUILDENV=(!distcc color !ccache check sign)
15 |
16 | #-- Directory for package building (src/ and pkg/ directories will be created there)
17 | BUILDDIR=~/.cache/archbuild/builddir
18 |
19 | #########################################################################
20 | # PACKAGE OUTPUT
21 | #########################################################################
22 | #
23 | # Default: put built package and cached source in build directory
24 | #
25 | #-- Destination: specify a fixed directory where all packages will be placed
26 | PKGDEST=~/.cache/archbuild/pkgs
27 | #-- Source cache: specify a fixed directory where source files will be cached
28 | SRCDEST=~/.cache/archbuild/src
29 | #-- Source packages: specify a fixed directory where all src packages will be placed
30 | SRCPKGDEST=~/.cache/archbuild/srcpkgs
31 | #-- Log files: specify a fixed directory where all log files will be placed
32 | LOGDEST=~/.cache/archbuild/logs
33 | #-- Packager: name/email of the person or organization building packages
34 | PACKAGER="Jakub Klinkovský "
35 | #-- Specify a key to use for package signing
36 | GPGKEY="109415E692007609CA7EBFE4001CF4810BE8D911"
37 |
38 | #########################################################################
39 | # OTHER
40 | #########################################################################
41 |
42 | # enable parallel compilation (environment variables are not exported to the chroot)
43 | MAKEFLAGS="-j$(nproc)"
44 |
45 | # vim: set ft=sh ts=2 sw=2 et:
46 |
--------------------------------------------------------------------------------
/.config/picom.conf:
--------------------------------------------------------------------------------
1 | backend = "glx";
2 | glx-no-stencil = true;
3 | glx-no-rebind-pixmap = true;
4 |
5 | vsync = true;
6 |
7 | # workaround for issue #181
8 | # https://github.com/chjj/compton/issues/181
9 | xrender-sync-fence = true;
10 |
--------------------------------------------------------------------------------
/.config/python/startup.py:
--------------------------------------------------------------------------------
1 | # This file must be set in the $PYTHONSTARTUP environment variable
2 |
3 | # override the default history path (~/.python_history)
4 | # and respect $XDG_STATE_HOME
5 | # References:
6 | # https://docs.python.org/3/library/readline.html?highlight=readline#example
7 | # https://bugs.python.org/issue5845
8 |
9 | import atexit
10 | import os
11 | import readline
12 |
13 | histfile = os.path.join(os.environ["XDG_STATE_HOME"], "python_history")
14 | try:
15 | readline.read_history_file(histfile)
16 | except FileNotFoundError:
17 | pass
18 |
19 | atexit.register(readline.write_history_file, histfile)
20 |
--------------------------------------------------------------------------------
/.config/qpdfview/pdf-plugin.conf:
--------------------------------------------------------------------------------
1 | [General]
2 | antialiasing=true
3 | backend=0
4 | ignorePaperColor=false
5 | overprintPreview=false
6 | textAntialiasing=true
7 | textHinting=1
8 | thinLineMode=0
9 |
--------------------------------------------------------------------------------
/.config/qpdfview/qpdfview.conf:
--------------------------------------------------------------------------------
1 | [documentView]
2 | antialiasing=true
3 | autoRefresh=true
4 | continuousMode=true
5 | highlightAll=false
6 | highlightCurrentThumbnail=false
7 | highlightDuration=1500
8 | horizontalModifiers=134217728
9 | invertColors=false
10 | layoutMode=0
11 | limitThumbnailsToResults=false
12 | matchCase=false
13 | minimalScrolling=false
14 | openUrl=true
15 | overprintPreview=false
16 | pageSpacing=5
17 | pagesPerRow=3
18 | parallelSearchExecution=false
19 | prefetch=true
20 | prefetchDistance=1
21 | rotateModifiers=33554432
22 | rotation=0
23 | scaleFactor=1
24 | scaleMode=1
25 | scrollIfNotVisible=false
26 | scrollModifiers=201326592
27 | sourceEditor="gvim --servername VIMTEX --remote-silent \"+call cursor(%2,%3) | exe 'normal! zvzt^'\" \"%1\""
28 | textAntialiasing=true
29 | textHinting=true
30 | thumbnailSize=150
31 | thumbnailSpacing=3
32 | twoPagesMode=false
33 | wholeWords=false
34 | zoomFactor=1
35 | zoomModifiers=67108864
36 |
37 | [mainWindow]
38 | contentsDialogSize=@Size(284 247)
39 | currentPageInWindowTitle=false
40 | documentAsTabTitle=true
41 | documentContextMenu=previousPage, nextPage, firstPage, lastPage, separator, jumpToPage, jumpBackward, jumpForward, separator, setFirstPage, separator, findPrevious, findNext, cancelSearch
42 | editToolBar=currentPage, previousPage, nextPage
43 | exitAfterLastTab=false
44 | extendedSearchDock=false
45 | fileToolBar=openInNewTab, refresh
46 | fontsDialogSize=@Size(278 247)
47 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x2\0\0\0\0\0\0\0\0\x1J\0\0\x5U\0\0\x4\x37\0\0\0\0\0\0\x1J\0\0\x5U\0\0\x4\x37\0\0\0\x1\0\0\0\0\x5V)
48 | instanceNameInWindowTitle=false
49 | keepRecentlyClosed=false
50 | newTabNextToCurrentTab=false
51 | openPath=/home/lahwaacz/stuff/GTC 2017/JS_Interpore_poster/v2
52 | path=/home/lahwaacz/stuff
53 | recentlyClosedCount=5
54 | recentlyUsed=@Invalid()
55 | recentlyUsedCount=10
56 | restoreBookmarks=true
57 | restorePerFileSettings=true
58 | restoreTabs=true
59 | saveDatabaseInterval=300000
60 | savePath=/home/lahwaacz
61 | scrollableMenus=false
62 | searchableMenus=false
63 | settingsDialogSize=@Size(455 746)
64 | spreadTabs=false
65 | state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x3\0\0\0\0\0\0\x1?\0\0\x2\xaf\xfc\x2\0\0\0\x4\xfb\0\0\0\x1c\0t\0h\0u\0m\0\x62\0n\0\x61\0i\0l\0s\0\x44\0o\0\x63\0k\0\0\0\0?\0\0\x1\xb5\0\0\0[\0\xff\xff\xff\xfb\0\0\0\x16\0o\0u\0t\0l\0i\0n\0\x65\0\x44\0o\0\x63\0k\x1\0\0\0?\0\0\x1\x1\0\0\0[\0\xff\xff\xff\xfb\0\0\0\x1c\0p\0r\0o\0p\0\x65\0r\0t\0i\0\x65\0s\0\x44\0o\0\x63\0k\0\0\0\x1\x99\0\0\x1U\0\0\0[\0\xff\xff\xff\xfb\0\0\0\x1a\0\x62\0o\0o\0k\0m\0\x61\0r\0k\0s\0\x44\0o\0\x63\0k\x1\0\0\x1\x46\0\0\x1\xa8\0\0\0[\0\xff\xff\xff\0\0\0\x1\0\0\0\0\0\0\0\0\xfc\x2\0\0\0\x1\xfb\0\0\0\x30\0t\0h\0u\0m\0\x62\0n\0\x61\0i\0l\0s\0\x44\0o\0\x63\0k\0T\0o\0g\0g\0l\0\x65\0V\0i\0\x65\0w\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x3\0\0\x5V\0\0\0J\xfc\x1\0\0\0\x1\xfb\0\0\0\x14\0s\0\x65\0\x61\0r\0\x63\0h\0\x44\0o\0\x63\0k\0\0\0\0\0\0\0\x5V\0\0\x1\xbc\0\xff\xff\xff\0\0\x4\x11\0\0\x2\xaf\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x3\0\0\0\x16\0\x66\0i\0l\0\x65\0T\0o\0o\0l\0\x42\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x16\0\x65\0\x64\0i\0t\0T\0o\0o\0l\0\x42\0\x61\0r\x1\0\0\0T\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x16\0v\0i\0\x65\0w\0T\0o\0o\0l\0\x42\0\x61\0r\x1\0\0\0\xdf\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
66 | styleSheet="QTabBar::tab { height: 28px; max-width: 180px; }"
67 | synchronizeOutlineView=false
68 | synchronizeSplitViews=true
69 | tabContextMenu=openCopyInNewTab, openContainingFolder, separator, closeAllTabs, closeAllTabsButThisOne, closeAllTabsToTheLeft, closeAllTabsToTheRight
70 | tabPosition=0
71 | tabVisibility=1
72 | toggleToolAndMenuBarsWithFullscreen=false
73 | trackRecentlyUsed=false
74 | usePageLabel=true
75 | viewToolBar=scaleFactor, zoomIn, zoomOut
76 |
77 | [pageItem]
78 | addAnnotationModifiers=67108864
79 | annotateModifiers=33554432
80 | annotationColor=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
81 | annotationOverlay=false
82 | backgroundColor=@Variant(\0\0\0\x43\x1\xff\xff\x80\x80\x80\x80\x80\x80\0\0)
83 | cacheSize=131072K
84 | copyModifiers=67108864
85 | copyToClipboardModifiers=33554432
86 | decorateFormFields=true
87 | decorateLinks=false
88 | decoratePages=true
89 | formFieldOverlay=true
90 | highlightColor=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
91 | invertColors=false
92 | keepObsoletePixmaps=false
93 | openInSourceEditorModifiers=0
94 | paperColor=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0)
95 | trimMargins=false
96 | useDevicePixelRatio=true
97 | useTiling=false
98 | zoomToSelectionModifiers=100663296
99 |
100 | [presentationView]
101 | backgroundColor=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
102 | screen=-1
103 | sync=true
104 | synchronize=false
105 |
106 | [printDialog]
107 | collateCopies=false
108 | colorMode=1
109 | duplex=0
110 | fitToPage=false
111 | numberUp=0
112 | numberUpLayout=3
113 | orientation=0
114 | pageOrder=0
115 | pageSet=0
116 |
--------------------------------------------------------------------------------
/.config/qpdfview/shortcuts.conf:
--------------------------------------------------------------------------------
1 | [General]
2 | addAnnotationMode=Ctrl+A
3 | addBookmark=Ctrl+B
4 | bookmarksDockToggleView=F9
5 | cancelSearch=Esc
6 | closeAllTabs=Ctrl+Shift+W
7 | closeAllTabsButCurrent=Ctrl+Alt+W
8 | closeTab=Ctrl+W
9 | contents=F1
10 | continuousMode=Ctrl+7
11 | convertToGrayscale=Ctrl+U
12 | copyToClipboardMode=Ctrl+C
13 | darkenWithPaperColor=@Invalid()
14 | editToolBarToggleView=@Invalid()
15 | exit=Ctrl+Q
16 | fileToolBarToggleView=@Invalid()
17 | findNext=N
18 | findPrevious=Shift+N
19 | firstPage=Home, "G, G"
20 | fitToPageSizeMode=Ctrl+8
21 | fitToPageWidthMode=Ctrl+9
22 | fullscreen=F11, F
23 | invertColors=Ctrl+I
24 | jumpBackward=Shift+H
25 | jumpForward=Shift+L
26 | jumpToPage=Ctrl+J
27 | lastPage=End, Shift+G
28 | lightenWithPaperColor=@Invalid()
29 | moveDown=Down, J
30 | moveLeft=Left, H
31 | moveRight=Right, L
32 | moveToInstance=@Invalid()
33 | moveUp=Up, K
34 | multiplePagesMode=Ctrl+4
35 | nextBookmarkAction=Ctrl+PgDown
36 | nextPage=PgDown, D, Ctrl+D
37 | nextTab=Shift+K, Ctrl+N
38 | open=Ctrl+O, O
39 | openContainingFolder=@Invalid()
40 | openCopyInNewTab=@Invalid()
41 | openInNewTab=Shift+O, T
42 | originalSize="="
43 | outlineDockToggleView=F6
44 | presentation=F12
45 | previousBookmarkAction=Ctrl+PgUp
46 | previousPage=PgUp, U, Ctrl+U
47 | previousTab=Shift+J, Ctrl+P
48 | print=@Invalid()
49 | propertiesDockToggleView=F7
50 | refresh=F5, R
51 | removeAllBookmark=Ctrl+Alt+B
52 | removeBookmark=Ctrl+Shift+B
53 | restoreMostRecentlyClosedTab=Alt+Shift+W
54 | rightToLeftMode=Ctrl+Shift+R
55 | rotateLeft=Ctrl+Left
56 | rotateRight=Ctrl+Right
57 | save=Ctrl+S
58 | saveAs=@Invalid()
59 | saveCopy=Ctrl+S
60 | search=Ctrl+F, /
61 | setFirstPage=@Invalid()
62 | skipBackward=@Invalid()
63 | skipForward=@Invalid()
64 | thumbnailsDockToggleView=F8
65 | toggleMenuBar=Alt+Shift+M
66 | toggleToolBars=Alt+Shift+T
67 | trimMargins=Ctrl+Shift+U
68 | twoPagesMode=Ctrl+6
69 | twoPagesWithCoverPageMode=Ctrl+5
70 | viewToolBarToggleView=@Invalid()
71 | zoomIn=+
72 | zoomOut=-
73 |
--------------------------------------------------------------------------------
/.config/rmshit.yaml:
--------------------------------------------------------------------------------
1 | - ~/.adobe # Flash crap
2 | - ~/.macromedia # Flash crap
3 | - ~/.recently-used
4 | - ~/.local/share/recently-used.xbel
5 | - ~/Desktop # Firefox creates this
6 | - ~/.thumbnails
7 | - ~/.gconfd
8 | - ~/.gconf
9 | - ~/.local/share/gegl-0.2
10 | - ~/.FRD/log/app.log # FRD
11 | - ~/.FRD/links.txt # FRD
12 | - ~/.objectdb # FRD
13 | - ~/.gstreamer-0.10
14 | - ~/.pulse
15 | - ~/.esd_auth
16 | - ~/.config/enchant
17 | - ~/.spicec # contains only log file; unconfigurable
18 | - ~/.dropbox-dist
19 | - ~/.parallel
20 | - ~/.dbus
21 | - ~/ca2 # WTF?
22 | - ~/ca2~ # WTF?
23 | - ~/.distlib/ # contains another empty dir, don't know which software creates it
24 | - ~/.bazaar/ # bzr insists on creating files holding default values
25 | - ~/.bzr.log
26 | - ~/.nv/
27 | - ~/.viminfo # configured to be moved to ~/.cache/vim/viminfo, but it is still sometimes created...
28 | - ~/.npm/ # npm cache
29 | - ~/.java/
30 | - ~/.swt/
31 | - ~/.oracle_jre_usage/
32 | - ~/.openjfx/
33 | - ~/.org.jabref.gui.JabRefMain/
34 | - ~/.org.jabref.gui.MainApplication/
35 | - ~/.jssc/
36 | - ~/.tox/ # cache directory for tox
37 | - ~/.pylint.d/
38 | - ~/.qute_test/
39 | - ~/.QtWebEngineProcess/
40 | - ~/.qutebrowser/ # created empty, only with webengine backend
41 | - ~/.asy/
42 | - ~/.cmake/
43 | - ~/.gnome/
44 | - ~/unison.log
45 | - ~/.texlive/
46 | - ~/.w3m/
47 | - ~/.subversion/
48 | - ~/nvvp_workspace/ # created empty even when the path is set differently in nvvp
49 | - ~/.ansible/
50 | - ~/.fltk/
51 | - ~/.vnc/
52 | - ~/.mozilla/
53 | - ~/.local/share/Trash/ # VSCode puts deleted files here
54 | - ~/.cache/thumbnails/
55 | - ~/.cache/clangd/
56 |
--------------------------------------------------------------------------------
/.config/screenrc:
--------------------------------------------------------------------------------
1 | # disable welcome message
2 | startup_message off
3 |
4 | # override value of $TERM
5 | term xterm-256color
6 |
7 | # disable visual bell
8 | vbell off
9 |
10 | # enable alternative screen (used by e.g. text editors and pagers)
11 | altscreen on
12 |
13 | # bigger scrollback
14 | defscrollback 10000
15 |
16 | # start window numbering at 1
17 | bind c screen 1
18 | bind ^c screen 1
19 | bind 0 select 10
20 | screen 1
21 |
22 | # informative statusbar
23 | truecolor on
24 | hardstatus off
25 | hardstatus alwayslastline '%{#ffffff} %{7}%?%-Lw%?%{1;0}%{1}(%{15}%n%f%t%?(%u)%?%{1;0}%{1})%{7}%?%+Lw%? %='
26 |
--------------------------------------------------------------------------------
/.config/shellcheckrc:
--------------------------------------------------------------------------------
1 | # workaround for OOM issue
2 | # https://github.com/koalaman/shellcheck/issues/3177
3 | extended-analysis=false
4 |
--------------------------------------------------------------------------------
/.config/swaylock/config:
--------------------------------------------------------------------------------
1 | color=000000f0
2 | indicator-radius=96
3 | hide-keyboard-layout
4 |
--------------------------------------------------------------------------------
/.config/sxiv/exec/image-info:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Called by sxiv(1) whenever an image gets loaded.
4 | # The output is displayed in sxiv's status bar.
5 | # Arguments:
6 | # $1: path to image file
7 | # $2: image width
8 | # $3: image height
9 |
10 | import sys
11 | import os.path
12 |
13 | path = sys.argv[1]
14 | width = sys.argv[2]
15 | height = sys.argv[3]
16 |
17 | # get the full path
18 | path = os.path.realpath(path)
19 |
20 | # left-elide to a maximum width
21 | max_length = 80
22 | path = (path[::-1][:max_length] + ("..." if len(path) > max_length else ""))[::-1]
23 |
24 | print(path)
25 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/chromium.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Chromium web browser
3 | After=network.target
4 |
5 | [Service]
6 | UMask=0077
7 | Environment=DISPLAY=:0
8 | ExecStart=/usr/bin/chromium
9 | KillSignal=SIGINT
10 | StandardOutput=null
11 |
12 | [Install]
13 | WantedBy=graphical.target
14 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/dropbox.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Dropbox daemon
3 | After=network.target
4 |
5 | [Service]
6 | UMask=0077
7 | Environment=DISPLAY=:0
8 | ExecStart=/usr/bin/dropboxd
9 | KillSignal=SIGINT
10 | Restart=always
11 |
12 | Nice=15
13 | IOSchedulingClass=idle
14 | #IOSchedulingClass=2
15 | #IOSchedulingPriority=7
16 |
17 | [Install]
18 | WantedBy=graphical.target
19 | WantedBy=console.target
20 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/dropbox.timer:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Dropbox Timer
3 |
4 | [Timer]
5 | OnActiveSec=5min
6 | Unit=dropbox.service
7 |
8 | [Install]
9 | WantedBy=timers.target
10 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/graphical.target:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Graphical target - graphical daemons, xinitrc stuff etc.
3 | After=xorg.target
4 | Requires=xorg.target
5 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/graphical.target.wants/mpd.service:
--------------------------------------------------------------------------------
1 | /home/lahwaacz/.config/systemd/user/mpd.service
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/i3.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=i3-wm
3 | After=xorg.target
4 | Requires=xorg.target
5 |
6 | [Service]
7 | UMask=0077
8 | Environment=DISPLAY=:0
9 | ExecStart=/usr/bin/i3
10 | ExecReload=/usr/bin/i3-msg reload
11 | Restart=always
12 |
13 | # FIXME: with i3, this leaves running processes after running 'systemctl --user exit' and also when i3 fails and is restarted, some windows are lost (though process is still running)
14 | #KillMode=process
15 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/mpd-notify.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=MPD notifications
3 | After=mpd.service
4 | Requires=mpd.service
5 | Requires=dbus.socket
6 |
7 | [Service]
8 | Environment=DISPLAY=:0
9 | ExecStart=/home/lahwaacz/bin/mpd-notify
10 | Restart=always
11 |
12 | [Install]
13 | WantedBy=graphical.target
14 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/offlineimap.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=IMAP/Maildir synchronization tool
3 | Wants=gpg-agent.service
4 | After=gpg-agent.service
5 |
6 | [Service]
7 | UMask=0077
8 | Type=simple
9 | ExecStart=/usr/bin/offlineimap -u Quiet
10 | KillSignal=SIGUSR2
11 | Restart=always
12 | TimeoutStopSec=10
13 |
14 | Nice=15
15 | IOSchedulingClass=2
16 | IOSchedulingPriority=7
17 |
18 | # gpg-agent socket - load explicitly, in case the agent was restarted, systemd has the old path
19 | EnvironmentFile=/run/user/1000/gpg-agent-info
20 | # display for pinentry
21 | Environment=DISPLAY=:0
22 | # necessary since v207
23 | Environment=PATH=/home/lahwaacz/bin:/home/lahwaacz/Scripts:/usr/bin
24 |
25 | [Install]
26 | WantedBy=console.target
27 | WantedBy=graphical.target
28 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/qpdfview.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=qpdfview
3 |
4 | [Service]
5 | UMask=0077
6 | Environment=DISPLAY=:0
7 | ExecStart=/usr/bin/qpdfview --unique
8 |
9 | [Install]
10 | WantedBy=graphical.target
11 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/rsnapshot-daily.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=create daily rsnapshots
3 |
4 | [Service]
5 | Type=oneshot
6 | ExecStart=/usr/bin/rsnapshot -c %h/.config/rsnapshot.conf daily
7 | UMask=0077
8 |
9 | Nice=19
10 | IOSchedulingClass=2
11 | IOSchedulingPriority=7
12 |
13 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/rsnapshot-weekly.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=create daily rsnapshots
3 |
4 | [Service]
5 | Type=oneshot
6 | ExecStart=/usr/bin/rsnapshot -c %h/.config/rsnapshot.conf weekly
7 | UMask=0077
8 |
9 | Nice=19
10 | IOSchedulingClass=2
11 | IOSchedulingPriority=7
12 |
13 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/tinyterm-wrapper.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Container for TinyTerm processes
3 |
4 | [Service]
5 | UMask=0077
6 | Environment=DISPLAY=:0
7 | ExecStart=/home/lahwaacz/Scripts/tinyterm-wrapper --daemon
8 | Restart=on-failure
9 |
10 | [Install]
11 | WantedBy=graphical.target
12 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/tmux@.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Detached tmux session named '%I'
3 |
4 | [Service]
5 | Type=forking
6 | ExecStart=/usr/bin/tmux new-session -s "%I" -d
7 | #ExecStop=/usr/bin/tmux kill-session -t "%I"
8 |
9 | [Install]
10 | WantedBy=multi-user.target
11 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/twmnd.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=twmn daemon
3 | Requires=dbus.socket
4 |
5 | [Service]
6 | UMask=0077
7 | Environment=DISPLAY=:0
8 | ExecStart=/usr/bin/twmnd
9 | Restart=always
10 |
11 | [Install]
12 | WantedBy=graphical.target
13 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/urxvtd.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Urxvt Daemon
3 |
4 | [Service]
5 | UMask=0077
6 | Environment=DISPLAY=:0
7 | ExecStart=/usr/bin/urxvtd
8 | TimeoutStopSec=10
9 | KillMode=process
10 | Restart=always
11 | MemoryLimit=3G
12 |
13 | [Install]
14 | WantedBy=graphical.target
15 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/wm.target:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Window manager target
3 | Wants=graphical.target
4 | Before=graphical.target
5 | Requires=dbus.socket
6 | AllowIsolate=true
7 | BindsTo=i3.service
8 |
9 | [Install]
10 | Alias=default.target
11 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/wmfs-statusbar.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=WMFS2 statusbar
3 | After=wmfs.service
4 | Requisite=wmfs.service
5 |
6 | [Service]
7 | UMask=0077
8 | Environment=DISPLAY=:0
9 | ExecStart=/home/lahwaacz/bin/wmfs-statusbar -c %h/.config/wmfs/statusbar.conf
10 | Restart=always
11 |
12 | [Install]
13 | WantedBy=graphical.target
14 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/wmfs.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=WMFS2
3 | After=xorg.target
4 | Requires=xorg.target
5 |
6 | [Service]
7 | UMask=0077
8 | Environment=DISPLAY=:0
9 | ExecStart=/usr/bin/wmfs
10 | ExecStop=/usr/bin/wmfs -c quit
11 | ExecReload=/usr/bin/wmfs -c reload
12 | KillMode=process
13 | Restart=on-failure
14 | CPUShares=2048
15 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/xorg.service:
--------------------------------------------------------------------------------
1 |
2 | #
3 | # Minimal Xorg service file - launches Xorg as a service unit
4 | #
5 |
6 | # The Xorg launch helper forks, launches Xorg and waits for Xorg to
7 | # accept incoming connections to $DISPLAY, and then signals READY
8 | # to systemd. This guarantees that services that require access to
9 | # $DISPLAY during the session don't start too early.
10 | #
11 | # If you implement a service that requires access to $DISPLAY, your
12 | # service unit file needs to include 'After=xorg.target'.
13 |
14 | [Unit]
15 | Description=Xorg server launch helper
16 | Before=xorg.target
17 | Requires=dbus.socket
18 | After=dbus.socket
19 |
20 | [Service]
21 | UMask=0077
22 | Type=notify
23 | ExecStart=/usr/bin/xorg-launch-helper :0 -nolisten tcp -noreset vt1
24 | #Restart=always
25 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/xorg.target:
--------------------------------------------------------------------------------
1 |
2 | #
3 | # X server target
4 | #
5 |
6 | # xorg.target is a virtual target - it becomes active as soon as Xorg
7 | # is ready to accept incoming connections. If your service requires
8 | # Xorg to be ready, include 'After=xorg.target' in your service file.
9 |
10 | [Unit]
11 | Description=The basic Xorg server
12 | #BindsTo=xorg.service
13 | BindsTo=x@vt1.service
14 |
15 | # stop xorg when wm.target exits
16 | #PartOf=wm.target
17 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/xorg.target.wants/autotouchpadoff.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Disable touchpad when mouse detected
3 | ConditionPathExists=/dev/input/mouse0
4 | ConditionPathExists=/dev/input/mouse1
5 | After=xorg.service
6 |
7 | [Service]
8 | Type=oneshot
9 | Environment=DISPLAY=:0
10 | ExecStart=/usr/bin/synclient TouchpadOff=1
11 |
--------------------------------------------------------------------------------
/.config/systemd/user/old-services/xorg.target.wants/xinit.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Things that used to be in ~/.xinitrc
3 | After=xorg.service
4 | Before=wm.target
5 |
6 | [Service]
7 | Type=oneshot
8 | Environment=DISPLAY=:0
9 |
10 | # turn on numlock
11 | ExecStart=/usr/bin/numlockx on
12 |
13 | # turn off bell
14 | ExecStart=/usr/bin/xset -b
15 |
16 | # key repeat delay and rate
17 | ExecStart=/usr/bin/xset r rate 500 35
18 |
--------------------------------------------------------------------------------
/.config/systemd/user/timer-daily.target:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Daily Timer Target
3 | StopWhenUnneeded=yes
4 |
--------------------------------------------------------------------------------
/.config/systemd/user/timer-daily.timer:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Daily Timer
3 |
4 | [Timer]
5 | OnCalendar=*-*-* 21:00:00
6 | Unit=timer-daily.target
7 |
8 | [Install]
9 | WantedBy=timers.target
10 |
--------------------------------------------------------------------------------
/.config/systemd/user/timer-weekly.target:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Weekly Timer Target
3 | StopWhenUnneeded=yes
4 |
--------------------------------------------------------------------------------
/.config/systemd/user/timer-weekly.timer:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Weekly Timer
3 |
4 | [Timer]
5 | OnCalendar=Sun *-*-* 21:00:00
6 | Unit=timer-weekly.target
7 |
8 | [Install]
9 | WantedBy=timers.target
10 |
--------------------------------------------------------------------------------
/.config/systemd/user/timers.target.wants/timer-daily.timer:
--------------------------------------------------------------------------------
1 | /home/lahwaacz/.config/systemd/user/timer-daily.timer
--------------------------------------------------------------------------------
/.config/systemd/user/timers.target.wants/timer-weekly.timer:
--------------------------------------------------------------------------------
1 | /home/lahwaacz/.config/systemd/user/timer-weekly.timer
--------------------------------------------------------------------------------
/.config/tmux/tmux.conf:
--------------------------------------------------------------------------------
1 | ## C-b is not acceptable -- Vim uses it
2 | set-option -g prefix C-a
3 | unbind-key C-b
4 |
5 | ## C-a C-a for the Last Active Window
6 | bind-key C-a last-window
7 |
8 | ## Allows us to use C-a a to send commands to a TMUX session inside another TMUX session
9 | bind-key a send-prefix
10 |
11 | ## vi key bindings
12 | set-window-option -g mode-keys vi
13 | set-option -g status-keys vi
14 |
15 | # use "v" and "s" to do vertical/horizontal splits, like vim
16 | bind s split-window -v
17 | bind v split-window -h
18 |
19 | # use the vim motion keys to move between panes
20 | bind h select-pane -L
21 | bind j select-pane -D
22 | bind k select-pane -U
23 | bind l select-pane -R
24 |
25 | # resizing panes
26 | bind < resize-pane -L 4
27 | bind > resize-pane -R 4
28 |
29 | # Set that stupid Esc-Wait off
30 | set-option -sg escape-time 0
31 |
32 | setw -g aggressive-resize on
33 |
34 | # Set default terminal to support 256 colors
35 | set -g default-terminal "screen-256color"
36 |
37 | # Start window numbering at 1
38 | set -g base-index 1
39 |
40 | # Statusline elements
41 | set -g status-left " "
42 | set -g status-right " "
43 |
44 | # Theming - https://wiki.archlinux.org/title/Tmux#Theming
45 | set -g status-style "fg=#007700,bg=default"
46 | set-window-option -g window-status-current-style "fg=#00aa00 bold" # current window background + foreground colors
47 | set -g pane-border-style "fg=#222222" # border color
48 | set -g pane-active-border-style "fg=#007700" # border color
49 |
--------------------------------------------------------------------------------
/.config/user-dirs.dirs:
--------------------------------------------------------------------------------
1 | XDG_DESKTOP_DIR="$HOME/stuff"
2 | XDG_DOWNLOAD_DIR="$HOME/stuff"
3 | XDG_TEMPLATES_DIR="$HOME/stuff"
4 | XDG_PUBLICSHARE_DIR="$HOME/stuff/shared/"
5 | XDG_DOCUMENTS_DIR="$HOME/stuff"
6 | XDG_MUSIC_DIR="$HOME/Music"
7 | XDG_PICTURES_DIR="$HOME/Images"
8 | XDG_VIDEOS_DIR="$HOME/Video"
9 |
--------------------------------------------------------------------------------
/.config/vim/vimrc:
--------------------------------------------------------------------------------
1 | set nocompatible
2 | set ttyfast
3 |
4 | " Tabs, spaces, indentation, wrapping
5 | set expandtab " use spaces for tabs
6 | set tabstop=4 " number of spaces to use for tabs
7 | set shiftwidth=4 " number of spaces to autoindent
8 | set softtabstop=4 " number of spaces for a tab
9 | set autoindent " set autoindenting on
10 | set smartindent " automatically insert another level of indent when needed
11 | if has('breakindent') " not available before 7.4.338, see https://retracile.net/blog/2014/07/18/18.00
12 | set breakindent " autoindent wrapped lines, see https://retracile.net/wiki/VimBreakIndent
13 | autocmd FileType python,c,cpp setlocal breakindentopt=shift:4 " shift wrapped lines another 4 chars
14 | endif
15 | set linebreak " break at character in 'breakat' rather than at the last character that fits on the screen
16 | set backspace=indent,eol,start " more flexible backspace
17 | "retab " spaces instead of tabs
18 | set list " apply highlighting as per listchars
19 | "set listchars=tab:␉·,trail:␠,nbsp:⎵ " highlighting of special white-space characters
20 | set listchars=tab:»·,trail:· " highlighting of special white-space characters
21 |
22 | " Backup
23 | set nobackup " don't backup files
24 | set nowritebackup
25 | set noswapfile
26 |
27 | " Searching
28 | set hlsearch " highlight search terms
29 | set incsearch " show search matches as you type
30 | set ignorecase " ignore case when searching
31 | set smartcase " make searches case sensitive only if they contain uppercase stuff
32 |
33 | " Encoding
34 | set encoding=utf-8 " use utf-8 everywhere
35 | set fileencoding=utf-8 " use utf-8 everywhere
36 | set termencoding=utf-8 " use utf-8 everywhere
37 |
38 | " Various
39 | set ruler " show the cursor position
40 | set scrolloff=5 " show 5 lines above/below the cursor when scrolling
41 | set number " show numbers
42 | set showcmd " shows the command in the last line of the screen
43 | set autoread " read files when they've been changed outside of Vim
44 | set showmatch " matching brackets & the like
45 | set tabpagemax=25 " max number of tabs that can be opened with '-p' option
46 | set fillchars="fold:\ " " fill fold lines with spaces instead of dashes
47 |
48 | set history=500 " number of command lines stored in the history tables
49 | set undolevels=500 " number of levels of undo
50 | set sessionoptions-=options " don't store any options and mappings (global and local values)
51 |
52 | set splitright " open new vertical split windows to the right of the current one, not the left
53 | set splitbelow " same as above - opens new windows below, not above
54 | set wildignorecase " ignore case when completing file names and directories
55 | set wildmenu " enable enhanced command-line completion
56 | set wildmode=longest,list,full " file and directory matching mode
57 | set notitle " don't set xterm window title
58 | set nrformats=hex " allow incrementing and decrementing numbers that start with 0 using and
59 | set clipboard=unnamedplus,autoselect " use + register (X Window clipboard) as unnamed register"
60 | set viminfo='100,<1000,s10,h " large registers (for copying between sessions)
61 |
62 | set guifont=Monospace\ 9 " font in gvim
63 |
64 | " Environment
65 | set runtimepath^=$XDG_CONFIG_HOME/vim
66 | set runtimepath+=$XDG_DATA_HOME/vim
67 | set runtimepath+=$XDG_CONFIG_HOME/vim/after
68 |
69 | set packpath^=$XDG_DATA_HOME/vim,$XDG_CONFIG_HOME/vim
70 | set packpath+=$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/after
71 |
72 | let g:netrw_home = $XDG_DATA_HOME."/vim"
73 | call mkdir($XDG_DATA_HOME."/vim/spell", 'p')
74 | set viewdir=$XDG_DATA_HOME/vim/view | call mkdir(&viewdir, 'p')
75 |
76 | set backupdir=$XDG_CACHE_HOME/vim/backup | call mkdir(&backupdir, 'p')
77 | set directory=$XDG_CACHE_HOME/vim/swap | call mkdir(&directory, 'p')
78 | set undodir=$XDG_CACHE_HOME/vim/undo | call mkdir(&undodir, 'p')
79 |
80 | if !has('nvim') | set viminfofile=$XDG_CACHE_HOME/vim/viminfo | endif
81 |
82 | " Load pathogen.vim (manage runtime path)
83 | runtime bundle/vim-pathogen/autoload/pathogen.vim
84 | execute pathogen#infect()
85 |
86 | filetype plugin on " load file type plugins
87 | filetype indent on " load file type based indentation
88 | " disable file type based indentation for cmake files https://superuser.com/a/865581
89 | autocmd FileType cmake let b:did_indent = 1
90 | autocmd FileType cmake setlocal indentexpr=
91 |
92 | " syntax highlighting only when not in vimdiff
93 | if !&diff
94 | syntax on
95 | endif
96 |
97 |
98 | " colorscheme
99 | "if &t_Co < 256
100 | " colorscheme desert " colorscheme for the 8 color linux term
101 | "else
102 | " let g:solarized_termcolors=256
103 | " if strftime('%H') >= 7 && strftime('%H') < 19
104 | " set background=light
105 | " colorscheme github
106 | " else
107 | " set background=dark
108 | " colorscheme solarized
109 | " endif
110 | "endif
111 |
112 |
113 | " Map keys to toggle functions
114 | function! MapToggle(key, opt)
115 | let cmd = ':set '.a:opt.'! \| set '.a:opt."?\"
116 | exec 'nnoremap '.a:key.' '.cmd
117 | exec 'inoremap '.a:key." \".cmd
118 | endfunction
119 | command! -nargs=+ MapToggle call MapToggle()
120 |
121 | " Keys & functions
122 | MapToggle number
123 | MapToggle spell
124 | MapToggle paste
125 | MapToggle hlsearch
126 | MapToggle wrap
127 |
128 | " Map F1 to Esc instead of the stupid help crap
129 | inoremap
130 | nnoremap
131 | vnoremap
132 |
133 | " space bar un-highligts search
134 | :noremap :silent nohecho
135 |
136 | " Make a curly brace automatically insert an indented line
137 | "inoremap { {}O
138 |
139 | " Make jj exit insert mode (since it's almost never typed normally)
140 | "imap jj :w
141 | "imap kk :w
142 | imap jj
143 | imap kk
144 |
145 | " Tab navigation
146 | nnoremap :tabprevious
147 | nnoremap :tabnext
148 | nnoremap :tabprevious
149 | nnoremap :tabnext
150 | nnoremap :tabprevious
151 | nnoremap :tabnext
152 | nnoremap :execute 'silent! tabmove ' . (tabpagenr()-2)
153 | nnoremap :execute 'silent! tabmove ' . (tabpagenr()+1)
154 |
155 |
156 | " jumps to the last known position in a file just after opening it
157 | autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
158 |
159 | " automatic absolute/relative numbers toggling
160 | "set relativenumber
161 | "autocmd InsertEnter * :set number
162 | "autocmd InsertLeave * :set relativenumber
163 |
164 | " Don't screw up folds when inserting text that might affect them, until
165 | " leaving insert mode. Foldmethod is local to the window. Protect against
166 | " screwing up folding when switching between windows.
167 | " ref: http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text
168 | autocmd InsertEnter * if !exists('w:last_fdm') | let w:last_fdm=&foldmethod | setlocal foldmethod=manual | endif
169 | autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif
170 |
171 | " force wrapping of long lines in diff mode
172 | autocmd FilterWritePre * if &diff | setlocal wrap< | endif
173 |
174 | " Removes trailing whitespace
175 | function TrimWhiteSpace()
176 | %s/\s\+$//e
177 | endfunction
178 | map :call TrimWhiteSpace()
179 |
180 | " LaTeX configuration
181 | let g:tex_flavor = "latex" " treat all *.tex files as LaTeX by default
182 | let g:tex_comment_nospell = 1 " disable spell checking in comments
183 | let g:tex_fast = "bMpr" " selectively enable region-based syntax highlighting, see :h tex_fast
184 | let g:tex_no_error = 1 " disable lexical error checking
185 | let g:tex_subscripts = "[]" " disable syntax-based concealment of subscripts
186 | let g:tex_superscripts = "[]" " disable syntax-based concealment of superscripts
187 | let g:tex_isk = '48-57,a-z,A-Z,192-255,:,_' " TODO: testing workaround for vimtex issue #167
188 |
189 | " spell checking
190 | set spelllang=en,cs " real English spelling
191 | set spellfile=$XDG_DATA_HOME/vim/spell/custom.utf-8.add " my whitelist
192 | autocmd FileType tex,text,markdown,mediawiki,rst setlocal spell
193 | autocmd FileType help setlocal nospell " help pages are first recognized as 'text' and then set to 'help'
194 |
195 | " Syntax based folding for C-family languages
196 | autocmd FileType c,cpp setlocal foldmethod=syntax
197 | autocmd FileType c,cpp setlocal foldnestmax=2
198 | " open all folds by default in tex files
199 | autocmd FileType tex normal zR
200 |
201 | " textwidth
202 | autocmd FileType gitcommit setlocal textwidth=72
203 | autocmd FileType rst setlocal textwidth=80
204 |
--------------------------------------------------------------------------------
/.config/waybar/config:
--------------------------------------------------------------------------------
1 | // Waybar configuration: https://github.com/Alexays/Waybar/wiki/Configuration
2 | // Font Awesome cheatsheet: https://origin.fontawesome.com/cheatsheet
3 | {
4 | "layer": "bottom",
5 | "position": "top",
6 | "height": 20, // Waybar height
7 | // "width": 1366, // Waybar width
8 | // Choose the order of the modules
9 | "modules-left": [
10 | "sway/workspaces",
11 | "sway/mode",
12 | "sway/language",
13 | //"sway/window",
14 | "privacy"
15 | ],
16 | "modules-center": [
17 | "custom/events"
18 | ],
19 | "modules-right": [
20 | "mpris",
21 | "idle_inhibitor",
22 | "network",
23 | "memory",
24 | "cpu",
25 | "temperature",
26 | "battery",
27 | "pulseaudio",
28 | "custom/notification",
29 | "clock"
30 | //"tray"
31 | ],
32 | "sway/workspaces": {
33 | "disable-scroll": false,
34 | "all-outputs": false,
35 | "format": "{name}"
36 | },
37 | "sway/mode": {
38 | "format": "{}"
39 | },
40 | "sway/language": {
41 | "format": " {short}"
42 | },
43 | "sway/window": {
44 | "tooltip": false
45 | },
46 | "custom/events": {
47 | "format": "{}",
48 | "tooltip": true,
49 | "interval": 300,
50 | "format-icons": {
51 | "default": ""
52 | },
53 | "exec": "waybar-khal.py",
54 | "return-type": "json"
55 | },
56 | "idle_inhibitor": {
57 | //"format": "{status}",
58 | "format": "{icon}",
59 | "format-icons": {
60 | //"activated": "",
61 | //"deactivated": ""
62 | "activated": "DPMS inhibited",
63 | "deactivated": "inhibit DPMS"
64 | },
65 | "interval": 1,
66 | "tooltip": false
67 | },
68 | "network": {
69 | "interface": "e*", // (Optional) To force the use of this interface
70 | "interval": 5,
71 | //"format-wifi": " {essid} ({signalStrength}%)",
72 | "format-wifi": " {signalStrength}%",
73 | "format-ethernet": " {ifname}: {ipaddr}/{cidr}",
74 | "format-disconnected": "⚠ Disconnected",
75 | "on-click": "wpa-cute",
76 | "tooltip": false
77 | },
78 | "memory": {
79 | "format": " {}%",
80 | "interval": 1,
81 | "tooltip": false
82 | },
83 | "cpu": {
84 | "format": " {usage:2d}%",
85 | "interval": 1,
86 | "tooltip": false
87 | },
88 | "temperature": {
89 | "interval": 1,
90 | // run the following command and select "Package id 0"
91 | // for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
92 | //"hwmon-path": "/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input",
93 | // stable path configuration based on https://github.com/Alexays/Waybar/issues/1943#issuecomment-1617301916
94 | "hwmon-path-abs": "/sys/devices/platform/coretemp.0/hwmon",
95 | "input-filename": "temp1_input",
96 | "critical-threshold": 85,
97 | "format": " {temperatureC}°C",
98 | "format-critical": " {temperatureC}°C"
99 | },
100 | "battery": {
101 | "bat": "BAT0",
102 | "interval": 15,
103 | "states": {
104 | // "good": 95,
105 | "warning": 30,
106 | "critical": 10
107 | },
108 | "format": "{icon} {capacity}%",
109 | // "format-good": "", // An empty format will hide the module
110 | // "format-full": "",
111 | "format-icons": ["", "", "", "", ""],
112 | "tooltip": false
113 | },
114 | "pulseaudio": {
115 | //"scroll-step": 1,
116 | "format": "{icon} {volume}%",
117 | "format-bluetooth": "{icon} {volume}%",
118 | "format-muted": " ",
119 | "format-icons": {
120 | "headphones": "",
121 | "handsfree": "",
122 | "headset": "",
123 | "phone": "",
124 | "portable": "",
125 | "car": "",
126 | "default": ["", ""]
127 | },
128 | "on-click": "pavucontrol",
129 | "tooltip": false
130 | },
131 | "mpris": {
132 | "format": "{status_icon} {player}",
133 | "status-icons": {
134 | "playing": "▶",
135 | "paused": "⏸",
136 | "stopped": "⏹"
137 | }
138 | },
139 | "clock": {
140 | "interval": 1,
141 | "format": "{:%a, %d %b %Y %H:%M}",
142 | "tooltip": false
143 | },
144 | "custom/notification": {
145 | "tooltip": false,
146 | "format": "{icon}",
147 | "format-icons": {
148 | "notification": "",
149 | "none": "",
150 | "dnd-notification": "",
151 | "dnd-none": "",
152 | "inhibited-notification": "",
153 | "inhibited-none": "",
154 | "dnd-inhibited-notification": "",
155 | "dnd-inhibited-none": ""
156 | },
157 | "return-type": "json",
158 | "exec-if": "which swaync-client",
159 | "exec": "swaync-client -swb",
160 | "on-click": "swaync-client -t -sw",
161 | "on-click-right": "swaync-client -d -sw",
162 | "escape": true
163 | },
164 | "tray": {
165 | "spacing": 2
166 | }
167 | }
168 |
--------------------------------------------------------------------------------
/.config/waybar/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | background: transparent;
3 | font-family: "monospace";
4 | font-size: 13px;
5 | font-weight: bold;
6 | min-height: 0;
7 | }
8 |
9 | button {
10 | /* Avoid rounded borders under each button name */
11 | border: none;
12 | border-radius: 0;
13 | }
14 | /* adjust hover effect on buttons, see also
15 | * https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
16 | button:hover {
17 | background: inherit;
18 | box-shadow: none;
19 | text-shadow: inherit;
20 | }
21 |
22 | window {
23 | background-color: #222;
24 | border-bottom: 2px solid #222;
25 | color: #ddd;
26 | }
27 |
28 | /* make tooltips non-transparent */
29 | tooltip {
30 | background-color: #222;
31 | }
32 | tooltip label {
33 | color: #ddd;
34 | }
35 |
36 | #workspaces button {
37 | border-top: 1px solid #222;
38 | border-bottom: 2px solid #222;
39 | padding: 0 3px;
40 | color: #888;
41 | background: transparent;
42 | }
43 | #workspaces button.focused {
44 | color: black;
45 | background: #1f6696; /* blue */
46 | border-top: 1px solid #1f6696; /* blue */
47 | border-bottom: 2px solid #1f6696; /* blue */
48 | }
49 | #workspaces button.urgent {
50 | color: black;
51 | background: #bc1e1e; /* red */
52 | border-top: 1px solid #bc1e1e; /* red */
53 | border-bottom: 2px solid #bc1e1e; /* red */
54 | }
55 | #workspaces button:hover {
56 | box-shadow: inherit;
57 | text-shadow: inherit;
58 | border-bottom: 2px solid #1f6696; /* blue */
59 | }
60 |
61 | #mode {
62 | color: #bc1e1e; /* red */
63 | }
64 |
65 | #language {
66 | color: #888;
67 | margin-left: 10px;
68 | }
69 |
70 | #privacy {
71 | color: #ff613d; /* bright orange */
72 | margin-left: 10px;
73 | }
74 |
75 | /* title of the focused window */
76 | #window {
77 | color: #888;
78 | margin-left: 20px;
79 | }
80 |
81 | #custom-events {
82 | margin: 0 10px;
83 | padding: 0 5px;
84 | color: #ddd;
85 | }
86 |
87 | #tray, #idle_inhibitor, #network, #memory, #cpu, #temperature, #battery, #pulseaudio, #mpris, #clock, #custom-notification {
88 | padding: 0 5px;
89 | }
90 |
91 | #idle_inhibitor, #network, #memory, #cpu, #temperature, #battery, #pulseaudio, #mpris, #clock, #custom-notification {
92 | border-left: 2px solid #888;
93 | border-color: #444;
94 | }
95 |
96 | #idle_inhibitor {
97 | color: #888;
98 | }
99 | #idle_inhibitor.activated {
100 | color: #ddd;
101 | }
102 |
103 | #network {
104 | color: #1793d0; /* blue */
105 | }
106 |
107 | #memory {
108 | /*color: #2aa198;*/
109 | color: #888;
110 | }
111 |
112 | #cpu {
113 | /*color: #6c71c4;*/
114 | color: #888;
115 | }
116 |
117 | #temperature {
118 | /*color: #b58900;*/ /* orange */
119 | color: #888;
120 | }
121 | #temperature.critical {
122 | color: #bc1e1e; /* red */
123 | }
124 |
125 | #battery {
126 | /*color: #859900;*/
127 | color: #888;
128 | }
129 | #battery.critical:not(.charging) {
130 | color: #bc1e1e; /* red */
131 | animation-name: blink;
132 | animation-duration: 0.5s;
133 | animation-timing-function: linear;
134 | animation-iteration-count: infinite;
135 | animation-direction: alternate;
136 | }
137 |
138 | #pulseaudio {
139 | color: #888;
140 | }
141 |
142 | #mpris {
143 | color: #888;
144 | }
145 |
146 | #clock {
147 | color: #ddd;
148 | }
149 |
--------------------------------------------------------------------------------
/.config/wiki-scripts/default.conf:
--------------------------------------------------------------------------------
1 | # vim: ft=dosini
2 |
3 | [DEFAULT]
4 |
5 | # custom options for interpolation
6 | site = ArchWiki
7 | data-dir = ~/.local/share/wiki-scripts/
8 |
9 | # wiki-scripts options
10 | ;debug = true
11 |
12 | # Database options
13 | db-name = ws_archwiki
14 | db-user = wiki-scripts
15 | db-password = wiki-scripts
16 |
17 | # ArchWiki-related options
18 | api-url = https://wiki.archlinux.org/api.php
19 | index-url = https://wiki.archlinux.org/index.php
20 | cookie-file = ${data-dir}/${site}.cookie
21 |
22 | # Script-specific options
23 | [clone]
24 | output-directory = ~/Arch/ArchWikiPages/
25 | clone-talks = true
26 | clean = true
27 |
28 | # Override the default cookie path ("$data-dir/$site.cookie") for bot scripts
29 | [fix-double-redirects]
30 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
31 |
32 | [link-checker]
33 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
34 |
35 | [extlink-checker]
36 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
37 |
38 | [url-replace]
39 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
40 |
41 | [mark-archived-links]
42 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
43 |
44 | [recategorize-over-redirect]
45 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
46 |
47 | [rename-language]
48 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
49 |
50 | [statistics]
51 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
52 |
53 | [sort-maintainers]
54 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
55 |
56 | [toc]
57 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
58 |
59 | [interlanguage]
60 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
61 |
62 | [localize-templates]
63 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
64 |
65 | [report-problems]
66 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
67 | report-page = User:Lahwaacz.bot/Reports/problems
68 |
69 | [update-package-templates]
70 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
71 | report-dir = ~/Arch/logs.update-package-templates/
72 | report-page = User:Lahwaacz.bot/Reports/archpkgs
73 |
74 | [update-page-language]
75 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
76 |
77 | [migrate-DeveloperWiki]
78 | cookie-file = ${data-dir}/ArchWiki.bot.cookie
79 |
--------------------------------------------------------------------------------
/.config/wiki-scripts/local.conf:
--------------------------------------------------------------------------------
1 | # vim: ft=dosini
2 |
3 | [DEFAULT]
4 |
5 | # custom options for interpolation
6 | site = LocalArchWiki
7 | data-dir = ~/.local/share/wiki-scripts/
8 |
9 | # wiki-scripts options
10 | debug = true
11 |
12 | # Database options
13 | db-name = ws_local
14 | db-user = wiki-scripts
15 | db-password = wiki-scripts
16 |
17 | # LocalArchWiki-related options
18 | api-url = https://local-archwiki/api.php
19 | index-url = https://local-archwiki/index.php
20 | cookie-file = ${data-dir}/${site}.cookie
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # start with ignoring everything in $HOME
2 | /*
3 |
4 | # selectively add dotfiles
5 | !.gitignore
6 | !/.config
7 | !/.bash*
8 | /.bash_history*
9 | !/bin
10 | !/.latexmkrc
11 | !/.profile
12 | !/.tmux.conf
13 | !/.toprc
14 | !/.xinitrc
15 | !/.xserverrc
16 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule ".config/vim/bundle/gnupg.vim"]
2 | path = .config/nvim/bundle/gnupg.vim
3 | url = https://github.com/vim-scripts/gnupg.vim.git
4 | [submodule ".config/vim/bundle/gundo.vim"]
5 | path = .config/nvim/bundle/gundo.vim
6 | url = https://github.com/sjl/gundo.vim.git
7 | [submodule ".config/vim/bundle/toggle_comment"]
8 | path = .config/nvim/bundle/toggle_comment
9 | url = https://github.com/lahwaacz/toggle_comment.git
10 | [submodule ".config/vim/bundle/vim-asymptote"]
11 | path = .config/nvim/bundle/vim-asymptote
12 | url = https://github.com/hura/vim-asymptote.git
13 | [submodule ".config/vim/bundle/vim-pathogen"]
14 | path = .config/nvim/bundle/vim-pathogen
15 | url = https://github.com/tpope/vim-pathogen.git
16 | [submodule ".config/vim/bundle/vim-unimpaired"]
17 | path = .config/nvim/bundle/vim-unimpaired
18 | url = https://github.com/tpope/vim-unimpaired.git
19 |
--------------------------------------------------------------------------------
/.gnupg:
--------------------------------------------------------------------------------
1 | .config/gnupg
--------------------------------------------------------------------------------
/.toprc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lahwaacz/dotfiles/52d1498107e5c12123c17616f7ea86823adcf60e/.toprc
--------------------------------------------------------------------------------
/.xinitrc:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ -d /etc/X11/xinit/xinitrc.d ]; then
4 | for f in /etc/X11/xinit/xinitrc.d/*; do
5 | [ -x "$f" ] && . "$f"
6 | done
7 | unset f
8 | fi
9 |
10 | source "$HOME/.xprofile"
11 |
12 | exec i3
13 |
--------------------------------------------------------------------------------
/.xprofile:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # turn on numlock
4 | [[ -x /usr/bin/numlockx ]] && numlockx on
5 |
6 | # turn off bell
7 | xset -b
8 |
9 | # key repeat delay and rate
10 | xset r rate 500 35
11 |
12 | # disable screensaver
13 | xset s 0 0
14 |
15 | # restore DPMS settings (due to SDDM)
16 | xset dpms 600 600 600
17 |
18 | export QT_AUTO_SCREEN_SCALE_FACTOR=1
19 | unset QT_QPA_PLATFORM
20 | unset QT_WAYLAND_DISABLE_WINDOWDECORATION
21 |
--------------------------------------------------------------------------------
/.xserverrc:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | exec /usr/bin/Xorg -nolisten tcp -noreset "$@" vt$XDG_VTNR
4 |
--------------------------------------------------------------------------------
/bin/README:
--------------------------------------------------------------------------------
1 | # ~/bin
2 | #
3 | # directory for binary files, links, and stupid overrides of binaries in /usr/bin, simply files that don't fit into ~/Scripts
4 |
--------------------------------------------------------------------------------
/bin/aria2c:
--------------------------------------------------------------------------------
1 | #! /usr/bin/bash
2 |
3 | # hack to use XDG config path
4 | exec /usr/bin/aria2c --conf-path=$HOME/.config/aria2/aria2.conf "$@"
5 |
--------------------------------------------------------------------------------
/bin/fdm:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # HACK: we need to run fdm from $HOME and hardcode the path to the password file as
4 | # relative, because %h is not expanded (see https://github.com/nicm/fdm/issues/64 )
5 | cd "$HOME"
6 | exec /usr/bin/fdm "$@"
7 |
--------------------------------------------------------------------------------
/bin/lock-session:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | exec loginctl lock-session
4 |
--------------------------------------------------------------------------------
/bin/mutt:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | #check_domain=geraldine.fjfi.cvut.cz
4 | check_domain=ping.archlinux.org
5 |
6 | # sync
7 | ping -c 1 "$check_domain" > /dev/null && fetchmail
8 |
9 | # cd into fixed path (for saving attachments)
10 | cd ~/stuff
11 |
12 | # run neomutt or mutt
13 | if [[ -e /usr/bin/neomutt ]]; then
14 | /usr/bin/neomutt -n "$@"
15 | else
16 | /usr/bin/mutt -n -F ~/.config/mutt/muttrc "$@"
17 | fi
18 |
19 | # sync
20 | ping -c 1 "$check_domain" > /dev/null && fetchmail
21 |
--------------------------------------------------------------------------------
/bin/qpdfview:
--------------------------------------------------------------------------------
1 | #! /usr/bin/bash
2 |
3 | exec /usr/bin/qpdfview --unique "$@"
4 |
--------------------------------------------------------------------------------
/bin/screen:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | exec /usr/bin/screen -c "$HOME/.config/screenrc" "$@"
4 |
--------------------------------------------------------------------------------
/bin/ssh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # update the TTY for use by pinentry invoked by ssh -- needed when the user
4 | # switches between Xorg and non-Xorg (console, ssh) sessions
5 | if [[ -S "$SSH_AUTH_SOCK" ]] && [[ $UID != 0 ]] && [[ "$GPG_TTY" != "" ]]; then
6 | # Don't export $GPG_TTY here! In case of git, ssh is not attached to a tty.
7 | # The correct GPG_TTY is inherited from the parent process.
8 | #export GPG_TTY=$(tty)
9 | gpg-connect-agent updatestartuptty /bye >/dev/null
10 | fi
11 |
12 | exec /usr/bin/ssh "$@"
13 |
--------------------------------------------------------------------------------