├── .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 | --------------------------------------------------------------------------------