├── tf2 ├── pyro.cfg ├── demoman.cfg ├── scout.cfg ├── sniper.cfg ├── soldier.cfg ├── heavyweapons.cfg ├── autoexec.cfg ├── medic.cfg ├── network.cfg ├── spy.cfg ├── coop.cfg ├── engineer.cfg ├── binds.cfg └── gfx.cfg ├── .zshenv ├── .config ├── zed │ ├── snippets │ │ ├── jsonc.json │ │ └── typst.json │ ├── tasks.json │ ├── keymap.json │ └── settings.json ├── i3status │ └── config ├── termite │ └── config ├── helix │ ├── languages.toml │ ├── config.toml │ └── themes │ │ ├── github_dark_high_contrast.toml │ │ └── github_light_high_contrast.toml ├── ranger │ ├── scope.sh │ └── rc.conf ├── nvim │ └── init.vim ├── sway │ └── config └── alacritty │ └── alacritty.yml ├── .local └── share │ ├── dark-mode.d │ ├── alacritty.sh │ └── gtkqt.sh │ ├── light-mode.d │ ├── alacritty.sh │ └── gtkqt.sh │ └── konsole │ └── gruvbox.colorscheme ├── .tmux.conf ├── .tmux └── tmuxline ├── .zprofile ├── install.sh ├── .zshrc ├── .nethackrc ├── .zsh └── promptline ├── .bashrc └── LICENSE /tf2/pyro.cfg: -------------------------------------------------------------------------------- 1 | //pyro settings 2 | exec binds 3 | -------------------------------------------------------------------------------- /tf2/demoman.cfg: -------------------------------------------------------------------------------- 1 | //demoman settings 2 | exec binds 3 | -------------------------------------------------------------------------------- /tf2/scout.cfg: -------------------------------------------------------------------------------- 1 | //scout settings 2 | exec binds 3 | -------------------------------------------------------------------------------- /tf2/sniper.cfg: -------------------------------------------------------------------------------- 1 | //sniper settings 2 | exec binds 3 | -------------------------------------------------------------------------------- /tf2/soldier.cfg: -------------------------------------------------------------------------------- 1 | //soldier settings 2 | exec binds 3 | -------------------------------------------------------------------------------- /tf2/heavyweapons.cfg: -------------------------------------------------------------------------------- 1 | //heavy settings 2 | exec binds 3 | -------------------------------------------------------------------------------- /.zshenv: -------------------------------------------------------------------------------- 1 | # Prompt 2 | export PS1=' 3 | [%F{green} %n %F{blue}%2~ %f] ' 4 | -------------------------------------------------------------------------------- /tf2/autoexec.cfg: -------------------------------------------------------------------------------- 1 | alias Server2 "connect 148.251.154.5:27015" 2 | 3 | exec highquality 4 | exec settings 5 | exec network 6 | exec transparentviewmodels 7 | -------------------------------------------------------------------------------- /tf2/medic.cfg: -------------------------------------------------------------------------------- 1 | //medic settings 2 | exec binds 3 | slot2 4 | 5 | bind MWHEELUP "slot3;r_drawviewmodel 1" 6 | bind MWHEELDOWN "slot1;r_drawviewmodel 1" 7 | bind KP_SLASH "slot2;r_drawviewmodel 0" 8 | -------------------------------------------------------------------------------- /.config/zed/snippets/jsonc.json: -------------------------------------------------------------------------------- 1 | { 2 | "ltexde": { 3 | "prefix": "ltexde", 4 | "body": "{\"lsp\":{\"ltex\":{\"settings\":{\"ltex\":{\"language\":\"de-DE\"}}}}}", 5 | "description": "Configure LTeX for de-DE" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tf2/network.cfg: -------------------------------------------------------------------------------- 1 | //network settings 2 | //Made with cfg.tf - custom Team Fortress 2 config generator 3 | 4 | cl_updaterate 67 5 | cl_cmdrate 67 6 | rate 60000 7 | 8 | cl_interp .0152 9 | cl_interp_ratio 1 10 | 11 | cl_smooth 0 12 | -------------------------------------------------------------------------------- /.local/share/dark-mode.d/alacritty.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ln -sf ~/.config/alacritty/dark.yaml ~/.config/alacritty/theme.yaml 4 | ln -sf ~/.config/helix/themes/github_dark_high_contrast.toml ~/.config/helix/themes/manual.toml 5 | pkill -USR1 hx 6 | -------------------------------------------------------------------------------- /.local/share/light-mode.d/alacritty.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ln -sf ~/.config/alacritty/light.yaml ~/.config/alacritty/theme.yaml 4 | ln -sf ~/.config/helix/themes/github_light_high_contrast.toml ~/.config/helix/themes/manual.toml 5 | pkill -USR1 hx 6 | -------------------------------------------------------------------------------- /.local/share/light-mode.d/gtkqt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita' 4 | gsettings set org.gnome.desktop.interface icon-theme 'breeze' 5 | /home/timo/Development/Repos/plasma-theme-switcher/cmake-build-release/plasma-theme plasma-theme -c /usr/share/color-schemes/BreezeLight.colors -w Breeze 6 | -------------------------------------------------------------------------------- /.local/share/dark-mode.d/gtkqt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark' 4 | gsettings set org.gnome.desktop.interface icon-theme 'breeze-dark' 5 | /home/timo/Development/Repos/plasma-theme-switcher/cmake-build-release/plasma-theme plasma-theme -c /usr/share/color-schemes/BreezeDark.colors -w Breeze 6 | -------------------------------------------------------------------------------- /tf2/spy.cfg: -------------------------------------------------------------------------------- 1 | //spy settings 2 | exec binds 3 | slot3 4 | 5 | bind MOUSE2 +hide 6 | alias +hide "+attack2" 7 | alias -hide "-attack2" 8 | 9 | bind KP_SLASH "slot1;r_drawviewmodel 1" 10 | bind MWHEELUP "slot3;r_drawviewmodel 1" 11 | bind MWHEELDOWN "slot4;r_drawviewmodel 1" 12 | 13 | bind "KP_DEL" "+sap" 14 | alias "+sap" "r_drawviewmodel 1;slot2;+attack" 15 | alias "-sap" "-attack;slot3;r_drawviewmodel 1" 16 | 17 | bind "KP_PLUS" "disguise 8 -2" 18 | 19 | bind "g" "disguise 8 -2;taunt" 20 | bind "t" "disguise 8 -2;taunt 1" 21 | bind "r" "disguise 8 -2;taunt 2" 22 | -------------------------------------------------------------------------------- /.tmux.conf: -------------------------------------------------------------------------------- 1 | set -g default-terminal "screen-256color" 2 | set -g status-bg '#282828' 3 | set -g status-fg '#ebdbb2' 4 | #set-option -g default-shell /bin/zsh # Make zsh default shell 5 | set-option -ga terminal-overrides ",xterm-256color:Tc" # Force truecolor support 6 | set -g @plugin 'tmux-plugins/tpm' # Let tpm manage itself 7 | set -g @plugin 'tmux-plugins/tmux-sensible' # Basic tmux settings 8 | 9 | set -g mouse on 10 | 11 | run '~/.tmux/plugins/tpm/tpm' # Initialize plugin manager 12 | 13 | set -sg escape-time 0 14 | -------------------------------------------------------------------------------- /tf2/coop.cfg: -------------------------------------------------------------------------------- 1 | exec 360controller 2 | 3 | -forward; -back; -moveleft; -moveright 4 | 5 | bind w "" 6 | bind s "" 7 | bind a "" 8 | bind d "" 9 | 10 | bind CTRL "" 11 | bind SPACE "" 12 | 13 | bind g "" 14 | bind t "" 15 | bind f "" 16 | 17 | // CONTROLLER 18 | 19 | joy_name "PS4 Controller" 20 | bind "STICK1" "+duck" 21 | bind "STICK2" "+jump" 22 | bind "A_BUTTON" "voicemenu 1 1" 23 | bind "B_BUTTON" "voicemenu 1 0" 24 | bind "X_BUTTON" "voicemenu 0 0" 25 | bind "Y_BUTTON" "voicemenu 2 0" 26 | bind "BACK" "pause" 27 | //bind "START" "togglescores" 28 | bind "L_SHOULDER" "" 29 | bind "R_SHOULDER" "" 30 | -------------------------------------------------------------------------------- /.config/zed/snippets/typst.json: -------------------------------------------------------------------------------- 1 | { 2 | "article": { 3 | "prefix": "article", 4 | "body": "#import \"@local/article:0.1.0\": *\n\n#show: article.with(\n title: \"$1\",\n author: (\"Timo Kösters \",),\n lang: (\"en\", \"US\"),\n //lang: (\"de\", \"DE\")\n print: false,\n)\n\n$2", 5 | "description": "Typst Article Template" 6 | }, 7 | 8 | "slides": { 9 | "prefix": "slides", 10 | "body": "#import \"@local/slydes:0.2.0\": *\n\n#show: slides.with(\n title: \"$1\",\n author: (\"Timo Kösters \",),\n lang: (\"en\", \"US\"),\n //lang: (\"de\", \"DE\")\n)\n\n$2", 11 | "description": "Typst Slides Template" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.config/zed/tasks.json: -------------------------------------------------------------------------------- 1 | // Static tasks configuration. 2 | // 3 | // Example: 4 | [ 5 | { 6 | "label": "Compile Typst", 7 | "command": "typst compile '$ZED_FILE' /home/timo/.typst.pdf", 8 | "use_new_terminal": false, 9 | "allow_concurrent_runs": false, 10 | "reveal": "always", 11 | "hide": "on_success", 12 | "shell": { "program": "/bin/sh" } 13 | }, 14 | { 15 | "label": "Compile Typst Firefox", 16 | "command": "typst compile '$ZED_FILE' /home/timo/.typst.pdf && firefox /home/timo/.typst.pdf", 17 | "use_new_terminal": false, 18 | "allow_concurrent_runs": false, 19 | "reveal": "always", 20 | "hide": "on_success", 21 | "shell": { "program": "/bin/sh" } 22 | } 23 | ] 24 | -------------------------------------------------------------------------------- /tf2/engineer.cfg: -------------------------------------------------------------------------------- 1 | //engineer settings 2 | exec binds 3 | 4 | alias build_sentry "destroy 2 0; build 2 0" 5 | alias build_dispenser "destroy 0 0; build 0 0" 6 | alias build_entrance "destroy 1 0; build 1 0" 7 | alias build_exit "destroy 1 1; build 1 1" 8 | 9 | alias +build_1 "bind MOUSE4 build_sentry; bind MOUSE5 build_dispenser" 10 | alias -build_1 "exec engineer" 11 | 12 | alias +eureka_mode "bind MOUSE4 TELEPORT_SPAWN; bind MOUSE5 TELEPORT_EXIT" 13 | alias -eureka_mode "exec engineer" 14 | alias TELEPORT_SPAWN "eureka_teleport" 15 | alias TELEPORT_EXIT "eureka_teleport 1" 16 | 17 | alias +build_2 "+duck; bind MOUSE4 build_entrance; bind MOUSE5 build_exit" 18 | alias -build_2 "-duck; exec engineer" 19 | 20 | bind SHIFT "+build_1" 21 | bind CTRL "+build_2" 22 | bind KP_SLASH "slot1;r_drawviewmodel 0" 23 | bind MWHEELUP "slot3;r_drawviewmodel 1" 24 | bind MWHEELDOWN "slot2;r_drawviewmodel 1" 25 | bind q "+eureka_mode" 26 | -------------------------------------------------------------------------------- /.config/i3status/config: -------------------------------------------------------------------------------- 1 | # i3status configuration file. 2 | # see "man i3status" for documentation. 3 | 4 | # It is important that this file is edited as UTF-8. 5 | # The following line should contain a sharp s: 6 | # ß 7 | # If the above line is not correctly displayed, fix your editor first! 8 | 9 | general { 10 | colors = false 11 | color_good = "#b8bb26" 12 | color_degraded = "#fabd2f" 13 | color_bad = "#fb4934" 14 | color_separator = "#fe8019" 15 | } 16 | 17 | order += "volume master" 18 | order += "wireless _first_" 19 | order += "tztime local" 20 | order += "battery all" 21 | 22 | volume master { 23 | format = "Volume: %volume " 24 | format_muted = "Volume: Muted (%volume) " 25 | } 26 | 27 | wireless _first_ { 28 | format_up = " Wifi: %essid%quality %bitrate " 29 | format_down = "" 30 | } 31 | 32 | battery all { 33 | format = " %status%percentage " 34 | format_down = "" 35 | status_chr = "Charging: " 36 | status_bat = "Battery: " 37 | status_unk = "UNKNOWN " 38 | status_full = "FULL " 39 | path = "/sys/class/power_supply/BAT%d/uevent" 40 | low_threshold = "10" 41 | last_full_capacity = true 42 | integer_battery_capacity = true 43 | } 44 | 45 | tztime local { 46 | format = " Time: %H:%M " 47 | } 48 | 49 | -------------------------------------------------------------------------------- /.local/share/konsole/gruvbox.colorscheme: -------------------------------------------------------------------------------- 1 | [Background] 2 | Color=29,32,33 3 | 4 | [BackgroundFaint] 5 | Color=29,32,33 6 | 7 | [BackgroundIntense] 8 | Color=29,32,33 9 | 10 | [Color0] 11 | Color=49,54,59 12 | 13 | [Color0Faint] 14 | Color=127,140,141 15 | 16 | [Color0Intense] 17 | Color=127,140,141 18 | 19 | [Color1] 20 | Color=194,34,28 21 | 22 | [Color1Faint] 23 | Color=233,68,48 24 | 25 | [Color1Intense] 26 | Color=233,68,48 27 | 28 | [Color2] 29 | Color=152,151,26 30 | 31 | [Color2Faint] 32 | Color=184,187,38 33 | 34 | [Color2Intense] 35 | Color=184,187,38 36 | 37 | [Color3] 38 | Color=215,153,33 39 | 40 | [Color3Faint] 41 | Color=250,189,47 42 | 43 | [Color3Intense] 44 | Color=250,189,47 45 | 46 | [Color4] 47 | Color=69,133,136 48 | 49 | [Color4Faint] 50 | Color=131,165,152 51 | 52 | [Color4Intense] 53 | Color=131,165,152 54 | 55 | [Color5] 56 | Color=177,98,134 57 | 58 | [Color5Faint] 59 | Color=211,134,155 60 | 61 | [Color5Intense] 62 | Color=211,134,155 63 | 64 | [Color6] 65 | Color=104,157,106 66 | 67 | [Color6Faint] 68 | Color=142,192,124 69 | 70 | [Color6Intense] 71 | Color=142,192,124 72 | 73 | [Color7] 74 | Color=168,153,132 75 | 76 | [Color7Faint] 77 | Color=235,219,178 78 | 79 | [Color7Intense] 80 | Color=235,219,178 81 | 82 | [Foreground] 83 | Color=235,219,178 84 | 85 | [ForegroundFaint] 86 | Color=235,219,178 87 | 88 | [ForegroundIntense] 89 | Color=235,219,178 90 | 91 | [General] 92 | Description=gruvbox 93 | Opacity=1 94 | Wallpaper= 95 | -------------------------------------------------------------------------------- /.tmux/tmuxline: -------------------------------------------------------------------------------- 1 | # This tmux statusbar config was created by tmuxline.vim 2 | # on Fr, 11 Aug 2017 3 | 4 | set -g status-justify "left" 5 | set -g status "on" 6 | set -g status-attr "none" 7 | set -g message-command-bg "colour238" 8 | set -g status-left-length "100" 9 | set -g pane-active-border-fg "colour154" 10 | set -g status-bg "colour235" 11 | set -g message-command-fg "colour222" 12 | set -g pane-border-fg "colour238" 13 | set -g message-bg "colour238" 14 | set -g status-left-attr "none" 15 | set -g status-right-attr "none" 16 | set -g status-right-length "100" 17 | set -g message-fg "colour222" 18 | setw -g window-status-fg "colour121" 19 | setw -g window-status-attr "none" 20 | setw -g window-status-activity-bg "colour235" 21 | setw -g window-status-activity-attr "none" 22 | setw -g window-status-activity-fg "colour154" 23 | setw -g window-status-separator "" 24 | setw -g window-status-bg "colour235" 25 | set -g status-left "#[fg=colour232,bg=colour154] #S #[fg=colour154,bg=colour235,nobold,nounderscore,noitalics]" 26 | set -g status-right "#[fg=colour238,bg=colour235,nobold,nounderscore,noitalics]#[fg=colour222,bg=colour238] %Y-%m-%d  %H:%M #[fg=colour154,bg=colour238,nobold,nounderscore,noitalics]#[fg=colour232,bg=colour154] #h " 27 | setw -g window-status-format "#[fg=colour121,bg=colour235] #I #[fg=colour121,bg=colour235] #W " 28 | setw -g window-status-current-format "#[fg=colour235,bg=colour238,nobold,nounderscore,noitalics]#[fg=colour222,bg=colour238] #I #[fg=colour222,bg=colour238] #W #[fg=colour238,bg=colour235,nobold,nounderscore,noitalics]" 29 | -------------------------------------------------------------------------------- /.config/zed/keymap.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "bindings": { 4 | "shift-escape": "workspace::ToggleLeftDock" 5 | } 6 | }, 7 | { 8 | "context": "Terminal", 9 | "bindings": { 10 | "`": "workspace::ToggleBottomDock", 11 | "§": "workspace::ToggleBottomDock" 12 | } 13 | }, 14 | { 15 | "context": "VimControl && !menu", 16 | "bindings": { 17 | "`": "workspace::ToggleBottomDock", 18 | "§": "workspace::ToggleBottomDock", 19 | "g e": "vim::EndOfDocument", 20 | "g h": "vim::FirstNonWhitespace", 21 | "g l": "vim::EndOfLine", 22 | "g r": "editor::FindAllReferences", 23 | "m m": "vim::Matching", 24 | "%": "editor::SelectAll", 25 | "space f": "file_finder::Toggle", 26 | "space d": "editor::GoToDiagnostic", 27 | "space k": "editor::Hover", 28 | "space a": "editor::ToggleCodeActions", 29 | "space t c": ["task::Spawn", { "task_name": "Compile Typst" }], 30 | "space t f": ["task::Spawn", { "task_name": "Compile Typst Firefox" }], 31 | "ctrl-c": ["editor::ToggleComments", { "advance_downwards": false }] 32 | } 33 | }, 34 | { 35 | "context": "vim_mode == normal", 36 | "bindings": { 37 | "shift-u": "vim::Redo", 38 | ">": "vim::Indent", 39 | "<": "vim::Outdent" 40 | } 41 | }, 42 | { 43 | "context": "vim_mode == visual", 44 | "bindings": { 45 | "g A": "vim::VisualInsertEndOfLine", 46 | "shift-j": "vim::JoinLines", 47 | "r": "vim::PushReplace", 48 | "ctrl-c": ["editor::ToggleComments", { "advance_downwards": false }] 49 | } 50 | } 51 | ] 52 | -------------------------------------------------------------------------------- /.zprofile: -------------------------------------------------------------------------------- 1 | # ~/.profile: executed by the command interpreter for login shells. 2 | # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login 3 | # exists. 4 | # see /usr/share/doc/bash/examples/startup-files for examples. 5 | # the files are located in the bash-doc package. 6 | 7 | # the default umask is set in /etc/profile; for setting the umask 8 | # for ssh logins, install and configure the libpam-umask package. 9 | #umask 022 10 | 11 | # set PATH so it includes user's private bin if it exists 12 | if [ -d "$HOME/bin" ] ; then 13 | PATH="$HOME/bin:$PATH" 14 | fi 15 | 16 | export PATH="/home/playlucky/.local/share/cargo/bin:${PATH}:/opt/grim:/opt/slurp:$HOME/Downloads/Ndless/ndless-sdk/toolchain/install/bin:$HOME/Downloads/Ndless/ndless-sdk/bin" 17 | 18 | export RUST_SRC_PATH="$(rustc --print sysroot)/lib/rustlib/src/rust/src" 19 | 20 | export PKG_CONFIG_PATH=/usr/lib/pkgconfig 21 | 22 | # Alacritty 23 | export WINIT_HIDPI_FACTOR=1 24 | 25 | # Sway 26 | export XDG_CURRENT_DESKTOP=KDE 27 | export KDE_SESSION_VERSION="5" 28 | 29 | # Default editor 30 | export EDITOR=/usr/bin/nvim 31 | 32 | # Keyboard options (sway) 33 | export XKB_DEFAULT_OPTIONS=caps:escape 34 | 35 | # XDG dirs 36 | export XDG_CONFIG_HOME="$HOME"/.config 37 | export XDG_CACHE_HOME="$HOME"/.cache 38 | export XDG_DATA_HOME="$HOME"/.local/share 39 | 40 | # Unclutter home 41 | export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc 42 | export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg 43 | export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey 44 | export LESSHISTFILE="$XDG_CACHE_HOME"/less/history 45 | export CARGO_HOME="$XDG_DATA_HOME"/cargo 46 | export TMUX_TMPDIR="$XDG_RUNTIME_DIR" 47 | export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android 48 | 49 | export _JAVA_AWT_WM_NONREPARENTING=1 50 | export TERM='xterm-256color' 51 | -------------------------------------------------------------------------------- /.config/termite/config: -------------------------------------------------------------------------------- 1 | [options] 2 | scroll_on_output = false 3 | scroll_on_keystroke = true 4 | audible_bell = false 5 | mouse_autohide = true 6 | allow_bold = true 7 | dynamic_title = true 8 | urgent_on_bell = true 9 | clickable_url = true 10 | font = Inconsolata 12 11 | scrollback_lines = 10000 12 | search_wrap = true 13 | #icon_name = terminal 14 | #geometry = 640x480 15 | 16 | # "system", "on" or "off" 17 | cursor_blink = system 18 | 19 | # "block", "underline" or "ibeam" 20 | cursor_shape = block 21 | 22 | # $BROWSER is used by default if set, with xdg-open as a fallback 23 | #browser = xdg-open 24 | 25 | # set size hints for the window 26 | #size_hints = false 27 | 28 | # Hide links that are no longer valid in url select overlay mode 29 | filter_unmatched_urls = true 30 | 31 | # emit escape sequences for extra modified keys 32 | #modify_other_keys = false 33 | 34 | [colors] 35 | #cursor = #dcdccc 36 | #cursor_foreground = #dcdccc 37 | foreground = #dcdccc 38 | foreground_bold = #ffffff 39 | #background = #282828 40 | 41 | # 20% background transparency (requires a compositor) 42 | background = rgba(0, 0, 0, 0.25) 43 | 44 | # if unset, will reverse foreground and background 45 | highlight = #2f2f2f 46 | 47 | # colors from color0 to color254 can be set 48 | color0 = #1d2021 49 | color1 = #cc241d 50 | color2 = #98971a 51 | color3 = #d79921 52 | color4 = #458588 53 | color5 = #b16286 54 | color6 = #689d6a 55 | color7 = #a89984 56 | color8 = #928374 57 | color9 = #fb4934 58 | color10 = #b8bb26 59 | color11 = #fabd2f 60 | color12 = #83a598 61 | color13 = #d3869b 62 | color14 = #8ec07c 63 | color15 = #ebdbb2 64 | 65 | [hints] 66 | #font = Monospace 12 67 | #foreground = #dcdccc 68 | #background = #3f3f3f 69 | #active_foreground = #e68080 70 | #active_background = #3f3f3f 71 | #padding = 2 72 | #border = #3f3f3f 73 | #border_width = 0.5 74 | #roundness = 2.0 75 | 76 | # vim: ft=dosini cms=#%s 77 | -------------------------------------------------------------------------------- /.config/zed/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "hover_popover_enabled": false, 3 | "agent": { 4 | "default_profile": "write", 5 | "model_parameters": [], 6 | "default_model": { 7 | "provider": "zed.dev", 8 | "model": "claude-sonnet-4-latest" 9 | }, 10 | "version": "2" 11 | }, 12 | "features": { 13 | "edit_prediction_provider": "none" 14 | }, 15 | "restore_on_startup": "none", 16 | "vim_mode": true, 17 | "base_keymap": "VSCode", 18 | "buffer_line_height": "standard", 19 | "telemetry": { 20 | "metrics": false 21 | }, 22 | "gutter": { "code_actions": false, "folds": false }, 23 | "toolbar": { "quick_actions": false }, 24 | "buffer_font_family": "Source Code Pro", // Ω Ξ Θ α ζ 25 | "tab_bar": { "show_nav_history_buttons": false }, 26 | "tabs": { "git_status": true }, 27 | //"buffer_font_weight": 600, 28 | "cursor_blink": false, 29 | "ui_font_family": "Inter", 30 | //"ui_font_weight": 600, 31 | "ui_font_size": 16, 32 | "soft_wrap": "preferred_line_length", 33 | "preferred_line_length": 100, 34 | "show_wrap_guides": false, 35 | "buffer_font_size": 16, 36 | "theme": { 37 | "mode": "system", 38 | "light": "One Light", 39 | "dark": "Summercamp" 40 | }, 41 | "git": { 42 | "inline_blame": { "enabled": false } 43 | }, 44 | "use_autoclose": false, 45 | "preview_tabs": { 46 | "enabled": true, 47 | "enable_preview_from_code_navigation": true, 48 | "enable_preview_from_file_finder": true 49 | }, 50 | "terminal": { 51 | "button": false, 52 | "font_family": "Source Code Pro", 53 | //"font_weight": 600, 54 | "blinking": "off", 55 | "cursor_shape": "bar" 56 | }, 57 | "lsp": { 58 | "ltex": { 59 | "settings": { 60 | "ltex": { 61 | "language": "en-US", 62 | "additionalRules": { 63 | "motherTongue": "de-DE", 64 | "enablePickyRules": false 65 | } 66 | } 67 | } 68 | } 69 | }, 70 | "outline_panel": { "button": false } 71 | } 72 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ln -sf $HOME/dotfiles/.tmux.conf $HOME/.tmux.conf 4 | ln -sf $HOME/dotfiles/.config/sway/config $HOME/.config/sway/config 5 | ln -sf $HOME/dotfiles/.config/i3status/config $HOME/.config/i3status/config 6 | ln -sf $HOME/dotfiles/.config/nvim/init.vim $HOME/.config/nvim/init.vim 7 | ln -sf $HOME/dotfiles/.config/ranger/rc.conf $HOME/.config/ranger/rc.conf 8 | ln -sf $HOME/dotfiles/.config/ranger/scope.sh $HOME/.config/ranger/scope.sh 9 | ln -sf $HOME/dotfiles/.config/termite/config $HOME/.config/termite/config 10 | ln -sf $HOME/dotfiles/.config/alacritty/alacritty.yml $HOME/.config/alacritty/alacritty.yml 11 | ln -sf $HOME/dotfiles/.config/helix/config.toml $HOME/.config/helix/config.toml 12 | ln -sf $HOME/dotfiles/.config/helix/languages.toml $HOME/.config/helix/languages.toml 13 | ln -sf $HOME/dotfiles/.config/helix/themes/github_light_high_contrast.toml $HOME/.config/helix/themes/github_light_high_contrast.toml 14 | ln -sf $HOME/dotfiles/.config/helix/themes/github_dark_high_contrast.toml $HOME/.config/helix/themes/github_dark_high_contrast.toml 15 | ln -nsf $HOME/dotfiles/.config/zed $HOME/.config/zed 16 | ln -sf $HOME/dotfiles/.local/share/dark-mode.d/alacritty.sh $HOME/.local/share/dark-mode.d/alacritty.sh 17 | ln -sf $HOME/dotfiles/.local/share/dark-mode.d/gtkqt.sh $HOME/.local/share/dark-mode.d/gtkqt.sh 18 | ln -sf $HOME/dotfiles/.local/share/light-mode.d/alacritty.sh $HOME/.local/share/light-mode.d/alacritty.sh 19 | ln -sf $HOME/dotfiles/.local/share/light-mode.d/gtkqt.sh $HOME/.local/share/light-mode.d/gtkqt.sh 20 | ln -sf $HOME/dotfiles/.local/share/konsole/gruvbox.colorscheme $HOME/.local/share/konsole/gruvbox.colorscheme 21 | ln -sf $HOME/dotfiles/.bashrc $HOME/.bashrc 22 | ln -sf $HOME/dotfiles/.zshrc $HOME/.zshrc 23 | ln -sf $HOME/dotfiles/.zsh/promptline $HOME/.zsh/promptline 24 | ln -sf $HOME/dotfiles/.zshenv $HOME/.zshenv 25 | ln -sf $HOME/dotfiles/.zprofile $HOME/.zprofile 26 | ln -sf $HOME/dotfiles/.tmux/tmuxline $HOME/.tmux/tmuxline 27 | ln -sf $HOME/dotfiles/.nethackrc $HOME/.nethackrc 28 | -------------------------------------------------------------------------------- /.config/helix/languages.toml: -------------------------------------------------------------------------------- 1 | [language-server.ltex] 2 | command = "/usr/bin/ltex-ls" 3 | # config = { ltex.language = "de-DE" } 4 | 5 | [[language]] 6 | name = "markdown" 7 | indent = { tab-width = 4, unit = " " } 8 | # language-servers = [ {name = "harper-ls" }] 9 | 10 | 11 | #[[language]] 12 | #name = "rust" 13 | #[language.language-servers] 14 | #command = "rustup" 15 | #args = ["run", "stable", "rust-analyzer"] 16 | 17 | #[language.config] 18 | #cargo.target = "wasm32-unknown-unknown" 19 | 20 | [[language]] 21 | name = "haskell" 22 | diagnostic-severity = "Warning" 23 | 24 | [[language]] 25 | name = "python" 26 | indent = { tab-width = 4, unit = " " } 27 | 28 | [[language]] 29 | name = "latex" 30 | language-servers = [ {name = "ltex" }] 31 | 32 | [[language]] 33 | name = "typst" 34 | # language-servers = [ {name = "typst-lsp"}, {name = "ltex" } ] 35 | # language-servers = [ {name = "typst-lsp"}, {name = "harper-ls"} ] 36 | 37 | [[language]] 38 | name = "html" 39 | # formatter = { command = 'prettier', args = ["--parser", "html", "--plugin", "prettier-plugin-tailwindcss"] } 40 | formatter = { command = 'rustywind', args = ["--stdin"] } 41 | language-servers = [ {name = "vscode-html-language-server"} ] 42 | 43 | [language-server.tailwindcss-language-server] 44 | command = "tailwindcss-language-server" 45 | args = ["--stdio"] 46 | 47 | [language-server.tailwindcss-language-server.config] 48 | # test 49 | 50 | 51 | # [language-server.harper-ls] 52 | # command = "harper-ls" 53 | # args = ["--stdio"] 54 | 55 | # [language-server.harper-ls.config.harper-ls.linters] 56 | # spaces = false 57 | 58 | [language-server.vscode-css-language-server] 59 | name = "vscode-css-language-server" 60 | command = "/usr/bin/vscode-css-language-server" 61 | 62 | [language-server.vscode-css-language-server.config] 63 | css = { validate = { enable=true } } 64 | format = { newlineBetweenSelectors = false, newlineBetweenRules = false } 65 | provideFormatter = true 66 | 67 | [language-server.vscode-html-language-server.config] 68 | html = { validate = { enable=true } } 69 | format = {} 70 | provideFormatter = true 71 | -------------------------------------------------------------------------------- /tf2/binds.cfg: -------------------------------------------------------------------------------- 1 | unbindall 2 | 3 | r_drawviewmodel 0 4 | 5 | // null-cancelling movement {{{ 6 | 7 | alias null "" 8 | 9 | alias +nmov_forward "-back ; +forward; alias nmov_reforward +forward" 10 | alias +nmov_back "-forward; +back ; alias nmov_reback +back" 11 | 12 | alias -nmov_forward "-forward; nmov_reback ; alias nmov_reforward null" 13 | alias -nmov_back "-back ; nmov_reforward; alias nmov_reback null" 14 | 15 | alias +nmov_moveleft "-moveright; +moveleft ; alias nmov_removeleft +moveleft" 16 | alias +nmov_moveright "-moveleft ; +moveright; alias nmov_removeright +moveright" 17 | 18 | alias -nmov_moveleft "-moveleft ; nmov_removeright; alias nmov_removeleft null" 19 | alias -nmov_moveright "-moveright; nmov_removeleft ; alias nmov_removeright null" 20 | 21 | alias nmov_reforward null 22 | alias nmov_reback null 23 | 24 | alias nmov_removeleft null 25 | alias nmov_removeright null 26 | 27 | bind w +nmov_forward 28 | bind s +nmov_back 29 | bind a +nmov_moveleft 30 | bind d +nmov_moveright 31 | // }}} 32 | 33 | 34 | bind KP_SLASH "slot1;r_drawviewmodel 0" 35 | bind MWHEELUP "slot3;r_drawviewmodel 1" 36 | bind MWHEELDOWN "slot2;r_drawviewmodel 1" 37 | 38 | bind CTRL +duck 39 | bind SPACE +jump 40 | 41 | bind KP_MULTIPLY +noclip 42 | alias +noclip "cheats 1;noclip" 43 | alias -noclip noclip 44 | 45 | bind MOUSE1 +attack 46 | bind MOUSE2 +attack2 47 | bind MOUSE3 +attack3 48 | 49 | bind r "taunt 2" 50 | 51 | bind . changeteam 52 | bind , changeclass 53 | 54 | bind z voice_menu_1 55 | bind x voice_menu_2 56 | bind c voice_menu_3 57 | bind y say 58 | bind u say_team 59 | bind i say_party 60 | bind e "voicemenu 0 0" 61 | bind v +voicerecord 62 | bind KP_MINUS +voicerecord 63 | bind 0 hud_reloadscheme 64 | 65 | bind j "cl_trigger_first_notification" 66 | 67 | bind g taunt 68 | bind t "taunt 1" 69 | bind f +inspect 70 | 71 | bind ` toggleconsole 72 | bind ESCAPE cancelselect 73 | bind TAB +showscores 74 | bind F1 "load_itempreset 0" 75 | bind F2 "load_itempreset 1" 76 | bind F3 "load_itempreset 2" 77 | 78 | bind q lastdisguise 79 | bind h +use_action_slot_item 80 | bind k kill 81 | bind l dropitem 82 | bind m open_charinfo_direct 83 | bind n open_charinfo_backpack 84 | 85 | bind KP_END "join_class scout" 86 | bind KP_DOWNARROW "join_class soldier" 87 | bind KP_PGDN "join_class pyro" 88 | bind KP_LEFTARROW "join_class demoman" 89 | bind KP_5 "join_class heavyweapons" 90 | bind KP_RIGHTARROW "join_class engineer" 91 | bind KP_HOME "join_class medic" 92 | bind KP_UPARROW "join_class sniper" 93 | bind KP_PGUP "join_class spy" 94 | 95 | alias s "demoui;hidepanel specgui" 96 | bind ALT "impulse 201" 97 | 98 | bind "BACK" "exec coop" 99 | -------------------------------------------------------------------------------- /.config/helix/config.toml: -------------------------------------------------------------------------------- 1 | theme = "manual" 2 | 3 | [editor] 4 | mouse=false 5 | auto-pairs = false 6 | text-width = 100 7 | 8 | [editor.cursor-shape] 9 | insert = "bar" 10 | normal = "block" 11 | select = "underline" 12 | 13 | [editor.whitespace.render] 14 | space = "none" 15 | tab = "all" 16 | newline = "all" 17 | 18 | [editor.whitespace.characters] 19 | space = "·" 20 | nbsp = "⍽" 21 | tab = "→" 22 | newline = "⏎" 23 | # newline = "·" 24 | tabpad = "→" # Tabs will look like "→···" (depending on tab width) 25 | 26 | [editor.soft-wrap] 27 | enable = true 28 | wrap-at-text-width = true 29 | 30 | [keys.insert] 31 | "C-d" = [ 32 | ":insert-output echo -n \"=== $(date -d '3 hours ago' +%Y-%m-%d)\n\n/ Wer:\n/ Was:\n/ Gelernt:\n/ Bereut:\n/ Körper:\n/ Gedanken:\n/ Lustig:\n/ Idee:\n/ Morgen:\n/ TLDR:\"", 33 | "ensure_selections_forward", 34 | "flip_selections", 35 | "move_line_down", 36 | "move_line_down", 37 | "insert_at_line_end" 38 | ] 39 | 40 | [keys.normal] 41 | "x" = ["extend_to_line_bounds", "select_mode"] 42 | # AI Append 43 | "C-ret" = [ 44 | "select_all", 45 | ":pipe curl http://localhost:4051/text_generation --data-binary @-", 46 | "ensure_selections_forward", 47 | "collapse_selection", 48 | ] 49 | 50 | # "C-ret" = [ 51 | # "extend_to_line_bounds", 52 | # "trim_selections", # Remove \n 53 | # "ensure_selections_forward", 54 | # "flip_selections", 55 | # "select_mode", 56 | # "goto_file_start", 57 | # ":pipe curl http://localhost:4051/text_generation --data-binary @-", 58 | # "ensure_selections_forward", 59 | # "normal_mode", 60 | # "collapse_selection", 61 | # ] 62 | 63 | # TTS R=Rede mit mir 64 | "C-r" = [ 65 | "save_selection", 66 | "extend_to_line_bounds", 67 | "trim_selections", # Remove \n 68 | "ensure_selections_forward", 69 | "select_mode", 70 | "goto_file_end", 71 | ":pipe-to spd-say -C && spd-say -e", 72 | "normal_mode", 73 | "jump_backward", 74 | "jump_backward", 75 | ] 76 | 77 | "C-R" = [ 78 | ":run-shell-command spd-say -C", 79 | ] 80 | 81 | # Calc 82 | "C-k" = [ 83 | # "move_char_right", # Select whole set of equations 84 | # "goto_prev_paragraph", 85 | # "goto_next_paragraph", 86 | # "trim_selections", # Remove empty lines 87 | "extend_to_line_bounds", # Include \n 88 | # Select line without last equal sign, then pipe it into both echo and kalker 89 | ":pipe sd ' ?[=≈].*\\n?\\z' '' | { x=$(cat); echo \"$x ≈\" \"$(kalker -p 16 \"$x\" 2>&1)\"; }", 90 | ":append-output echo -n ≈", # Move cursor back to last equal sign 91 | "search_selection", 92 | "delete_selection", 93 | "search_prev", 94 | ] 95 | 96 | # Typst shortcuts 97 | [keys.normal."C-t"] 98 | # Compile and open 99 | "o" = ["save_selection", "select_all", ":pipe-to typst compile - /home/timo/.typst.pdf", ":run-shell-command firefox /home/timo/.typst.pdf", "jump_backward"] 100 | # Compile 101 | "c" = ["save_selection", "select_all", ":pipe-to typst compile - /home/timo/.typst.pdf", "jump_backward"] 102 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | # Keep 1000 lines of history within the shell and save it to ~/.zsh_history: 2 | HISTSIZE=1000 3 | SAVEHIST=1000 4 | HISTFILE=~/.zsh_history 5 | 6 | source ~/.zplug/init.zsh 7 | 8 | zplug "zsh-users/zsh-syntax-highlighting" 9 | 10 | zplug load 11 | 12 | # Rustup autocomplete 13 | fpath+=~/.zfunc 14 | 15 | # Use modern completion system 16 | autoload -Uz compinit promptinit 17 | compinit 18 | promptinit 19 | 20 | zstyle ':completion:*' auto-description 'specify: %d' 21 | zstyle ':completion:*' completer _expand _complete _correct _approximate 22 | zstyle ':completion:*' format 'Completing %d' 23 | zstyle ':completion:*' group-name '' 24 | zstyle ':completion:*' menu select=2 25 | eval "$(dircolors -b)" 26 | zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} 27 | zstyle ':completion:*' list-colors '' 28 | zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s 29 | zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*' 30 | zstyle ':completion:*' menu select=long 31 | zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s 32 | zstyle ':completion:*' use-compctl false 33 | zstyle ':completion:*' verbose true 34 | 35 | zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' 36 | zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd' 37 | 38 | setopt correct 39 | setopt sharehistory 40 | setopt extendedhistory 41 | 42 | bindkey -e 43 | bindkey $terminfo[kLFT5] backward-word 44 | bindkey $terminfo[kRIT5] forward-word 45 | bindkey '\e[1~' beginning-of-line # Linux console 46 | bindkey '\e[H' beginning-of-line # xterm 47 | bindkey '\eOH' beginning-of-line # gnome-terminal 48 | bindkey '\e[2~' overwrite-mode # Linux console, xterm, gnome-terminal 49 | bindkey '\e[3~' delete-char # Linux console, xterm, gnome-terminal 50 | bindkey '\e[4~' end-of-line # Linux console 51 | bindkey '\e[F' end-of-line # xterm 52 | bindkey '\eOF' end-of-line # gnome-terminal 53 | 54 | # More aliases 55 | alias present='pdfpc' 56 | alias present_with_notes='pdfpc --notes right' 57 | alias sshfspi='sshfs koesters.ddns.net /media/playlucky/koesters.ddns.net/' 58 | alias stbig='st -f"Inconsolata:pixelsize=26:antialias=true:autohint=true";' 59 | alias offline='sudo unshare -n sudo -u timokoesters' 60 | alias ls='ls --color' 61 | alias ll='ls --color -lAh' 62 | alias echome='pactl load-module module-loopback latency_msec=1' 63 | alias newsongs='youtube-dl -xwci' 64 | 65 | # Update system 66 | alias aa='sudo apt update && sudo apt upgrade' 67 | alias ai='sudo apt install' 68 | alias as='apt-cache search' 69 | alias al-'sudo apt list' 70 | alias ar='sudo apt remove' 71 | alias au='sudo apt update' 72 | alias pa='sudo pacman -Syu' 73 | alias pi='sudo pacman -Sy' 74 | alias ea='sudo emerge --sync && sudo emerge -uDUav --keep-going --with-bdeps=y @world' 75 | 76 | # Change programs 77 | alias rm='echo "Please use trash instead"; false' 78 | alias ranger='ranger --choosedir=$HOME/.rangerdir; cd `cat $HOME/.rangerdir`' 79 | alias tintin='tintin $HOME/.config/tintin/run.tin' 80 | alias grep='grep --color=auto' 81 | alias tmux='tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf' 82 | alias bc='bc -l' 83 | 84 | gpg-connect-agent /bye 85 | 86 | clear 87 | -------------------------------------------------------------------------------- /.config/helix/themes/github_dark_high_contrast.toml: -------------------------------------------------------------------------------- 1 | # Author : OwOSwordsman 2 | # An unofficial GitHub theme, generated using colors from: https://primer.style/primitives/colors 3 | # Credit goes to the original VSCode theme: https://github.com/primer/github-vscode-theme 4 | # Only the Light and Dark variants were specifically tested 5 | 6 | inherits = "github_dark" 7 | 8 | [palette] 9 | "accent.emphasis" = "#409eff" 10 | "accent.fg" = "#71b7ff" 11 | "accent.muted" = "#409eff" 12 | "accent.subtle" = "#409eff26" 13 | "attention.emphasis" = "#e09b13" 14 | "attention.fg" = "#f0b72f" 15 | "attention.muted" = "#e09b13" 16 | "attention.subtle" = "#e09b1326" 17 | "border.default" = "#7a828e" 18 | "border.muted" = "#7a828e" 19 | "border.subtle" = "#7a828e" 20 | "canvas.default" = "#0a0c10" 21 | "canvas.inset" = "#010409" 22 | "canvas.overlay" = "#272b33" 23 | "canvas.subtle" = "#272b33" 24 | "closed.emphasis" = "#ff6a69" 25 | "closed.fg" = "#ff6a69" 26 | "closed.muted" = "#ff6a6966" 27 | "closed.subtle" = "#ff6a6926" 28 | "danger.emphasis" = "#ff6a69" 29 | "danger.fg" = "#ff6a69" 30 | "danger.muted" = "#ff6a69" 31 | "danger.subtle" = "#ff6a6926" 32 | "done.emphasis" = "#b87fff" 33 | "done.fg" = "#b780ff" 34 | "done.muted" = "#b780ff" 35 | "done.subtle" = "#b780ff26" 36 | "fg.default" = "#f0f3f6" 37 | "fg.muted" = "#f0f3f6" 38 | "fg.onEmphasis" = "#0a0c10" 39 | "fg.subtle" = "#9ea7b3" 40 | "neutral.emphasis" = "#9ea7b3" 41 | "neutral.emphasisPlus" = "#ffffff" 42 | "neutral.muted" = "#9ea7b366" 43 | "neutral.subtle" = "#9ea7b31a" 44 | "open.emphasis" = "#09b43a" 45 | "open.fg" = "#26cd4d" 46 | "open.muted" = "#09b43a66" 47 | "open.subtle" = "#09b43a26" 48 | "scale.black" = "#010409" 49 | "scale.blue.0" = "#caeaff" 50 | "scale.blue.1" = "#addcff" 51 | "scale.blue.2" = "#91cbff" 52 | "scale.blue.3" = "#71b7ff" 53 | "scale.blue.4" = "#409eff" 54 | "scale.blue.5" = "#409eff" 55 | "scale.blue.6" = "#318bf8" 56 | "scale.blue.7" = "#2672f3" 57 | "scale.blue.8" = "#1e60d5" 58 | "scale.blue.9" = "#194fb1" 59 | "scale.coral.0" = "#ffded4" 60 | "scale.coral.1" = "#ffcbb9" 61 | "scale.coral.2" = "#ffb39b" 62 | "scale.coral.3" = "#ff967d" 63 | "scale.coral.4" = "#fc704f" 64 | "scale.coral.5" = "#fc704f" 65 | "scale.coral.6" = "#f75133" 66 | "scale.coral.7" = "#e03b21" 67 | "scale.coral.8" = "#c62612" 68 | "scale.coral.9" = "#a91500" 69 | "scale.gray.0" = "#ffffff" 70 | "scale.gray.1" = "#f0f3f6" 71 | "scale.gray.2" = "#d9dee3" 72 | "scale.gray.3" = "#bdc4cc" 73 | "scale.gray.4" = "#9ea7b3" 74 | "scale.gray.5" = "#7a828e" 75 | "scale.gray.6" = "#525964" 76 | "scale.gray.7" = "#272b33" 77 | "scale.gray.8" = "#272b33" 78 | "scale.gray.9" = "#0a0c10" 79 | "scale.green.0" = "#acf7b6" 80 | "scale.green.1" = "#72f088" 81 | "scale.green.2" = "#4ae168" 82 | "scale.green.3" = "#26cd4d" 83 | "scale.green.4" = "#09b43a" 84 | "scale.green.5" = "#09b43a" 85 | "scale.green.6" = "#02a232" 86 | "scale.green.7" = "#008c2c" 87 | "scale.green.8" = "#007728" 88 | "scale.green.9" = "#006222" 89 | "scale.orange.0" = "#ffe1b4" 90 | "scale.orange.1" = "#ffcf86" 91 | "scale.orange.2" = "#ffb757" 92 | "scale.orange.3" = "#fe9a2d" 93 | "scale.orange.4" = "#e7811d" 94 | "scale.orange.5" = "#e7811d" 95 | "scale.orange.6" = "#d57014" 96 | "scale.orange.7" = "#bf5e0a" 97 | "scale.orange.8" = "#a74c00" 98 | "scale.orange.9" = "#8f3c00" 99 | "scale.pink.0" = "#ffdceb" 100 | "scale.pink.1" = "#ffc7e1" 101 | "scale.pink.2" = "#ffadd4" 102 | "scale.pink.3" = "#ff8dc7" 103 | "scale.pink.4" = "#ef6eb1" 104 | "scale.pink.5" = "#ef6eb1" 105 | "scale.pink.6" = "#e456a3" 106 | "scale.pink.7" = "#d23d91" 107 | "scale.pink.8" = "#b72c7d" 108 | "scale.pink.9" = "#9c1d6a" 109 | "scale.purple.0" = "#f0dfff" 110 | "scale.purple.1" = "#e6ccff" 111 | "scale.purple.2" = "#dbb7ff" 112 | "scale.purple.3" = "#cb9eff" 113 | "scale.purple.4" = "#b780ff" 114 | "scale.purple.5" = "#b87fff" 115 | "scale.purple.6" = "#a66bff" 116 | "scale.purple.7" = "#954ffd" 117 | "scale.purple.8" = "#8031f7" 118 | "scale.purple.9" = "#6921d7" 119 | "scale.red.0" = "#ffdedb" 120 | "scale.red.1" = "#ffc9c7" 121 | "scale.red.2" = "#ffb1af" 122 | "scale.red.3" = "#ff9492" 123 | "scale.red.4" = "#ff6a69" 124 | "scale.red.5" = "#ff6a69" 125 | "scale.red.6" = "#ff4445" 126 | "scale.red.7" = "#e82a2f" 127 | "scale.red.8" = "#cc1421" 128 | "scale.red.9" = "#ad0116" 129 | "scale.white" = "#ffffff" 130 | "scale.yellow.0" = "#fbe59e" 131 | "scale.yellow.1" = "#fbd669" 132 | "scale.yellow.2" = "#f7c843" 133 | "scale.yellow.3" = "#f0b72f" 134 | "scale.yellow.4" = "#e09b13" 135 | "scale.yellow.5" = "#e09b13" 136 | "scale.yellow.6" = "#c88508" 137 | "scale.yellow.7" = "#ae7104" 138 | "scale.yellow.8" = "#945d02" 139 | "scale.yellow.9" = "#7b4900" 140 | "severe.emphasis" = "#e7811d" 141 | "severe.fg" = "#e7811d" 142 | "severe.muted" = "#e7811d" 143 | "severe.subtle" = "#e7811d26" 144 | "sponsors.emphasis" = "#ef6eb1" 145 | "sponsors.fg" = "#ef6eb1" 146 | "sponsors.muted" = "#ef6eb1" 147 | "sponsors.subtle" = "#ef6eb126" 148 | "success.emphasis" = "#09b43a" 149 | "success.fg" = "#26cd4d" 150 | "success.muted" = "#09b43a" 151 | "success.subtle" = "#09b43a26" 152 | -------------------------------------------------------------------------------- /.config/helix/themes/github_light_high_contrast.toml: -------------------------------------------------------------------------------- 1 | # Author : OwOSwordsman 2 | # An unofficial GitHub theme, generated using colors from: https://primer.style/primitives/colors 3 | # Credit goes to the original VSCode theme: https://github.com/primer/github-vscode-theme 4 | # Only the Light and Dark variants were specifically tested 5 | 6 | inherits = "github_light" 7 | 8 | # Timo's changes 9 | "ui.virtual.whitespace" = "#88929d" 10 | "ui.virtual.jump-label" = "#f00000" 11 | 12 | [palette] 13 | "accent.emphasis" = "#0349b4" 14 | "accent.fg" = "#0349b4" 15 | "accent.muted" = "#368cf9" 16 | "accent.subtle" = "#dff7ff" 17 | "attention.emphasis" = "#744500" 18 | "attention.fg" = "#744500" 19 | "attention.muted" = "#b58407" 20 | "attention.subtle" = "#fcf7be" 21 | "border.default" = "#20252c" 22 | "border.muted" = "#88929d" 23 | "border.subtle" = "#010409cc" 24 | "canvas.default" = "#ffffff" 25 | "canvas.inset" = "#ffffff" 26 | "canvas.overlay" = "#ffffff" 27 | "canvas.subtle" = "#e7ecf0" 28 | "closed.emphasis" = "#a0111f" 29 | "closed.fg" = "#a0111f" 30 | "closed.muted" = "#ee5a5d66" 31 | "closed.subtle" = "#fff0ee" 32 | "danger.emphasis" = "#a0111f" 33 | "danger.fg" = "#a0111f" 34 | "danger.muted" = "#ee5a5d" 35 | "danger.subtle" = "#fff0ee" 36 | "done.emphasis" = "#622cbc" 37 | "done.fg" = "#622cbc" 38 | "done.muted" = "#a371f7" 39 | "done.subtle" = "#faf0fe" 40 | "fg.default" = "#0e1116" 41 | "fg.muted" = "#0e1116" 42 | "fg.onEmphasis" = "#ffffff" 43 | "fg.subtle" = "#66707b" 44 | "neutral.emphasis" = "#66707b" 45 | "neutral.emphasisPlus" = "#0e1116" 46 | "neutral.muted" = "#acb6c033" 47 | "neutral.subtle" = "#e7ecf0" 48 | "open.emphasis" = "#117f32" 49 | "open.fg" = "#055d20" 50 | "open.muted" = "#26a14866" 51 | "open.subtle" = "#d2fedb" 52 | "scale.black" = "#010409" 53 | "scale.blue.0" = "#dff7ff" 54 | "scale.blue.1" = "#9cd7ff" 55 | "scale.blue.2" = "#67b3fd" 56 | "scale.blue.3" = "#368cf9" 57 | "scale.blue.4" = "#1168e3" 58 | "scale.blue.5" = "#0349b4" 59 | "scale.blue.6" = "#023b95" 60 | "scale.blue.7" = "#022f7a" 61 | "scale.blue.8" = "#032563" 62 | "scale.blue.9" = "#021a4a" 63 | "scale.coral.0" = "#fff0ed" 64 | "scale.coral.1" = "#ffc2b6" 65 | "scale.coral.2" = "#ff8f7e" 66 | "scale.coral.3" = "#ef5b48" 67 | "scale.coral.4" = "#cd3425" 68 | "scale.coral.5" = "#9f1710" 69 | "scale.coral.6" = "#870706" 70 | "scale.coral.7" = "#6f0107" 71 | "scale.coral.8" = "#5b0002" 72 | "scale.coral.9" = "#430200" 73 | "scale.gray.0" = "#ffffff" 74 | "scale.gray.1" = "#e7ecf0" 75 | "scale.gray.2" = "#ced5dc" 76 | "scale.gray.3" = "#acb6c0" 77 | "scale.gray.4" = "#88929d" 78 | "scale.gray.5" = "#66707b" 79 | "scale.gray.6" = "#4b535d" 80 | "scale.gray.7" = "#343b43" 81 | "scale.gray.8" = "#20252c" 82 | "scale.gray.9" = "#0e1116" 83 | "scale.green.0" = "#d2fedb" 84 | "scale.green.1" = "#82e596" 85 | "scale.green.2" = "#43c663" 86 | "scale.green.3" = "#26a148" 87 | "scale.green.4" = "#117f32" 88 | "scale.green.5" = "#055d20" 89 | "scale.green.6" = "#024c1a" 90 | "scale.green.7" = "#013d14" 91 | "scale.green.8" = "#003110" 92 | "scale.green.9" = "#00230b" 93 | "scale.orange.0" = "#fff2d5" 94 | "scale.orange.1" = "#ffc67b" 95 | "scale.orange.2" = "#f99636" 96 | "scale.orange.3" = "#dc6d1a" 97 | "scale.orange.4" = "#b45105" 98 | "scale.orange.5" = "#873800" 99 | "scale.orange.6" = "#702c00" 100 | "scale.orange.7" = "#5b2300" 101 | "scale.orange.8" = "#491b00" 102 | "scale.orange.9" = "#361200" 103 | "scale.pink.0" = "#feeff7" 104 | "scale.pink.1" = "#ffbde0" 105 | "scale.pink.2" = "#fc87ca" 106 | "scale.pink.3" = "#ed4baf" 107 | "scale.pink.4" = "#c9248e" 108 | "scale.pink.5" = "#971368" 109 | "scale.pink.6" = "#7d0c57" 110 | "scale.pink.7" = "#660847" 111 | "scale.pink.8" = "#53043a" 112 | "scale.pink.9" = "#3e022b" 113 | "scale.purple.0" = "#faf0fe" 114 | "scale.purple.1" = "#e0c5ff" 115 | "scale.purple.2" = "#c49bff" 116 | "scale.purple.3" = "#a371f7" 117 | "scale.purple.4" = "#844ae7" 118 | "scale.purple.5" = "#622cbc" 119 | "scale.purple.6" = "#512598" 120 | "scale.purple.7" = "#411d7b" 121 | "scale.purple.8" = "#341763" 122 | "scale.purple.9" = "#260f49" 123 | "scale.red.0" = "#fff0ee" 124 | "scale.red.1" = "#ffc1bc" 125 | "scale.red.2" = "#ff8e8a" 126 | "scale.red.3" = "#ee5a5d" 127 | "scale.red.4" = "#d5232c" 128 | "scale.red.5" = "#a0111f" 129 | "scale.red.6" = "#86061d" 130 | "scale.red.7" = "#6e011a" 131 | "scale.red.8" = "#5a0016" 132 | "scale.red.9" = "#430011" 133 | "scale.white" = "#ffffff" 134 | "scale.yellow.0" = "#fcf7be" 135 | "scale.yellow.1" = "#f0ce53" 136 | "scale.yellow.2" = "#d5a824" 137 | "scale.yellow.3" = "#b58407" 138 | "scale.yellow.4" = "#956400" 139 | "scale.yellow.5" = "#744500" 140 | "scale.yellow.6" = "#603700" 141 | "scale.yellow.7" = "#4e2c00" 142 | "scale.yellow.8" = "#3f2200" 143 | "scale.yellow.9" = "#2e1800" 144 | "severe.emphasis" = "#873800" 145 | "severe.fg" = "#873800" 146 | "severe.muted" = "#dc6d1a" 147 | "severe.subtle" = "#fff2d5" 148 | "sponsors.emphasis" = "#971368" 149 | "sponsors.fg" = "#971368" 150 | "sponsors.muted" = "#ed4baf" 151 | "sponsors.subtle" = "#feeff7" 152 | "success.emphasis" = "#055d20" 153 | "success.fg" = "#055d20" 154 | "success.muted" = "#26a148" 155 | "success.subtle" = "#d2fedb" 156 | 157 | -------------------------------------------------------------------------------- /.config/ranger/scope.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # ranger supports enhanced previews. If the option "use_preview_script" 3 | # is set to True and this file exists, this script will be called and its 4 | # output is displayed in ranger. ANSI color codes are supported. 5 | 6 | # NOTES: This script is considered a configuration file. If you upgrade 7 | # ranger, it will be left untouched. (You must update it yourself.) 8 | # Also, ranger disables STDIN here, so interactive scripts won't work properly 9 | 10 | # Meanings of exit codes: 11 | # code | meaning | action of ranger 12 | # -----+------------+------------------------------------------- 13 | # 0 | success | success. display stdout as preview 14 | # 1 | no preview | failure. display no preview at all 15 | # 2 | plain text | display the plain content of the file 16 | # 3 | fix width | success. Don't reload when width changes 17 | # 4 | fix height | success. Don't reload when height changes 18 | # 5 | fix both | success. Don't ever reload 19 | # 6 | image | success. display the image $cached points to as an image preview 20 | # 7 | image | success. display the file directly as an image 21 | 22 | # Meaningful aliases for arguments: 23 | path="$1" # Full path of the selected file 24 | width="$2" # Width of the preview pane (number of fitting characters) 25 | height="$3" # Height of the preview pane (number of fitting characters) 26 | cached="$4" # Path that should be used to cache image previews 27 | preview_images="$5" # "True" if image previews are enabled, "False" otherwise. 28 | 29 | maxln=200 # Stop after $maxln lines. Can be used like ls | head -n $maxln 30 | 31 | # Find out something about the file: 32 | mimetype=$(file --mime-type -Lb "$path") 33 | extension=$(/bin/echo "${path##*.}" | awk '{print tolower($0)}') 34 | 35 | # Functions: 36 | # runs a command and saves its output into $output. Useful if you need 37 | # the return value AND want to use the output in a pipe 38 | try() { output=$(eval '"$@"'); } 39 | 40 | # writes the output of the previously used "try" command 41 | dump() { /bin/echo "$output"; } 42 | 43 | # a common post-processing function used after most commands 44 | trim() { head -n "$maxln"; } 45 | 46 | # wraps highlight to treat exit code 141 (killed by SIGPIPE) as success 47 | safepipe() { "$@"; test $? = 0 -o $? = 141; } 48 | 49 | # Image previews, if enabled in ranger. 50 | if [ "$preview_images" = "True" ]; then 51 | case "$mimetype" in 52 | # Image previews for SVG files, disabled by default. 53 | ###image/svg+xml) 54 | ### convert "$path" "$cached" && exit 6 || exit 1;; 55 | # Image previews for image files. w3mimgdisplay will be called for all 56 | # image files (unless overriden as above), but might fail for 57 | # unsupported types. 58 | image/*) 59 | exit 7;; 60 | # Image preview for video, disabled by default.: 61 | ###video/*) 62 | ### ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || exit 1;; 63 | esac 64 | fi 65 | 66 | case "$extension" in 67 | # Archive extensions: 68 | a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\ 69 | rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip) 70 | try als "$path" && { dump | trim; exit 0; } 71 | try acat "$path" && { dump | trim; exit 3; } 72 | try bsdtar -lf "$path" && { dump | trim; exit 0; } 73 | exit 1;; 74 | rar) 75 | # avoid password prompt by providing empty password 76 | try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;; 77 | 7z) 78 | # avoid password prompt by providing empty password 79 | try 7z -p l "$path" && { dump | trim; exit 0; } || exit 1;; 80 | # PDF documents: 81 | pdf) 82 | try pdftotext -l 10 -nopgbrk -q "$path" - && \ 83 | { dump | trim | fmt -s -w $width; exit 0; } || exit 1;; 84 | # BitTorrent Files 85 | torrent) 86 | try transmission-show "$path" && { dump | trim; exit 5; } || exit 1;; 87 | # ODT Files 88 | odt|ods|odp|sxw) 89 | try odt2txt "$path" && { dump | trim; exit 5; } || exit 1;; 90 | # HTML Pages: 91 | htm|html|xhtml) 92 | try w3m -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } 93 | try lynx -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } 94 | try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } 95 | ;; # fall back to highlight/cat if the text browsers fail 96 | esac 97 | 98 | case "$mimetype" in 99 | # Syntax highlight for text files: 100 | text/* | */xml) 101 | if [ "$(tput colors)" -ge 256 ]; then 102 | pygmentize_format=terminal256 103 | highlight_format=xterm256 104 | else 105 | pygmentize_format=terminal 106 | highlight_format=ansi 107 | fi 108 | try safepipe highlight --out-format=${highlight_format} "$path" && { dump | trim; exit 5; } 109 | try safepipe pygmentize -f ${pygmentize_format} "$path" && { dump | trim; exit 5; } 110 | exit 2;; 111 | # Ascii-previews of images: 112 | image/*) 113 | img2txt --gamma=0.6 --width="$width" "$path" && exit 4 || exit 1;; 114 | # Display information about media files: 115 | video/* | audio/*) 116 | exiftool "$path" && exit 5 117 | # Use sed to remove spaces so the output fits into the narrow window 118 | try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } || exit 1;; 119 | esac 120 | 121 | exit 1 122 | -------------------------------------------------------------------------------- /.nethackrc: -------------------------------------------------------------------------------- 1 | # Ask for name 2 | #name=player 3 | 4 | OPTIONS=fruit:cookie 5 | OPTIONS=autodig 6 | OPTIONS=autopickup 7 | OPTIONS=pickup_types:$"=/!?+ 8 | OPTIONS=time 9 | OPTIONS=showexp 10 | OPTIONS=showscore 11 | OPTIONS=!implicit_uncursed 12 | OPTIONS=msghistory:30 13 | OPTIONS=msg_window:reverse 14 | OPTIONS=standout 15 | OPTIONS=hitpointbar 16 | OPTIONS=pickup_burden:unencumbered 17 | OPTIONS=use_darkgray 18 | OPTIONS=lit_corridor 19 | OPTIONS=altmeta 20 | OPTIONS=hilite_pet 21 | OPTIONS=hilite_pile 22 | OPTIONS=disclose:+iaco-vg 23 | OPTIONS=number_pad:0 24 | OPTIONS=!cmdassist 25 | 26 | # Menu colors 27 | OPTIONS=color 28 | OPTIONS=menucolors 29 | 30 | MENUCOLOR=" blessed"=cyan 31 | MENUCOLOR=" holy "=green 32 | MENUCOLOR=" cursed"=red 33 | MENUCOLOR=" unholy "=red 34 | MENUCOLOR=" cursed .* (being worn)"=orange&underline 35 | MENUCOLOR=" \+[1-9]"=lightcyan 36 | MENUCOLOR=" \-[1-9]"=orange 37 | 38 | # Statusbar colors 39 | OPTIONS=statushilites:10 40 | OPTIONS=hilite_status:alignment/lawful/green&bold 41 | OPTIONS=hilite_status:experience-level/changed/white/cyan 42 | OPTIONS=hilite_status:characteristics/<5/red 43 | OPTIONS=hilite_status:characteristics/>6/orange 44 | OPTIONS=hilite_status:characteristics/>8/brown 45 | OPTIONS=hilite_status:characteristics/>11/yellow 46 | OPTIONS=hilite_status:characteristics/>13/green 47 | OPTIONS=hilite_status:characteristics/>16/cyan 48 | OPTIONS=hilite_status:characteristics/>18/lightblue 49 | 50 | OPTIONS=hilite_status:cap/burdened/yellow/stressed/orange/strained/red&bold/overtaxed/red&inverse/overloaded/red&inverse&blink 51 | OPTIONS=hilite_status:hunger/satiated/yellow/hungry/orange/weak/red&bold/fainting/red&inverse/fainted/red&inverse&blink 52 | OPTIONS=hilite_status:condition/hallu/yellow 53 | OPTIONS=hilite_status:condition/conf/orange 54 | OPTIONS=hilite_status:condition/stun/red&bold 55 | OPTIONS=hilite_status:condition/termill/red&inverse 56 | OPTIONS=hilite_status:condition/foodpois/red&inverse 57 | OPTIONS=hilite_status:condition/slime/red&inverse 58 | OPTIONS=hilite_status: gold/up/yellow/down/brown 59 | 60 | OPTIONS=hilite_status:hitpoints/100%/grey&normal 61 | OPTIONS=hilite_status:hitpoints/<100%/green&normal 62 | OPTIONS=hilite_status:hitpoints/<66%/yellow&normal 63 | OPTIONS=hilite_status:hitpoints/<50%/orange&normal 64 | OPTIONS=hilite_status:hitpoints/<33%/red&bold 65 | OPTIONS=hilite_status:hitpoints/<15%/red&inverse 66 | 67 | OPTIONS=hilite_status:power/100%/grey&normal 68 | OPTIONS=hilite_status:power/<100%/green&normal 69 | OPTIONS=hilite_status:power/<66%/yellow&normal 70 | OPTIONS=hilite_status:power/<50%/orange&normal 71 | OPTIONS=hilite_status:power/<33%/red&bold 72 | 73 | # Map graphics 74 | SYMBOLS=S_boulder:0 75 | 76 | SYMBOLS=S_vwall:\xf8 77 | SYMBOLS=S_hwall:\xf1 78 | SYMBOLS=S_tlcorn:\xec 79 | SYMBOLS=S_trcorn:\xeb 80 | SYMBOLS=S_blcorn:\xed 81 | SYMBOLS=S_brcorn:\xea 82 | SYMBOLS=S_crwall:\xee 83 | SYMBOLS=S_tuwall:\xf6 84 | SYMBOLS=S_tdwall:\xf7 85 | SYMBOLS=S_tlwall:\xf5 86 | SYMBOLS=S_trwall:\xf4 87 | SYMBOLS=S_ndoor:\xfe 88 | SYMBOLS=S_vodoor:\xe1 89 | SYMBOLS=S_hodoor:\xe1 90 | SYMBOLS=S_bars:\xfb 91 | SYMBOLS=S_tree:\xe7 92 | SYMBOLS=S_room:\xfe 93 | SYMBOLS=S_upladder:\xf9 94 | SYMBOLS=S_dnladder:\xfa 95 | SYMBOLS=S_pool:\xe0 96 | SYMBOLS=S_ice:\xfe 97 | SYMBOLS=S_lava:\xe0 98 | SYMBOLS=S_vodbridge:\xfe 99 | SYMBOLS=S_hodbridge:\xfe 100 | SYMBOLS=S_water:\xe0 101 | SYMBOLS=S_vbeam:\xf8 102 | SYMBOLS=S_hbeam:\xf1 103 | SYMBOLS=S_sw_tc:\xef 104 | SYMBOLS=S_sw_ml:\xf8 105 | SYMBOLS=S_sw_mr:\xf8 106 | SYMBOLS=S_sw_bc:\xf3 107 | SYMBOLS=S_explode2:\xef 108 | SYMBOLS=S_explode4:\xf8 109 | SYMBOLS=S_explode6:\xf8 110 | SYMBOLS=S_explode8:\xf3 111 | 112 | # Emergencies 113 | MSGTYPE=stop "The (couatl.*eel|kraken) swings itself around you!" 114 | MSGTYPE=stop "The python grabs you!" 115 | MSGTYPE=stop "You don't feel very well" 116 | MSGTYPE=stop "You are turning a little green" 117 | MSGTYPE=stop "Your limbs are getting oozy" 118 | MSGTYPE=stop "Your skin begins to peel away" 119 | MSGTYPE=stop "You are turning into a green slime" 120 | MSGTYPE=stop "You are slowing down" 121 | MSGTYPE=stop "Your limbs are stiffening" 122 | MSGTYPE=stop "It constricts your throat!" 123 | MSGTYPE=stop "You find it hard to breathe" 124 | MSGTYPE=stop "You're gasping for air" 125 | MSGTYPE=stop "Your blood is having trouble reaching your brain" 126 | MSGTYPE=stop "You can no longer breathe" 127 | MSGTYPE=stop "You're turning blue" 128 | MSGTYPE=stop "Your consciousness is fading" 129 | MSGTYPE=stop "You feel deathly sick" 130 | MSGTYPE=stop "You feel much worse" 131 | MSGTYPE=stop "You feel even worse" 132 | 133 | # Vibrating square 134 | MSGTYPE=stop "You feel a strange vibration beneath " 135 | MSGTYPE=stop "You feel a strange vibration under your " 136 | 137 | # Enhance 138 | MSGTYPE=stop "You feel more confident " 139 | 140 | # Status effects 141 | MSGTYPE=stop "You feel hungry" 142 | MSGTYPE=stop "You are beginning to feel hungry" 143 | MSGTYPE=stop "You are getting the munchies" 144 | MSGTYPE=stop "You feel weak now" 145 | MSGTYPE=stop "You still have the munchies" 146 | MSGTYPE=stop "You feel weak" 147 | MSGTYPE=stop "You are beginning to feel weak" 148 | MSGTYPE=stop "The munchies are interfering with your motor capabilities" 149 | MSGTYPE=stop " needs food, badly!" 150 | MSGTYPE=stop "You only feel hungry now" 151 | MSGTYPE=stop "You now have a lesser case of the munchies" 152 | MSGTYPE=stop "You faint from lack of food" 153 | MSGTYPE=stop "You regain consciousness" 154 | MSGTYPE=stop "You die from starvation" 155 | MSGTYPE=stop "You die from hunger and exhaustion" 156 | MSGTYPE=stop "You feel deathly sick" 157 | MSGTYPE=stop "You feel even worse" 158 | MSGTYPE=stop "You feel much worse" 159 | MSGTYPE=stop "You die from your illness" 160 | 161 | # Inventory cursing 162 | MSGTYPE=stop "You feel a malignant aura surround the magic-absorbing blade" 163 | MSGTYPE=stop "You feel a malignant aura surround you" 164 | 165 | # Near-death 166 | MSGTYPE=stop "You hear the howling of the CwnAnnwn..." 167 | MSGTYPE=stop ", your life force is running out." 168 | MSGTYPE=stop ", all your powers will be lost..." 169 | MSGTYPE=stop "You hear the wailing of the Banshee..." 170 | MSGTYPE=stop " is about to die." 171 | 172 | # Pet 173 | MSGTYPE=hide "You swap places with your .*" 174 | 175 | -------------------------------------------------------------------------------- /.config/nvim/init.vim: -------------------------------------------------------------------------------- 1 | vim.cmd([[ 2 | set nocompatible 3 | set showmatch 4 | set ignorecase 5 | set mouse=v 6 | set tabstop=4 7 | set softtabstop=4 8 | set expandtab 9 | set shiftwidth=4 10 | set autoindent 11 | set textwidth=80 12 | set number 13 | set splitright 14 | set wildmode=longest,list 15 | set wildignore+=*/target/* 16 | set undofile 17 | set nohlsearch 18 | set smartcase 19 | set termguicolors 20 | set clipboard+=unnamedplus 21 | set scrolloff=5 22 | set hidden 23 | filetype plugin on 24 | 25 | " Use Q to execute default register 26 | nnoremap Q @q 27 | 28 | call plug#begin('~/.local/share/nvim/plugged') 29 | Plug 'ctrlpvim/ctrlp.vim' " Quick file search 30 | Plug 'udalov/kotlin-vim' " Kotlin syntax highlighting 31 | Plug 'chriskempson/base16-vim' " Colorscheme 32 | Plug 'junegunn/goyo.vim' " Distraction free writing 33 | Plug 'reedes/vim-pencil' " Nice tweeks for writing 34 | Plug 'reedes/vim-wordy' " Bad word usage 35 | Plug 'tpope/vim-fugitive' " Git commands 36 | Plug 'airblade/vim-gitgutter' " Git diff indications 37 | Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() } } " Markdown preview 38 | Plug 'godlygeek/tabular' " Alignment 39 | Plug 'ledger/vim-ledger' " Finance 40 | Plug 'rust-lang/rust.vim' " Rust commands 41 | "Plug 'neoclide/coc.nvim', {'branch': 'release'} " Completion 42 | Plug 'williamboman/mason.nvim' 43 | Plug 'williamboman/mason-lspconfig.nvim' 44 | Plug 'neovim/nvim-lspconfig' 45 | Plug 'simrat39/rust-tools.nvim' 46 | Plug 'hrsh7th/nvim-cmp' " Completion framework: 47 | Plug 'hrsh7th/cmp-nvim-lsp' " LSP completion source: 48 | " Useful completion sources: 49 | Plug 'hrsh7th/cmp-nvim-lua' 50 | Plug 'hrsh7th/cmp-nvim-lsp-signature-help' 51 | Plug 'hrsh7th/cmp-vsnip' 52 | Plug 'hrsh7th/cmp-path' 53 | Plug 'hrsh7th/cmp-buffer' 54 | Plug 'hrsh7th/vim-vsnip' 55 | Plug 'nvim-treesitter/nvim-treesitter' 56 | call plug#end() 57 | 58 | " Automatically create missing directories when saving a new file 59 | augroup Mkdir 60 | autocmd! 61 | autocmd BufWritePre * call mkdir(expand(":p:h"), "p") 62 | augroup END 63 | 64 | " Rust 65 | "let g:rustfmt_autosave = 1 66 | 67 | " Markdown 68 | let vim_markdown_preview_hotkey='' 69 | let vim_markdown_preview_github=1 70 | 71 | " TextEdit might fail if hidden is not set. 72 | set hidden 73 | 74 | " Some servers have issues with backup files, see #649. 75 | set nobackup 76 | set nowritebackup 77 | 78 | " Give more space for displaying messages. 79 | set cmdheight=2 80 | 81 | " Don't pass messages to |ins-completion-menu|. 82 | set shortmess+=c 83 | 84 | " Always show the signcolumn, otherwise it would shift the text each time 85 | " diagnostics appear/become resolved. 86 | set signcolumn=yes 87 | 88 | " LaTeX 89 | autocmd BufWritePost *.tex silent !pdflatex -shell-escape --output-directory out 90 | 91 | " Colorscheme 92 | colorscheme base16-chalk 93 | 94 | " Writing 95 | let g:pencil#wrapModeDefault = 'soft' 96 | augroup pencil 97 | autocmd! 98 | autocmd FileType markdown,mkd call pencil#init() 99 | \ | set spell spelllang=en_us,de 100 | autocmd FileType text call pencil#init() 101 | \ | set spell spelllang=en_us,de 102 | augroup END 103 | 104 | noremap :NextWordy 105 | ]]) 106 | 107 | 108 | -- Mason for nvim https://rsdlt.github.io/posts/rust-nvim-ide-guide-walkthrough-development-debug/ 109 | 110 | require("mason").setup() 111 | 112 | local rt = require("rust-tools") 113 | 114 | rt.setup({ 115 | server = { 116 | on_attach = function(_, bufnr) 117 | -- Hover actions 118 | vim.keymap.set("n", "", rt.hover_actions.hover_actions, { buffer = bufnr }) 119 | -- Code action groups 120 | vim.keymap.set("n", "a", rt.code_action_group.code_action_group, { buffer = bufnr }) 121 | end, 122 | }, 123 | inlay_hints = { 124 | auto = false, 125 | only_current_line = true, 126 | }, 127 | }) 128 | 129 | --Set completeopt to have a better completion experience 130 | -- :help completeopt 131 | -- menuone: popup even when there's only one match 132 | -- noinsert: Do not insert text until a selection is made 133 | -- noselect: Do not select, force to select one from the menu 134 | -- shortness: avoid showing extra messages when using completion 135 | -- updatetime: set updatetime for CursorHold 136 | vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'} 137 | vim.opt.shortmess = vim.opt.shortmess + { c = true} 138 | vim.api.nvim_set_option('updatetime', 300) 139 | 140 | -- Fixed column for diagnostics to appear 141 | -- Show autodiagnostic popup on cursor hover_range 142 | -- Goto previous / next diagnostic warning / error 143 | -- Show inlay_hints more frequently 144 | vim.cmd([[ 145 | set signcolumn=yes 146 | autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) 147 | ]]) 148 | 149 | -- Completion Plugin Setup 150 | local cmp = require'cmp' 151 | cmp.setup({ 152 | -- Enable LSP snippets 153 | snippet = { 154 | expand = function(args) 155 | vim.fn["vsnip#anonymous"](args.body) 156 | end, 157 | }, 158 | mapping = { 159 | [''] = cmp.mapping.select_prev_item(), 160 | [''] = cmp.mapping.select_next_item(), 161 | -- Add tab support 162 | [''] = cmp.mapping.select_prev_item(), 163 | [''] = cmp.mapping.select_next_item(), 164 | [''] = cmp.mapping.scroll_docs(-4), 165 | [''] = cmp.mapping.scroll_docs(4), 166 | [''] = cmp.mapping.complete(), 167 | [''] = cmp.mapping.close(), 168 | [''] = cmp.mapping.confirm({ 169 | behavior = cmp.ConfirmBehavior.Insert, 170 | select = true, 171 | }) 172 | }, 173 | -- Installed sources: 174 | sources = { 175 | { name = 'path' }, -- file paths 176 | { name = 'nvim_lsp', keyword_length = 3 }, -- from language server 177 | { name = 'nvim_lsp_signature_help'}, -- display function signatures with current parameter emphasized 178 | { name = 'nvim_lua', keyword_length = 2}, -- complete neovim's Lua runtime API such vim.lsp.* 179 | { name = 'buffer', keyword_length = 2 }, -- source current buffer 180 | { name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip 181 | { name = 'calc'}, -- source for math calculation 182 | }, 183 | window = { 184 | completion = cmp.config.window.bordered(), 185 | documentation = cmp.config.window.bordered(), 186 | }, 187 | formatting = { 188 | fields = {'menu', 'abbr', 'kind'}, 189 | format = function(entry, item) 190 | local menu_icon ={ 191 | nvim_lsp = 'λ', 192 | vsnip = '⋗', 193 | buffer = 'Ω', 194 | path = '🖫', 195 | } 196 | item.menu = menu_icon[entry.source.name] 197 | return item 198 | end, 199 | }, 200 | }) 201 | 202 | -- Treesitter Plugin Setup 203 | require('nvim-treesitter.configs').setup { 204 | ensure_installed = { "lua", "rust", "toml" }, 205 | auto_install = true, 206 | highlight = { 207 | enable = true, 208 | additional_vim_regex_highlighting=false, 209 | }, 210 | ident = { enable = true }, 211 | rainbow = { 212 | enable = true, 213 | extended_mode = true, 214 | max_file_lines = nil, 215 | } 216 | } 217 | -------------------------------------------------------------------------------- /.zsh/promptline: -------------------------------------------------------------------------------- 1 | # 2 | # This shell prompt config file was created by promptline.vim 3 | # 4 | function __promptline_host { 5 | local only_if_ssh="0" 6 | 7 | if [ $only_if_ssh -eq 0 -o -n "${SSH_CLIENT}" ]; then 8 | if [[ -n ${ZSH_VERSION-} ]]; then print %m; elif [[ -n ${FISH_VERSION-} ]]; then hostname -s; else printf "%s" \\h; fi 9 | fi 10 | } 11 | 12 | function __promptline_last_exit_code { 13 | 14 | [[ $last_exit_code -gt 0 ]] || return 1; 15 | 16 | printf "%s" "$last_exit_code" 17 | } 18 | function __promptline_ps1 { 19 | local slice_prefix slice_empty_prefix slice_joiner slice_suffix is_prompt_empty=1 20 | 21 | # section "a" header 22 | slice_prefix="${a_bg}${sep}${a_fg}${a_bg}${space}" slice_suffix="$space${a_sep_fg}" slice_joiner="${a_fg}${a_bg}${alt_sep}${space}" slice_empty_prefix="${a_fg}${a_bg}${space}" 23 | [ $is_prompt_empty -eq 1 ] && slice_prefix="$slice_empty_prefix" 24 | # section "a" slices 25 | __promptline_wrapper "$(__promptline_host)" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; is_prompt_empty=0; } 26 | 27 | # section "b" header 28 | slice_prefix="${b_bg}${sep}${b_fg}${b_bg}${space}" slice_suffix="$space${b_sep_fg}" slice_joiner="${b_fg}${b_bg}${alt_sep}${space}" slice_empty_prefix="${b_fg}${b_bg}${space}" 29 | [ $is_prompt_empty -eq 1 ] && slice_prefix="$slice_empty_prefix" 30 | # section "b" slices 31 | __promptline_wrapper "$USER" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; is_prompt_empty=0; } 32 | 33 | # section "c" header 34 | slice_prefix="${c_bg}${sep}${c_fg}${c_bg}${space}" slice_suffix="$space${c_sep_fg}" slice_joiner="${c_fg}${c_bg}${alt_sep}${space}" slice_empty_prefix="${c_fg}${c_bg}${space}" 35 | [ $is_prompt_empty -eq 1 ] && slice_prefix="$slice_empty_prefix" 36 | # section "c" slices 37 | __promptline_wrapper "$(__promptline_cwd)" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; is_prompt_empty=0; } 38 | 39 | # section "y" header 40 | slice_prefix="${y_bg}${sep}${y_fg}${y_bg}${space}" slice_suffix="$space${y_sep_fg}" slice_joiner="${y_fg}${y_bg}${alt_sep}${space}" slice_empty_prefix="${y_fg}${y_bg}${space}" 41 | [ $is_prompt_empty -eq 1 ] && slice_prefix="$slice_empty_prefix" 42 | # section "y" slices 43 | __promptline_wrapper "$(__promptline_vcs_branch)" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; is_prompt_empty=0; } 44 | 45 | # section "warn" header 46 | slice_prefix="${warn_bg}${sep}${warn_fg}${warn_bg}${space}" slice_suffix="$space${warn_sep_fg}" slice_joiner="${warn_fg}${warn_bg}${alt_sep}${space}" slice_empty_prefix="${warn_fg}${warn_bg}${space}" 47 | [ $is_prompt_empty -eq 1 ] && slice_prefix="$slice_empty_prefix" 48 | # section "warn" slices 49 | __promptline_wrapper "$(__promptline_last_exit_code)" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; is_prompt_empty=0; } 50 | 51 | # close sections 52 | printf "%s" "${reset_bg}${sep}$reset$space" 53 | } 54 | function __promptline_vcs_branch { 55 | local branch 56 | local branch_symbol=" " 57 | 58 | # git 59 | if hash git 2>/dev/null; then 60 | if branch=$( { git symbolic-ref --quiet HEAD || git rev-parse --short HEAD; } 2>/dev/null ); then 61 | branch=${branch##*/} 62 | printf "%s" "${branch_symbol}${branch:-unknown}" 63 | return 64 | fi 65 | fi 66 | return 1 67 | } 68 | function __promptline_cwd { 69 | local dir_limit="3" 70 | local truncation="⋯" 71 | local first_char 72 | local part_count=0 73 | local formatted_cwd="" 74 | local dir_sep="  " 75 | local tilde="~" 76 | 77 | local cwd="${PWD/#$HOME/$tilde}" 78 | 79 | # get first char of the path, i.e. tilde or slash 80 | [[ -n ${ZSH_VERSION-} ]] && first_char=$cwd[1,1] || first_char=${cwd::1} 81 | 82 | # remove leading tilde 83 | cwd="${cwd#\~}" 84 | 85 | while [[ "$cwd" == */* && "$cwd" != "/" ]]; do 86 | # pop off last part of cwd 87 | local part="${cwd##*/}" 88 | cwd="${cwd%/*}" 89 | 90 | formatted_cwd="$dir_sep$part$formatted_cwd" 91 | part_count=$((part_count+1)) 92 | 93 | [[ $part_count -eq $dir_limit ]] && first_char="$truncation" && break 94 | done 95 | 96 | printf "%s" "$first_char$formatted_cwd" 97 | } 98 | function __promptline_left_prompt { 99 | local slice_prefix slice_empty_prefix slice_joiner slice_suffix is_prompt_empty=1 100 | 101 | # section "a" header 102 | slice_prefix="${a_bg}${sep}${a_fg}${a_bg}${space}" slice_suffix="$space${a_sep_fg}" slice_joiner="${a_fg}${a_bg}${alt_sep}${space}" slice_empty_prefix="${a_fg}${a_bg}${space}" 103 | [ $is_prompt_empty -eq 1 ] && slice_prefix="$slice_empty_prefix" 104 | # section "a" slices 105 | __promptline_wrapper "$(__promptline_host)" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; is_prompt_empty=0; } 106 | 107 | # section "b" header 108 | slice_prefix="${b_bg}${sep}${b_fg}${b_bg}${space}" slice_suffix="$space${b_sep_fg}" slice_joiner="${b_fg}${b_bg}${alt_sep}${space}" slice_empty_prefix="${b_fg}${b_bg}${space}" 109 | [ $is_prompt_empty -eq 1 ] && slice_prefix="$slice_empty_prefix" 110 | # section "b" slices 111 | __promptline_wrapper "$USER" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; is_prompt_empty=0; } 112 | 113 | # section "c" header 114 | slice_prefix="${c_bg}${sep}${c_fg}${c_bg}${space}" slice_suffix="$space${c_sep_fg}" slice_joiner="${c_fg}${c_bg}${alt_sep}${space}" slice_empty_prefix="${c_fg}${c_bg}${space}" 115 | [ $is_prompt_empty -eq 1 ] && slice_prefix="$slice_empty_prefix" 116 | # section "c" slices 117 | __promptline_wrapper "$(__promptline_cwd)" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; is_prompt_empty=0; } 118 | 119 | # close sections 120 | printf "%s" "${reset_bg}${sep}$reset$space" 121 | } 122 | function __promptline_wrapper { 123 | # wrap the text in $1 with $2 and $3, only if $1 is not empty 124 | # $2 and $3 typically contain non-content-text, like color escape codes and separators 125 | 126 | [[ -n "$1" ]] || return 1 127 | printf "%s" "${2}${1}${3}" 128 | } 129 | function __promptline_right_prompt { 130 | local slice_prefix slice_empty_prefix slice_joiner slice_suffix 131 | 132 | # section "warn" header 133 | slice_prefix="${warn_sep_fg}${rsep}${warn_fg}${warn_bg}${space}" slice_suffix="$space${warn_sep_fg}" slice_joiner="${warn_fg}${warn_bg}${alt_rsep}${space}" slice_empty_prefix="" 134 | # section "warn" slices 135 | __promptline_wrapper "$(__promptline_last_exit_code)" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; } 136 | 137 | # section "y" header 138 | slice_prefix="${y_sep_fg}${rsep}${y_fg}${y_bg}${space}" slice_suffix="$space${y_sep_fg}" slice_joiner="${y_fg}${y_bg}${alt_rsep}${space}" slice_empty_prefix="" 139 | # section "y" slices 140 | __promptline_wrapper "$(__promptline_vcs_branch)" "$slice_prefix" "$slice_suffix" && { slice_prefix="$slice_joiner"; } 141 | 142 | # close sections 143 | printf "%s" "$reset" 144 | } 145 | function __promptline { 146 | local last_exit_code="${PROMPTLINE_LAST_EXIT_CODE:-$?}" 147 | 148 | local esc=$'[' end_esc=m 149 | if [[ -n ${ZSH_VERSION-} ]]; then 150 | local noprint='%{' end_noprint='%}' 151 | elif [[ -n ${FISH_VERSION-} ]]; then 152 | local noprint='' end_noprint='' 153 | else 154 | local noprint='\[' end_noprint='\]' 155 | fi 156 | local wrap="$noprint$esc" end_wrap="$end_esc$end_noprint" 157 | local space=" " 158 | local sep="" 159 | local rsep="" 160 | local alt_sep="" 161 | local alt_rsep="" 162 | local reset="${wrap}0${end_wrap}" 163 | local reset_bg="${wrap}49${end_wrap}" 164 | local a_fg="${wrap}38;5;232${end_wrap}" 165 | local a_bg="${wrap}48;5;154${end_wrap}" 166 | local a_sep_fg="${wrap}38;5;154${end_wrap}" 167 | local b_fg="${wrap}38;5;222${end_wrap}" 168 | local b_bg="${wrap}48;5;238${end_wrap}" 169 | local b_sep_fg="${wrap}38;5;238${end_wrap}" 170 | local c_fg="${wrap}38;5;121${end_wrap}" 171 | local c_bg="${wrap}48;5;235${end_wrap}" 172 | local c_sep_fg="${wrap}38;5;235${end_wrap}" 173 | local warn_fg="${wrap}38;5;232${end_wrap}" 174 | local warn_bg="${wrap}48;5;166${end_wrap}" 175 | local warn_sep_fg="${wrap}38;5;166${end_wrap}" 176 | local y_fg="${wrap}38;5;222${end_wrap}" 177 | local y_bg="${wrap}48;5;238${end_wrap}" 178 | local y_sep_fg="${wrap}38;5;238${end_wrap}" 179 | if [[ -n ${ZSH_VERSION-} ]]; then 180 | PROMPT="$(__promptline_left_prompt)" 181 | RPROMPT="$(__promptline_right_prompt)" 182 | elif [[ -n ${FISH_VERSION-} ]]; then 183 | if [[ -n "$1" ]]; then 184 | [[ "$1" = "left" ]] && __promptline_left_prompt || __promptline_right_prompt 185 | else 186 | __promptline_ps1 187 | fi 188 | else 189 | PS1="$(__promptline_ps1)" 190 | fi 191 | } 192 | 193 | if [[ -n ${ZSH_VERSION-} ]]; then 194 | if [[ ! ${precmd_functions[(r)__promptline]} == __promptline ]]; then 195 | precmd_functions+=(__promptline) 196 | fi 197 | elif [[ -n ${FISH_VERSION-} ]]; then 198 | __promptline "$1" 199 | else 200 | if [[ ! "$PROMPT_COMMAND" == *__promptline* ]]; then 201 | PROMPT_COMMAND='__promptline;'$'\n'"$PROMPT_COMMAND" 202 | fi 203 | fi 204 | -------------------------------------------------------------------------------- /.config/sway/config: -------------------------------------------------------------------------------- 1 | include /etc/sway/config.d/* 2 | 3 | # Variables {{{ 4 | set $wallpaper $HOME/.config/sway/wallpaper 5 | 6 | # {{{ Color definitions 7 | set $background #1d2021 8 | set $foreground #fbf1c7 9 | set $color0 #cc241d 10 | set $color1 #98971a 11 | set $color2 #d79921 12 | set $color3 #98971a 13 | set $color4 #458588 14 | set $color5 #b16286 15 | set $color6 #689d6a 16 | set $color7 #a89984 17 | set $color8 #928374 18 | set $color9 #fb4934 19 | set $color10 #b8bb26 20 | set $color11 #fabd2f 21 | set $color12 #83a598 22 | set $color13 #d3869b 23 | set $color14 #8ec07c 24 | set $color15 #fbf1c7 25 | set $special0 #d65d0e 26 | set $special1 #fe8019 27 | set $transparent #00000000 28 | set $bar_bg #00000040 29 | # }}} 30 | 31 | set $mod Mod4 32 | 33 | # Window movement 34 | set $left h 35 | set $down j 36 | set $up k 37 | set $right l 38 | 39 | # terminal 40 | set $term alacritty 41 | 42 | # Application launcher 43 | #set $menu dmenu_run -nb "$background" -nf "$foreground" -sb "$special1" -sf "$foreground" 44 | set $menu "wofi -i --show drun" 45 | 46 | # Screenshot / Screencast 47 | set $screenshot grim $HOME/screenshot.png && firefox $HOME/screenshot.png 48 | set $screenshotselect grim -g "$(slurp)" $HOME/screenshot.png && firefox $HOME/screenshot.png 49 | set $screencast 'rm $HOME/screencast.mp4; wf-recorder -t -f $HOME/screencast.mp4 && firefox $HOME/screencast.mp4' 50 | set $screencastselect 'rm $HOME/screencast.mp4; wf-recorder -t -g "$(slurp)" -f $HOME/screencast.mp4 && firefox $HOME/screencast.mp4' 51 | set $screencastend pkill --signal SIGINT wf-recorder 52 | 53 | ## Lock screen 54 | #set $lock $screenshot && mogrify -filter Gaussian \ 55 | #-resize 20% -define filter:sigma=1.5 \ 56 | #-resize 500% $HOME/Documents/screenshot.png && \ 57 | #swaylock \ 58 | #-i $HOME/Documents/screenshot.png \ 59 | #--textcolor 00000000 \ 60 | #--font inconsolata \ 61 | #--bshlcolor fb4934 \ 62 | #--keyhlcolor fe8019 \ 63 | #--insidecolor 1d2021 \ 64 | #--ringcolor 1d2021 \ 65 | #--insidevercolor 1d2021 \ 66 | #--ringvercolor fe8019 \ 67 | #--insidewrongcolor 1d2021 \ 68 | #--ringwrongcolor fb4934 \ 69 | #--separatorcolor 00000000 \ 70 | #--indicator-radius 200 \ 71 | #--indicator-thickness 25 \ 72 | #-s 73 | # }}} 74 | # Settings {{{ 75 | # Wallpaper 76 | output * bg $wallpaper fill 77 | 78 | # Border around windows 79 | default_border pixel 2 80 | 81 | # Drag windows by holding down $mod and left mouse button. 82 | # Resize them with right mouse button + $mod. 83 | floating_modifier $mod normal 84 | 85 | # Colorscheme for borders 86 | client.focused $transparent $background $foreground $special1 $special1 87 | client.unfocused $transparent $background $foreground $color7 $background 88 | client.focused_inactive $transparent $background $foreground $color7 $background 89 | 90 | # Gaps 91 | #gaps inner 10 92 | #gaps outer 10 93 | 94 | # Input 95 | input * { 96 | xkb_layout "de" 97 | xkb_variant "us" 98 | xkb_options caps:escape 99 | } 100 | 101 | # Laptop touchpad 102 | input 1267:12693:ELAN0678:00_04F3:3195_Touchpad { 103 | middle_emulation disabled 104 | scroll_method two_finger 105 | tap enabled 106 | dwt disabled 107 | } 108 | 109 | input 2:10:TPPS/2_Elan_TrackPoint { 110 | pointer_accel -0.5 111 | } 112 | 113 | # Gaming mouse 114 | input 1133:49970:Logitech_Gaming_Mouse_G502 { 115 | accel_profile "flat" 116 | pointer_accel 0.1 117 | } 118 | 119 | # seat seat0 hide_cursor 10000 120 | 121 | input 1356:1476:Sony_Computer_Entertainment_Wireless_Controller_Touchpad { 122 | events disabled 123 | } 124 | 125 | for_window [class=".*"] inhibit_idle fullscreen 126 | for_window [app_id=".*"] inhibit_idle fullscreen 127 | exec swayidle \ 128 | timeout 100 'swaymsg "output eDP-1 dpms off; exec brightnessctl -d tpacpi::kbd_backlight -s; exec brightnessctl -d tpacpi::kbd_backlight s 0"' \ 129 | resume 'swaymsg "output eDP-1 dpms on; exec brightnessctl -d tpacpi::kbd_backlight -r"' 130 | 131 | # }}} 132 | # Key bindings {{{ 133 | # Application bindings 134 | bindsym $mod+Control+r exec $term -e ranger 135 | bindsym $mod+Control+q exec qutebrowser 136 | bindsym $mod+Control+h exec $term -e htop 137 | bindsym $mod+Control+c exec $term -e cava 138 | bindsym $mod+Control+n exec $term -e "nvim $HOME/Documents/notes.txt" 139 | 140 | bindsym $mod+Escape exec swaylock 141 | bindswitch --reload --locked lid:on exec swaylock -c 222222ff 142 | 143 | # Start terminal 144 | bindsym $mod+Return exec $term 145 | 146 | # Kill focused window 147 | bindsym $mod+Shift+q kill 148 | 149 | # Start launcher 150 | bindsym $mod+d exec $menu 151 | bindsym $mod+semicolon exec $menu 152 | 153 | # Monitor brightness 154 | bindsym XF86MonBrightnessDown exec brightnessctl set 5%- 155 | bindsym XF86MonBrightnessUp exec brightnessctl set +5% 156 | bindsym Shift+XF86MonBrightnessDown exec brightnessctl set 1%- 157 | bindsym Shift+XF86MonBrightnessUp exec brightnessctl set +1% 158 | 159 | # Keyboard brightness 160 | #bindsym XF86KbdBrightnessDown exec xbacklight -steps 30 -c asus::kbd_backlight 0 161 | #bindsym XF86KbdBrightnessUp exec xbacklight -steps 30 -c asus::kbd_backlight 100 162 | 163 | # Volume 164 | bindsym XF86AudioRaiseVolume exec amixer sset 'Master' 5%+ && pkill -x -RTMIN+11 waybar 165 | bindsym XF86AudioLowerVolume exec amixer sset 'Master' 5%- && pkill -x -RTMIN+11 waybar 166 | bindsym Shift+XF86AudioRaiseVolume exec amixer sset 'Master' 1%+ && pkill -x -RTMIN+11 waybar 167 | bindsym Shift+XF86AudioLowerVolume exec amixer sset 'Master' 1%- && pkill -x -RTMIN+11 waybar 168 | bindsym XF86AudioMute exec amixer sset 'Master' toggle && pkill -x -RTMIN+11 waybar 169 | bindsym XF86AudioMicMute exec amixer sset 'Capture' toggle && pkill -x -RTMIN+11 waybar 170 | 171 | # Lock screen 172 | bindsym pause exec $lock 173 | 174 | # Disable gaps 175 | bindsym $mod+g gaps inner all set 10; gaps outer all set 10 176 | bindsym $mod+Shift+g gaps inner all set 0; gaps outer all set 0 177 | 178 | # Screenshot / Screencast 179 | bindsym Print exec $screenshot 180 | bindsym Shift+Print exec $screenshotselect 181 | bindsym Control+Print exec $screencast 182 | bindsym Control+Shift+Print exec $screencastselect 183 | bindsym Alt+Print exec $screencastend 184 | 185 | # Power Button 186 | #bindsym XF86PowerOff exec sudo pm-suspend 187 | #bindsym Control+XF86PowerOff exec systemctl poweroff 188 | 189 | # Disable mouse 190 | bindsym $mod+q input 1267:12693:ELAN0678:00_04F3:3195_Touchpad events toggle 191 | 192 | bindsym Home exec killall -USR1 speedy 193 | bindsym Insert exec killall -USR1 askthebot 194 | bindsym --release Insert exec killall -USR2 askthebot 195 | 196 | # Bind caps lock 197 | # Abuses https://github.com/swaywm/sway/issues/7549 198 | bindcode --input-device=1133:49970:Logitech_Gaming_Mouse_G502_Keyboard 63 exec mumble rpc togglemute 199 | 200 | # Reload configuration 201 | bindsym $mod+Shift+c reload 202 | 203 | # Exit sway 204 | bindsym $mod+Shift+e exit 205 | 206 | # Move focus 207 | bindsym $mod+$left focus left 208 | bindsym $mod+$down focus down 209 | bindsym $mod+$up focus up 210 | bindsym $mod+$right focus right 211 | bindsym $mod+Left focus left 212 | bindsym $mod+Down focus down 213 | bindsym $mod+Up focus up 214 | bindsym $mod+Right focus right 215 | 216 | # Move focused window 217 | bindsym $mod+Shift+$left move left 218 | bindsym $mod+Shift+$down move down 219 | bindsym $mod+Shift+$up move up 220 | bindsym $mod+Shift+$right move right 221 | bindsym $mod+Shift+Left move left 222 | bindsym $mod+Shift+Down move down 223 | bindsym $mod+Shift+Up move up 224 | bindsym $mod+Shift+Right move right 225 | 226 | # Switch workspace 227 | bindsym $mod+1 workspace 1 228 | bindsym $mod+2 workspace 2 229 | bindsym $mod+3 workspace 3 230 | bindsym $mod+4 workspace 4 231 | bindsym $mod+5 workspace 5 232 | bindsym $mod+6 workspace 6 233 | bindsym $mod+7 workspace 7 234 | bindsym $mod+8 workspace 8 235 | bindsym $mod+9 workspace 9 236 | bindsym $mod+0 workspace 10 237 | 238 | # Move focused window to workspace 239 | bindsym $mod+Shift+1 move container to workspace 1 240 | bindsym $mod+Shift+2 move container to workspace 2 241 | bindsym $mod+Shift+3 move container to workspace 3 242 | bindsym $mod+Shift+4 move container to workspace 4 243 | bindsym $mod+Shift+5 move container to workspace 5 244 | bindsym $mod+Shift+6 move container to workspace 6 245 | bindsym $mod+Shift+7 move container to workspace 7 246 | bindsym $mod+Shift+8 move container to workspace 8 247 | bindsym $mod+Shift+9 move container to workspace 9 248 | bindsym $mod+Shift+0 move container to workspace 10 249 | 250 | bindsym $mod+greater move workspace to output right 251 | bindsym $mod+less move workspace to output left 252 | 253 | # Split direction 254 | bindsym $mod+b splith 255 | bindsym $mod+v splitv 256 | 257 | # Make window fullscreen 258 | bindsym $mod+f fullscreen 259 | 260 | # Toggle focused window between tiled and floating mode 261 | bindsym $mod+Shift+space floating toggle 262 | 263 | # Toggle focus between tiled and floating windows 264 | bindsym $mod+space focus mode_toggle 265 | 266 | # Emoji picker 267 | bindsym $mod+e exec $HOME/bin/rofi-emoji.sh 268 | 269 | # Emulate middle mouse button 270 | #bindsym Alt+button1 exec termite 271 | 272 | mode "resize" { 273 | bindsym $left resize shrink width 10 px or 10 ppt 274 | bindsym $down resize grow height 10 px or 10 ppt 275 | bindsym $up resize shrink height 10 px or 10 ppt 276 | bindsym $right resize grow width 10 px or 10 ppt 277 | bindsym Left resize shrink width 10 px or 10 ppt 278 | bindsym Down resize grow height 10 px or 10 ppt 279 | bindsym Up resize shrink height 10 px or 10 ppt 280 | bindsym Right resize grow width 10 px or 10 ppt 281 | 282 | bindsym Return mode "default" 283 | bindsym Escape mode "default" 284 | } 285 | bindsym $mod+r mode "resize" 286 | # }}} 287 | # Status bar {{{ 288 | 289 | bar swaybar_command waybar 290 | #bar { 291 | #status_command while true; \ 292 | #do \ 293 | #echo "\| $(acpi)\ 294 | #\| Load $(top -bn1 | grep load | awk '{printf \"%.2f %.2f %.2f\", $(NF-2), $(NF-1), $(NF-0)}') \ 295 | #\| Timew $(timew | head -n1) $(timew | sed -n 's/.*Total *//p')\ 296 | #\| $(date '+%A %Y-%m-%d %R | ')\ 297 | #"; sleep 10; done; 298 | #position bottom 299 | #font inconsolata 12 300 | # 301 | #tray { 302 | #icon_theme Adwaita 303 | #} 304 | # 305 | #colors { 306 | #statusline $foreground 307 | #background $bar_bg 308 | #focused_workspace $special1 $bar_bg $foreground 309 | #active_workspace $special1 $bar_bg $foreground 310 | #inactive_workspace $bar_bg $bar_bg $foreground 311 | #} 312 | #} 313 | 314 | # }}} 315 | 316 | for_window [workspace="8"] floating enable 317 | 318 | 319 | # Startup applications {{{ 320 | 321 | exec systemctl --user import-environment WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP 322 | exec dbus-update-activation-environment --systemd --all 323 | 324 | # Start kdeconnect 325 | exec /usr/lib/kdeconnectd 326 | exec /usr/bin/kdeconnect-indicator 327 | exec /usr/bin/udiskie --appindicator 328 | exec /usr/lib/xdg-desktop-portal -r 329 | 330 | exec /usr/bin/mako --default-timeout 5000 331 | exec /usr/bin/nm-applet 332 | -------------------------------------------------------------------------------- /.bashrc: -------------------------------------------------------------------------------- 1 | # ~/.bashrc: executed by bash(1) for non-login shells. 2 | # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) 3 | # for examples 4 | 5 | # If not running interactively, don't do anything 6 | case $- in 7 | *i*) ;; 8 | *) return;; 9 | esac 10 | 11 | # don't put duplicate lines or lines starting with space in the history. 12 | # See bash(1) for more options 13 | HISTCONTROL=ignoreboth 14 | 15 | # append to the history file, don't overwrite it 16 | shopt -s histappend 17 | 18 | # ** is recursive 19 | shopt -s globstar 20 | 21 | # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) 22 | HISTSIZE=100000 23 | HISTFILESIZE=200000 24 | 25 | # check the window size after each command and, if necessary, 26 | # update the values of LINES and COLUMNS. 27 | shopt -s checkwinsize 28 | 29 | # If set, the pattern "**" used in a pathname expansion context will 30 | # match all files and zero or more directories and subdirectories. 31 | #shopt -s globstar 32 | 33 | # make less more friendly for non-text input files, see lesspipe(1) 34 | #[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" 35 | 36 | # set variable identifying the chroot you work in (used in the prompt below) 37 | if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then 38 | debian_chroot=$(cat /etc/debian_chroot) 39 | fi 40 | 41 | # set a fancy prompt (non-color, unless we know we "want" color) 42 | case "$TERM" in 43 | xterm-color|*-256color|alacritty) color_prompt=yes;; 44 | esac 45 | 46 | # uncomment for a colored prompt, if the terminal has the capability; turned 47 | # off by default to not distract the user: the focus in a terminal window 48 | # should be on the output of commands, not on the prompt 49 | #force_color_prompt=yes 50 | 51 | if [ -n "$force_color_prompt" ]; then 52 | if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then 53 | # We have color support; assume it's compliant with Ecma-48 54 | # (ISO/IEC-6429). (Lack of such support is extremely rare, and such 55 | # a case would tend to support setf rather than setaf.) 56 | color_prompt=yes 57 | else 58 | color_prompt= 59 | fi 60 | fi 61 | 62 | if [ "$color_prompt" = yes ]; then 63 | PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 64 | else 65 | PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 66 | fi 67 | unset color_prompt force_color_prompt 68 | 69 | # If this is an xterm set the title to user@host:dir 70 | case "$TERM" in 71 | xterm*|rxvt*) 72 | PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" 73 | ;; 74 | *) 75 | ;; 76 | esac 77 | 78 | # enable color support of ls and also add handy aliases 79 | if [ -x /usr/bin/dircolors ]; then 80 | test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" 81 | alias ls='ls --color=auto' 82 | #alias dir='dir --color=auto' 83 | #alias vdir='vdir --color=auto' 84 | 85 | #alias grep='grep --color=auto' 86 | #alias fgrep='fgrep --color=auto' 87 | #alias egrep='egrep --color=auto' 88 | fi 89 | 90 | # colored GCC warnings and errors 91 | #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' 92 | 93 | # some more ls aliases 94 | #alias ll='ls -l' 95 | #alias la='ls -A' 96 | #alias l='ls -CF' 97 | 98 | # If there are multiple matches for completion, Tab should cycle through them 99 | bind 'TAB:menu-complete' 100 | # And Shift-Tab should cycle backwards 101 | bind '"\e[Z": menu-complete-backward' 102 | 103 | # Display a list of the matching files 104 | bind "set show-all-if-ambiguous on" 105 | 106 | # Perform partial (common) completion on the first Tab press, only start 107 | # cycling full results on the second Tab press (from bash version 5) 108 | bind "set menu-complete-display-prefix on" 109 | 110 | # Alias definitions. 111 | # You may want to put all your additions into a separate file like 112 | # ~/.bash_aliases, instead of adding them here directly. 113 | # See /usr/share/doc/bash-doc/examples in the bash-doc package. 114 | 115 | if [ -f ~/.bash_aliases ]; then 116 | . ~/.bash_aliases 117 | fi 118 | 119 | # enable programmable completion features (you don't need to enable 120 | # this, if it's already enabled in /etc/bash.bashrc and /etc/profile 121 | # sources /etc/bash.bashrc). 122 | if ! shopt -oq posix; then 123 | if [ -f /usr/share/bash-completion/bash_completion ]; then 124 | . /usr/share/bash-completion/bash_completion 125 | elif [ -f /etc/bash_completion ]; then 126 | . /etc/bash_completion 127 | fi 128 | fi 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | #gpgconf --launch gpg-agent 137 | 138 | # SSH agent 139 | if [ "$HOSTNAME" = laptop ]; then 140 | if ! pgrep -u "$USER" ssh-agent > /dev/null; then 141 | ssh-agent -t 1h > "$XDG_RUNTIME_DIR/ssh-agent.env" 142 | fi 143 | if [[ ! -f "$SSH_AUTH_SOCK" ]]; then 144 | source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null 145 | fi 146 | motd() { 147 | echo $(inspiration -s -n1 | sd 'https://www.dwds.de/wb/' '') $(inspiration -a -n1 | sd 'https://www.dwds.de/wb/' '') $(inspiration -v -n1 | sd 'https://www.dwds.de/wb/' '') 148 | } 149 | motd 150 | fi 151 | 152 | alias edit='$EDITOR' 153 | hexedit() { 154 | xxd $1 $1.hex && edit $1.hex && xxd -r $1.hex $1 155 | } 156 | alias ledger='edit $HOME/Documents/hledger.journal' 157 | alias hledger='hledger -f $HOME/Documents/hledger.journal' 158 | alias hledger-ui='hledger-ui -f $HOME/Documents/hledger.journal' 159 | alias hledger-web='hledger-web -f $HOME/Documents/hledger.journal' 160 | alias echome='pactl load-module module-loopback latency_msec=1' 161 | alias echooff='pactl unload-module module-loopback' 162 | alias diary='edit --working-dir /home/timo/Documents/Write /home/timo/Documents/Write/diary.typ +99999' 163 | alias dream='edit --working-dir /home/timo/Documents/Write /home/timo/Documents/Write/dreams.typ +99999' 164 | alias write='edit --working-dir /home/timo/Documents/Write /home/timo/Documents/Write/' 165 | alias todo='edit --working-dir /home/timo/Documents/Write /home/timo/Documents/Write/todo.md' 166 | alias scan='gocr $HOME/screenshot.png' 167 | alias backup='sudo borgmatic --verbosity 1 --list --stats' 168 | 169 | alias less='less -R' 170 | 171 | rg() { 172 | if [ -t 1 ]; then /usr/bin/rg -C2 --json "$@" | delta; else /usr/bin/rg "$@"; fi 173 | } 174 | 175 | llama() { 176 | /home/timo/Development/Repos/llama.cpp/main \ 177 | -m /home/timo/Development/Repos/llama.cpp/model-llama2-uncensored \ 178 | --keep -1 \ 179 | --repeat_penalty 1.0 \ 180 | --prompt-cache /home/timo/Development/Repos/llama.cpp/prompt-cache \ 181 | -i -r " 182 | 183 | " --in-prefix "### HUMAN: 184 | " --in-suffix " 185 | ### RESPONSE: 186 | " -f /home/timo/Development/Repos/llama.cpp/prompt-$1.txt \ 187 | 2> /dev/null \ 188 | | while IFS= read -r -n1 -d$ c; do 189 | echo -n "$c" 190 | if [[ $c = "." ]]; then echo ""; fi 191 | done \ 192 | | awk '/HUMAN:/ {f=0} /HUMAN:/ && g {printf "> "} f && g && NF {print; fflush()} /start/ {g=1} /RESPONSE:/ {f=1}' 193 | } 194 | askbot() { 195 | llama bot | tee >( \ 196 | sed -u -e 's/"//g' -e 's/^.*$/(voice_kal_diphone)(SayText "&")/' \ 197 | | festival \ 198 | ) 199 | } 200 | askbob() { 201 | llama bob | tee >( \ 202 | sed -u -e 's/"//g' -e 's/^.*$/(voice_kal_diphone)(SayText "&")/' \ 203 | | festival \ 204 | ) 205 | } 206 | askanna() { 207 | llama anna | tee >( \ 208 | sed -u -e 's/"//g' -e 's/^.*$/(voice_cmu_us_slt_cg)(SayText "&")/' \ 209 | | festival \ 210 | ) 211 | } 212 | askdenis() { 213 | llama denis | tee >( \ 214 | sed -u -e 's/"//g' -e 's/^.*$/(voice_kal_diphone)(SayText "&")/' \ 215 | | festival \ 216 | ) 217 | } 218 | 219 | alias xwaylaunch='GDK_BACKEND=x11 QT_QPA_PLATFORM=xcb CLUTTER_BACKEND= SDL_VIDEODRIVER= XDG_SESSION_TYPE= WAYLAND_DISPLAY= ' 220 | export QT_QPA_PLATFORM=wayland 221 | export CLUTTER_BACKEND=wayland 222 | export SDL_VIDEODRIVER=wayland 223 | export XDG_SESSION_TYPE=wayland 224 | 225 | PATH="/home/timo/perl5/bin${PATH:+:${PATH}}"; export PATH; 226 | PERL5LIB="/home/timo/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB; 227 | PERL_LOCAL_LIB_ROOT="/home/timo/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT; 228 | PERL_MB_OPT="--install_base \"/home/timo/perl5\""; export PERL_MB_OPT; 229 | PERL_MM_OPT="INSTALL_BASE=/home/timo/perl5"; export PERL_MM_OPT; 230 | # . "/home/timo/.local/share/cargo/env" 231 | 232 | 233 | # export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) 234 | # export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket 235 | # custom theming 236 | #export QT_QPA_PLATFORMTHEME=gnome 237 | #export QT_STYLE_OVERRIDE=kvantum 238 | if [ "$HOSTNAME" = "desktop" ]; then export XDG_CURRENT_DESKTOP=KDE; fi 239 | if [ "$HOSTNAME" = "laptop" ]; then export XDG_CURRENT_DESKTOP=sway; fi 240 | export QT_QPA_PLATFORM=wayland 241 | export CLUTTER_BACKEND=wayland 242 | export SDL_VIDEODRIVER=wayland 243 | export XDG_SESSION_TYPE=wayland 244 | # make firefox use dolphin - this breaks wofi 245 | #export GTK_USE_PORTAL=1 246 | #export GDK_DEBUG=portals 247 | # removes window outlines and stuff 248 | export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 249 | # Firefox fix just in case 250 | export MOZ_ENABLE_WAYLAND=1 251 | # java fix 252 | export _JAVA_AWT_WM_NONREPARENTING=1 253 | export ECORE_EVAS_ENGINE=wayland_egl 254 | export ELM_ENGINE=wayland_egl 255 | 256 | export SDL_AUDIODRIVER=alsa 257 | 258 | # cuda=rocm weirdness 259 | export HSA_OVERRIDE_GFX_VERSION=10.3.0 260 | 261 | # cuda 262 | export PATH=/opt/cuda/bin${PATH:+:${PATH}} 263 | export LD_LIBRARY_PATH=/opt/cuda/lib64 264 | 265 | export KDE_SESSION_VERSION="5" 266 | export QT_QPA_PLATFORMTHEME="qt6ct" 267 | 268 | # Default editor 269 | # export EDITOR=/home/timo/.local/share/cargo/bin/hx 270 | export EDITOR='zeditor --wait' 271 | export VISUAL=$EDITOR 272 | export TERMINAL=alacritty 273 | 274 | export HELIX_RUNTIME="$HOME"/Development/Repos/helix/runtime 275 | 276 | # Keyboard options (sway) 277 | export XKB_DEFAULT_OPTIONS=caps:escape 278 | 279 | # XDG dirs 280 | export XDG_CONFIG_HOME="$HOME"/.config 281 | export XDG_CACHE_HOME="$HOME"/.cache 282 | export XDG_DATA_HOME="$HOME"/.local/share 283 | 284 | # Android Studio 285 | export ANDROID_HOME=/home/timo/Android/Sdk/ 286 | export ANDROID_NDK_HOME=/home/timo/Android/Sdk/ndk/25.2.9519653/ 287 | export LIBRARY_PATH=/home/timo/Android/Sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.7/lib/ 288 | 289 | # Unclutter home 290 | export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc 291 | export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg 292 | export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey 293 | export LESSHISTFILE="$XDG_CACHE_HOME"/less/history 294 | export CARGO_HOME="$XDG_DATA_HOME"/cargo 295 | # export RUST_BACKTRACE=1 296 | export TMUX_TMPDIR="$XDG_RUNTIME_DIR" 297 | export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android 298 | 299 | # My shit 300 | export INSPIRATION_DATABASE_URL=postgres://postgres@localhost/inspiration 301 | 302 | source "$HOME/.cargo/env" 303 | 304 | #export TERM='xterm-256color' 305 | -------------------------------------------------------------------------------- /tf2/gfx.cfg: -------------------------------------------------------------------------------- 1 | // Unexplained crashes? Try changing mat_queue_mode to `-1'. 2 | // ---------------------------------------------------------------------------- 3 | // Comanglia's Cinema Config, Designed for Video makers 4 | // v0.3beta | 12 August, 2015 | 5 | // ---------------------------------------------------------------------------- 6 | // Problems or questions? Post at ??? 7 | // ---------------------------------------------------------------------------- 8 | // Launch options: 9 | // IMPORTANT: Remove -dxlevel 98 isn't exactly necessary cause alt+tabbing during recording is dumb. 10 | // 11 | // Fullscreen: -dxlevel 98 -full -w WIDTH -h HEIGHT -console -novid -useforcedmparms -noforcemaccel -noforcemspd 12 | // Windowed: -dxlevel 98 -sw -w WIDTH -h HEIGHT -console -noborder -novid -useforcedmparms -noforcemaccel -noforcemspd 13 | // ---------------------------------------------------------------------------- 14 | 15 | // ---------------------------------------------------------------------------- 16 | // FPS cap 17 | // ---------------------------------------------------------------------------- 18 | // The primary benefit of an FPS cap is to make the FPS more stable, other than 19 | // that, it doesn't do a lot. A moderate, consistent framerate is much more 20 | // desirable than a variable but sometimes high framerate. A common 21 | // misconception is that if any more frames are generated than your monitor can 22 | // display, they are useless. This is wrong -- frames are used for much more 23 | // than mere display, and affect the way the game feels well past your 24 | // refresh rate. 25 | // 26 | // This FPS cap should *always* be set to a value higher than `cl_cmdrate' in 27 | // any case, or the discrepancy between clientside frame generation and frames 28 | // to be sent to the server will no doubt cause you many a headache, especially 29 | // when it comes down to hit registration. Other than that, I recommend 30 | // for everyone to use the value `132' (2*66), as long as you can generally 31 | // keep that value stable without regular drops. 32 | // ---------------------------------------------------------------------------- 33 | cl_showfps 0 // you don't want to record this, and it's rounded and eats fps anyway. 34 | //fps_max 132 // 35 | fps_max 0 36 | 37 | // ---------------------------------------------------------------------------- 38 | // Net settings 39 | // ---------------------------------------------------------------------------- 40 | // Whilst net settings perhaps aren't an integral part of an FPS config, they 41 | // are a fact of life in competitive TF2, and as such, they are included here. 42 | // 43 | // A common question I am asked -- what defines whether a good connection is 44 | // good or bad? Mostly personal preference. If you're not willing to make the 45 | // choice, try both and see which is better for you. 46 | // 47 | // Generally, meeting both of the following conditions would classify it as a 48 | // good connection: 49 | // 50 | // - Ping of <80 to the average server you join 51 | // - Generally no/negligible choke/loss (can be checked with `net_graph') 52 | // 53 | // There's some pretty good documentation on this here: 54 | // http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking 55 | // 56 | // Uncomment (remove the `//' from) one of the groups if you want to use them. 57 | 58 | // Disable shadows 59 | r_shadowmaxrendered 0 60 | r_shadowrendertotexture 0 61 | r_shadows 0 62 | nb_shadow_dist 0 63 | // ---------------------------------------------------------------------------- 64 | // Ragdolls 65 | // ---------------------------------------------------------------------------- 66 | // You will have reduced performance on deaths which produce ragdolls. 67 | // ---------------------------------------------------------------------------- 68 | 69 | // Disable ragdolls 70 | cl_ragdoll_fade_time 0 71 | cl_ragdoll_forcefade 1 72 | cl_ragdoll_physics_enable 0 73 | g_ragdoll_fadespeed 0 74 | g_ragdoll_lvfadespeed 0 75 | ragdoll_sleepaftertime 0 76 | 77 | // Disable gibs 78 | cl_phys_props_enable 0 79 | cl_phys_props_max 0 80 | props_break_max_pieces 0 81 | r_propsmaxdist 1 82 | violence_agibs 0 83 | violence_hgibs 0 84 | // ---------------------------------------------------------------------------- 85 | // Graphical 86 | // ---------------------------------------------------------------------------- 87 | // Now we come to the main brunt of the config. You probably don't want to mess 88 | // with this. 89 | // ---------------------------------------------------------------------------- 90 | sv_cheats 1 // primarily because this is meant for demos 91 | fov_desired 90 // seriously everyone should use this. 92 | cl_ejectbrass 1 93 | cl_new_impact_effects 1 94 | cl_hud_playerclass_use_playermodel 0 95 | cl_burninggibs 1 96 | cl_detaildist 8096 97 | cl_detailfade 0 98 | cl_maxrenderable_dist 8096 99 | cl_phys_props_max 1024 100 | cl_ragdoll_collide 1 101 | lod_transitiondist 6400 102 | mat_use_compressed_hdr_textures 1 103 | mat_phong 0 104 | mat_aaquality 2 105 | mat_antialias 8 106 | mat_bumpmap 1 107 | mat_compressedtextures 1 // Set to 0 cause instant crash on map load for me 108 | mat_envmapsize 512 109 | mat_envmaptgasize 512 110 | mat_forceaniso 16 111 | mat_hdr_level 2 112 | mat_monitorgamma 2.2 // Controls brightness, try 1.8 to make it brighter or 2.2 113 | // to get it darker. Only works in fullscreen. 114 | mat_motion_blur_enabled 0 115 | mat_motion_blur_forward_enabled 0 116 | mat_motion_blur_strength 0 117 | mat_parallaxmap 1 118 | mat_picmip -1 // Higher = more mipmapping. Without `sv_cheats 1', you're looking 119 | // at a range from -1 to 2, -1 being the best quality, 2 being the 120 | // worst. // Valve has disabled values beyond -1 and 2 even in sv_cheats 1 121 | mat_postprocess_x 8 122 | mat_postprocess_y 8 123 | mat_reducefillrate 0 124 | mat_software_aa_blur_one_pixel_lines 0.5 125 | mat_software_aa_edge_threshold 0.8 126 | mat_software_aa_quality 2 127 | mat_software_aa_strength 2 128 | mat_software_aa_strength_vgui 2 129 | mat_specular 1 130 | mat_wateroverlaysize 512 131 | mp_decals 4096 132 | mp_usehwmmodels 1 133 | mp_usehwmvcds 1 134 | r_avglight 3 135 | r_decals 4096 136 | r_eyeglintlodpixels 4 137 | r_lod 0 138 | r_maxmodeldecal 4096 139 | r_radiosity 3 140 | r_rainradius 2250 141 | r_rainsplashpercentage 100 142 | r_rootlod 0 143 | r_shadowmaxrendered 1024 144 | r_shadowrendertotexture 1 145 | r_shadows 1 146 | r_waterdrawreflection 1 147 | r_waterdrawrefraction 1 148 | r_waterforceexpensive 1 149 | r_waterforcereflectentities 1 150 | r_pixelfog 1 // removes a lot of the map haze in DX 9 doesn't do anything in DX 8 151 | mat_viewportscale 1 // Almost no performance gain from viewport upscaling. 152 | mat_viewportupscale 1 153 | 154 | // ---------------------------------------------------------------------------- 155 | // Misc 156 | // ---------------------------------------------------------------------------- 157 | in_usekeyboardsampletime 0 158 | mat_clipz 1 // FX card users should set this to 0 159 | mat_forcehardwaresync 0 160 | mat_levelflush 1 161 | //m_rawinput 1 // Turn on raw mouse input. Commented out by default due to 162 | // silly incompatibility with the Xfire overlay. You should use 163 | // it if you can! 164 | mat_vsync 0 // Turn off vsync to avoid nasty I/O latency. 165 | r_fastzreject -1 // Values >1 enable a fast Z rejection algorithm, to be 166 | // performed on the GPU (as opposed to on the CPU). The 167 | // value `-1' autodetects hardware support for this 168 | // feature. 169 | ai_expression_optimization 1 170 | fast_fogvolume 1 171 | mod_load_anims_async 1 172 | mod_load_mesh_async 1 173 | mod_load_vcollide_async 1 174 | 175 | // ---------------------------------------------------------------------------- 176 | // Sound 177 | // ---------------------------------------------------------------------------- 178 | // I'd be hesitant to say that you would see a great deal of performance 179 | // improvement from lowering the sound quality, but in my experience as a 180 | // competitive TF2 player, lowering the sound quality makes determination of 181 | // directionality and distance that much easier. You may see a small FPS gain 182 | // with these settings, or you may not, either way will likely have a 183 | // negligible effect on performance. 184 | // ---------------------------------------------------------------------------- 185 | dsp_enhance_stereo 1 186 | dsp_slow_cpu 0 187 | snd_async_fullyasync 1 // Having the sound run fully asynchronous has been 188 | // helpful in the past, as it seems to (for whatever 189 | // reason) reduce the number of TDRs experienced during 190 | // gameplay. There's some pretty good information on 191 | // TDRs (nerds only) here: 192 | // http://forums.nvidia.com/index.php?showtopic=65161 193 | snd_pitchquality 1 194 | snd_spatialize_roundrobin 0 195 | 196 | // ---------------------------------------------------------------------------- 197 | // Threading 198 | // ---------------------------------------------------------------------------- 199 | mat_queue_mode -1 // mat_queue mode is another frequently asked about cvar, it 200 | // defines the threading method to be used by the material 201 | // system. It has been unstable to use in the past, but 202 | // nowadays it's generally okay. 203 | // 204 | // Here are the possible values: 205 | // -2 legacy default 206 | // -1 default 207 | // 0 synchronous single thread 208 | // 1 queued single thread 209 | // 2 queued multithreaded 210 | // 211 | // If you have problems with the value `2', try setting it to 212 | // `-1'. 213 | // 214 | // As an aside, there are quite a few bugs in the demo system 215 | // that occur when mat_queue_mode is set to a value that is 216 | // not `-1'. If you intend to do work with the demo system, 217 | // maybe you should change this. 218 | 219 | cl_threaded_bone_setup 0 220 | cl_threaded_client_leaf_system 0 221 | r_queued_decals 0 222 | r_queued_ropes 1 223 | r_queued_post_processing 0 224 | r_threaded_client_shadow_manager 1 225 | r_threaded_particles 1 226 | r_threaded_renderables 1 227 | 228 | // ---------------------------------------------------------------------------- 229 | // Misc 230 | // ---------------------------------------------------------------------------- 231 | cl_forcepreload 1 // Force preloading 232 | cl_loadondemand_default 0 233 | cl_ask_blacklist_opt_out "1" 234 | cl_ask_favorite_opt_out "1" 235 | sb_dontshow_maxplayer_warning "1" 236 | tf_explanations_backpackpanel "1" 237 | tf_explanations_charinfo_armory_panel "1" 238 | tf_explanations_charinfopanel "1" 239 | tf_explanations_craftingpanel "1" 240 | tf_explanations_discardpanel "1" 241 | tf_explanations_store "1" 242 | tf_training_has_prompted_for_forums "1" 243 | tf_training_has_prompted_for_loadout "1" 244 | tf_training_has_prompted_for_offline_practice "1" 245 | tf_training_has_prompted_for_options "1" 246 | tf_training_has_prompted_for_training "1" 247 | hud_fastswitch 1 248 | 249 | // ---------------------------------------------------------------------------- 250 | // Print to console 251 | // ---------------------------------------------------------------------------- 252 | echo "---------------------------------------------------------" 253 | echo "Comanglia' Cinema config loaded. Inspired by Chris config" 254 | echo "---------------------------------------------------------" 255 | -------------------------------------------------------------------------------- /.config/ranger/rc.conf: -------------------------------------------------------------------------------- 1 | # =================================================================== 2 | # This file contains the default startup commands for ranger. 3 | # To change them, it is recommended to create the file 4 | # ~/.config/ranger/rc.conf and add your custom commands there. 5 | # 6 | # If you copy this whole file there, you may want to set the environment 7 | # variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice. 8 | # 9 | # The purpose of this file is mainly to define keybindings and settings. 10 | # For running more complex python code, please create a plugin in "plugins/" or 11 | # a command in "commands.py". 12 | # 13 | # Each line is a command that will be run before the user interface 14 | # is initialized. As a result, you can not use commands which rely 15 | # on the UI such as :delete or :mark. 16 | # =================================================================== 17 | 18 | # =================================================================== 19 | # == Options 20 | # =================================================================== 21 | 22 | # Which viewmode should be used? Possible values are: 23 | # miller: Use miller columns which show multiple levels of the hierarchy 24 | # multipane: Midnight-commander like multipane view showing all tabs next 25 | # to each other 26 | set viewmode miller 27 | #set viewmode multipane 28 | 29 | # How many columns are there, and what are their relative widths? 30 | set column_ratios 1,3,4 31 | 32 | # Which files should be hidden? (regular expression) 33 | set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$ 34 | 35 | # Show hidden files? You can toggle this by typing 'zh' 36 | set show_hidden false 37 | 38 | # Ask for a confirmation when running the "delete" command? 39 | # Valid values are "always", "never", "multiple" (default) 40 | # With "multiple", ranger will ask only if you delete multiple files at once. 41 | set confirm_on_delete multiple 42 | 43 | # Which script is used to generate file previews? 44 | # ranger ships with scope.sh, a script that calls external programs (see 45 | # README.md for dependencies) to preview images, archives, etc. 46 | set preview_script ~/.config/ranger/scope.sh 47 | 48 | # Use the external preview script or display simple plain text or image previews? 49 | set use_preview_script true 50 | 51 | # Automatically count files in the directory, even before entering them? 52 | set automatically_count_files true 53 | 54 | # Open all images in this directory when running certain image viewers 55 | # like feh or sxiv? You can still open selected files by marking them. 56 | set open_all_images true 57 | 58 | # Be aware of version control systems and display information. 59 | set vcs_aware true 60 | 61 | # State of the three backends git, hg, bzr. The possible states are 62 | # disabled, local (only show local info), enabled (show local and remote 63 | # information). 64 | set vcs_backend_git enabled 65 | set vcs_backend_hg disabled 66 | set vcs_backend_bzr disabled 67 | 68 | # Use one of the supported image preview protocols 69 | set preview_images true 70 | 71 | # Set the preview image method. Supported methods: 72 | # 73 | # * w3m (default): 74 | # Preview images in full color with the external command "w3mimgpreview"? 75 | # This requires the console web browser "w3m" and a supported terminal. 76 | # It has been successfully tested with "xterm" and "urxvt" without tmux. 77 | # 78 | # * iterm2: 79 | # Preview images in full color using iTerm2 image previews 80 | # (http://iterm2.com/images.html). This requires using iTerm2 compiled 81 | # with image preview support. 82 | # 83 | # * urxvt: 84 | # Preview images in full color using urxvt image backgrounds. This 85 | # requires using urxvt compiled with pixbuf support. 86 | # 87 | # * urxvt-full: 88 | # The same as urxvt but utilizing not only the preview pane but the 89 | # whole terminal window. 90 | set preview_images_method w3m 91 | 92 | # Use a unicode "..." character to mark cut-off filenames? 93 | set unicode_ellipsis true 94 | 95 | # Show dotfiles in the bookmark preview box? 96 | set show_hidden_bookmarks true 97 | 98 | # Which colorscheme to use? These colorschemes are available by default: 99 | # default, jungle, snow, solarized 100 | set colorscheme default 101 | 102 | # Preview files on the rightmost column? 103 | # And collapse (shrink) the last column if there is nothing to preview? 104 | set preview_files true 105 | set preview_directories true 106 | set collapse_preview false 107 | 108 | # Save the console history on exit? 109 | set save_console_history true 110 | 111 | # Draw the status bar on top of the browser window (default: bottom) 112 | set status_bar_on_top false 113 | 114 | # Draw a progress bar in the status bar which displays the average state of all 115 | # currently running tasks which support progress bars? 116 | set draw_progress_bar_in_status_bar true 117 | 118 | # Draw borders around columns? 119 | set draw_borders true 120 | 121 | # Display the directory name in tabs? 122 | set dirname_in_tabs false 123 | 124 | # Enable the mouse support? 125 | set mouse_enabled true 126 | 127 | # Display the file size in the main column or status bar? 128 | set display_size_in_main_column true 129 | set display_size_in_status_bar true 130 | 131 | # Display files tags in all columns or only in main column? 132 | set display_tags_in_all_columns true 133 | 134 | # Set a title for the window? 135 | set update_title false 136 | 137 | # Set the title to "ranger" in the tmux program? 138 | set update_tmux_title false 139 | 140 | # Shorten the title if it gets long? The number defines how many 141 | # directories are displayed at once, 0 turns off this feature. 142 | set shorten_title 3 143 | 144 | # Abbreviate $HOME with ~ in the titlebar (first line) of ranger? 145 | set tilde_in_titlebar false 146 | 147 | # How many directory-changes or console-commands should be kept in history? 148 | set max_history_size 20 149 | set max_console_history_size 50 150 | 151 | # Try to keep so much space between the top/bottom border when scrolling: 152 | set scroll_offset 8 153 | 154 | # Flush the input after each key hit? (Noticeable when ranger lags) 155 | set flushinput true 156 | 157 | # Padding on the right when there's no preview? 158 | # This allows you to click into the space to run the file. 159 | set padding_right true 160 | 161 | # Save bookmarks (used with mX and `X) instantly? 162 | # This helps to synchronize bookmarks between multiple ranger 163 | # instances but leads to *slight* performance loss. 164 | # When false, bookmarks are saved when ranger is exited. 165 | set autosave_bookmarks true 166 | 167 | # You can display the "real" cumulative size of directories by using the 168 | # command :get_cumulative_size or typing "dc". The size is expensive to 169 | # calculate and will not be updated automatically. You can choose 170 | # to update it automatically though by turning on this option: 171 | set autoupdate_cumulative_size false 172 | 173 | # Turning this on makes sense for screen readers: 174 | set show_cursor false 175 | 176 | # One of: size, natural, basename, atime, ctime, mtime, type, random 177 | set sort natural 178 | 179 | # Additional sorting options 180 | set sort_reverse false 181 | set sort_case_insensitive true 182 | set sort_directories_first true 183 | set sort_unicode false 184 | 185 | # Enable this if key combinations with the Alt Key don't work for you. 186 | # (Especially on xterm) 187 | set xterm_alt_key false 188 | 189 | # Whether to include bookmarks in cd command 190 | set cd_bookmarks true 191 | 192 | # Avoid previewing files larger than this size, in bytes. Use a value of 0 to 193 | # disable this feature. 194 | set preview_max_size 0 195 | 196 | # Add the highlighted file to the path in the titlebar 197 | set show_selection_in_titlebar true 198 | 199 | # The delay that ranger idly waits for user input, in milliseconds, with a 200 | # resolution of 100ms. Lower delay reduces lag between directory updates but 201 | # increases CPU load. 202 | set idle_delay 2000 203 | 204 | # When the metadata manager module looks for metadata, should it only look for 205 | # a ".metadata.json" file in the current directory, or do a deep search and 206 | # check all directories above the current one as well? 207 | set metadata_deep_search false 208 | 209 | # Clear all existing filters when leaving a directory 210 | set clear_filters_on_dir_change false 211 | 212 | # Disable displaying line numbers in main column 213 | set line_numbers false 214 | 215 | # =================================================================== 216 | # == Local Options 217 | # =================================================================== 218 | # You can set local options that only affect a single directory. 219 | 220 | # Examples: 221 | # setlocal path=~/downloads sort mtime 222 | 223 | # =================================================================== 224 | # == Command Aliases in the Console 225 | # =================================================================== 226 | 227 | alias e edit 228 | alias q quit 229 | alias q! quitall 230 | alias qa quitall 231 | alias qall quitall 232 | alias setl setlocal 233 | 234 | alias filter scout -prt 235 | alias find scout -aeit 236 | alias mark scout -mr 237 | alias unmark scout -Mr 238 | alias search scout -rs 239 | alias search_inc scout -rts 240 | alias travel scout -aefiklst 241 | 242 | # =================================================================== 243 | # == Define keys for the browser 244 | # =================================================================== 245 | 246 | # Basic 247 | map Q quit! 248 | map q quit 249 | copymap q ZZ ZQ 250 | 251 | map R reload_cwd 252 | map reset 253 | map redraw_window 254 | map abort 255 | map change_mode normal 256 | map ~ set viewmode! 257 | 258 | map i display_file 259 | map ? help 260 | map W display_log 261 | map w taskview_open 262 | map S shell $SHELL 263 | 264 | map : console 265 | map ; console 266 | map ! console shell%space 267 | map @ console -p6 shell %%s 268 | map # console shell -p%space 269 | map s console shell%space 270 | map r chain draw_possible_programs; console open_with%%space 271 | map f console find%space 272 | map cd console cd%space 273 | 274 | # Change the line mode 275 | map Mf linemode filename 276 | map Mi linemode fileinfo 277 | map Mm linemode mtime 278 | map Mp linemode permissions 279 | map Ms linemode sizemtime 280 | map Mt linemode metatitle 281 | 282 | # Tagging / Marking 283 | map t tag_toggle 284 | map ut tag_remove 285 | map " tag_toggle tag=%any 286 | map mark_files toggle=True 287 | map v mark_files all=True toggle=True 288 | map uv mark_files all=True val=False 289 | map V toggle_visual_mode 290 | map uV toggle_visual_mode reverse=True 291 | 292 | # For the nostalgics: Midnight Commander bindings 293 | map help 294 | map display_file 295 | map edit 296 | map copy 297 | map cut 298 | map console mkdir%space 299 | map console delete 300 | map exit 301 | 302 | # In case you work on a keyboard with dvorak layout 303 | map move up=1 304 | map move down=1 305 | map move left=1 306 | map move right=1 307 | map move to=0 308 | map move to=-1 309 | map move down=1 pages=True 310 | map move up=1 pages=True 311 | map move right=1 312 | #map console delete 313 | map console touch%space 314 | 315 | # VIM-like 316 | copymap k 317 | copymap j 318 | copymap h 319 | copymap l 320 | copymap gg 321 | copymap G 322 | copymap 323 | copymap 324 | 325 | map J move down=0.5 pages=True 326 | map K move up=0.5 pages=True 327 | copymap J 328 | copymap K 329 | 330 | # Jumping around 331 | map H history_go -1 332 | map L history_go 1 333 | map ] move_parent 1 334 | map [ move_parent -1 335 | map } traverse 336 | 337 | # External Programs 338 | map E edit 339 | map du shell -p du --max-depth=1 -h --apparent-size 340 | map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh 341 | map yp shell -f echo -n %d/%f | xsel -i; xsel -o | xsel -i -b 342 | map yd shell -f echo -n %d | xsel -i; xsel -o | xsel -i -b 343 | map yn shell -f echo -n %f | xsel -i; xsel -o | xsel -i -b 344 | 345 | # Wallpaper 346 | map wp shell -f ln -sf %d/%f $HOME/.config/sway/wallpaper && swaymsg reload 347 | map pw shell -f wal -t -i %f 348 | 349 | # Filesystem Operations 350 | map = chmod 351 | 352 | map cw console rename%space 353 | map a rename_append 354 | map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%")) 355 | map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7) 356 | 357 | map pp paste 358 | map po paste overwrite=True 359 | map pP paste append=True 360 | map pO paste overwrite=True append=True 361 | map pl paste_symlink relative=False 362 | map pL paste_symlink relative=True 363 | map phl paste_hardlink 364 | map pht paste_hardlinked_subtree 365 | 366 | map dD console delete 367 | 368 | map dd cut 369 | map ud uncut 370 | map da cut mode=add 371 | map dr cut mode=remove 372 | map dt cut mode=toggle 373 | 374 | map yy copy 375 | map uy uncut 376 | map ya copy mode=add 377 | map yr copy mode=remove 378 | map yt copy mode=toggle 379 | 380 | # Temporary workarounds 381 | map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier) 382 | map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier) 383 | map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier) 384 | map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier) 385 | map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier) 386 | map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier) 387 | map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier) 388 | map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier) 389 | 390 | # Searching 391 | map / console search%space 392 | map n search_next 393 | map N search_next forward=False 394 | map ct search_next order=tag 395 | map cs search_next order=size 396 | map ci search_next order=mimetype 397 | map cc search_next order=ctime 398 | map cm search_next order=mtime 399 | map ca search_next order=atime 400 | 401 | # Tabs 402 | map tab_new ~ 403 | map tab_close 404 | map tab_move 1 405 | map tab_move -1 406 | map tab_move 1 407 | map tab_move -1 408 | map gt tab_move 1 409 | map gT tab_move -1 410 | map gn tab_new ~ 411 | #map gc tab_close 412 | map uq tab_restore 413 | map tab_open 1 414 | map tab_open 2 415 | map tab_open 3 416 | map tab_open 4 417 | map tab_open 5 418 | map tab_open 6 419 | map tab_open 7 420 | map tab_open 8 421 | map tab_open 9 422 | 423 | # Sorting 424 | map or set sort_reverse! 425 | map oz set sort=random 426 | map os chain set sort=size; set sort_reverse=False 427 | map ob chain set sort=basename; set sort_reverse=False 428 | map on chain set sort=natural; set sort_reverse=False 429 | map om chain set sort=mtime; set sort_reverse=False 430 | map oc chain set sort=ctime; set sort_reverse=False 431 | map oa chain set sort=atime; set sort_reverse=False 432 | map ot chain set sort=type; set sort_reverse=False 433 | map oe chain set sort=extension; set sort_reverse=False 434 | 435 | map oS chain set sort=size; set sort_reverse=True 436 | map oB chain set sort=basename; set sort_reverse=True 437 | map oN chain set sort=natural; set sort_reverse=True 438 | map oM chain set sort=mtime; set sort_reverse=True 439 | map oC chain set sort=ctime; set sort_reverse=True 440 | map oA chain set sort=atime; set sort_reverse=True 441 | map oT chain set sort=type; set sort_reverse=True 442 | map oE chain set sort=extension; set sort_reverse=True 443 | 444 | map dc get_cumulative_size 445 | 446 | # Settings 447 | map zc set collapse_preview! 448 | map zd set sort_directories_first! 449 | map zh set show_hidden! 450 | map set show_hidden! 451 | map zI set flushinput! 452 | map zi set preview_images! 453 | map zm set mouse_enabled! 454 | map zp set preview_files! 455 | map zP set preview_directories! 456 | map zs set sort_case_insensitive! 457 | map zu set autoupdate_cumulative_size! 458 | map zv set use_preview_script! 459 | map zf console filter%space 460 | 461 | # Bookmarks 462 | map ` enter_bookmark %any 463 | map ' enter_bookmark %any 464 | map m set_bookmark %any 465 | map um unset_bookmark %any 466 | 467 | map m draw_bookmarks 468 | copymap m um ` ' 469 | 470 | # Generate all the chmod bindings with some python help: 471 | eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg)) 472 | eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg)) 473 | eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg)) 474 | eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg)) 475 | eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg)) 476 | 477 | eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg)) 478 | eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg)) 479 | eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg)) 480 | eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg)) 481 | eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg)) 482 | 483 | # =================================================================== 484 | # == Define keys for the console 485 | # =================================================================== 486 | # Note: Unmapped keys are passed directly to the console. 487 | 488 | # Basic 489 | cmap eval fm.ui.console.tab() 490 | cmap eval fm.ui.console.tab(-1) 491 | cmap eval fm.ui.console.close() 492 | cmap eval fm.ui.console.execute() 493 | cmap redraw_window 494 | 495 | copycmap 496 | copycmap 497 | 498 | # Move around 499 | cmap eval fm.ui.console.history_move(-1) 500 | cmap eval fm.ui.console.history_move(1) 501 | cmap eval fm.ui.console.move(left=1) 502 | cmap eval fm.ui.console.move(right=1) 503 | cmap eval fm.ui.console.move(right=0, absolute=True) 504 | cmap eval fm.ui.console.move(right=-1, absolute=True) 505 | cmap eval fm.ui.console.move_word(left=1) 506 | cmap eval fm.ui.console.move_word(right=1) 507 | 508 | # Line Editing 509 | cmap eval fm.ui.console.delete(-1) 510 | cmap eval fm.ui.console.delete(0) 511 | cmap eval fm.ui.console.delete_word() 512 | cmap eval fm.ui.console.delete_word(backward=False) 513 | cmap eval fm.ui.console.delete_rest(1) 514 | cmap eval fm.ui.console.delete_rest(-1) 515 | cmap eval fm.ui.console.paste() 516 | 517 | # And of course the emacs way 518 | copycmap 519 | copycmap 520 | copycmap 521 | copycmap 522 | copycmap 523 | copycmap 524 | copycmap 525 | copycmap 526 | 527 | # Note: There are multiple ways to express backspaces. (code 263) 528 | # and (code 127). To be sure, use both. 529 | copycmap 530 | 531 | # This special expression allows typing in numerals: 532 | cmap false 533 | 534 | # =================================================================== 535 | # == Pager Keybindings 536 | # =================================================================== 537 | 538 | # Movement 539 | pmap pager_move down=1 540 | pmap pager_move up=1 541 | pmap pager_move left=4 542 | pmap pager_move right=4 543 | pmap pager_move to=0 544 | pmap pager_move to=-1 545 | pmap pager_move down=1.0 pages=True 546 | pmap pager_move up=1.0 pages=True 547 | pmap pager_move down=0.5 pages=True 548 | pmap pager_move up=0.5 pages=True 549 | 550 | copypmap k 551 | copypmap j 552 | copypmap h 553 | copypmap l 554 | copypmap g 555 | copypmap G 556 | copypmap d 557 | copypmap u 558 | copypmap n f 559 | copypmap p b 560 | 561 | # Basic 562 | pmap redraw_window 563 | pmap pager_close 564 | copypmap q Q i 565 | pmap E edit_file 566 | 567 | # =================================================================== 568 | # == Taskview Keybindings 569 | # =================================================================== 570 | 571 | # Movement 572 | tmap taskview_move up=1 573 | tmap taskview_move down=1 574 | tmap taskview_move to=0 575 | tmap taskview_move to=-1 576 | tmap taskview_move down=1.0 pages=True 577 | tmap taskview_move up=1.0 pages=True 578 | tmap taskview_move down=0.5 pages=True 579 | tmap taskview_move up=0.5 pages=True 580 | 581 | copytmap k 582 | copytmap j 583 | copytmap g 584 | copytmap G 585 | copytmap u 586 | copytmap n f 587 | copytmap p b 588 | 589 | # Changing priority and deleting tasks 590 | tmap J eval -q fm.ui.taskview.task_move(-1) 591 | tmap K eval -q fm.ui.taskview.task_move(0) 592 | tmap dd eval -q fm.ui.taskview.task_remove() 593 | tmap eval -q fm.ui.taskview.task_move(-1) 594 | tmap eval -q fm.ui.taskview.task_move(0) 595 | tmap eval -q fm.ui.taskview.task_remove() 596 | 597 | # Basic 598 | tmap redraw_window 599 | tmap taskview_close 600 | copytmap q Q w 601 | -------------------------------------------------------------------------------- /.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Configuration for Alacritty, the GPU enhanced terminal emulator. 4 | 5 | # Import additional configuration files 6 | # 7 | # Imports are loaded in order, skipping all missing files, with the importing 8 | # file being loaded last. If a field is already present in a previous import, it 9 | # will be replaced. 10 | # 11 | # All imports must either be absolute paths starting with `/`, or paths relative 12 | # to the user's home directory starting with `~/`. 13 | import: 14 | - ~/.config/alacritty/theme.yaml 15 | 16 | # Any items in the `env` entry below will be added as 17 | # environment variables. Some entries may override variables 18 | # set by alacritty itself. 19 | #env: 20 | # TERM variable 21 | # 22 | # This value is used to set the `$TERM` environment variable for 23 | # each instance of Alacritty. If it is not present, alacritty will 24 | # check the local terminfo database and use `alacritty` if it is 25 | # available, otherwise `xterm-256color` is used. 26 | #TERM: alacritty 27 | 28 | #window: 29 | # Window dimensions (changes require restart) 30 | # 31 | # Number of lines/columns (not pixels) in the terminal. Both lines and columns 32 | # must be non-zero for this to take effect. The number of columns must be at 33 | # least `2`, while using a value of `0` for columns and lines will fall back 34 | # to the window manager's recommended size 35 | #dimensions: 36 | # columns: 0 37 | # lines: 0 38 | 39 | # Window position (changes require restart) 40 | # 41 | # Specified in number of pixels. 42 | # If the position is not set, the window manager will handle the placement. 43 | #position: 44 | # x: 0 45 | # y: 0 46 | 47 | # Window padding (changes require restart) 48 | # 49 | # Blank space added around the window in pixels. This padding is scaled 50 | # by DPI and the specified value is always added at both opposing sides. 51 | #padding: 52 | # x: 0 53 | # y: 0 54 | 55 | # Spread additional padding evenly around the terminal content. 56 | #dynamic_padding: false 57 | 58 | # Window decorations 59 | # 60 | # Values for `decorations`: 61 | # - full: Borders and title bar 62 | # - none: Neither borders nor title bar 63 | # 64 | # Values for `decorations` (macOS only): 65 | # - transparent: Title bar, transparent background and title bar buttons 66 | # - buttonless: Title bar, transparent background and no title bar buttons 67 | #decorations: full 68 | 69 | # Background opacity 70 | # 71 | # Window opacity as a floating point number from `0.0` to `1.0`. 72 | # The value `0.0` is completely transparent and `1.0` is opaque. 73 | #opacity: 1.0 74 | 75 | # Startup Mode (changes require restart) 76 | # 77 | # Values for `startup_mode`: 78 | # - Windowed 79 | # - Maximized 80 | # - Fullscreen 81 | # 82 | # Values for `startup_mode` (macOS only): 83 | # - SimpleFullscreen 84 | #startup_mode: Windowed 85 | 86 | # Window title 87 | #title: Alacritty 88 | 89 | # Allow terminal applications to change Alacritty's window title. 90 | #dynamic_title: true 91 | 92 | # Window class (Linux/BSD only): 93 | #class: 94 | # Application instance name 95 | #instance: Alacritty 96 | # General application class 97 | #general: Alacritty 98 | 99 | # Decorations theme variant 100 | # 101 | # Override the variant of the System theme/GTK theme/Wayland client side 102 | # decorations. Commonly supported values are `Dark`, `Light`, and `None` for 103 | # auto pick-up. Set this to `None` to use the default theme variant. 104 | #decorations_theme_variant: None 105 | 106 | # Make `Option` key behave as `Alt` (macOS only): 107 | # - OnlyLeft 108 | # - OnlyRight 109 | # - Both 110 | # - None (default) 111 | #option_as_alt: None 112 | 113 | #scrolling: 114 | # Maximum number of lines in the scrollback buffer. 115 | # Specifying '0' will disable scrolling. 116 | #history: 10000 117 | 118 | # Scrolling distance multiplier. 119 | #multiplier: 3 120 | 121 | # Font configuration 122 | #font: 123 | # Normal (roman) font face 124 | #normal: 125 | # Font family 126 | # 127 | # Default: 128 | # - (macOS) Menlo 129 | # - (Linux/BSD) monospace 130 | # - (Windows) Consolas 131 | #family: monospace 132 | 133 | # The `style` can be specified to pick a specific face. 134 | #style: Regular 135 | 136 | # Bold font face 137 | #bold: 138 | # Font family 139 | # 140 | # If the bold family is not specified, it will fall back to the 141 | # value specified for the normal font. 142 | #family: monospace 143 | 144 | # The `style` can be specified to pick a specific face. 145 | #style: Bold 146 | 147 | # Italic font face 148 | #italic: 149 | # Font family 150 | # 151 | # If the italic family is not specified, it will fall back to the 152 | # value specified for the normal font. 153 | #family: monospace 154 | 155 | # The `style` can be specified to pick a specific face. 156 | #style: Italic 157 | 158 | # Bold italic font face 159 | #bold_italic: 160 | # Font family 161 | # 162 | # If the bold italic family is not specified, it will fall back to the 163 | # value specified for the normal font. 164 | #family: monospace 165 | 166 | # The `style` can be specified to pick a specific face. 167 | #style: Bold Italic 168 | 169 | # Point size 170 | #size: 11.0 171 | 172 | # Offset is the extra space around each character. `offset.y` can be thought 173 | # of as modifying the line spacing, and `offset.x` as modifying the letter 174 | # spacing. 175 | #offset: 176 | # x: 0 177 | # y: 0 178 | 179 | # Glyph offset determines the locations of the glyphs within their cells with 180 | # the default being at the bottom. Increasing `x` moves the glyph to the 181 | # right, increasing `y` moves the glyph upward. 182 | #glyph_offset: 183 | # x: 0 184 | # y: 0 185 | 186 | # Use built-in font for box drawing characters. 187 | # 188 | # If `true`, Alacritty will use a custom built-in font for box drawing 189 | # characters (Unicode points 2500 - 259f). 190 | # 191 | #builtin_box_drawing: true 192 | 193 | # If `true`, bold text is drawn using the bright color variants. 194 | #draw_bold_text_with_bright_colors: false 195 | 196 | # Colors (Tomorrow Night) 197 | #colors: 198 | # Default colors 199 | #primary: 200 | # background: '#1d1f21' 201 | # foreground: '#c5c8c6' 202 | 203 | # Bright and dim foreground colors 204 | # 205 | # The dimmed foreground color is calculated automatically if it is not 206 | # present. If the bright foreground color is not set, or 207 | # `draw_bold_text_with_bright_colors` is `false`, the normal foreground 208 | # color will be used. 209 | #dim_foreground: '#828482' 210 | #bright_foreground: '#eaeaea' 211 | 212 | # Cursor colors 213 | # 214 | # Colors which should be used to draw the terminal cursor. 215 | # 216 | # Allowed values are CellForeground/CellBackground, which reference the 217 | # affected cell, or hexadecimal colors like #ff00ff. 218 | #cursor: 219 | # text: CellBackground 220 | # cursor: CellForeground 221 | 222 | # Vi mode cursor colors 223 | # 224 | # Colors for the cursor when the vi mode is active. 225 | # 226 | # Allowed values are CellForeground/CellBackground, which reference the 227 | # affected cell, or hexadecimal colors like #ff00ff. 228 | #vi_mode_cursor: 229 | # text: CellBackground 230 | # cursor: CellForeground 231 | 232 | # Search colors 233 | # 234 | # Colors used for the search bar and match highlighting. 235 | #search: 236 | # Allowed values are CellForeground/CellBackground, which reference the 237 | # affected cell, or hexadecimal colors like #ff00ff. 238 | #matches: 239 | # foreground: '#000000' 240 | # background: '#ffffff' 241 | #focused_match: 242 | # foreground: '#ffffff' 243 | # background: '#000000' 244 | 245 | # Keyboard hints 246 | #hints: 247 | # First character in the hint label 248 | # 249 | # Allowed values are CellForeground/CellBackground, which reference the 250 | # affected cell, or hexadecimal colors like #ff00ff. 251 | #start: 252 | # foreground: '#1d1f21' 253 | # background: '#e9ff5e' 254 | 255 | # All characters after the first one in the hint label 256 | # 257 | # Allowed values are CellForeground/CellBackground, which reference the 258 | # affected cell, or hexadecimal colors like #ff00ff. 259 | #end: 260 | # foreground: '#e9ff5e' 261 | # background: '#1d1f21' 262 | 263 | # Line indicator 264 | # 265 | # Color used for the indicator displaying the position in history during 266 | # search and vi mode. 267 | # 268 | # By default, these will use the opposing primary color. 269 | #line_indicator: 270 | # foreground: None 271 | # background: None 272 | 273 | # Footer bar 274 | # 275 | # Color used for the footer bar on the bottom, used by search regex input, 276 | # hyperlink URI preview, etc. 277 | # 278 | #footer_bar: 279 | # background: '#c5c8c6' 280 | # foreground: '#1d1f21' 281 | 282 | # Selection colors 283 | # 284 | # Colors which should be used to draw the selection area. 285 | # 286 | # Allowed values are CellForeground/CellBackground, which reference the 287 | # affected cell, or hexadecimal colors like #ff00ff. 288 | #selection: 289 | # text: CellBackground 290 | # background: CellForeground 291 | 292 | # Normal colors 293 | #normal: 294 | # black: '#1d1f21' 295 | # red: '#cc6666' 296 | # green: '#b5bd68' 297 | # yellow: '#f0c674' 298 | # blue: '#81a2be' 299 | # magenta: '#b294bb' 300 | # cyan: '#8abeb7' 301 | # white: '#c5c8c6' 302 | 303 | # Bright colors 304 | #bright: 305 | # black: '#666666' 306 | # red: '#d54e53' 307 | # green: '#b9ca4a' 308 | # yellow: '#e7c547' 309 | # blue: '#7aa6da' 310 | # magenta: '#c397d8' 311 | # cyan: '#70c0b1' 312 | # white: '#eaeaea' 313 | 314 | # Dim colors 315 | # 316 | # If the dim colors are not set, they will be calculated automatically based 317 | # on the `normal` colors. 318 | #dim: 319 | # black: '#131415' 320 | # red: '#864343' 321 | # green: '#777c44' 322 | # yellow: '#9e824c' 323 | # blue: '#556a7d' 324 | # magenta: '#75617b' 325 | # cyan: '#5b7d78' 326 | # white: '#828482' 327 | 328 | # Indexed Colors 329 | # 330 | # The indexed colors include all colors from 16 to 256. 331 | # When these are not set, they're filled with sensible defaults. 332 | # 333 | # Example: 334 | # `- { index: 16, color: '#ff00ff' }` 335 | # 336 | #indexed_colors: [] 337 | 338 | # Transparent cell backgrounds 339 | # 340 | # Whether or not `window.opacity` applies to all cell backgrounds or only to 341 | # the default background. When set to `true` all cells will be transparent 342 | # regardless of their background color. 343 | #transparent_background_colors: false 344 | 345 | # Bell 346 | # 347 | # The bell is rung every time the BEL control character is received. 348 | #bell: 349 | # Visual Bell Animation 350 | # 351 | # Animation effect for flashing the screen when the visual bell is rung. 352 | # 353 | # Values for `animation`: 354 | # - Ease 355 | # - EaseOut 356 | # - EaseOutSine 357 | # - EaseOutQuad 358 | # - EaseOutCubic 359 | # - EaseOutQuart 360 | # - EaseOutQuint 361 | # - EaseOutExpo 362 | # - EaseOutCirc 363 | # - Linear 364 | #animation: EaseOutExpo 365 | 366 | # Duration of the visual bell flash in milliseconds. A `duration` of `0` will 367 | # disable the visual bell animation. 368 | #duration: 0 369 | 370 | # Visual bell animation color. 371 | #color: '#ffffff' 372 | 373 | # Bell Command 374 | # 375 | # This program is executed whenever the bell is rung. 376 | # 377 | # When set to `command: None`, no command will be executed. 378 | # 379 | # Example: 380 | # command: 381 | # program: notify-send 382 | # args: ["Hello, World!"] 383 | # 384 | #command: None 385 | 386 | #selection: 387 | # This string contains all characters that are used as separators for 388 | # "semantic words" in Alacritty. 389 | #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" 390 | 391 | # When set to `true`, selected text will be copied to the primary clipboard. 392 | #save_to_clipboard: false 393 | 394 | #cursor: 395 | # Cursor style 396 | #style: 397 | # Cursor shape 398 | # 399 | # Values for `shape`: 400 | # - ▇ Block 401 | # - _ Underline 402 | # - | Beam 403 | #shape: Block 404 | 405 | # Cursor blinking state 406 | # 407 | # Values for `blinking`: 408 | # - Never: Prevent the cursor from ever blinking 409 | # - Off: Disable blinking by default 410 | # - On: Enable blinking by default 411 | # - Always: Force the cursor to always blink 412 | #blinking: Off 413 | 414 | # Vi mode cursor style 415 | # 416 | # If the vi mode cursor style is `None` or not specified, it will fall back to 417 | # the style of the active value of the normal cursor. 418 | # 419 | # See `cursor.style` for available options. 420 | #vi_mode_style: None 421 | 422 | # Cursor blinking interval in milliseconds. 423 | #blink_interval: 750 424 | 425 | # Time after which cursor stops blinking, in seconds. 426 | # 427 | # Specifying '0' will disable timeout for blinking. 428 | #blink_timeout: 5 429 | 430 | # If this is `true`, the cursor will be rendered as a hollow box when the 431 | # window is not focused. 432 | #unfocused_hollow: true 433 | 434 | # Thickness of the cursor relative to the cell width as floating point number 435 | # from `0.0` to `1.0`. 436 | #thickness: 0.15 437 | 438 | # Live config reload (changes require restart) 439 | #live_config_reload: true 440 | 441 | # Shell 442 | # 443 | # You can set `shell.program` to the path of your favorite shell, e.g. 444 | # `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the 445 | # shell. 446 | # 447 | # Default: 448 | # - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset 449 | # - (Windows) powershell 450 | #shell: 451 | # program: /bin/bash 452 | # args: 453 | # - --login 454 | 455 | # Startup directory 456 | # 457 | # Directory the shell is started in. If this is unset, or `None`, the working 458 | # directory of the parent process will be used. 459 | #working_directory: None 460 | 461 | # Offer IPC using `alacritty msg` (unix only) 462 | #ipc_socket: true 463 | 464 | #mouse: 465 | # Click settings 466 | # 467 | # The `double_click` and `triple_click` settings control the time 468 | # alacritty should wait for accepting multiple clicks as one double 469 | # or triple click. 470 | #double_click: { threshold: 300 } 471 | #triple_click: { threshold: 300 } 472 | 473 | # If this is `true`, the cursor is temporarily hidden when typing. 474 | #hide_when_typing: false 475 | 476 | # Hints 477 | # 478 | # Terminal hints can be used to find text or hyperlink in the visible part of 479 | # the terminal and pipe it to other applications. 480 | #hints: 481 | # Keys used for the hint labels. 482 | #alphabet: "jfkdls;ahgurieowpq" 483 | 484 | # List with all available hints 485 | # 486 | # Each hint must have any of `regex` or `hyperlinks` field and either an 487 | # `action` or a `command` field. The fields `mouse`, `binding` and 488 | # `post_processing` are optional. 489 | # 490 | # The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be 491 | # highlighted. 492 | # 493 | # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and 494 | # `mouse.mods` accept the same values as they do in the `key_bindings` section. 495 | # 496 | # The `mouse.enabled` field controls if the hint should be underlined while 497 | # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. 498 | # 499 | # If the `post_processing` field is set to `true`, heuristics will be used to 500 | # shorten the match if there are characters likely not to be part of the hint 501 | # (e.g. a trailing `.`). This is most useful for URIs and applies only to 502 | # `regex` matches. 503 | # 504 | # Values for `action`: 505 | # - Copy 506 | # Copy the hint's text to the clipboard. 507 | # - Paste 508 | # Paste the hint's text to the terminal or search. 509 | # - Select 510 | # Select the hint's text. 511 | # - MoveViModeCursor 512 | # Move the vi mode cursor to the beginning of the hint. 513 | #enabled: 514 | # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ 515 | # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" 516 | # hyperlinks: true 517 | # command: xdg-open 518 | # post_processing: true 519 | # mouse: 520 | # enabled: true 521 | # mods: None 522 | # binding: 523 | # key: U 524 | # mods: Control|Shift 525 | 526 | # Mouse bindings 527 | # 528 | # Mouse bindings are specified as a list of objects, much like the key 529 | # bindings further below. 530 | # 531 | # To trigger mouse bindings when an application running within Alacritty 532 | # captures the mouse, the `Shift` modifier is automatically added as a 533 | # requirement. 534 | # 535 | # Each mouse binding will specify a: 536 | # 537 | # - `mouse`: 538 | # 539 | # - Middle 540 | # - Left 541 | # - Right 542 | # - Numeric identifier such as `5` 543 | # 544 | # - `action` (see key bindings for actions not exclusive to mouse mode) 545 | # 546 | # - Mouse exclusive actions: 547 | # 548 | # - ExpandSelection 549 | # Expand the selection to the current mouse cursor location. 550 | # 551 | # And optionally: 552 | # 553 | # - `mods` (see key bindings) 554 | #mouse_bindings: 555 | # - { mouse: Right, action: ExpandSelection } 556 | # - { mouse: Right, mods: Control, action: ExpandSelection } 557 | # - { mouse: Middle, mode: ~Vi, action: PasteSelection } 558 | 559 | # Key bindings 560 | # 561 | # Key bindings are specified as a list of objects. For example, this is the 562 | # default paste binding: 563 | # 564 | # `- { key: V, mods: Control|Shift, action: Paste }` 565 | # 566 | # Each key binding will specify a: 567 | # 568 | # - `key`: Identifier of the key pressed 569 | # 570 | # - A-Z 571 | # - F1-F24 572 | # - Key0-Key9 573 | # 574 | # A full list with available key codes can be found here: 575 | # https://docs.rs/winit/*/winit/event/enum.VirtualKeyCode.html#variants 576 | # 577 | # Instead of using the name of the keys, the `key` field also supports using 578 | # the scancode of the desired key. Scancodes have to be specified as a 579 | # decimal number. This command will allow you to display the hex scancodes 580 | # for certain keys: 581 | # 582 | # `showkey --scancodes`. 583 | # 584 | # Then exactly one of: 585 | # 586 | # - `chars`: Send a byte sequence to the running application 587 | # 588 | # The `chars` field writes the specified string to the terminal. This makes 589 | # it possible to pass escape sequences. To find escape codes for bindings 590 | # like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside 591 | # of tmux. Note that applications use terminfo to map escape sequences back 592 | # to keys. It is therefore required to update the terminfo when changing an 593 | # escape sequence. 594 | # 595 | # - `action`: Execute a predefined action 596 | # 597 | # - ToggleViMode 598 | # - SearchForward 599 | # Start searching toward the right of the search origin. 600 | # - SearchBackward 601 | # Start searching toward the left of the search origin. 602 | # - Copy 603 | # - Paste 604 | # - IncreaseFontSize 605 | # - DecreaseFontSize 606 | # - ResetFontSize 607 | # - ScrollPageUp 608 | # - ScrollPageDown 609 | # - ScrollHalfPageUp 610 | # - ScrollHalfPageDown 611 | # - ScrollLineUp 612 | # - ScrollLineDown 613 | # - ScrollToTop 614 | # - ScrollToBottom 615 | # - ClearHistory 616 | # Remove the terminal's scrollback history. 617 | # - Hide 618 | # Hide the Alacritty window. 619 | # - Minimize 620 | # Minimize the Alacritty window. 621 | # - Quit 622 | # Quit Alacritty. 623 | # - ToggleFullscreen 624 | # - SpawnNewInstance 625 | # Spawn a new instance of Alacritty. 626 | # - CreateNewWindow 627 | # Create a new Alacritty window from the current process. 628 | # - ClearLogNotice 629 | # Clear Alacritty's UI warning and error notice. 630 | # - ClearSelection 631 | # Remove the active selection. 632 | # - ReceiveChar 633 | # - None 634 | # 635 | # - Vi mode exclusive actions: 636 | # 637 | # - Open 638 | # Perform the action of the first matching hint under the vi mode cursor 639 | # with `mouse.enabled` set to `true`. 640 | # - ToggleNormalSelection 641 | # - ToggleLineSelection 642 | # - ToggleBlockSelection 643 | # - ToggleSemanticSelection 644 | # Toggle semantic selection based on `selection.semantic_escape_chars`. 645 | # - CenterAroundViCursor 646 | # Center view around vi mode cursor 647 | # 648 | # - Vi mode exclusive cursor motion actions: 649 | # 650 | # - Up 651 | # One line up. 652 | # - Down 653 | # One line down. 654 | # - Left 655 | # One character left. 656 | # - Right 657 | # One character right. 658 | # - First 659 | # First column, or beginning of the line when already at the first column. 660 | # - Last 661 | # Last column, or beginning of the line when already at the last column. 662 | # - FirstOccupied 663 | # First non-empty cell in this terminal row, or first non-empty cell of 664 | # the line when already at the first cell of the row. 665 | # - High 666 | # Top of the screen. 667 | # - Middle 668 | # Center of the screen. 669 | # - Low 670 | # Bottom of the screen. 671 | # - SemanticLeft 672 | # Start of the previous semantically separated word. 673 | # - SemanticRight 674 | # Start of the next semantically separated word. 675 | # - SemanticLeftEnd 676 | # End of the previous semantically separated word. 677 | # - SemanticRightEnd 678 | # End of the next semantically separated word. 679 | # - WordLeft 680 | # Start of the previous whitespace separated word. 681 | # - WordRight 682 | # Start of the next whitespace separated word. 683 | # - WordLeftEnd 684 | # End of the previous whitespace separated word. 685 | # - WordRightEnd 686 | # End of the next whitespace separated word. 687 | # - Bracket 688 | # Character matching the bracket at the cursor's location. 689 | # - SearchNext 690 | # Beginning of the next match. 691 | # - SearchPrevious 692 | # Beginning of the previous match. 693 | # - SearchStart 694 | # Start of the match to the left of the vi mode cursor. 695 | # - SearchEnd 696 | # End of the match to the right of the vi mode cursor. 697 | # 698 | # - Search mode exclusive actions: 699 | # - SearchFocusNext 700 | # Move the focus to the next search match. 701 | # - SearchFocusPrevious 702 | # Move the focus to the previous search match. 703 | # - SearchConfirm 704 | # - SearchCancel 705 | # - SearchClear 706 | # Reset the search regex. 707 | # - SearchDeleteWord 708 | # Delete the last word in the search regex. 709 | # - SearchHistoryPrevious 710 | # Go to the previous regex in the search history. 711 | # - SearchHistoryNext 712 | # Go to the next regex in the search history. 713 | # 714 | # - macOS exclusive actions: 715 | # - ToggleSimpleFullscreen 716 | # Enter fullscreen without occupying another space. 717 | # 718 | # - Linux/BSD exclusive actions: 719 | # 720 | # - CopySelection 721 | # Copy from the selection buffer. 722 | # - PasteSelection 723 | # Paste from the selection buffer. 724 | # 725 | # - `command`: Fork and execute a specified command plus arguments 726 | # 727 | # The `command` field must be a map containing a `program` string and an 728 | # `args` array of command line parameter strings. For example: 729 | # `{ program: "alacritty", args: ["-e", "vttest"] }` 730 | # 731 | # And optionally: 732 | # 733 | # - `mods`: Key modifiers to filter binding actions 734 | # 735 | # - Command 736 | # - Control 737 | # - Option 738 | # - Super 739 | # - Shift 740 | # - Alt 741 | # 742 | # Multiple `mods` can be combined using `|` like this: 743 | # `mods: Control|Shift`. 744 | # Whitespace and capitalization are relevant and must match the example. 745 | # 746 | # - `mode`: Indicate a binding for only specific terminal reported modes 747 | # 748 | # This is mainly used to send applications the correct escape sequences 749 | # when in different modes. 750 | # 751 | # - AppCursor 752 | # - AppKeypad 753 | # - Search 754 | # - Alt 755 | # - Vi 756 | # 757 | # A `~` operator can be used before a mode to apply the binding whenever 758 | # the mode is *not* active, e.g. `~Alt`. 759 | # 760 | # Bindings are always filled by default, but will be replaced when a new 761 | # binding with the same triggers is defined. To unset a default binding, it can 762 | # be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for 763 | # a no-op if you do not wish to receive input characters for that binding. 764 | # 765 | # If the same trigger is assigned to multiple actions, all of them are executed 766 | # in the order they were defined in. 767 | #key_bindings: 768 | #- { key: Paste, action: Paste } 769 | #- { key: Copy, action: Copy } 770 | #- { key: L, mods: Control, action: ClearLogNotice } 771 | #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } 772 | #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp } 773 | #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } 774 | #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop } 775 | #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } 776 | 777 | # Vi Mode 778 | #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } 779 | #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } 780 | #- { key: Escape, mode: Vi|~Search, action: ClearSelection } 781 | #- { key: I, mode: Vi|~Search, action: ToggleViMode } 782 | #- { key: I, mode: Vi|~Search, action: ScrollToBottom } 783 | #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } 784 | #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } 785 | #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } 786 | #- { key: G, mode: Vi|~Search, action: ScrollToTop } 787 | #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } 788 | #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } 789 | #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } 790 | #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } 791 | #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } 792 | #- { key: Y, mode: Vi|~Search, action: Copy } 793 | #- { key: Y, mode: Vi|~Search, action: ClearSelection } 794 | #- { key: Copy, mode: Vi|~Search, action: ClearSelection } 795 | #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } 796 | #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } 797 | #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } 798 | #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } 799 | #- { key: Return, mode: Vi|~Search, action: Open } 800 | #- { key: Z, mode: Vi|~Search, action: CenterAroundViCursor } 801 | #- { key: K, mode: Vi|~Search, action: Up } 802 | #- { key: J, mode: Vi|~Search, action: Down } 803 | #- { key: H, mode: Vi|~Search, action: Left } 804 | #- { key: L, mode: Vi|~Search, action: Right } 805 | #- { key: Up, mode: Vi|~Search, action: Up } 806 | #- { key: Down, mode: Vi|~Search, action: Down } 807 | #- { key: Left, mode: Vi|~Search, action: Left } 808 | #- { key: Right, mode: Vi|~Search, action: Right } 809 | #- { key: Key0, mode: Vi|~Search, action: First } 810 | #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } 811 | #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } 812 | #- { key: H, mods: Shift, mode: Vi|~Search, action: High } 813 | #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } 814 | #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } 815 | #- { key: B, mode: Vi|~Search, action: SemanticLeft } 816 | #- { key: W, mode: Vi|~Search, action: SemanticRight } 817 | #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } 818 | #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } 819 | #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } 820 | #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } 821 | #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } 822 | #- { key: Slash, mode: Vi|~Search, action: SearchForward } 823 | #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } 824 | #- { key: N, mode: Vi|~Search, action: SearchNext } 825 | #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } 826 | 827 | # Search Mode 828 | #- { key: Return, mode: Search|Vi, action: SearchConfirm } 829 | #- { key: Escape, mode: Search, action: SearchCancel } 830 | #- { key: C, mods: Control, mode: Search, action: SearchCancel } 831 | #- { key: U, mods: Control, mode: Search, action: SearchClear } 832 | #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } 833 | #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } 834 | #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } 835 | #- { key: Up, mode: Search, action: SearchHistoryPrevious } 836 | #- { key: Down, mode: Search, action: SearchHistoryNext } 837 | #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } 838 | #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } 839 | 840 | # (Windows, Linux, and BSD only) 841 | #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } 842 | #- { key: C, mods: Control|Shift, action: Copy } 843 | #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } 844 | #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } 845 | #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } 846 | #- { key: Insert, mods: Shift, action: PasteSelection } 847 | #- { key: Key0, mods: Control, action: ResetFontSize } 848 | #- { key: Equals, mods: Control, action: IncreaseFontSize } 849 | #- { key: Plus, mods: Control, action: IncreaseFontSize } 850 | #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } 851 | #- { key: Minus, mods: Control, action: DecreaseFontSize } 852 | #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } 853 | 854 | # (Windows only) 855 | #- { key: Return, mods: Alt, action: ToggleFullscreen } 856 | 857 | # (macOS only) 858 | #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } 859 | #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } 860 | #- { key: Key0, mods: Command, action: ResetFontSize } 861 | #- { key: Equals, mods: Command, action: IncreaseFontSize } 862 | #- { key: Plus, mods: Command, action: IncreaseFontSize } 863 | #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } 864 | #- { key: Minus, mods: Command, action: DecreaseFontSize } 865 | #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } 866 | #- { key: V, mods: Command, action: Paste } 867 | #- { key: C, mods: Command, action: Copy } 868 | #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } 869 | #- { key: H, mods: Command, action: Hide } 870 | #- { key: H, mods: Command|Alt, action: HideOtherApplications } 871 | #- { key: M, mods: Command, action: Minimize } 872 | #- { key: Q, mods: Command, action: Quit } 873 | #- { key: W, mods: Command, action: Quit } 874 | #- { key: N, mods: Command, action: CreateNewWindow } 875 | #- { key: F, mods: Command|Control, action: ToggleFullscreen } 876 | #- { key: F, mods: Command, mode: ~Search, action: SearchForward } 877 | #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } 878 | 879 | #debug: 880 | # Display the time it takes to redraw each frame. 881 | #render_timer: false 882 | 883 | # Keep the log file after quitting Alacritty. 884 | #persistent_logging: false 885 | 886 | # Log level 887 | # 888 | # Values for `log_level`: 889 | # - Off 890 | # - Error 891 | # - Warn 892 | # - Info 893 | # - Debug 894 | # - Trace 895 | #log_level: Warn 896 | 897 | # Renderer override. 898 | # - glsl3 899 | # - gles2 900 | # - gles2_pure 901 | #renderer: None 902 | 903 | # Print all received window events. 904 | #print_events: false 905 | 906 | # Highlight window damage information. 907 | #highlight_damage: false 908 | 909 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | --------------------------------------------------------------------------------