├── tty └── vconsole.conf ├── bin ├── capture ├── restart-kwin_x11 ├── new-session ├── checkmail ├── tmux-session-switch ├── random-wallpaper ├── switch-kb-layout ├── scripts │ ├── new-branch │ ├── gm │ ├── gs │ └── gr ├── duonitor ├── restart-polybar ├── mononitor ├── tmux-k8s ├── sw ├── journal ├── tmux-kak ├── tmux-layout ├── kitty-kak ├── rofi-i3-marks ├── tmux-tasks ├── bspwm-rofi └── shell-functions ├── nvim ├── lua │ ├── pkg │ │ ├── telescope-fzf.lua │ │ ├── comment.lua │ │ ├── dressing.lua │ │ ├── autopairs.lua │ │ ├── goto-preview.lua │ │ ├── nvim-colorizer.lua │ │ ├── nvim-auto-tag.lua │ │ ├── web-devicons.lua │ │ ├── dap-virtual-text.lua │ │ ├── notisys.lua │ │ ├── nvim-lsp-installer.lua │ │ ├── lsp_lines.lua │ │ ├── notifier.lua │ │ ├── nvim-window-picker.lua │ │ ├── dap-ui.lua │ │ ├── neo-tree-diagnostics.lua │ │ ├── persistence.lua │ │ ├── trouble.lua │ │ ├── indent-blankline.lua │ │ ├── noctis.lua │ │ ├── which-key.lua │ │ ├── nvim-ts-autotag.lua │ │ ├── fidget.lua │ │ ├── nvim-notify.lua │ │ ├── true-zen.lua │ │ ├── fugitive.lua │ │ ├── crates.lua │ │ ├── symbols-outline.lua │ │ ├── snippy.lua │ │ ├── packer.lua │ │ ├── neogit.lua │ │ ├── aerial.lua │ │ ├── satellite.lua │ │ ├── edge.lua │ │ ├── nvim-treesitter-context.lua │ │ ├── kanagawa.lua │ │ ├── catppuccin.lua │ │ ├── nvim-treesitter.lua │ │ ├── dap.lua │ │ ├── incline.lua │ │ ├── hop.lua │ │ ├── nvim-tree.lua │ │ ├── cmp.lua │ │ ├── gitsigns.lua │ │ ├── telescope.lua │ │ ├── neo-tree.lua │ │ ├── mind.lua │ │ ├── lsp.lua │ │ └── diffview.lua │ ├── keybindings.lua │ ├── pkgs.lua │ └── statusline.lua ├── ftplugin │ └── help.vim ├── snippets │ ├── rust.snippets │ └── markdown.snippets └── init.lua ├── kak └── colors │ └── catppuccin_macchiato.kak ├── newsboat ├── config ├── urls └── colorscheme ├── mind └── config.toml ├── zellij ├── layouts │ └── top-tab.kdl └── config.kdl ├── zsh ├── plugins.txt └── .zshrc ├── .gitignore ├── haskell └── ghci ├── helix ├── languages.toml └── config.toml ├── fzf └── .fzfrc ├── alacritty ├── themes │ ├── doom-one.toml │ ├── doom-one.yml │ ├── challenger-deep.toml │ ├── catppuccin.toml │ └── catppuccin-macchiato.toml ├── alacritty.toml └── alacritty-macOS.toml ├── msmtp └── config ├── rust └── rustfmt.toml ├── lf └── lfrc ├── aerc ├── accounts.conf ├── stylesets │ └── catppuccin-macchiato └── binds.conf ├── mbsync └── .mbsyncrc ├── lazygit └── config.yml ├── gitui ├── theme.ron └── key_bindings.ron ├── git ├── .gitconfig └── allowed_signers ├── kitty └── palenight.conf ├── deprecated ├── colorscheme └── colorscheme-themes │ └── themes │ └── edge-dark ├── idea └── ideavimrc ├── intellij └── ideavim │ └── ideavimrc ├── termite └── config ├── atom ├── config.cson └── keymap.cson ├── bspwm ├── bspwmrc └── sxhkdrc ├── README.org ├── rofi └── config.rasi ├── tmux └── tmux.conf ├── doom ├── packages.el ├── config.el └── init.el ├── nushell └── env.nu ├── rio └── config.toml ├── sway └── config ├── waybar ├── style.css └── config ├── picom └── picom.conf └── i3 └── config /tty/vconsole.conf: -------------------------------------------------------------------------------- 1 | KEYMAP=fr-bepo 2 | -------------------------------------------------------------------------------- /bin/capture: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | mind ins -is /Notes/Digging 4 | -------------------------------------------------------------------------------- /bin/restart-kwin_x11: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | kwin_x11 --replace & disown 4 | -------------------------------------------------------------------------------- /nvim/lua/pkg/telescope-fzf.lua: -------------------------------------------------------------------------------- 1 | return { 2 | run = 'make', 3 | } 4 | -------------------------------------------------------------------------------- /bin/new-session: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | tmux new-session -s $1 -c ~/src/$1 -d 4 | -------------------------------------------------------------------------------- /bin/checkmail: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ls ~/mail/hadronized/Inbox/new | wc -l | tr -d ' ' 4 | -------------------------------------------------------------------------------- /bin/tmux-session-switch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | tmux ls -F #S | sk | xargs tmux switch-client -t 4 | -------------------------------------------------------------------------------- /nvim/ftplugin/help.vim: -------------------------------------------------------------------------------- 1 | " for better navigation in help pages 2 | nnoremap 3 | -------------------------------------------------------------------------------- /bin/random-wallpaper: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | feh --bg-fill $(ls -d /home/phaazon/pictures/wallpapers/* | shuf -n 1) 3 | -------------------------------------------------------------------------------- /nvim/lua/pkg/comment.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'Comment'.setup {} 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /nvim/lua/pkg/dressing.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'dressing'.setup() 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /kak/colors/catppuccin_macchiato.kak: -------------------------------------------------------------------------------- 1 | /home/phaazon/src/kakoune-tree-sitter-themes/colors/catppuccin/catppuccin_macchiato.kak -------------------------------------------------------------------------------- /nvim/lua/pkg/autopairs.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'nvim-autopairs'.setup {} 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /nvim/lua/pkg/goto-preview.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'goto-preview'.setup {} 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-colorizer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'colorizer'.setup {} 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-auto-tag.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'nvim-auto-tag'.setup() 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /nvim/lua/pkg/web-devicons.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'nvim-web-devicons'.setup {} 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /bin/switch-kb-layout: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | setxkbmap -print | rg bepo &> /dev/null && setxkbmap us && exit 0 4 | setxkbmap fr bepo 5 | -------------------------------------------------------------------------------- /bin/scripts/new-branch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This script creates a new branch with the user prefix. 4 | 5 | git switch -c $USER/$1 6 | -------------------------------------------------------------------------------- /newsboat/config: -------------------------------------------------------------------------------- 1 | include colorscheme 2 | auto-reload yes 3 | browser xdg-open 4 | 5 | # bindings 6 | bind-key s up 7 | bind-key t down 8 | -------------------------------------------------------------------------------- /nvim/lua/pkg/dap-virtual-text.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'nvim-dap-virtual-text'.setup() 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /nvim/lua/pkg/notisys.lua: -------------------------------------------------------------------------------- 1 | return { 2 | disable = true, 3 | config = function() 4 | require'notisys'.setup() 5 | end 6 | } 7 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-lsp-installer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'nvim-lsp-installer'.setup {} 4 | end 5 | } 6 | -------------------------------------------------------------------------------- /mind/config.toml: -------------------------------------------------------------------------------- 1 | [interactive] 2 | fuzzy_term_program = "sk" 3 | fuzzy_term_prompt_opt = "-p" 4 | 5 | [tree] 6 | auto_create_nodes = true 7 | -------------------------------------------------------------------------------- /nvim/lua/pkg/lsp_lines.lua: -------------------------------------------------------------------------------- 1 | return { 2 | disable = true, 3 | config = function() 4 | require("lsp_lines").setup() 5 | end 6 | } 7 | -------------------------------------------------------------------------------- /newsboat/urls: -------------------------------------------------------------------------------- 1 | https://strongly-typed-thoughts.net/blog/feed 2 | https://www.pcloadletter.dev/feed/feed.xml 3 | https://dicioccio.fr/atom.xml 4 | -------------------------------------------------------------------------------- /nvim/lua/pkg/notifier.lua: -------------------------------------------------------------------------------- 1 | return { 2 | disable = true, 3 | config = function() 4 | require'notifier'.setup { 5 | } 6 | end 7 | } 8 | -------------------------------------------------------------------------------- /zellij/layouts/top-tab.kdl: -------------------------------------------------------------------------------- 1 | layout { 2 | pane size=1 borderless=true { 3 | plugin location="zellij:compact-bar" 4 | } 5 | 6 | pane 7 | } 8 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-window-picker.lua: -------------------------------------------------------------------------------- 1 | return { 2 | tag = 'v1.*', 3 | config = function() 4 | require'window-picker'.setup() 5 | end, 6 | } 7 | -------------------------------------------------------------------------------- /bin/duonitor: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | xrandr --output DP-2 --primary --panning 0x0 --auto --rate 143.97 --output HDMI-0 --auto --right-of DP-2 4 | bspc wm -r 5 | -------------------------------------------------------------------------------- /nvim/lua/pkg/dap-ui.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = { "mfussenegger/nvim-dap" }, 3 | config = function() 4 | require'dapui'.setup() 5 | end 6 | } 7 | -------------------------------------------------------------------------------- /zsh/plugins.txt: -------------------------------------------------------------------------------- 1 | zsh-users/zsh-autosuggestions 2 | zsh-users/zsh-completions 3 | zsh-users/zsh-syntax-highlighting 4 | Tarrasch/zsh-bd 5 | hschne/fzf-git 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | archlinux/.config/nvim/plugged 2 | archlinux/.config/nvim/platform-specific.vim 3 | archlinux/.config/polybar/github_token 4 | /nvim/plugin 5 | /nvim/sessions 6 | -------------------------------------------------------------------------------- /bin/restart-polybar: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | pkill polybar 4 | while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done 5 | polybar default & 6 | polybar external & 7 | -------------------------------------------------------------------------------- /haskell/ghci: -------------------------------------------------------------------------------- 1 | :set prompt "λ " 2 | :set -XOverloadedStrings 3 | :set -XTupleSections 4 | :set -XFlexibleInstances 5 | :set -XFlexibleContexts 6 | :set -XMultiParamTypeClasses 7 | -------------------------------------------------------------------------------- /nvim/lua/pkg/neo-tree-diagnostics.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = "nvim-neo-tree/neo-tree.nvim", 3 | module = "neo-tree.sources.diagnostics", -- if wanting to lazyload 4 | } 5 | -------------------------------------------------------------------------------- /nvim/lua/pkg/persistence.lua: -------------------------------------------------------------------------------- 1 | return { 2 | event = 'BufReadPre', 3 | module = 'persistence', 4 | config = function() 5 | require'persistence'.setup {} 6 | end, 7 | } 8 | -------------------------------------------------------------------------------- /nvim/lua/pkg/trouble.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = 'kyazdani42/nvim-web-devicons', 3 | branch = 'main', 4 | config = function() 5 | require('trouble').setup {} 6 | end 7 | } 8 | -------------------------------------------------------------------------------- /bin/mononitor: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | xrandr --output DP-2 --primary --panning 0x0 --pos 0x0 --mode 2560x1440 --rate 143.97 --output HDMI-0 --off 4 | export HOST="orchid-mono" 5 | bspc wm -r 6 | -------------------------------------------------------------------------------- /bin/tmux-k8s: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if command -v kubectx &> /dev/null && command -v kubens &> /dev/null; then 4 | echo "#[fg=blue]󱃾 $(kubens -c)#[fg=black]/#[fg=blue]$(kubectx -c)" 5 | fi 6 | -------------------------------------------------------------------------------- /nvim/lua/pkg/indent-blankline.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'indent_blankline'.setup { 4 | char = '│', 5 | use_treesitter = true, 6 | } 7 | end 8 | } 9 | -------------------------------------------------------------------------------- /bin/sw: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Easily switch between tmux session. 4 | session=$(tmux ls -F "#S" | fzf --prompt "Switch to tmux session: ") 5 | 6 | [ -n "$session" ] && tmux switch-client -t $session 7 | -------------------------------------------------------------------------------- /nvim/lua/pkg/noctis.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = { 'rktjmp/lush.nvim' }, 3 | disable = true, 4 | config = function() 5 | vim.cmd('colorscheme noctis') 6 | require 'colorscheme' 7 | end 8 | } 9 | -------------------------------------------------------------------------------- /nvim/lua/pkg/which-key.lua: -------------------------------------------------------------------------------- 1 | return { 2 | disable = true, 3 | config = function() 4 | local wk = require'which-key' 5 | wk.setup { 6 | triggers = { ' ' } 7 | } 8 | end 9 | } 10 | -------------------------------------------------------------------------------- /helix/languages.toml: -------------------------------------------------------------------------------- 1 | [[language]] 2 | name = "rust" 3 | indent = { tab-width = 2, unit = " "} 4 | 5 | [language-server.rust-analyzer.config] 6 | cargo.features = "all" 7 | rust-analyzer.check.command = "clippy" 8 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-ts-autotag.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'nvim-treesitter.configs'.setup { 4 | autotag = { 5 | enable = true, 6 | } 7 | } 8 | end 9 | } 10 | -------------------------------------------------------------------------------- /bin/journal: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | p=$(date +/Journal/%Y/%b/%d) 4 | 5 | if mind paths -s $p &> /dev/null; then 6 | mind get -fos $p 7 | else 8 | mind ins -fos $(date +/Journal/%Y/%b) -n $(date +%d) 9 | fi 10 | -------------------------------------------------------------------------------- /nvim/lua/pkg/fidget.lua: -------------------------------------------------------------------------------- 1 | return { 2 | branch = 'main', 3 | config = function() 4 | require'fidget'.setup { 5 | text = { 6 | spinner = "dots_pulse", 7 | } 8 | } 9 | end 10 | } 11 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-notify.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | local notify = require'notify' 4 | notify.setup({ 5 | background_colour = "#000000", 6 | }) 7 | 8 | vim.notify = notify 9 | end 10 | } 11 | -------------------------------------------------------------------------------- /nvim/lua/pkg/true-zen.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'true-zen'.setup {} 4 | end, 5 | keybindings = { 6 | ['n'] = { 7 | { 8 | key = "wz", 9 | cmd = "TZFocus", 10 | } 11 | } 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /nvim/lua/pkg/fugitive.lua: -------------------------------------------------------------------------------- 1 | return { 2 | keybindings = { 3 | n = { 4 | { 5 | key = 'gbB', 6 | cmd = 'Git blame', 7 | }, 8 | { 9 | key = 'gS', 10 | cmd = 'Gwrite', 11 | }, 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /bin/tmux-kak: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ -z "$TMUX" ]; then 4 | kak $* 5 | else 6 | session_name=$(tmux display-message -p "#S") 7 | 8 | if kak -l | rg $session_name &> /dev/null; then 9 | kak -c $session_name $* 10 | else 11 | kak -s $session_name $* 12 | fi 13 | fi 14 | -------------------------------------------------------------------------------- /bin/tmux-layout: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | tmux new -ds 'main' -n 'sys' -c ~ 4 | tmux new -ds 'kak-tree-sitter' -n 'sys' -c ~/src/kak-tree-sitter 5 | tmux new -ds 'blog' -n 'sys' -c ~/src/blog 6 | tmux new -ds 'splines' -n 'sys' -c ~/src/splines 7 | tmux new -ds 'piksels' -n 'sys' -c ~/src/piksels 8 | -------------------------------------------------------------------------------- /fzf/.fzfrc: -------------------------------------------------------------------------------- 1 | export FZF_DEFAULT_COMMAND='rg --files --follow' 2 | 3 | export FZF_DEFAULT_OPTS=' 4 | -m 5 | --height 40% 6 | --reverse 7 | --info=inline 8 | ' 9 | 10 | export FZF_CTRL_T_OPTS='--border --height 40' 11 | export FZF_CTRL_R_OPTS='--border --height 40 --preview=' 12 | -------------------------------------------------------------------------------- /nvim/lua/pkg/crates.lua: -------------------------------------------------------------------------------- 1 | return { 2 | branch = 'main', 3 | event = { "BufRead Cargo.toml" }, 4 | requires = { { 'nvim-lua/plenary.nvim' } }, 5 | config = function() 6 | require('crates').setup { 7 | popup = { 8 | show_version_date = true, 9 | } 10 | } 11 | end, 12 | } 13 | -------------------------------------------------------------------------------- /nvim/lua/pkg/symbols-outline.lua: -------------------------------------------------------------------------------- 1 | return { 2 | init = function() 3 | vim.g.symbols_outline = { 4 | position = 'right', 5 | } 6 | end, 7 | keybindings = { 8 | n = { 9 | { 10 | key = 'cO'; 11 | cmd = 'SymbolsOutline' 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /alacritty/themes/doom-one.toml: -------------------------------------------------------------------------------- 1 | [colors.normal] 2 | black = "0x282c34" 3 | blue = "0x51afef" 4 | cyan = "0x46d9ff" 5 | green = "0x98be65" 6 | magenta = "0xc678dd" 7 | red = "0xff6c6b" 8 | white = "0xbbc2cf" 9 | yellow = "0xecbe7b" 10 | 11 | [colors.primary] 12 | background = "0x282c34" 13 | foreground = "0xbbc2cf" 14 | -------------------------------------------------------------------------------- /nvim/lua/pkg/snippy.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require("snippy").setup { 4 | snippet_dirs = '~/.config/nvim/snippets', 5 | mappings = { 6 | is = { 7 | [""] = "expand_or_advance", 8 | [""] = "previous", 9 | }, 10 | }, 11 | } 12 | end 13 | } 14 | -------------------------------------------------------------------------------- /bin/kitty-kak: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ -z "$KITTY_PID" ]; then 4 | kak $* 5 | else 6 | session_name=$(kitty @ ls | jq -r '.[0].tabs | map(select(.is_focused == true)) | .[0].title') 7 | 8 | if kak -l | rg $session_name &> /dev/null; then 9 | kak -c $session_name $* 10 | else 11 | kak -s $session_name $* 12 | fi 13 | fi 14 | -------------------------------------------------------------------------------- /bin/scripts/gm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This script allows to merge a branch on the current branch easily. 4 | 5 | header="Select a branch to merge" 6 | choice=$(git branch | rg -v "^\*" | tr -d ' ' | sk \ 7 | --height=20 \ 8 | --layout reverse \ 9 | --header="$header" \ 10 | --prompt="Merge: " \ 11 | ) 12 | 13 | [ $? = 0 ] && git merge $choice 14 | -------------------------------------------------------------------------------- /nvim/lua/pkg/packer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | keybindings = { 3 | n = { 4 | { 5 | key = 'pc', 6 | cmd = 'PackerCompile', 7 | }, 8 | { 9 | key = 'ps', 10 | cmd = 'PackerStatus', 11 | }, 12 | { 13 | key = 'pS', 14 | cmd = 'PackerSync', 15 | }, 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /msmtp/config: -------------------------------------------------------------------------------- 1 | defaults 2 | auth no 3 | tls on 4 | tls_trust_file /etc/ssl/certs/ca-certificates.crt 5 | 6 | account hadronized 7 | host ssl0.ovh.net 8 | post 465 9 | tls_starttls off 10 | from "Dimitri Sabadie" 11 | user hadronized@strongly-typed-thoughts.net 12 | passwordeval "pass hadronized@strongly-typed-thoughts.net" 13 | 14 | account default: hadronized 15 | -------------------------------------------------------------------------------- /rust/rustfmt.toml: -------------------------------------------------------------------------------- 1 | edition = "2018" 2 | 3 | fn_args_layout = "Tall" 4 | force_explicit_abi = true 5 | hard_tabs = false 6 | max_width = 100 7 | merge_derives = true 8 | newline_style = "Unix" 9 | remove_nested_parens = true 10 | reorder_imports = true 11 | reorder_modules = true 12 | tab_spaces = 2 13 | use_field_init_shorthand = true 14 | use_small_heuristics = "Default" 15 | use_try_shorthand = true 16 | -------------------------------------------------------------------------------- /nvim/snippets/rust.snippets: -------------------------------------------------------------------------------- 1 | snippet str "Derive famous traits" b 2 | #[derive(Clone, Debug, Eq, Hash, PartialEq$1)] 3 | pub struct ${2:Foo} { 4 | ${3:field_name}: ${4:i32} 5 | } 6 | 7 | snippet modtest "Add a test suite" b 8 | #[cfg(test)] 9 | mod test { 10 | use super::*; 11 | 12 | $0 13 | } 14 | 15 | snippet test "Add a new test" b 16 | /// $2 17 | #[test] 18 | fn test_$1() { 19 | $0 20 | } 21 | -------------------------------------------------------------------------------- /lf/lfrc: -------------------------------------------------------------------------------- 1 | map c updir 2 | map t down 3 | map s up 4 | map r open 5 | 6 | map C clear 7 | map T tag-toggle 8 | map R rename 9 | 10 | map Sn :set sortby natural; set info 11 | map Ss :set sortby size; set info size 12 | map St :set sortby time; set info time 13 | map Sa :set sortby atime; set info atime 14 | map Sc :set sortby ctime; set info ctime 15 | map Se :set sortby ext; set info 16 | map ge bottom 17 | 18 | map D delete -------------------------------------------------------------------------------- /alacritty/themes/doom-one.yml: -------------------------------------------------------------------------------- 1 | # Colors (Doom One) 2 | colors: 3 | # Default colors 4 | primary: 5 | background: '0x282c34' 6 | foreground: '0xbbc2cf' 7 | 8 | # Normal colors 9 | normal: 10 | black: '0x282c34' 11 | red: '0xff6c6b' 12 | green: '0x98be65' 13 | yellow: '0xecbe7b' 14 | blue: '0x51afef' 15 | magenta: '0xc678dd' 16 | cyan: '0x46d9ff' 17 | white: '0xbbc2cf' 18 | -------------------------------------------------------------------------------- /bin/rofi-i3-marks: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | case $# in 4 | 0) 5 | # write the marks to stdout 6 | marks=$(i3-msg -t get_marks | tr -d "[]\"" | tr ',' '\n') 7 | echo -e "\x00prompt\x1fJump to mark" 8 | for mark in $marks; do 9 | echo -e "$mark\0" 10 | done 11 | ;; 12 | 13 | 1) 14 | i3-msg "[con_mark=\"$1\"] focus" &> /dev/null 15 | ;; 16 | 17 | *) 18 | echo "MEH" 19 | exit 1 20 | ;; 21 | esac 22 | -------------------------------------------------------------------------------- /bin/tmux-tasks: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if ! command -v mind &> /dev/null; then 4 | return 5 | fi 6 | 7 | count_path() { 8 | echo $(($(mind paths -s $1 | wc -l) - 1)) 9 | } 10 | 11 | # backlog number, WIP number 12 | echo "#[fg=blue] $(count_path /Tasks/Backlog) #[fg=magenta] $(count_path /Tasks/On-going) #[fg=green]󰄬 $(count_path /Tasks/Done) #[fg=yellow] $(count_path /Tasks/Frozen) #[fg=red]󰜺 $(count_path /Tasks/Cancelled) #[fg=black]| " 13 | -------------------------------------------------------------------------------- /aerc/accounts.conf: -------------------------------------------------------------------------------- 1 | [hadronized] 2 | check-mail = 5m 3 | check-mail-cmd = mbsync hadronized 4 | check-mail-timeout = 1m 5 | source = maildir://~/mail/hadronized 6 | outgoing = msmtp -a primary 7 | outgoing-cred-cmd = pass hadronized@strongly-typed-thoughts.net 8 | default = Inbox 9 | from = "Dimitri Sabadie" 10 | copy-to = Sent 11 | pgp-auto-sign = true 12 | pgp-key-id = A94386A8A6252ECB 13 | postpone = Drafts 14 | -------------------------------------------------------------------------------- /nvim/lua/pkg/neogit.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = { 'nvim-lua/plenary.nvim', 'sindrets/diffview.nvim' }, 3 | config = function() 4 | require'neogit'.setup { 5 | disable_builtin_notifications = true, 6 | 7 | integrations = { 8 | diffview = true, 9 | } 10 | } 11 | end, 12 | keybindings = { 13 | n = { 14 | { 15 | key = 'gg', 16 | cmd = 'Neogit', 17 | }, 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /nvim/lua/pkg/aerial.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require'aerial'.setup { 4 | layout = { 5 | default_direction = 'prefer_right', 6 | }, 7 | 8 | highlight_on_hover = true, 9 | manage_folds = true, 10 | placement = 'edge', 11 | show_guides = true, 12 | } 13 | end, 14 | keybindings = { 15 | n = { 16 | { 17 | key = 'co'; 18 | cmd = 'AerialToggle' 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /alacritty/themes/challenger-deep.toml: -------------------------------------------------------------------------------- 1 | [colors.bright] 2 | black = "0x565575" 3 | blue = "0x65b2ff" 4 | cyan = "0x63f2f1" 5 | green = "0x62d196" 6 | magenta = "0x906cff" 7 | red = "0xff5458" 8 | white = "0xa6b3cc" 9 | yellow = "0xffb378" 10 | 11 | [colors.normal] 12 | black = "0x100e23" 13 | blue = "0x91ddff" 14 | cyan = "0xaaffe4" 15 | green = "0x95ffa4" 16 | magenta = "0xc991e1" 17 | red = "0xff8080" 18 | white = "0xcbe3e7" 19 | yellow = "0xffe9aa" 20 | 21 | [colors.primary] 22 | background = "0x1b182c" 23 | foreground = "0xcbe3e7" 24 | -------------------------------------------------------------------------------- /bin/scripts/gs: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This script allows to switch branches easily. 4 | 5 | set -e 6 | 7 | header="Select a branch to switch to" 8 | autostash=0 9 | flags= 10 | while getopts "s" opt; do 11 | case $opt in 12 | s) 13 | autostash=1 14 | flags="-s $flags" 15 | ;; 16 | esac 17 | done 18 | 19 | choice=$(git branch | rg -v "^\*" | tr -d ' ' | sk \ 20 | --header="$header" \ 21 | --prompt="Switch branch: "\ 22 | ) 23 | r=$? 24 | 25 | [[ autostash -eq 1 ]] && git stash 26 | [ $r = 0 ] && git switch $choice 27 | -------------------------------------------------------------------------------- /bin/scripts/gr: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This script allows to rebase the current branch easily. 4 | 5 | header="Select a git branch to rebase on" 6 | flags= 7 | while getopts "ifs" opt; do 8 | case $opt in 9 | i) 10 | flags="-i $flags" 11 | ;; 12 | 13 | f) 14 | flags="-f $flags" 15 | ;; 16 | 17 | s) 18 | flags="--autostash $flags" 19 | ;; 20 | esac 21 | done 22 | 23 | choice=$(git branch -a | rg -v "^\*" | tr -d ' ' | fzf \ 24 | --header="$header [$flags]" \ 25 | --prompt="Rebase on: " \ 26 | ) 27 | 28 | [ $? = 0 ] && git rebase $choice $flags 29 | -------------------------------------------------------------------------------- /mbsync/.mbsyncrc: -------------------------------------------------------------------------------- 1 | IMAPAccount hadronized 2 | Host ssl0.ovh.net 3 | User hadronized@strongly-typed-thoughts.net 4 | PassCmd "pass hadronized@strongly-typed-thoughts.net" 5 | SSLType IMAPS 6 | CertificateFile /Users/hadronized/Documents/ca-certificates.pem 7 | 8 | IMAPStore hadronized-remote 9 | Account hadronized 10 | 11 | MaildirStore hadronized-local 12 | SubFolders Verbatim 13 | Path ~/mail/hadronized/ 14 | Inbox ~/mail/hadronized/Inbox 15 | 16 | Channel hadronized 17 | Far :hadronized-remote: 18 | Near :hadronized-local: 19 | Patterns * 20 | Create Both 21 | Expunge Both 22 | Remove Both 23 | SyncState * 24 | -------------------------------------------------------------------------------- /lazygit/config.yml: -------------------------------------------------------------------------------- 1 | gui: 2 | showCommandLog: false 3 | keybinding: 4 | universal: 5 | prevItem-alt: 's' 6 | nextItem-alt: 't' 7 | prevBlock-alt: 'c' 8 | nextBlock-alt: 'r' 9 | refresh: '$' 10 | prevTab: '(' 11 | nextTab: ')' 12 | branches: 13 | checkoutBranchByName: null 14 | rebaseBranch: 'R' 15 | renameBranch: null 16 | files: 17 | commitChanges: null 18 | refreshFiles: null 19 | stageAllChanges: null 20 | commits: 21 | squashDown: null 22 | renameCommit: null 23 | cherryPickCopy: null 24 | commitFiles: 25 | checkoutCommitFile: null 26 | stash: 27 | renameStash: null 28 | -------------------------------------------------------------------------------- /gitui/theme.ron: -------------------------------------------------------------------------------- 1 | ( 2 | selected_tab: Reset, 3 | command_fg: White, 4 | selection_bg: Blue, 5 | selection_fg: White, 6 | cmdbar_bg: Blue, 7 | cmdbar_extra_lines_bg: Blue, 8 | disabled_fg: DarkGray, 9 | diff_line_add: Green, 10 | diff_line_delete: Red, 11 | diff_file_added: LightGreen, 12 | diff_file_removed: LightRed, 13 | diff_file_moved: LightMagenta, 14 | diff_file_modified: Yellow, 15 | commit_hash: Magenta, 16 | commit_time: LightCyan, 17 | commit_author: Green, 18 | danger_fg: Red, 19 | push_gauge_bg: Blue, 20 | push_gauge_fg: Reset, 21 | tag_fg: LightMagenta, 22 | branch_fg: LightYellow, 23 | ) -------------------------------------------------------------------------------- /git/.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | email = dimitri.sabadie@gmail.com 3 | name = Dimitri Sabadie 4 | signingkey = /home/phaazon/.ssh/github.pub 5 | 6 | [alias] 7 | graph = log --graph --all --pretty=format:\"%C(yellow)%h%Cblue%d %Creset%s %C(green)%cr%Creset (%C(magenta)%an%Creset)\" 8 | fp = fetch --all --prune 9 | ll = log --oneline 10 | ca = commit --amend 11 | ce = commit --amend --no-edit 12 | [core] 13 | pager = less -F -X 14 | [commit] 15 | gpgsign = true 16 | [push] 17 | default = current 18 | [checkout] 19 | defaultRemote = origin 20 | [github] 21 | user = hadronized 22 | [rebase] 23 | autoSquash = true 24 | [init] 25 | defaultBranch = master 26 | [gpg] 27 | format = ssh 28 | -------------------------------------------------------------------------------- /gitui/key_bindings.ron: -------------------------------------------------------------------------------- 1 | ( 2 | focus_left: Some(( code: Char('c'), modifiers: ( bits: 0,),)), 3 | focus_right: Some(( code: Char('r'), modifiers: ( bits: 0,),)), 4 | focus_above: Some(( code: Char('s'), modifiers: ( bits: 0,),)), 5 | focus_below: Some(( code: Char('t'), modifiers: ( bits: 0,),)), 6 | 7 | move_left: Some(( code: Char('c'), modifiers: ( bits: 0,),)), 8 | move_right: Some(( code: Char('r'), modifiers: ( bits: 0,),)), 9 | move_up: Some(( code: Char('s'), modifiers: ( bits: 0,),)), 10 | move_down: Some(( code: Char('t'), modifiers: ( bits: 0,),)), 11 | 12 | open_help: Some(( code: Char('?'), modifiers: ( bits: 0,),)), 13 | 14 | diff_stage_lines: Some(( code: Char('k'), modifiers: ( bits: 0,),)), 15 | ) -------------------------------------------------------------------------------- /nvim/lua/pkg/satellite.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require('satellite').setup { 4 | current_only = false, 5 | winblend = 10, 6 | zindex = 40, 7 | excluded_filetypes = {}, 8 | width = 2, 9 | handlers = { 10 | search = { 11 | enable = true, 12 | }, 13 | diagnostic = { 14 | enable = true, 15 | }, 16 | gitsigns = { 17 | enable = true, 18 | }, 19 | marks = { 20 | enable = true, 21 | show_builtins = false, -- shows the builtin marks like [ ] < > 22 | }, 23 | }, 24 | } 25 | 26 | vim.api.nvim_set_hl(0, 'ScrollView', { link = 'PmenuSel' }) 27 | end 28 | } 29 | -------------------------------------------------------------------------------- /alacritty/alacritty.toml: -------------------------------------------------------------------------------- 1 | import = ["~/.config/alacritty/themes/catppuccin-macchiato.toml"] 2 | 3 | [cursor.style] 4 | blinking = "On" 5 | 6 | [font] 7 | size = 16.0 8 | 9 | [font.normal] 10 | family = "JetBrainsMono Nerd Font" 11 | style = "Thin" 12 | 13 | [selection] 14 | save_to_clipboard = true 15 | 16 | [mouse] 17 | hide_when_typing = true 18 | 19 | [hints] 20 | alphabet = "etovxqpdygfblzhckisuran" 21 | 22 | [[hints.enabled]] 23 | regex = "[a-zA-Z0-9-_/@#]+" 24 | hyperlinks = true 25 | action = "Copy" 26 | binding.key = "w" 27 | binding.mods = "Control | Shift" 28 | 29 | [[hints.enabled]] 30 | regex = "(https?|file)://[^ '\"]+" 31 | hyperlinks = true 32 | command = "xdg-open" 33 | binding.key = "o" 34 | binding.mods = "Control | Shift" 35 | -------------------------------------------------------------------------------- /git/allowed_signers: -------------------------------------------------------------------------------- 1 | dimitri.sabadie@gmail.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCg/pFs4m5Ld3h4ehSBZF/o4qEs2iMZ0CxkPYfxhZt8oz8KOR7mv7gBxjCNC0v7IrDPxxxs5PRDx1GyRjUgW1oGh9qBCVGLpsKN7CCEHzelAXpgl1PMtFGP/GDVntc8vDJ+1Q3eNUEIDZdxHVjd6+LvChSnhwDfqnqdOsVXPOgJrakKB+mHo3mWcdt9/CwoayFbDaCf7/ns5Fn5uaaPH5VrQoBRcgUBiGnDv4/6WJSpZkWgGgYPPW7l5xmAKp0YWp2UZKykNJ2iKk6XMOvzgYq/mfoJiRlPASMttqHe7tfGHIuYEJ01pHGOIr5JJ2vj7l+NlvcGiqEA0TQOOsuw5VrjTxeWcDljIuwjNI0P8my1F3RO7x8bjSwMu3s+oRRKo3snks2QTguOvXwuyv33O+owD03/uO1gNvhYL7a8TrVo4beEDwGLui5Fu0VUR6z5hB4RlT4Al1PrmA55THVHTncLnLyW0atNsLWs9ei4lawHtSK964GjlYyfnFxLzqSV4IUzV943ZPBq/8XBAIQ9szrCH8uEMHI761Q6/zEGdzf/BCLszAb1l+ps9KDDBKnK+4Y4fWP8Yo5fxZr5LZcPZX7410PpegIyMXFRiSM5l5z9sH7bjqj6inbX6lXv07PGv45evtvYW/ov6x1dxlZ8OD01AVfghjabYkt06HBNz3ulXQ== phaazon@gravastar 2 | -------------------------------------------------------------------------------- /kitty/palenight.conf: -------------------------------------------------------------------------------- 1 | # Palenight Colorscheme for Kitty 2 | # Based on https://github.com/sindresorhus/hyper-snazzy 3 | 4 | foreground #959dcb 5 | background #292d3e 6 | selection_foreground #eceef0 7 | selection_background #607c8b 8 | url_color #82aaff 9 | 10 | # black 11 | color0 #434759 12 | color8 #434758 13 | 14 | # red 15 | color1 #f07178 16 | color9 #ff8b92 17 | 18 | # green 19 | color2 #c3e88d 20 | color10 #ddffa7 21 | 22 | # yellow 23 | color3 #ffcb6b 24 | color11 #ffe585 25 | 26 | # blue 27 | color4 #82aaff 28 | color12 #9cc4ff 29 | 30 | # magenta 31 | color5 #c792ea 32 | color13 #e1acff 33 | 34 | # cyan 35 | color6 #89ddff 36 | color14 #a3f7ff 37 | 38 | # white 39 | color7 #d0d0d0 40 | color15 #fefefe 41 | -------------------------------------------------------------------------------- /alacritty/themes/catppuccin.toml: -------------------------------------------------------------------------------- 1 | [colors.bright] 2 | black = "#5C6370" 3 | blue = "#61AFEF" 4 | cyan = "#54AFBC" 5 | green = "#98C379" 6 | magenta = "#C678DD" 7 | red = "#E86671" 8 | white = "0xf7f7f7" 9 | yellow = "#E5C07B" 10 | 11 | [colors.cursor] 12 | cursor = "#D9D9D9" 13 | text = "#CDD6F4" 14 | 15 | [colors.dim] 16 | black = "#5C6370" 17 | blue = "#61AFEF" 18 | cyan = "0x5c8482" 19 | green = "#98C379" 20 | magenta = "0x6e4962" 21 | red = "0x74423f" 22 | white = "0x828282" 23 | yellow = "#E5C07B" 24 | 25 | [colors.normal] 26 | black = "#5B6078" 27 | blue = "#61AFEF" 28 | cyan = "#54AFBC" 29 | green = "#98C379" 30 | magenta = "#C678DD" 31 | red = "#E86671" 32 | white = "#ABB2BF" 33 | yellow = "#E5C07B" 34 | 35 | [colors.primary] 36 | background = "#1E1E2E" 37 | foreground = "0xd6d6d6" 38 | -------------------------------------------------------------------------------- /bin/bspwm-rofi: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -x 4 | 5 | case "$1" in 6 | "switch") 7 | desktop=$(bspc query -D --names | rofi -dmenu -p "Jump to desktop") 8 | [[ -n $desktop ]] && bspc desktop -f $desktop 9 | ;; 10 | 11 | "new-desktop") 12 | new_desktop=$(rofi -dmenu -p "Desktop name") 13 | [[ -n $new_desktop ]] && bspc monitor -a $new_desktop 14 | ;; 15 | 16 | "rename-desktop") 17 | desktop=$(bspc query -D -d --names | rofi -dmenu -p "Rename desktop") 18 | [[ -n $desktop ]] && bspc desktop -n $desktop 19 | ;; 20 | 21 | "send-to-desktop") 22 | desktop=$(bspc query -D --names | rofi -dmenu -p "Send node to") 23 | [[ -n $desktop ]] && bspc node -d $desktop 24 | ;; 25 | 26 | "remove-desktop") 27 | bspc desktop -r 28 | ;; 29 | esac 30 | -------------------------------------------------------------------------------- /newsboat/colorscheme: -------------------------------------------------------------------------------- 1 | color background default default 2 | color listnormal black default 3 | color listnormal_unread green default 4 | color listfocus blue default bold 5 | color listfocus_unread green default bold 6 | color info default black 7 | color article default default 8 | 9 | # highlights 10 | highlight article "^(Feed):.*$" white default bold 11 | highlight article "^(Title):.*$" green default bold 12 | highlight article "^(Author):.*$" blue default 13 | highlight article "^(Date):.*$" magenta default 14 | highlight article "^(Link):.*$" cyan default 15 | highlight article "https?://[^ ]+" cyan default underline 16 | highlight article "\\[image\\ [0-9]+\\]" green default 17 | -------------------------------------------------------------------------------- /alacritty/alacritty-macOS.toml: -------------------------------------------------------------------------------- 1 | import = ["~/.config/alacritty/themes/catppuccin-macchiato.toml"] 2 | 3 | [cursor.style] 4 | blinking = "On" 5 | 6 | [font] 7 | size = 16.0 8 | 9 | [font.normal] 10 | family = "JetBrainsMono Nerd Font" 11 | style = "Thin" 12 | 13 | [selection] 14 | save_to_clipboard = true 15 | 16 | [window] 17 | option_as_alt = "OnlyLeft" 18 | 19 | [mouse] 20 | hide_when_typing = true 21 | 22 | [hints] 23 | alphabet = "etovxqpdygfblzhckisuran" 24 | 25 | [[hints.enabled]] 26 | regex = "[a-zA-Z0-9-_/@#]+" 27 | hyperlinks = true 28 | action = "Copy" 29 | binding.key = "w" 30 | binding.mods = "Control | Shift" 31 | 32 | [[hints.enabled]] 33 | regex = "(https?|file)://[^ '\"()]+" 34 | hyperlinks = true 35 | command = "open" 36 | binding.key = "o" 37 | binding.mods = "Control | Shift" 38 | -------------------------------------------------------------------------------- /deprecated/colorscheme: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | THEMES_DIR=${THEMES_DIR:-~/.config/colorscheme/themes} 6 | 7 | # Create the themes directory if it doesn’t already exist 8 | test -d $THEMES_DIR || (echo "- Creating themes directory." && mkdir -p $THEMES_DIR) 9 | 10 | if [ "$#" != "1" ]; then 11 | echo "Expecting a colorscheme." 12 | exit 1 13 | fi 14 | 15 | COLORSCHEME=$1 16 | COLORSCHEME_SCRIPT=$THEMES_DIR/$COLORSCHEME 17 | 18 | if [ ! -f "$COLORSCHEME_SCRIPT" ]; then 19 | echo "$COLORSCHEME is not a colorscheme currently registered." 20 | exit 1 21 | fi 22 | 23 | source $COLORSCHEME_SCRIPT 24 | 25 | color_polybar && echo "- Applied $COLORSCHEME to polybar." 26 | color_i3wm && echo "- Applied $COLORSCHEME to i3wm." 27 | color_neovim && echo "- Applied $COLORSCHEME to neovim." 28 | color_termite && echo "- Applied $COLORSCHEME to termite." 29 | -------------------------------------------------------------------------------- /nvim/lua/pkg/edge.lua: -------------------------------------------------------------------------------- 1 | return { 2 | disable = true, 3 | config = function() 4 | vim.g.edge_style = 'neon' 5 | vim.g.edge_enable_italic = 1 6 | vim.g.edge_better_performance = 1 7 | vim.g.edge_diagnostic_text_highlight = 1 8 | vim.g.edge_diagnostic_line_highlight = 1 9 | vim.g.edge_diagnostic_virtual_text = 'colored' 10 | vim.g.edge_spell_foreground = 'colored' 11 | 12 | -- vim.cmd('colorscheme edge') 13 | -- require 'colorscheme' 14 | 15 | -- edge overrides Hop and I don’t really like its default, it’s too dimmed to me; so we re-insert them 16 | vim.api.nvim_command('highlight HopNextKey guifg=#ff007c gui=bold ctermfg=198 cterm=bold') 17 | vim.api.nvim_command('highlight HopNextKey1 guifg=#00dfff gui=bold ctermfg=45 cterm=bold') 18 | vim.api.nvim_command('highlight HopNextKey2 guifg=#2b8db3 ctermfg=33') 19 | vim.api.nvim_command('highlight HopUnmatched guifg=#666666 guibg=bg guisp=#666666 ctermfg=242') 20 | 21 | end 22 | } 23 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-treesitter-context.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = { 'nvim-treesitter/nvim-treesitter' }, 3 | config = function() 4 | require'treesitter-context'.setup{ 5 | enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) 6 | max_lines = 10, -- How many lines the window should span. Values <= 0 mean no limit. 7 | trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer' 8 | min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit. 9 | mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline' 10 | -- Separator between context and content. Should be a single character string, like '-'. 11 | -- When separator is set, the context will only show up when there are at least 2 lines above cursorline. 12 | separator = '─', 13 | } 14 | end, 15 | keybindings = { 16 | n = { 17 | { 18 | key = 'cc', 19 | cmd = 'TSContextToggle', 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /aerc/stylesets/catppuccin-macchiato: -------------------------------------------------------------------------------- 1 | *.default=true 2 | *.normal=true 3 | 4 | default.fg=#cad3f5 5 | 6 | error.fg=#ed8796 7 | warning.fg=#f5a97f 8 | success.fg=#a6da95 9 | 10 | tab.fg=#6e738d 11 | tab.bg=#1e2030 12 | tab.selected.fg=#cad3f5 13 | tab.selected.bg=#24273a 14 | tab.selected.bold=true 15 | 16 | border.fg=#181926 17 | border.bold=true 18 | 19 | msglist_unread.bold=true 20 | msglist_flagged.fg=#eed49f 21 | msglist_flagged.bold=true 22 | msglist_result.fg=#8aadf4 23 | msglist_result.bold=true 24 | msglist_*.selected.bold=true 25 | msglist_*.selected.bg=#363a4f 26 | 27 | dirlist_*.selected.bold=true 28 | dirlist_*.selected.bg=#363a4f 29 | 30 | statusline_default.fg=#939ab7 31 | statusline_default.bg=#363a4f 32 | statusline_error.bold=true 33 | statusline_success.bold=true 34 | 35 | [viewer] 36 | url.fg=#8aadf4 37 | url.underline=true 38 | header.bold=true 39 | signature.dim=true 40 | diff_meta.bold=true 41 | diff_chunk.fg=#8aadf4 42 | diff_chunk_func.fg=#8aadf4 43 | diff_chunk_func.bold=true 44 | diff_add.fg=#a6da95 45 | diff_del.fg=#ed8796 46 | quote_*.fg=#6e738d 47 | quote_1.fg=#939ab7 48 | -------------------------------------------------------------------------------- /idea/ideavimrc: -------------------------------------------------------------------------------- 1 | set easymotion 2 | set commentary 3 | set textobj-entire 4 | set ReplaceWithRegister 5 | set argtextobj 6 | set showmode 7 | set incsearch 8 | set nu 9 | 10 | set ideajoin 11 | set ideastatusicon=gray 12 | set idearefactormode=keep 13 | 14 | let mapleader=" " 15 | let maplocalleader="," 16 | let g:argtextobj_pairs="[:],(:),<:>" 17 | 18 | noremap é w 19 | noremap É W 20 | noremap w 21 | noremap c h 22 | noremap r l 23 | noremap t j 24 | noremap s k 25 | noremap C H 26 | noremap R L 27 | noremap T J 28 | noremap S K 29 | noremap zs zj 30 | noremap zt zk 31 | noremap j t 32 | noremap à t 33 | noremap J T 34 | noremap À T 35 | noremap l c 36 | noremap L C 37 | noremap h r 38 | noremap H R 39 | noremap k s 40 | noremap K S 41 | noremap ]k ]s 42 | noremap [k [s 43 | noremap gs gk 44 | noremap gt gj 45 | noremap « < 46 | noremap » > 47 | noremap wt j 48 | noremap ws k 49 | noremap wc h 50 | noremap wr l 51 | noremap wd c 52 | noremap wo s 53 | noremap wp o 54 | noremap 55 | 56 | map è '(easymotion-s)' 57 | map È '(easymotion-f)' 58 | -------------------------------------------------------------------------------- /intellij/ideavim/ideavimrc: -------------------------------------------------------------------------------- 1 | set easymotion 2 | set commentary 3 | set textobj-entire 4 | set ReplaceWithRegister 5 | set argtextobj 6 | set showmode 7 | set incsearch 8 | set nu 9 | 10 | set ideajoin 11 | set ideastatusicon=gray 12 | set idearefactormode=keep 13 | 14 | let mapleader=" " 15 | let maplocalleader="," 16 | let g:argtextobj_pairs="[:],(:),<:>" 17 | 18 | noremap é w 19 | noremap É W 20 | noremap w 21 | noremap c h 22 | noremap r l 23 | noremap t j 24 | noremap s k 25 | noremap C H 26 | noremap R L 27 | noremap T J 28 | noremap S K 29 | noremap zs zj 30 | noremap zt zk 31 | noremap j t 32 | noremap à t 33 | noremap J T 34 | noremap À T 35 | noremap l c 36 | noremap L C 37 | noremap h r 38 | noremap H R 39 | noremap k s 40 | noremap K S 41 | noremap ]k ]s 42 | noremap [k [s 43 | noremap gs gk 44 | noremap gt gj 45 | noremap « < 46 | noremap » > 47 | noremap wt j 48 | noremap ws k 49 | noremap wc h 50 | noremap wr l 51 | noremap wd c 52 | noremap wo s 53 | noremap wp o 54 | noremap 55 | 56 | map è '(easymotion-s)' 57 | map È '(easymotion-f)' 58 | -------------------------------------------------------------------------------- /nvim/lua/pkg/kanagawa.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require('kanagawa').setup({ 4 | undercurl = true, -- enable undercurls 5 | commentStyle = { italic = true }, 6 | functionStyle = {}, 7 | keywordStyle = { italic = true}, 8 | statementStyle = { bold = true }, 9 | typeStyle = {}, 10 | variablebuiltinStyle = { italic = true}, 11 | specialReturn = true, -- special highlight for the return keyword 12 | specialException = true, -- special highlight for exception handling keywords 13 | transparent = false, -- do not set background color 14 | dimInactive = true, -- dim inactive window `:h hl-NormalNC` 15 | globalStatus = true, -- adjust window separators highlight for laststatus=3 16 | terminalColors = true, -- define vim.g.terminal_color_{0,17} 17 | colors = {}, 18 | overrides = {}, 19 | theme = "default" -- Load "default" theme or the experimental "light" theme 20 | }) 21 | 22 | -- vim.cmd('colorscheme kanagawa') 23 | -- require 'colorscheme' 24 | end 25 | } 26 | -------------------------------------------------------------------------------- /nvim/snippets/markdown.snippets: -------------------------------------------------------------------------------- 1 | snippet twin-new-plugin "Insert a new plugin bloc" b 2 |

3 | 4 | 5 | 6 | 7 | 8 | ${1} 9 | 10 | 11 |

12 | 13 | ![${1}]() 14 | 15 | ${2:Plugin description} 16 | 17 | - [Reddit](${3}) 18 | - [GitHub](${4}) 19 | 20 | --- 21 | 22 | snippet twin-update-plugin "Insert an update plugin bloc" b 23 |

24 | 25 | 26 | 27 | 28 | 29 | ${1} 30 | 31 | 32 |

33 | 34 | > ${2:Plugin description} 35 | 36 | ![${1}]() 37 | 38 | ${3:Content of the change} 39 | 40 | - [Reddit](${4}) 41 | - [GitHub](${5}) 42 | 43 | --- 44 | 45 | snippet twin-guide "Insert a guide bloc" b 46 |

47 | 48 | 49 | 50 | 51 | 52 | ${1} 53 | 54 | 55 |

56 | 57 | $0 58 | 59 | --- 60 | -------------------------------------------------------------------------------- /nvim/lua/pkg/catppuccin.lua: -------------------------------------------------------------------------------- 1 | return { 2 | as = 'catppuccin', 3 | init = function() 4 | vim.g.catppuccin_flavour = 'macchiato' -- latte, frappe, macchiato, mocha 5 | end, 6 | config = function() 7 | require'catppuccin'.setup { 8 | transparent_background = false, 9 | 10 | term_colors = false, 11 | 12 | compile = { 13 | enabled = false, 14 | path = vim.fn.stdpath("cache") .. "/catppuccin", 15 | }, 16 | 17 | dim_inactive = { 18 | enabled = true, 19 | shade = "dark", 20 | percentage = 0.15, 21 | }, 22 | 23 | styles = { 24 | comments = { "italic" }, 25 | conditionals = { "italic" }, 26 | loops = {}, 27 | functions = {}, 28 | keywords = {}, 29 | strings = {}, 30 | variables = {}, 31 | numbers = {}, 32 | booleans = {}, 33 | properties = {}, 34 | types = {}, 35 | operators = {}, 36 | }, 37 | 38 | integrations = { 39 | -- For various plugins integrations see https://github.com/catppuccin/nvim#integrations 40 | }, 41 | 42 | color_overrides = {}, 43 | 44 | highlight_overrides = {}, 45 | } 46 | 47 | vim.cmd('colorscheme catppuccin') 48 | require 'colorscheme' 49 | end 50 | } 51 | -------------------------------------------------------------------------------- /termite/config: -------------------------------------------------------------------------------- 1 | [options] 2 | scroll_on_output = false 3 | scroll_on_keystroke = true 4 | audible_bell = false 5 | mouse_autohide = false 6 | allow_bold = true 7 | dynamic_title = true 8 | urgent_on_bell = true 9 | clickable_url = true 10 | font = JetBrainsMono Nerd Font 20 11 | scrollback_lines = 10000 12 | search_wrap = true 13 | icon_name = terminal 14 | #geometry = 640x480 15 | 16 | # "system", "on" or "off" 17 | cursor_blink = on 18 | 19 | # "block", "underline" or "ibeam" 20 | cursor_shape = ibeam 21 | 22 | # $BROWSER is used by default if set, with xdg-open as a fallback 23 | #browser = 24 | 25 | # set size hints for the window 26 | size_hints = true 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 | 36 | foreground= #abb2bf 37 | background= #2b2d37 38 | 39 | color0 = #363a4e 40 | color8 = #666666 41 | color1 = #ec7279 42 | color9 = #fc626b 43 | color2 = #a0c980 44 | color10 = #9de465 45 | color3 = #deb974 46 | color11 = #efbe63 47 | color4 = #6cb6eb 48 | color12 = #5bb9fc 49 | color5 = #d38aea 50 | color13 = #da7cf8 51 | color6 = #5dbbc1 52 | color14 = #30e2ee 53 | color7 = #c5cdd9 54 | color15 = #b2c9ec 55 | 56 | vim: ft=dosini cms=#%s 57 | -------------------------------------------------------------------------------- /alacritty/themes/catppuccin-macchiato.toml: -------------------------------------------------------------------------------- 1 | [[colors.indexed_colors]] 2 | color = "#F5A97F" 3 | index = 16 4 | 5 | [[colors.indexed_colors]] 6 | color = "#F4DBD6" 7 | index = 17 8 | 9 | [colors.bright] 10 | black = "#5B6078" 11 | blue = "#8AADF4" 12 | cyan = "#8BD5CA" 13 | green = "#A6DA95" 14 | magenta = "#F5BDE6" 15 | red = "#ED8796" 16 | white = "#A5ADCB" 17 | yellow = "#EED49F" 18 | 19 | [colors.cursor] 20 | cursor = "#F4DBD6" 21 | text = "#24273A" 22 | 23 | [colors.dim] 24 | black = "#494D64" 25 | blue = "#8AADF4" 26 | cyan = "#8BD5CA" 27 | green = "#A6DA95" 28 | magenta = "#F5BDE6" 29 | red = "#ED8796" 30 | white = "#B8C0E0" 31 | yellow = "#EED49F" 32 | 33 | [colors.hints.end] 34 | background = "#A5ADCB" 35 | foreground = "#24273A" 36 | 37 | [colors.hints.start] 38 | background = "#EED49F" 39 | foreground = "#24273A" 40 | 41 | [colors.normal] 42 | black = "#494D64" 43 | blue = "#8AADF4" 44 | cyan = "#8BD5CA" 45 | green = "#A6DA95" 46 | magenta = "#F5BDE6" 47 | red = "#ED8796" 48 | white = "#B8C0E0" 49 | yellow = "#EED49F" 50 | 51 | [colors.primary] 52 | background = "#24273A" 53 | bright_foreground = "#CAD3F5" 54 | dim_foreground = "#CAD3F5" 55 | foreground = "#CAD3F5" 56 | 57 | [colors.search.focused_match] 58 | background = "#A6DA95" 59 | foreground = "#24273A" 60 | 61 | [colors.search.matches] 62 | background = "#A5ADCB" 63 | foreground = "#24273A" 64 | 65 | [colors.selection] 66 | background = "#F4DBD6" 67 | text = "#24273A" 68 | 69 | [colors.vi_mode_cursor] 70 | cursor = "#B7BDF8" 71 | text = "#24273A" 72 | -------------------------------------------------------------------------------- /atom/config.cson: -------------------------------------------------------------------------------- 1 | "*": 2 | "atom-fuzzy-grep": 3 | preserveLastSearch: true 4 | "atom-ide-ui": 5 | "atom-ide-diagnostics-ui": 6 | showDiagnosticTraces: true 7 | "atom-package-deps": 8 | ignored: [ 9 | "ide-rust" 10 | ] 11 | core: 12 | allowPendingPaneItems: false 13 | audioBeep: false 14 | closeEmptyWindows: false 15 | colorProfile: "srgb" 16 | disabledPackages: [ 17 | "tabs" 18 | ] 19 | projectHome: "/home/phaazon/dev" 20 | telemetryConsent: "no" 21 | titleBar: "hidden" 22 | uriHandlerRegistration: "always" 23 | "easy-motion-redux": 24 | replaceCharacters: "etovxqpdygéèfblzhckisuran" 25 | editor: 26 | fontFamily: "JetBrains Mono" 27 | fontSize: 19 28 | preferredLineLength: 120 29 | showIndentGuide: true 30 | showInvisibles: true 31 | softWrap: true 32 | "exception-reporting": 33 | userId: "19f31b2d-3465-43e7-b84b-aed72ed1b55c" 34 | "git-blame": {} 35 | "ide-haskell": 36 | onCursorMove: "Show Tooltip" 37 | onSavePrettify: true 38 | onSavePrettifyFormats: 39 | "source*cabal": true 40 | stylishHaskellPath: "ormolu" 41 | "ide-purescript": 42 | addPscPackageSources: true 43 | addSpagoSources: true 44 | buildCommand: "spago build" 45 | "linter-ui-default": 46 | panelHeight: 300 47 | "status-bar": {} 48 | "tree-view": 49 | hideVcsIgnoredFiles: true 50 | welcome: 51 | showOnStartup: false 52 | ".rust.source": 53 | editor: 54 | preferredLineLength: 99 55 | -------------------------------------------------------------------------------- /bin/shell-functions: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This file contains a bunch of shell functions I use a lot. It should be sourced in the ~/._rc. 4 | 5 | # Switch to a project directory. 6 | # 7 | # The PROJ_DIR environment variable can be set to change the directory where the projects are expected to be found. 8 | p() { 9 | # The directory where we expect the projects to be in. 10 | proj_dir=${PROJ_DIR:-~/src} 11 | 12 | project=$(/bin/ls $proj_dir | sk --prompt "Switch to project: ") 13 | [ -n "$project" ] && cd $proj_dir/$project 14 | } 15 | 16 | # Easily switch between tmux session. 17 | sw() { 18 | session=$(tmux ls -F "#S" | sk --prompt "Switch to tmux session: ") 19 | 20 | [ -n "$session" ] && tmux switch-client -t $session 21 | } 22 | 23 | # Create a new entry in Mind at /Notes/Triage to be moved back later to something more specific. 24 | note() { 25 | mind ins -fos /Notes/Triage -n $(date +%Y%m%d-%H%M%S) 26 | } 27 | 28 | # Get the current backlog. 29 | backlog() { 30 | mind paths -s /Tasks/Backlog 31 | } 32 | 33 | # Get WIP tasks. 34 | wip() { 35 | mind paths -s /Tasks/On-going 36 | } 37 | 38 | # Open PRs. 39 | prs() { 40 | mind paths -s '/Open PRs' 41 | } 42 | 43 | # Name of currently selected kitty tab. 44 | kitty_current_tab_name() { 45 | kitty @ ls | jq '.[0].tabs | map(select(.is_focused==true)) | .[0].title' 46 | } 47 | 48 | # Zellij session attach helper. 49 | za() { 50 | session=$(zellij ls | sk --prompt "Attach to Zellij session: ") 51 | [ -n "$session" ] && zellij attach $session 52 | } 53 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | run = ':TSUpdate', 3 | config = function() 4 | require'nvim-treesitter.configs'.setup { 5 | renderer = { 6 | indent_markers = { 7 | enable = true, 8 | }, 9 | 10 | root_folder_modifier = ':.', 11 | 12 | show_icons = { 13 | git = true, 14 | folder = true, 15 | file = true, 16 | }, 17 | 18 | 19 | icons = { 20 | glyph = { 21 | default = '', 22 | symlink = '', 23 | git = { 24 | unstaged = '✗', 25 | staged = '✓', 26 | unmerged = '', 27 | renamed = '➜', 28 | untracked = '★' 29 | }, 30 | folder = { 31 | default = '', 32 | open = '' 33 | }, 34 | }, 35 | }, 36 | 37 | higlight_git = true, 38 | }, 39 | 40 | highlight = { 41 | enable = true, 42 | }, 43 | 44 | indent = { 45 | enable = true, 46 | }, 47 | 48 | textobjects = { 49 | enable = true, 50 | }, 51 | 52 | incremental_selection = { 53 | enable = true, 54 | keymaps = { 55 | init_selection = "gnn", 56 | node_incremental = "grn", 57 | scope_incremental = "grc", 58 | node_decremental = "grm", 59 | }, 60 | }, 61 | 62 | autotag = { 63 | enable = true, 64 | } 65 | } 66 | end, 67 | } 68 | -------------------------------------------------------------------------------- /nvim/lua/pkg/dap.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | local dap = require'dap' 4 | 5 | vim.fn.sign_define('DapBreakpoint', {text='⬤', texthl='String', linehl='', numhl=''}) 6 | vim.fn.sign_define('DapStopped', {text='➔', texthl='ErrorMsg', linehl='', numhl=''}) 7 | 8 | dap.adapters.rust = { 9 | type = 'executable', 10 | command = '/usr/bin/lldb-vscode', 11 | name = 'lldb' 12 | } 13 | 14 | dap.configurations.rust = { 15 | { 16 | name = 'Launch', 17 | type = 'lldb', 18 | request = 'launch', 19 | program = function() 20 | return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') 21 | end, 22 | cwd = '${workspaceFolder}', 23 | stopOnEntry = false, 24 | args = {}, 25 | }, 26 | } 27 | end, 28 | keybindings = { 29 | n = { 30 | { 31 | key = 'dc', 32 | lua = "require'dap'.continue()" 33 | }, 34 | { 35 | key = 'dn', 36 | lua = "require'dap'.step_over()" 37 | }, 38 | { 39 | key = 'di', 40 | lua = "require'dap'.step_into()" 41 | }, 42 | { 43 | key = 'do', 44 | lua = "require'dap'.step_out()" 45 | }, 46 | { 47 | key = 'db', 48 | lua = "require'dap'.toggle_breakpoint()" 49 | }, 50 | { 51 | key = 'dr', 52 | lua = "require'dap'.repl.open()" 53 | }, 54 | { 55 | key = 'dd', 56 | lua = "require'dapui'.toggle()" 57 | }, 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /nvim/lua/pkg/incline.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | require('incline').setup { 4 | debounce_threshold = { 5 | falling = 50, 6 | rising = 10 7 | }, 8 | hide = { 9 | cursorline = true, 10 | focused_win = true, 11 | only_win = true 12 | }, 13 | highlight = { 14 | groups = { 15 | InclineNormal = { 16 | default = true, 17 | group = "NormalFloat" 18 | }, 19 | InclineNormalNC = { 20 | default = true, 21 | group = "NormalFloat" 22 | } 23 | } 24 | }, 25 | ignore = { 26 | buftypes = "special", 27 | filetypes = {}, 28 | floating_wins = true, 29 | unlisted_buffers = true, 30 | wintypes = "special" 31 | }, 32 | render = "basic", 33 | window = { 34 | margin = { 35 | horizontal = 1, 36 | vertical = 0 37 | }, 38 | options = { 39 | signcolumn = "no", 40 | wrap = false 41 | }, 42 | padding = 1, 43 | padding_char = " ", 44 | placement = { 45 | horizontal = "right", 46 | vertical = "top" 47 | }, 48 | width = "fit", 49 | winhighlight = { 50 | active = { 51 | EndOfBuffer = "None", 52 | Normal = "InclineNormal", 53 | Search = "None" 54 | }, 55 | inactive = { 56 | EndOfBuffer = "None", 57 | Normal = "InclineNormalNC", 58 | Search = "None" 59 | } 60 | }, 61 | zindex = 50 62 | } 63 | } 64 | end 65 | } 66 | -------------------------------------------------------------------------------- /bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Monitor and workspaces. 4 | DESKTOP_HOSTNAME="orchid" 5 | LAPTOP_HOSTNAME="monoid-prime" 6 | HOST=${HOST:-$(cat /etc/hostname)} 7 | 8 | case "$HOST" in 9 | "$DESKTOP_HOSTNAME") 10 | bspc monitor DP-2 -d 1 2 3 4 5 11 | bspc monitor HDMI-0 -d 6 7 8 9 0 12 | ;; 13 | 14 | "$DESKTOP_HOSTNAME-mono") 15 | bspc monitor DP-2 -d 1 2 3 4 5 6 7 8 9 0 16 | ;; 17 | 18 | "$LAPTOP_HOSTNAME") 19 | bspc monitor eDP1 -d 1 2 3 4 5 6 7 8 9 0 20 | ;; 21 | esac 22 | 23 | # Visual. 24 | bspc config top_padding 20 25 | bspc config window_gap 10 26 | bspc config border_width 2 27 | bspc config normal_border_color "#363a4e" 28 | bspc config active_border_color "#b2c9ec" 29 | bspc config focused_border_color "#a0c980" 30 | bspc config presel_feedback_color "#da7cf8" 31 | bspc config borderless_monocle false 32 | bspc config gapless_monocle false 33 | bspc config top_monocle_padding 0 34 | bspc config split_ratio 0.5 35 | 36 | # Behavior. 37 | bspc config pointer_modifier mod1 38 | bspc config automatic_scheme alternate 39 | bspc config focus_follows_pointer true 40 | bspc config pointer_follows_monitor true 41 | bspc config honor_size_hints false 42 | 43 | # Autostart. 44 | sxhkd & 45 | dunst & 46 | nitrogen --restore & 47 | picom --experimental-backends & 48 | xsetroot -cursor_name left_ptr 49 | xset r rate 200 30 50 | 51 | pkill polybar 52 | case "$HOST" in 53 | "$DESKTOP_HOSTNAME") 54 | polybar desktop-primary & 55 | polybar desktop-secondary & 56 | ;; 57 | 58 | "$LAPTOP_HOSTNAME") 59 | polybar laptop-primary & 60 | ;; 61 | esac 62 | -------------------------------------------------------------------------------- /nvim/lua/pkg/hop.lua: -------------------------------------------------------------------------------- 1 | return { 2 | branch = 'v2', 3 | config = function() 4 | require'hop'.setup { 5 | keys = 'etovxqpdygfblzhckisuran', 6 | } 7 | end, 8 | keybindings = { 9 | [''] = { 10 | { 11 | key = 'è', 12 | cmd = 'HopWord', 13 | }, 14 | { 15 | key = 'È', 16 | cmd = 'HopWordMW', 17 | }, 18 | { 19 | key = 'he', 20 | lua = "require'hop'.hint_words({ hint_position = require'hop.hint'.HintPosition.END, hint_offset = 1})", 21 | }, 22 | { 23 | key = 'hE', 24 | lua = "require'hop'.hint_words({ hint_position = require'hop.hint'.HintPosition.END, hint_offset = 1, mult_windows = true})", 25 | }, 26 | { 27 | key = 'hl', 28 | cmd = 'HopLineStart', 29 | }, 30 | { 31 | key = 'hL', 32 | cmd = 'HopLineStartMW', 33 | }, 34 | { 35 | key = 'hs', 36 | cmd = 'HopPattern', 37 | }, 38 | { 39 | key = 'hS', 40 | cmd = 'HopPatternMW', 41 | }, 42 | { 43 | key = 'hc', 44 | cmd = 'HopChar1', 45 | }, 46 | { 47 | key = 'hC', 48 | cmd = 'HopChar1MW', 49 | }, 50 | { 51 | key = 'f', 52 | lua = "require'hop'.hint_char1({ direction = require'hop.hint'.HintDirection.AFTER_CURSOR, current_line_only = true })", 53 | }, 54 | { 55 | key = 'F', 56 | lua = "require'hop'.hint_char1({ direction = require'hop.hint'.HintDirection.BEFORE_CURSOR, current_line_only = true })", 57 | }, 58 | { 59 | key = 'à', 60 | lua = "require'hop'.hint_char1({ direction = require'hop.hint'.HintDirection.AFTER_CURSOR, current_line_only = true, hint_offset = -1 })", 61 | }, 62 | { 63 | key = 'À', 64 | lua = "require'hop'.hint_char1({ direction = require'hop.hint'.HintDirection.BEFORE_CURSOR, current_line_only = true, hint_offset = -1 })", 65 | }, 66 | }, 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /nvim/lua/pkg/nvim-tree.lua: -------------------------------------------------------------------------------- 1 | return { 2 | as = 'nvim-tree', 3 | init = function() 4 | vim.g.nvim_tree_side = 'left' 5 | vim.g.nvim_tree_width = 40 6 | vim.g.nvim_tree_allow_resize = 1 7 | end, 8 | config = function() 9 | local tree_cb = require'nvim-tree.config'.nvim_tree_callback 10 | 11 | require'nvim-tree'.setup { 12 | update_focused_file = { 13 | enable = true, 14 | }, 15 | view = { 16 | mappings = { 17 | custom_only = true, 18 | list = { 19 | -- default mappings 20 | { key = { "", "" }, cb = tree_cb("edit") }, 21 | { key = { "o" }, cb = tree_cb("cd") }, 22 | { key = { "" }, cb = tree_cb("vsplit") }, 23 | { key = { "" }, cb = tree_cb("split") }, 24 | { key = { "" }, cb = tree_cb("tabnew") }, 25 | { key = { "" }, cb = tree_cb("close_node") }, 26 | { key = { "" }, cb = tree_cb("close_node") }, 27 | { key = { "" }, cb = tree_cb("preview") }, 28 | { key = { "I" }, cb = tree_cb("toggle_ignored") }, 29 | { key = { "." }, cb = tree_cb("toggle_dotfiles") }, 30 | { key = { "R" }, cb = tree_cb("refresh") }, 31 | { key = { "a" }, cb = tree_cb("create") }, 32 | { key = { "d" }, cb = tree_cb("remove") }, 33 | { key = { "r" }, cb = tree_cb("rename") }, 34 | { key = { "" }, cb = tree_cb("full_rename") }, 35 | { key = { "x" }, cb = tree_cb("cut") }, 36 | { key = { "y" }, cb = tree_cb("copy") }, 37 | { key = { "p" }, cb = tree_cb("paste") }, 38 | { key = { "c" }, cb = tree_cb("dir_up") }, 39 | { key = { "q" }, cb = tree_cb("close") }, 40 | }, 41 | } 42 | } 43 | } 44 | end, 45 | keybindings = { 46 | n = { 47 | { 48 | key = 'ft', 49 | cmd = 'NvimTreeToggle', 50 | }, 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /README.org: -------------------------------------------------------------------------------- 1 | #+TITLE: phaazon’s configuration files 2 | 3 | This repository holds my configuration files. 4 | 5 | - [[./alacritty][alacritty]], a terminal emulator. 6 | - [[./bin][bin]], a collection of binaries I use /mostly/ on Linux and [[https://github.com/baskerville/bspwm][bspwm]] / [[https://i3wm.org][i3wm]]. 7 | - [[./bspwm][bspwm]], which contains my configuration for [[https://github.com/baskerville/bspwm][bspwm]] and sxhkd. 8 | - [[./deprecated][deprecated]] contains old configuration files I’m unlikely to use ever again, and are just there for history™. 9 | - [[./doom][doom]], for everything relating to my [[https://github.com/hlissner/doom-emacs][Doom Emacs]] configuration. 10 | - [[./dunst][dunst]], a small and stand-alone notification application for Linux. 11 | - [[./fzf][fzf]], the best fuzzy searcher. 12 | - [[./git][git]], for everything relating to [[https://git-scm.com][Git]]. 13 | - [[./haskell][haskell]], containing mostly configuration for GHC and especially its REPL, GHCi. 14 | - [[./i3][i3]], my configuration files for [[https://i3wm.org][i3wm]]. 15 | - [[./kitty][kitty]], the main terminal emulator I’m using. 16 | - [[./nvim][nvim]], the main editor I use in Kitty! 17 | - [[./picom][picom]], a stand-alone Xorg compositor. 18 | - [[./polybar][polybar]], a stand-alone panel for Xorg (especially useful when used with either [[https://github.com/baskerville/bspwm][bspwm]] or [[https://i3wm.org][i3wm]]). 19 | - [[./rofi][rofi]], a nice application launcher / window switcher / stdin-stdout prompt for Xorg. 20 | - [[./rust][rust]], which contains default configuration files for things like [[https://github.com/rust-lang/rustfmt][rustfmt]]. 21 | - [[./termite][termite]], configuration files for an awesome VTE terminal that I used a lot in the past years, but not so much 22 | anymore. 23 | - [[./tmux][tmux]], configuration files for the [[https://github.com/tmux/tmux][famous terminal multiplexer]]. 24 | - [[./tty][tty]], which contains files I might want to install on fresh setup, especially Archlinux. 25 | - [[./zsh][zsh]], my [[https://www.zsh.org][ZSH]] configuration files. 26 | -------------------------------------------------------------------------------- /nvim/lua/pkg/cmp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = { 'hrsh7th/cmp-nvim-lsp' }, 3 | config = function() 4 | -- nvim-cmp setup 5 | local cmp = require 'cmp' 6 | local snippy = require'snippy' 7 | 8 | local icons = { 9 | Text = "", 10 | Method = "", 11 | Function = "", 12 | Constructor = "⌘", 13 | Field = "ﰠ", 14 | Variable = "", 15 | Class = "ﴯ", 16 | Interface = "", 17 | Module = "", 18 | Property = "ﰠ", 19 | Unit = "塞", 20 | Value = "", 21 | Enum = "", 22 | Keyword = "廓", 23 | Snippet = "", 24 | Color = "", 25 | File = "", 26 | Reference = "", 27 | Folder = "", 28 | EnumMember = "", 29 | Constant = "", 30 | Struct = "פּ", 31 | Event = "", 32 | Operator = "", 33 | TypeParameter = "", 34 | } 35 | 36 | cmp.setup { 37 | formatting = { 38 | fields = { "kind", "abbr", "menu" }, 39 | format = function(_, vim_item) 40 | vim_item.menu = vim_item.kind 41 | vim_item.kind = icons[vim_item.kind] 42 | 43 | return vim_item 44 | end, 45 | }, 46 | 47 | snippet = { 48 | expand = function(args) 49 | snippy.expand_snippet(args.body) 50 | end, 51 | }, 52 | 53 | mapping = { 54 | [''] = cmp.mapping.select_prev_item(), 55 | [''] = cmp.mapping.select_next_item(), 56 | [''] = cmp.mapping.scroll_docs(-4), 57 | [''] = cmp.mapping.scroll_docs(4), 58 | [''] = cmp.mapping.complete(), 59 | [''] = cmp.mapping.close(), 60 | [''] = cmp.mapping.confirm { 61 | behavior = cmp.ConfirmBehavior.Replace, 62 | select = true, 63 | }, 64 | }, 65 | 66 | sources = { 67 | { name = 'crates' }, 68 | { name = 'path' }, 69 | { name = 'nvim_lua' }, 70 | { name = 'nvim_lsp' }, 71 | { name = 'nvim_lsp_signature_help' }, 72 | { name = 'git' }, 73 | { name = 'snippy' }, 74 | }, 75 | 76 | experimental = { 77 | ghost_text = true, 78 | } 79 | } 80 | 81 | -- Set up lsp completion for nvim-cmp 82 | require('cmp_nvim_lsp').setup {} 83 | end 84 | } 85 | -------------------------------------------------------------------------------- /rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | /* modi: "window,run,ssh";*/ 3 | width: 20; 4 | lines: 15; 5 | columns: 1; 6 | font: "Cantarell 12"; 7 | bw: 0; 8 | location: 0; 9 | padding: 5; 10 | /* yoffset: 0;*/ 11 | /* xoffset: 0;*/ 12 | /* fixed-num-lines: true;*/ 13 | show-icons: true; 14 | /* terminal: "rofi-sensible-terminal";*/ 15 | /* ssh-client: "ssh";*/ 16 | /* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/ 17 | /* run-command: "{cmd}";*/ 18 | /* run-list-command: "";*/ 19 | /* run-shell-command: "{terminal} -e {cmd}";*/ 20 | /* window-command: "wmctrl -i -R {window}";*/ 21 | /* window-match-fields: "all";*/ 22 | icon-theme: "Paper"; 23 | /* drun-match-fields: "name,generic,exec,categories";*/ 24 | drun-show-actions: true; 25 | /* drun-display-format: "{name} [({generic})]";*/ 26 | /* disable-history: false;*/ 27 | /* ignored-prefixes: "";*/ 28 | /* sort: false;*/ 29 | /* sorting-method: ;*/ 30 | /* case-sensitive: false;*/ 31 | /* cycle: true;*/ 32 | /* sidebar-mode: false;*/ 33 | /* eh: 1;*/ 34 | /* auto-select: false;*/ 35 | /* parse-hosts: false;*/ 36 | /* parse-known-hosts: true;*/ 37 | /* combi-modi: "window,run";*/ 38 | matching: "fuzzy"; 39 | /* tokenize: true;*/ 40 | /* m: "-5";*/ 41 | line-margin: 2; 42 | line-padding: 10; 43 | /* filter: ;*/ 44 | separator-style: "solid"; 45 | hide-scrollbar: true; 46 | /* fullscreen: false;*/ 47 | /* fake-transparency: false;*/ 48 | /* dpi: -1;*/ 49 | /* threads: 0;*/ 50 | /* scrollbar-width: 8;*/ 51 | /* scroll-method: 0;*/ 52 | /* fake-background: "screenshot";*/ 53 | /* window-format: "{w} {c} {t}";*/ 54 | /* click-to-exit: true;*/ 55 | /* show-match: true;*/ 56 | /* theme: ;*/ 57 | color-normal: "#00000000, #EEFFFFFF, #00000000, #33CCCCCC, #FFCCCCCC"; 58 | /* color-urgent: ;*/ 59 | /* color-active: ;*/ 60 | color-window: "#66333333"; 61 | /* max-history-size: 25;*/ 62 | /* combi-hide-mode-prefix: false;*/ 63 | /* matching-negate-char: '-' /* unsupported */;*/ 64 | /* cache-dir: ;*/ 65 | /* pid: "/run/user/1000/rofi.pid";*/ 66 | /* display-window: ;*/ 67 | /* display-windowcd: ;*/ 68 | /* display-run: ;*/ 69 | /* display-ssh: ;*/ 70 | /* display-drun: ;*/ 71 | /* display-combi: ;*/ 72 | /* display-keys: ;*/ 73 | kb-clear-line: ""; 74 | kb-remove-word-back: "Control+w"; 75 | kb-row-left: "Control+c"; 76 | kb-row-right: "Control+r"; 77 | kb-row-up: "Up,Control+s,ISO_Left_Tab"; 78 | kb-row-down: "Down,Control+t"; 79 | } 80 | -------------------------------------------------------------------------------- /nvim/lua/keybindings.lua: -------------------------------------------------------------------------------- 1 | local function remap(mode, lhs, rhs) 2 | vim.api.nvim_set_keymap(mode, lhs, rhs, { silent = true, noremap = true }) 3 | end 4 | 5 | -- Bépo. 6 | remap('', 'é', 'w') 7 | remap('', 'É', 'W') 8 | remap('', 'w', '') 9 | remap('', 'c', 'h') 10 | remap('', 'r', 'l') 11 | remap('', 't', 'j') 12 | remap('', 's', 'k') 13 | remap('', 'C', 'H') 14 | remap('', 'R', 'L') 15 | remap('', 'T', 'J') 16 | remap('', 'S', 'K') 17 | remap('', 'zs', 'zj') 18 | remap('', 'zt', 'zk') 19 | remap('', 'j', 't') 20 | remap('', 'à', 't') 21 | remap('', 'J', 'T') 22 | remap('', 'À', 'T') 23 | remap('', 'l', 'c') 24 | remap('', 'L', 'C') 25 | remap('', 'h', 'r') 26 | remap('', 'H', 'R') 27 | remap('', 'k', 's') 28 | remap('', 'K', 'S') 29 | remap('', ']k', ']s') 30 | remap('', '[k', '[s') 31 | remap('', 'gs', 'gk') 32 | remap('', 'gt', 'gj') 33 | remap('', '«', '<') 34 | remap('', '»', '>') 35 | remap('', 'wt', 'j') 36 | remap('', 'ws', 'k') 37 | remap('', 'wc', 'h') 38 | remap('', 'wr', 'l') 39 | remap('', 'wd', 'c') 40 | remap('', 'wo', 's') 41 | remap('', 'wp', 'o') 42 | remap('i', ' ', ' ') 43 | 44 | -- Redo. 45 | remap('n', 'U', 'redo') 46 | 47 | -- Better C-n / C-p 48 | remap('', '', '') 49 | remap('i', '', '') 50 | remap('', '', '') 51 | remap('i', '', '') 52 | 53 | -- Insert completion. 54 | remap('i', '', '') 55 | 56 | -- Terminal. 57 | remap('t', '', '') 58 | 59 | -- Quick access to common files. 60 | remap('n', 'fci', 'edit ~/.config/nvim/init.lua') 61 | remap('n', 'fck', 'edit ~/.config/nvim/lua/keybindings.lua') 62 | remap('n', 'fcp', 'edit ~/.config/nvim/lua/pkgs.lua') 63 | remap('n', 'fcP', 'edit ~/.config/nvim/lua/pkg') 64 | remap('n', 'fcs', 'edit ~/.config/nvim/lua/statusline.lua') 65 | 66 | -- Buffer and tabs. 67 | remap('n', 'bd', 'bdel') 68 | remap('n', 'bD', 'bdel!') 69 | remap('n', 'bn', 'new') 70 | remap('n', 'bv', 'vnew') 71 | remap('n', 'bc', 'tabp') 72 | remap('n', 'br', 'tabn') 73 | remap('n', 'bs', 'w') 74 | remap('n', 'bS', 'w!') 75 | remap('n', 'bt', 'tabnew') 76 | 77 | -- Quickfix. 78 | remap('n', 'c(', 'cp') 79 | remap('n', 'c)', 'cn') 80 | 81 | -- Tags. 82 | remap('n', 'gd', '') 83 | -------------------------------------------------------------------------------- /nvim/lua/pkg/gitsigns.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = { 'nvim-lua/plenary.nvim' }, 3 | config = function() 4 | -- setup 5 | require'gitsigns'.setup { 6 | signs = { 7 | add = {hl = 'GitSignsAdd' , text = '▏', numhl='GitSignsAddNr' , linehl='GitSignsAddLn'}, 8 | change = {hl = 'GitSignsChange', text = '▏', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'}, 9 | delete = {hl = 'GitSignsDelete', text = '▁', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn'}, 10 | topdelete = {hl = 'GitSignsDelete', text = '‾', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn'}, 11 | changedelete = {hl = 'GitSignsChange', text = '▏', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'}, 12 | }, 13 | current_line_blame_opts = { 14 | virt_text_pos = 'eol', 15 | delay = 100, 16 | }, 17 | current_line_blame_formatter = ' · , | ()', 18 | } 19 | end, 20 | keybindings = { 21 | v = { 22 | { 23 | key = 'gs', 24 | lua = "require'gitsigns.stage_hunk({vim.fn.line('.'), vim.fn.line('v')})", 25 | }, 26 | { 27 | key = 'gx', 28 | lua = "require'gitsigns'.reset_hunk({vim.fn.line('.'), vim.fn.line('v')})", 29 | }, 30 | }, 31 | n = { 32 | { 33 | key = 'gbb', 34 | lua = "require'gitsigns'.blame_line()", 35 | }, 36 | { 37 | key = 'gbl', 38 | lua = "require'gitsigns'.toggle_current_line_blame()", 39 | }, 40 | { 41 | key = 'gd', 42 | lua = "require'gitsigns'.toggle_deleted()", 43 | }, 44 | { 45 | key = 'gh', 46 | lua = "require'gitsigns'.preview_hunk()", 47 | }, 48 | { 49 | key = 'gp', 50 | lua = "require'gitsigns.actions'.prev_hunk()", 51 | }, 52 | { 53 | key = 'gn', 54 | lua = "require'gitsigns.actions'.next_hunk()", 55 | }, 56 | { 57 | key = 'gs', 58 | lua = "require'gitsigns'.stage_hunk()", 59 | }, 60 | { 61 | key = 'gtl', 62 | lua = "require'gitsigns'.toggle_linehl()", 63 | }, 64 | { 65 | key = 'gu', 66 | lua = "require'gitsigns'.undo_stage_hunk()", 67 | }, 68 | { 69 | key = 'gx', 70 | lua = "require'gitsigns'.reset_hunk()", 71 | }, 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /atom/keymap.cson: -------------------------------------------------------------------------------- 1 | 'atom-text-editor.vim-mode-plus:not(.insert-mode)': 2 | ':': 'go-to-line:toggle' 3 | 't': 'vim-mode-plus:move-down' 4 | 's': 'vim-mode-plus:move-up' 5 | 'c': 'vim-mode-plus:move-left' 6 | 'r': 'vim-mode-plus:move-right' 7 | 'altgraph space': 'vim-mode-plus:move-to-first-character-of-line-and-down' 8 | 'alt-space': 'vim-mode-plus:move-to-first-character-of-line-and-down' 9 | 'U': 'core:redo' 10 | 'w': null 11 | 'w v': 'pane:split-right-and-copy-active-item' 12 | 'w o': 'pane:split-down-and-copy-active-item' 13 | 'altgraph y': 'vim-mode-plus:move-to-previous-paragraph' 14 | 'altgraph x': 'vim-mode-plus:move-to-next-paragraph' 15 | 16 | # easymotion 17 | 'è': 'easy-motion-redux:words' 18 | 19 | # bookmarks 20 | 'space b m': 'bookmarks:toggle-bookmark' 21 | 'space enter': 'bookmarks:view-all' 22 | 23 | # fuzzy finders 24 | 'space b b': 'fuzzy-finder:toggle-buffer-finder' 25 | 'space space': 'fuzzy-finder:toggle-file-finder' 26 | 'space f f': 'fuzzy-finder:toggle-file-finder' 27 | 'space f g': 'fuzzy-finder:toggle-git-status-finder' 28 | 29 | # tree view 30 | 'space f t': 'tree-view:toggle' 31 | 32 | # window 33 | 'w c': 'window:focus-pane-on-left' 34 | 'w r': 'window:focus-pane-on-right' 35 | 'w t': 'window:focus-pane-below' 36 | 'w s': 'window:focus-pane-above' 37 | 'w q': 'core:close' 38 | 'space b d': 'core:close' 39 | 40 | # save 41 | 'space b s': 'core:save' 42 | 43 | # code 44 | 'space c o': 'outline:toggle' 45 | 'space c d': 'atom-ide-go-to-definition:go-to-definition' 46 | 'space c D': 'find-references:activate' 47 | 48 | # git 49 | 'space g n': 'git-diff:move-to-next-diff' 50 | 'space g p': 'git-diff:move-to-previous-diff' 51 | 'space g g': 'github:toggle-git-tab' 52 | 53 | # replace t 54 | 'à': 'vim-mode-plus:till' 55 | 'shift-à': 'vim-mode-plus:till-backwards' 56 | 57 | # replace s 58 | 'k': 'vim-mode-plus:substitute' 59 | 'shift-k': 'vim-mode-plus:substitute-line' 60 | 61 | # replace c 62 | 'l': 'vim-mode-plus:change' 63 | 'shift-l': 'vim-mode-plus:change-to-last-character-of-line' 64 | 65 | # replace r 66 | 'h': 'vim-mode-plus:replace' 67 | 'shift-h': 'vim-mode-plus:activate-replace-mode' 68 | 69 | # replace w 70 | 'é': 'vim-mode-plus:move-to-next-word' 71 | 72 | '.tree-view': 73 | 't': 'core:move-down' 74 | 's': 'core:move-up' 75 | 76 | 'body': 77 | 'ctrl-i': 'cursor-history:next' 78 | 'ctrl-o': 'cursor-history:prev' 79 | 'ctrl-t': 'core:move-down' 80 | 'ctrl-s': 'core:move-up' 81 | 'ctrl-+': 'window:increase-font-size' 82 | 'ctrl--': 'window:decrease-font-size' 83 | 'ctrl-space': 'choose-pane:start' 84 | -------------------------------------------------------------------------------- /tmux/tmux.conf: -------------------------------------------------------------------------------- 1 | set -sg escape-time 0 2 | set-option -g prefix C-a 3 | set-option -g prefix2 C-a 4 | set -g default-terminal "alacritty" 5 | set-option -ga terminal-overrides ",alacritty:Tc" 6 | set -g allow-rename on 7 | set -g set-titles on 8 | set -g set-titles-string "(#h) #T" 9 | setw -g aggressive-resize on 10 | set -g mouse on 11 | tmux_conf_copy_to_os_clipboard=true 12 | 13 | # key bindings 14 | set-window-option -g mode-keys vi 15 | bind -T prefix q display-panes -d 0 16 | bind-key -T prefix w display-popup -E "tmux list-sessions -F '#S' | sk --reverse --prompt 'session:' --header 'Available sessions' | xargs tmux switch-client -t" 17 | bind-key -T prefix W choose-session 18 | bind-key -T prefix Space new-window 19 | bind-key -T prefix c select-pane -L 20 | bind-key -T prefix t select-pane -D 21 | bind-key -T prefix s select-pane -U 22 | bind-key -T prefix r select-pane -R 23 | bind-key -T prefix o split-wind 24 | bind-key -T prefix v split-window -h 25 | bind-key -T prefix j menu -T Notes Capture c "popup -ET Capture 'kak -e kak-notes-capture'" Journal j "popup -w 75% -h 75% -ET 'Journal' 'kak -e kak-notes-journal-open-daily'" 26 | bind-key -r -T prefix M-s resize-pane -U 5 27 | bind-key -r -T prefix M-t resize-pane -D 5 28 | bind-key -r -T prefix M-c resize-pane -L 5 29 | bind-key -r -T prefix M-r resize-pane -R 5 30 | bind-key -T copy-mode-vi c send-keys -X cursor-left 31 | bind-key -T copy-mode-vi t send-keys -X cursor-down 32 | bind-key -T copy-mode-vi s send-keys -X cursor-up 33 | bind-key -T copy-mode-vi r send-keys -X cursor-right 34 | bind-key -T prefix g set -g status 35 | 36 | # panes 37 | set -g pane-active-border-style fg=green 38 | set -g pane-border-style fg=black 39 | 40 | # status line 41 | set -g status-justify left 42 | set -g status-style fg=default,bg=#1e2030 43 | set -g status-interval 1 44 | set -g status-position top 45 | set -g status-left "#[fg=red] #S #[fg=black]| " 46 | set -g status-right "#{?client_prefix,#[fg=blue]^A#[fg=black] | ,}#[fg=green]󰘔 #{pane_current_command} #[fg=black]| #[fg=blue] #(checkmail) #[fg=black]| #(command -v tmux-k8s &> /dev/null && tmux-k8s)" 47 | set -g status-left-length 200 48 | set -g status-right-length 200 49 | 50 | # messaging 51 | set -g message-style bg=yellow,fg=black 52 | set -g message-command-style bg=black,fg=blue 53 | set -g message-style fg=green 54 | 55 | # window mode 56 | setw -g mode-style bg=red,fg=black 57 | 58 | # window status 59 | setw -g window-status-current-format "#[fg=brightblue]#I#[fg=black]:#[fg=green]#W#[fg=cyan]#F" 60 | setw -g window-status-format "#[fg=black]#I:#W#F" 61 | setw -g window-status-bell-style fg=brightred 62 | 63 | -------------------------------------------------------------------------------- /zsh/.zshrc: -------------------------------------------------------------------------------- 1 | source ~/.zprofile 2 | source ~/.fzfrc 3 | 4 | # Completion 5 | autoload -Uz compinit && compinit 6 | autoload -Uz vcs_info 7 | 8 | precmd_vcs_info() { vcs_info } 9 | precmd_functions+=( precmd_vcs_info ) 10 | 11 | setopt prompt_subst 12 | setopt auto_menu 13 | setopt always_to_end 14 | setopt complete_in_word 15 | unsetopt flow_control 16 | unsetopt menu_complete 17 | 18 | zstyle ':completion:*:*:*:*:*' menu select 19 | zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*' 20 | zstyle ':completion::complete:*' use-cache 1 21 | zstyle ':completion::complete:*' cache-path $ZSH_CACHE_DIR 22 | zstyle ':completion:*' list-colors '' 23 | zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' 24 | zstyle ':vcs_info:*' enable git 25 | zstyle ':vcs_info:git:*' formats '%B%u %c %B%F{red} %b' 26 | zstyle ':vcs_info:git:*' actionformats '%B%u %c %B%F{red} %b' 27 | zstyle ':vcs_info:git:*' check-for-changes true 28 | zstyle ':vcs_info:git:*' get-revision true 29 | zstyle ':vcs_info:git:*' stagedstr '%F{green}✓' 30 | zstyle ':vcs_info:git:*' unstagedstr '%F{red}±' 31 | 32 | # enable hooks, requires Zsh >=4.3.11 33 | if [[ $ZSH_VERSION == 4.3.<11->* || $ZSH_VERSION == 4.<4->* || $ZSH_VERSION == <5->* ]] ; then 34 | # hook for untracked files 35 | +vi-untracked() { 36 | if [[ $(git rev-parse --is-inside-work-tree 2>/dev/null) == 'true' ]] && \ 37 | [[ -n $(git ls-files --others --exclude-standard) ]] ; then 38 | hook_com[staged]+='%F{yellow}?' 39 | fi 40 | } 41 | 42 | # unpushed commits 43 | +vi-outgoing() { 44 | local gitdir="$(git rev-parse --git-dir 2>/dev/null)" 45 | [ -n "$gitdir" ] || return 0 46 | 47 | if [ -r "${gitdir}/refs/remotes/git-svn" ] ; then 48 | local count=$(git rev-list remotes/git-svn.. 2>/dev/null | wc -l) 49 | else 50 | local branch="$(cat ${gitdir}/HEAD 2>/dev/null)" 51 | branch=${branch##*/heads/} 52 | local count=$(git rev-list remotes/origin/${branch}.. 2>/dev/null | wc -l) 53 | fi 54 | 55 | if [[ "$count" -gt 0 ]] ; then 56 | hook_com[staged]+="%F{green}↑$count" 57 | fi 58 | } 59 | 60 | # hook for stashed files 61 | +vi-stashed() { 62 | if git rev-parse --verify refs/stash &>/dev/null ; then 63 | hook_com[staged]+='%F{red}$' 64 | fi 65 | } 66 | 67 | zstyle ':vcs_info:git*+set-message:*' hooks stashed untracked outgoing 68 | fi 69 | 70 | # History 71 | HISTFILE=~/.zsh_history 72 | HISTSIZE=999999999 73 | SAVEHIST=999999999 74 | setopt inc_append_history 75 | setopt share_history 76 | 77 | # Shell functions. 78 | . ~/config/bin/shell-functions 79 | 80 | # Prompt. 81 | PS1='%B%F{green}%~ %F{magenta}λ %f%b' 82 | RPS1='$vcs_info_msg_0_' 83 | -------------------------------------------------------------------------------- /nvim/lua/pkg/telescope.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = { 'nvim-lua/plenary.nvim' }, 3 | config = function() 4 | local actions = require'telescope.actions' 5 | 6 | -- config 7 | require'telescope'.setup { 8 | defaults = { 9 | path_display = { 10 | 'truncate' 11 | }, 12 | 13 | mappings = { 14 | i = { 15 | [""] = actions.move_selection_previous, 16 | [""] = actions.move_selection_next, 17 | [""] = actions.add_selection, 18 | [""] = actions.close, 19 | }, 20 | }, 21 | }, 22 | 23 | extensions = { 24 | fzf = { 25 | fuzzy = true, 26 | override_generic_sorter = true, 27 | override_file_sorter = true, 28 | case_mode = "smart_case", 29 | }, 30 | 31 | ["ui-select"] = { 32 | require("telescope.themes").get_dropdown { 33 | -- more options 34 | }, 35 | } 36 | } 37 | } 38 | 39 | -- extensions 40 | require("telescope").load_extension("ui-select") 41 | require("telescope").load_extension("fzf") 42 | 43 | vim.cmd [[autocmd FileType TelescopePrompt inoremap ]] 44 | end, 45 | keybindings = { 46 | n = { 47 | { 48 | key = "'", 49 | cmd = 'Telescope resume', 50 | }, 51 | { 52 | key = 'bb', 53 | cmd = 'Telescope buffers theme=get_dropdown previewer=false', 54 | }, 55 | { 56 | key = 'ff', 57 | cmd = 'Telescope find_files theme=get_dropdown previewer=false', 58 | }, 59 | { 60 | key = '', 61 | cmd = 'Telescope git_files theme=get_dropdown previewer=false', 62 | }, 63 | { 64 | key = 'gcb', 65 | cmd = 'Telescope git_branches theme=get_dropdown previewer=false', 66 | }, 67 | { 68 | key = 'gcc', 69 | cmd = 'Telescope git_commits', 70 | }, 71 | { 72 | key = 'sc', 73 | cmd = 'Telescope command_history', 74 | }, 75 | { 76 | key = 'sm', 77 | cmd = 'Telescope marks', 78 | }, 79 | { 80 | key = 'sp', 81 | cmd = 'Telescope live_grep theme=get_dropdown', 82 | }, 83 | { 84 | key = 'sr', 85 | cmd = 'Telescope registers theme=get_dropdown', 86 | }, 87 | { 88 | key = 'ss', 89 | cmd = 'Telescope current_buffer_fuzzy_find theme=get_dropdown previewer=false', 90 | }, 91 | { 92 | key = 'fh', 93 | cmd = 'Telescope oldfiles theme=get_dropdown previewer=false', 94 | }, 95 | } 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /doom/packages.el: -------------------------------------------------------------------------------- 1 | ;; -*- no-byte-compile: t; -*- 2 | ;;; $DOOMDIR/packages.el 3 | 4 | ;; To install a package with Doom you must declare them here and run 'doom sync' 5 | ;; on the command line, then restart Emacs for the changes to take effect -- or 6 | ;; use 'M-x doom/reload'. 7 | 8 | 9 | ;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: 10 | ;(package! some-package) 11 | 12 | ;; To install a package directly from a remote git repo, you must specify a 13 | ;; `:recipe'. You'll find documentation on what `:recipe' accepts here: 14 | ;; https://github.com/raxod502/straight.el#the-recipe-format 15 | ;(package! another-package 16 | ; :recipe (:host github :repo "username/repo")) 17 | 18 | ;; If the package you are trying to install does not contain a PACKAGENAME.el 19 | ;; file, or is located in a subdirectory of the repo, you'll need to specify 20 | ;; `:files' in the `:recipe': 21 | ;(package! this-package 22 | ; :recipe (:host github :repo "username/repo" 23 | ; :files ("some-file.el" "src/lisp/*.el"))) 24 | 25 | ;; If you'd like to disable a package included with Doom, you can do so here 26 | ;; with the `:disable' property: 27 | ;(package! builtin-package :disable t) 28 | 29 | ;; You can override the recipe of a built in package without having to specify 30 | ;; all the properties for `:recipe'. These will inherit the rest of its recipe 31 | ;; from Doom or MELPA/ELPA/Emacsmirror: 32 | ;(package! builtin-package :recipe (:nonrecursive t)) 33 | ;(package! builtin-package-2 :recipe (:repo "myfork/package")) 34 | 35 | ;; Specify a `:branch' to install a package from a particular branch or tag. 36 | ;; This is required for some packages whose default branch isn't 'master' (which 37 | ;; our package manager can't deal with; see raxod502/straight.el#279) 38 | ;(package! builtin-package :recipe (:branch "develop")) 39 | 40 | ;; Use `:pin' to specify a particular commit to install. 41 | ;(package! builtin-package :pin "1a2b3c4d5e") 42 | 43 | 44 | ;; Doom's packages are pinned to a specific commit and updated from release to 45 | ;; release. The `unpin!' macro allows you to unpin single packages... 46 | ;(unpin! pinned-package) 47 | ;; ...or multiple packages 48 | ;(unpin! pinned-package another-pinned-package) 49 | ;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) 50 | ;(unpin! t) 51 | 52 | (package! company-box) 53 | (package! kubernetes) 54 | (package! kubernetes-evil) 55 | (package! vue-mode) 56 | (package! lsp-treemacs) 57 | 58 | (when (package! treemacs) 59 | (progn 60 | (package! treemacs-all-the-icons) 61 | (package! treemacs-icons-dired))) 62 | 63 | (disable-packages! evil-snipe) 64 | 65 | (package! restclient) 66 | 67 | (package! dhall-mode) 68 | 69 | (package! bazel) 70 | 71 | (package! terraform-mode) 72 | 73 | (package! simpleclip) 74 | 75 | (package! protobuf-mode) 76 | -------------------------------------------------------------------------------- /helix/config.toml: -------------------------------------------------------------------------------- 1 | theme = "catppuccin_macchiato" 2 | 3 | [editor] 4 | scroll-lines = 1 5 | cursorline = true 6 | auto-save = false 7 | completion-trigger-len = 1 8 | true-color = true 9 | color-modes = true 10 | auto-pairs = true 11 | rulers = [120] 12 | idle-timeout = 50 13 | 14 | [editor.cursor-shape] 15 | insert = "bar" 16 | normal = "block" 17 | select = "underline" 18 | 19 | [editor.indent-guides] 20 | render = true 21 | character = "▏" 22 | 23 | [editor.lsp] 24 | display-messages = true 25 | display-inlay-hints = true 26 | 27 | [editor.statusline] 28 | left = ["mode", "spinner", "file-name", "file-type", "total-line-numbers", "file-encoding"] 29 | center = [] 30 | right = ["selections", "primary-selection-length", "position", "position-percentage", "spacer", "diagnostics", "workspace-diagnostics", "version-control"] 31 | 32 | [keys.normal] 33 | c = "move_char_left" 34 | C = "extend_char_left" 35 | r = "move_char_right" 36 | R = "extend_char_right" 37 | t = "move_line_down" 38 | T = "extend_line_down" 39 | s = "move_line_up" 40 | S = "extend_line_up" 41 | 42 | h = "find_till_char" 43 | H = "extend_till_char" 44 | j = "replace" 45 | J = "replace_with_yanked" 46 | k = "select_regex" 47 | K = "split_selection" 48 | l = "change_selection" 49 | L = "copy_selection_on_next_line" 50 | 51 | F = "extend_prev_char" 52 | X = "extend_line_above" 53 | B = "extend_prev_word_start" 54 | W = "extend_next_word_start" 55 | 56 | # F/H are now extend versions of f/t; so remap them to alt 57 | A-f = "find_prev_char" 58 | A-h = "till_prev_char" 59 | A-F = "extend_prev_char" 60 | A-H = "extend_till_prev_char" 61 | space.g.f = "find_prev_char" 62 | space.g.h = "till_prev_char" 63 | space.g.F = "extend_prev_char" 64 | space.g.H = "extend_till_prev_char" 65 | 66 | g.c = "goto_line_start" 67 | g.s = "goto_file_start" 68 | g.t = "goto_file_end" 69 | g.r = "goto_line_end" 70 | g.i = "goto_first_nonwhitespace" 71 | g.h = "no_op" 72 | g.l = "no_op" 73 | g.D = "goto_reference" 74 | G.c = "extend_to_line_start" 75 | G.i = "extend_to_first_nonwhitespace" 76 | G.r = "extend_to_line_end" 77 | 78 | C-k = "split_selection_on_newline" 79 | 80 | # flip anchor and cursor 81 | space.space = "flip_selections" 82 | 83 | z.t = "scroll_down" 84 | z.s = "scroll_up" 85 | Z.t = "scroll_down" 86 | Z.s = "scroll_up" 87 | 88 | space.c = "toggle_comments" 89 | space.w.c = "jump_view_left" 90 | space.w.r = "jump_view_right" 91 | space.w.t = "jump_view_down" 92 | space.w.s = "jump_view_up" 93 | space.w.o = "hsplit" 94 | 95 | [keys.select] 96 | c = "extend_char_left" 97 | r = "extend_char_right" 98 | t = "extend_line_down" 99 | s = "extend_line_up" 100 | g.c = "goto_line_start" 101 | g.r = "goto_line_end" 102 | g.h = "no_op" 103 | g.l = "no_op" 104 | "é" = "move_next_word_start" 105 | "É" = "move_next_long_word_start" 106 | h = "replace" 107 | H = "replace_with_yanked" 108 | l = "change_selection" 109 | "è" = "split_selection" 110 | "à" = "find_till_char" 111 | S = "select_regex" 112 | z = "split_selection" 113 | X = "extend_line_above" 114 | 115 | [keys.insert] 116 | " " = ["collapse_selection", ":insert-output printf ' '", "move_char_right"] -------------------------------------------------------------------------------- /bspwm/sxhkdrc: -------------------------------------------------------------------------------- 1 | ################################################################################################### 2 | # sxhkd 3 | 4 | # make sxhkd reload its configuration files: 5 | super + Escape 6 | pkill -USR1 -x sxhkd 7 | 8 | ################################################################################################### 9 | # bspwm 10 | 11 | # quit/restart bspwm 12 | super + alt + {m, l} 13 | bspc {quit,wm -r} 14 | 15 | # close and kill node 16 | super + m 17 | bspc node -c 18 | 19 | # alternate between the tiled and monocle layout 20 | super + slash 21 | bspc desktop -l next 22 | 23 | # change node view 24 | super + {space,period,shift + period,shift + slash} 25 | bspc node -t {tiled,pseudo_tiled,floating,fullscreen} 26 | 27 | # focus the node in the given direction 28 | alt + {_,shift + }{h,j,k,l} 29 | bspc node -{f,s} {west,south,north,east} 30 | 31 | # rotate the node 32 | super + {h,j} 33 | bspc node -R {90,180} 34 | 35 | # focus the node for the given path jump 36 | super + {_, shift}{u,i,o,p} 37 | bspc node -{f,s} @{first,second,parent,brother} 38 | 39 | # focus or send to the given desktop 40 | super + {_,shift + } 1 41 | bspc {desktop -f,node -d} 1 42 | super + {_,shift + } 2 43 | bspc {desktop -f,node -d} 2 44 | super + {_,shift + } 3 45 | bspc {desktop -f,node -d} 3 46 | super + {_,shift + } 4 47 | bspc {desktop -f,node -d} 4 48 | super + {_,shift + } 5 49 | bspc {desktop -f,node -d} 5 50 | super + {_,shift + } 6 51 | bspc {desktop -f,node -d} 6 52 | super + {_,shift + } 7 53 | bspc {desktop -f,node -d} 7 54 | super + {_,shift + } 8 55 | bspc {desktop -f,node -d} 8 56 | super + {_,shift + } 9 57 | bspc {desktop -f,node -d} 9 58 | super + {_,shift + } 0 59 | bspc {desktop -f,node -d} 0 60 | super + {_,shift + } minus 61 | bspc {desktop -f,node -d} 11 62 | super + {_,shift + } equal 63 | bspc {desktop -f,node -d} 12 64 | 65 | # preselect the direction 66 | ctrl + super + {h,j,k,l} 67 | bspc node -p {west,south,north,east} 68 | 69 | # preselect the ratio 70 | ctrl + super + 1 71 | bspc node -o 0.1 72 | ctrl + super + 2 73 | bspc node -o 0.2 74 | ctrl + super + 3 75 | bspc node -o 0.3 76 | ctrl + super + 4 77 | bspc node -o 0.4 78 | ctrl + super + 5 79 | bspc node -o 0.5 80 | ctrl + super + 6 81 | bspc node -o 0.6 82 | ctrl + super + 7 83 | bspc node -o 0.7 84 | ctrl + super + 8 85 | bspc node -o 0.8 86 | ctrl + super + 9 87 | bspc node -o 0.9 88 | 89 | # cancel the preselection for the focused node 90 | ctrl + super + space 91 | bspc node -p cancel 92 | 93 | ################################################################################################### 94 | # applications and misc 95 | 96 | # program launcher 97 | alt + d 98 | rofi -show drun 99 | 100 | # terminal emulator 101 | alt + Return 102 | kitty 103 | 104 | # editor 105 | shift + alt + Return 106 | emacsclient -nc 107 | 108 | # file browser 109 | shift + alt + Return 110 | dolphin 111 | 112 | # screenshoters 113 | Print 114 | maim "/tmp/img_$(date +%m%d%y_%H%M%S).png" && notify-send "Screenshot taken" "Whole screen." --icon=dialog-information 115 | 116 | super + Print 117 | maim -c 0.450,0.847,0.647,0.5 -l -s "/tmp/img_$(date +%m%d%y_%H%M%S).png" && notify-send "Screenshot taken" "Selection." --icon=dialog-information 118 | 119 | alt + Print 120 | maim -i "/tmp/img_$(date +%m%d%y_%H%M%S).png" && notify-send "Screenshot taken" "Window." --icon=dialog-information 121 | 122 | # brightness 123 | XF86MonBrightnessDown 124 | xbacklight -dec 10% 125 | 126 | XF86MonBrightnessUp 127 | xbacklight -inc 10% 128 | 129 | # switch keyboard layout 130 | super + grave 131 | switch-kb-layout 132 | -------------------------------------------------------------------------------- /nvim/lua/pkgs.lua: -------------------------------------------------------------------------------- 1 | return { 2 | ['wbthomason/packer.nvim'] = 'packer', 3 | ['tjdevries/colorbuddy.vim'] = 'colorbuddy', 4 | ['sainnhe/edge'] = 'edge', 5 | ['SmiteshP/nvim-gps'] = 'nvim-gps', 6 | ['~/dev/hop.nvim'] = 'hop', 7 | ['phaazon/mind.nvim'] = 'mind', 8 | ['phaazon/notisys.nvim'] = 'notisys', 9 | ['windwp/nvim-autopairs'] = 'autopairs', 10 | ['numToStr/Comment.nvim'] = 'comment', 11 | ['mfussenegger/nvim-dap'] = 'dap', 12 | ['rcarriga/nvim-dap-ui'] = 'dap-ui', 13 | ['theHamsta/nvim-dap-virtual-text'] = 'dap-virtual-text', 14 | ['dcampos/nvim-snippy'] = 'snippy', 15 | ['hrsh7th/nvim-cmp'] = 'cmp', 16 | ['hrsh7th/cmp-buffer'] = 'cmp-buffer', 17 | ['hrsh7th/cmp-nvim-lsp'] = 'cmp-lsp', 18 | ['hrsh7th/cmp-nvim-lsp-signature-help'] = 'cmp-lsp-signature-help', 19 | ['hrsh7th/cmp-path'] = 'cmp-path', 20 | ['hrsh7th/cmp-nvim-lua'] = 'cmp-lua', 21 | ['dcampos/cmp-snippy'] = 'cmp-snippy', 22 | ['petertriho/cmp-git'] = 'cmp-git', 23 | ['kyazdani42/nvim-tree.lua'] = 'nvim-tree', 24 | ['neovim/nvim-lspconfig'] = 'lsp', 25 | ['universal-ctags/ctags'] = 'universal-ctags', 26 | ['nvim-telescope/telescope.nvim'] = 'telescope', 27 | ['nvim-telescope/telescope-fzf-native.nvim'] = 'telescope-fzf', 28 | ['nvim-telescope/telescope-ui-select.nvim'] = 'telescope-ui-select', 29 | ['saecki/crates.nvim'] = 'crates', 30 | ['norcalli/nvim-colorizer.lua'] = 'nvim-colorizer', 31 | ['ryanoasis/vim-devicons'] = 'vim-devicons', 32 | ['kyazdani42/nvim-web-devicons'] = 'web-devicons', 33 | ['lukas-reineke/indent-blankline.nvim'] = 'indent-blankline', 34 | ['rcarriga/nvim-notify'] = 'nvim-notify', 35 | ['petrbroz/vim-glsl'] = 'glsl', 36 | ['towolf/vim-helm'] = 'helm', 37 | ['mzlogin/vim-markdown-toc'] = 'markdown-toc', 38 | ['vmchale/dhall-vim'] = 'dhall', 39 | ['purescript-contrib/purescript-vim'] = 'purescript', 40 | ['hashivim/vim-terraform'] = 'terraform', 41 | ['tpope/vim-fugitive'] = 'fugitive', 42 | ['lewis6991/gitsigns.nvim'] = 'gitsigns', 43 | ['folke/trouble.nvim'] = 'trouble', 44 | ['rmagatti/goto-preview'] = 'goto-preview', 45 | ['simrat39/symbols-outline.nvim'] = 'symbols-outline', 46 | ['stevearc/aerial.nvim'] = 'aerial', 47 | ['folke/persistence.nvim'] = 'persistence', 48 | ['j-hui/fidget.nvim'] = 'fidget', 49 | ['folke/which-key.nvim'] = 'which-key', 50 | ['sindrets/diffview.nvim'] = 'diffview', 51 | ['b0o/incline.nvim'] = 'incline', 52 | ['TimUntersberger/neogit'] = 'neogit', 53 | -- ['lewis6991/satellite.nvim'] = 'satellite', 54 | ['nvim-treesitter/nvim-treesitter'] = 'nvim-treesitter', 55 | -- ['kevinhwang91/nvim-ufo'] = 'nvim-ufo', 56 | ['windwp/nvim-ts-autotag'] = 'nvim-ts-autotag', 57 | ['Pocco81/true-zen.nvim'] = 'true-zen', 58 | ['nvim-neo-tree/neo-tree.nvim'] = 'neo-tree', 59 | ['mrbjarksen/neo-tree-diagnostics.nvim'] = 'neo-tree-diagnostics', 60 | ['s1n7ax/nvim-window-picker'] = 'nvim-window-picker', 61 | ['vigoux/notifier.nvim'] = 'notifier', 62 | ['rebelot/kanagawa.nvim'] = 'kanagawa', 63 | ['catppuccin/nvim'] = 'catppuccin', 64 | ['stevearc/dressing.nvim'] = 'dressing', 65 | ['kartikp10/noctis.nvim'] = 'noctis', 66 | ['nvim-treesitter/nvim-treesitter-context'] = 'nvim-treesitter-context', 67 | -- ['folke/noice.nvim'] = 'noice', 68 | } 69 | -------------------------------------------------------------------------------- /nushell/env.nu: -------------------------------------------------------------------------------- 1 | # Nushell Environment Config File 2 | # 3 | # version = "0.84.0" 4 | 5 | def create_left_prompt [] { 6 | mut home = "" 7 | try { 8 | if $nu.os-info.name == "windows" { 9 | $home = $env.USERPROFILE 10 | } else { 11 | $home = $env.HOME 12 | } 13 | } 14 | 15 | let dir = ([ 16 | ($env.PWD | str substring 0..($home | str length) | str replace $home "~"), 17 | ($env.PWD | str substring ($home | str length)..) 18 | ] | str join) 19 | 20 | let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold }) 21 | let separator_color = ansi black 22 | let path_segment = $"($path_color)($dir)" 23 | 24 | $path_segment | str replace --all (char path_sep) $"($separator_color)(char path_sep)($path_color)" 25 | } 26 | 27 | def create_right_prompt [] { 28 | # create a right prompt in magenta with green separators and am/pm underlined 29 | let time_segment = ([ 30 | (ansi reset) 31 | (ansi cyan) 32 | (date now | format date '%Y/%m/%d %H:%M:%S') 33 | ] | str join | str replace --regex --all "([/:])" $"(ansi black)${1}(ansi cyan)") 34 | 35 | let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([ 36 | (ansi rb) 37 | ($env.LAST_EXIT_CODE) 38 | ] | str join) 39 | } else { $"(ansi green)" } 40 | 41 | let git_output = (do { git rev-parse --abbrev-ref HEAD } | complete) 42 | mut git_segment = "" 43 | 44 | if ($git_output.exit_code) == 0 { 45 | $git_segment = ($"(ansi reset)(ansi red) ($git_output.stdout)" | str trim) 46 | } 47 | 48 | # battery 49 | mut battery_segment = '' 50 | 51 | if $nu.os-info.name == 'macos' { 52 | let battery_percent = (pmset -g batt | lines | skip 1 | parse -r '\s*\w+\s*\(.*\)\s*(?P\d+)%' | get percent.0 | into int) 53 | 54 | if $battery_percent > 80 { 55 | $battery_segment = $"(ansi reset)(ansi green) ($battery_percent)%" 56 | } else if $battery_percent > 60 { 57 | $battery_segment = $"(ansi green) ($battery_percent)%" 58 | } else if $battery_percent > 40 { 59 | $battery_segment = $"(ansi blue) ($battery_percent)%" 60 | } else if $battery_percent > 20 { 61 | $battery_segment = $"(ansi yellow) ($battery_percent)%" 62 | } else { 63 | $battery_segment = $"(ansi red) ($battery_percent)%" 64 | } 65 | } 66 | 67 | ([$last_exit_code, $git_segment, $battery_segment, $time_segment] | filter { |it| not ($it | is-empty) } | str join $"(ansi black) | ") 68 | } 69 | 70 | # Use nushell functions to define your right and left prompt 71 | $env.PROMPT_COMMAND = {|| create_left_prompt } 72 | $env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt } 73 | 74 | # The prompt indicators are environmental variables that represent 75 | # the state of the prompt 76 | $env.PROMPT_INDICATOR = {|| $" (ansi black) " } 77 | $env.PROMPT_INDICATOR_VI_INSERT = {|| ": " } 78 | $env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " } 79 | $env.PROMPT_MULTILINE_INDICATOR = {|| "::: " } 80 | 81 | # Specifies how environment variables are: 82 | # - converted from a string to a value on Nushell startup (from_string) 83 | # - converted from a value back to a string when running external commands (to_string) 84 | # Note: The conversions happen *after* config.nu is loaded 85 | $env.ENV_CONVERSIONS = { 86 | "PATH": { 87 | from_string: { |s| $s | split row (char esep) | path expand --no-symlink } 88 | to_string: { |v| $v | path expand --no-symlink | str join (char esep) } 89 | } 90 | "Path": { 91 | from_string: { |s| $s | split row (char esep) | path expand --no-symlink } 92 | to_string: { |v| $v | path expand --no-symlink | str join (char esep) } 93 | } 94 | } 95 | 96 | # Directories to search for scripts when calling source or use 97 | $env.NU_LIB_DIRS = [ 98 | # ($nu.default-config-dir | path join 'scripts') # add /scripts 99 | ] 100 | 101 | # Directories to search for plugin binaries when calling register 102 | $env.NU_PLUGIN_DIRS = [ 103 | # ($nu.default-config-dir | path join 'plugins') # add /plugins 104 | ] 105 | 106 | # To add entries to PATH (on Windows you might use Path), you can use the following pattern: 107 | $env.PATH = ($env.PATH | split row (char esep) | append ["/usr/local/bin", "~/.local/bin", "~/.cargo/bin"]) 108 | $env.EDITOR = kak 109 | -------------------------------------------------------------------------------- /nvim/lua/pkg/neo-tree.lua: -------------------------------------------------------------------------------- 1 | return { 2 | disable = true, 3 | branch = 'v2.x', 4 | requires = { 5 | 'nvim-lua/plenary.nvim', 6 | 'kyazdani42/nvim-web-devicons', -- not strictly required, but recommended 7 | 'MunifTanjim/nui.nvim', 8 | { 9 | -- only needed if you want to use the commands with '_with_window_picker' suffix 10 | 's1n7ax/nvim-window-picker', 11 | tag = 'v1.*', 12 | config = function() 13 | require'window-picker'.setup({ 14 | autoselect_one = true, 15 | include_current = false, 16 | filter_rules = { 17 | -- filter using buffer options 18 | bo = { 19 | -- if the file type is one of following, the window will be ignored 20 | filetype = { 'neo-tree', 'neo-tree-popup', 'notify', 'quickfix' }, 21 | 22 | -- if the buffer type is one of following, the window will be ignored 23 | buftype = { 'terminal' }, 24 | }, 25 | }, 26 | other_win_hl_color = '#e35e4f', 27 | }) 28 | end, 29 | } 30 | }, 31 | config = function() 32 | require'neo-tree'.setup { 33 | sources = { 34 | 'filesystem', 35 | 'buffers', 36 | 'git_status', 37 | 'diagnostics', 38 | }, 39 | 40 | diagnostics = { 41 | bind_to_cwd = true, 42 | diag_sort_function = 'severity', -- 'severity' means diagnostic items are sorted by severity in addition to their positions. 43 | -- 'position' means diagnostic items are sorted strictly by their positions. 44 | -- May also be a function. 45 | follow_behavior = { -- Behavior when `follow_current_file` is true 46 | always_focus_file = false, -- Focus the followed file, even when focus is currently on a diagnostic item belonging to that file. 47 | expand_followed = true, -- Ensure the node of the followed file is expanded 48 | collapse_others = false, 49 | }, 50 | follow_current_file = true, 51 | group_dirs_and_files = true, -- when true, empty folders and files will be grouped together 52 | group_empty_dirs = true, -- when true, empty directories will be grouped together 53 | show_unloaded = true, -- show diagnostics from unloaded buffers 54 | }, 55 | 56 | window = { 57 | mapping_options = { 58 | noremap = true, 59 | nowait = true, 60 | }, 61 | 62 | mappings = { 63 | [''] = { 64 | 'toggle_node', 65 | nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use 66 | }, 67 | ['<2-LeftMouse>'] = 'open_with_window_picker', 68 | [''] = 'open_with_window_picker', 69 | ['S'] = 'open_split', 70 | ['s'] = 'none', 71 | -- ['S'] = 'split_with_window_picker', 72 | -- ['s'] = 'vsplit_with_window_picker', 73 | ['t'] = 'none', 74 | ['w'] = 'open_with_window_picker', 75 | ['C'] = 'close_node', 76 | ['z'] = 'close_all_nodes', 77 | --['Z'] = 'expand_all_nodes', 78 | ['a'] = { 79 | 'add', 80 | -- some commands may take optional config options, see `:h neo-tree-mappings` for details 81 | config = { 82 | show_path = 'none' -- 'none', 'relative', 'absolute' 83 | } 84 | }, 85 | ['A'] = 'add_directory', -- also accepts the optional config.show_path option like 'add'. 86 | ['d'] = 'delete', 87 | ['r'] = 'rename', 88 | ['y'] = 'copy_to_clipboard', 89 | ['x'] = 'cut_to_clipboard', 90 | ['p'] = 'paste_from_clipboard', 91 | ['c'] = 'copy', -- takes text input for destination, also accepts the optional config.show_path option like 'add': 92 | -- ['c'] = { 93 | -- 'copy', 94 | -- config = { 95 | -- show_path = 'none' -- 'none', 'relative', 'absolute' 96 | -- } 97 | --} 98 | ['m'] = 'move', -- takes text input for destination, also accepts the optional config.show_path option like 'add'. 99 | ['q'] = 'close_window', 100 | ['R'] = 'refresh', 101 | ['?'] = 'show_help', 102 | ['<'] = 'prev_source', 103 | ['>'] = 'next_source', 104 | } 105 | }, 106 | } 107 | end, 108 | keybindings = { 109 | n = { 110 | { 111 | key = 'ft', 112 | cmd = 'Neotree reveal left', 113 | }, 114 | } 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /deprecated/colorscheme-themes/themes/edge-dark: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | COLOR_BG0="#2b2d3a" 4 | COLOR_BG1="#2f3242" 5 | COLOR_BG2="#2f3242" 6 | COLOR_BG3="#363a4e" 7 | COLOR_BG4="#393e53" 8 | COLOR_BG5="#666666" 9 | COLOR_BG_GREY="#7a819d" 10 | COLOR_BG_RED="#ec7279" 11 | COLOR_BG_RED1="#473536" 12 | COLOR_BG_RED2="#573c3d" 13 | COLOR_BG_GREEN="#a0c980" 14 | COLOR_BG_GREEN1="#384034" 15 | COLOR_BG_GREEN2="#424c3b" 16 | COLOR_BG_BLUE="#6cb6eb" 17 | COLOR_BG_BLUE1="#323e47" 18 | COLOR_BG_BLUE2="#394957" 19 | COLOR_BG_PURPLE="#d38aea" 20 | COLOR_BG_PURPLE1="#433948" 21 | COLOR_BG_PURPLE2="#514359" 22 | COLOR_FG="#c5cdd9" 23 | COLOR_RED="#ec7279" 24 | COLOR_YELLOW="#deb974" 25 | COLOR_GREEN="#a0c980" 26 | COLOR_CYAN="#5dbbc1" 27 | COLOR_BLUE="#6cb6eb" 28 | COLOR_PURPLE="#d38aea" 29 | COLOR_GREY="#7e8294" 30 | 31 | function color_polybar() { 32 | sed -i s/"foreground = #.*"/"foreground = $COLOR_FG"/g ~/.config/polybar/config 33 | sed -i s/"background = #.*"/"background = $COLOR_BG0"/g ~/.config/polybar/config 34 | sed -i s/"color0 = #.*"/"color0 = $COLOR_BG3"/g ~/.config/polybar/config 35 | sed -i s/"color8 = #.*"/"color8 = $COLOR_BG3"/g ~/.config/polybar/config 36 | sed -i s/"color1 = #.*"/"color1 = $COLOR_RED"/g ~/.config/polybar/config 37 | sed -i s/"color9 = #.*"/"color9 = $COLOR_RED"/g ~/.config/polybar/config 38 | sed -i s/"color2 = #.*"/"color2 = $COLOR_GREEN"/g ~/.config/polybar/config 39 | sed -i s/"color10 = #.*"/"color10 = $COLOR_GREEN"/g ~/.config/polybar/config 40 | sed -i s/"color3 = #.*"/"color3 = $COLOR_YELLOW"/g ~/.config/polybar/config 41 | sed -i s/"color11 = #.*"/"color11 = $COLOR_YELLOW"/g ~/.config/polybar/config 42 | sed -i s/"color3 = #.*"/"color3 = $COLOR_BLUE"/g ~/.config/polybar/config 43 | sed -i s/"color12 = #.*"/"color12 = $COLOR_BLUE"/g ~/.config/polybar/config 44 | sed -i s/"color5 = #.*"/"color5 = $COLOR_PURPLE"/g ~/.config/polybar/config 45 | sed -i s/"color13 = #.*"/"color13 = $COLOR_PURPLE"/g ~/.config/polybar/config 46 | sed -i s/"color6 = #.*"/"color6 = $COLOR_CYAN"/g ~/.config/polybar/config 47 | sed -i s/"color14 = #.*"/"color14 = $COLOR_CYAN"/g ~/.config/polybar/config 48 | sed -i s/"color7 = #.*"/"color7 = $COLOR_FG"/g ~/.config/polybar/config 49 | sed -i s/"color15 = #.*"/"color15 = $COLOR_FG"/g ~/.config/polybar/config 50 | } 51 | 52 | function color_i3wm() { 53 | sed -i s/"client.focused .*$"/"client.focused $COLOR_CYAN $COLOR_CYAN #FFFFFF $COLOR_GREEN $COLOR_CYAN"/g ~/.config/i3/config 54 | sed -i s/"client.focused_inactive .*$"/"client.focused_inactive $COLOR_BG_BLUE2 $COLOR_BG_BLUE2 #FFFFFF $COLOR_GREEN $COLOR_BG_BLUE2"/g ~/.config/i3/config 55 | sed -i s/"client.unfocused .*$"/"client.unfocused $COLOR_BG5 $COLOR_BG5 #FFFFFF $COLOR_RED $COLOR_BG5"/g ~/.config/i3/config 56 | sed -i s/"client.urgent .*$"/"client.urgent $COLOR_RED $COLOR_RED #FFFFFF $COLOR_RED $COLOR_RED"/g ~/.config/i3/config 57 | sed -i s/"client.placeholder .*$"/"client.placeholder $COLOR_PURPLE $COLOR_PURPLE #FFFFFF $COLOR_PURPLE $COLOR_PURPLE"/g ~/.config/i3/config 58 | } 59 | 60 | function color_neovim() { 61 | sed -i s/"^set background=.*"/"set background=dark"/g ~/.config/nvim/init.vim 62 | sed -i s/"^colorscheme.*$"/"colorscheme edge"/g ~/.config/nvim/init.vim 63 | } 64 | 65 | function color_termite() { 66 | sed -i s/"foreground = #.*"/"foreground = $COLOR_FG"/g ~/.config/termite/config 67 | sed -i s/"background = #.*"/"background = $COLOR_BG0"/g ~/.config/termite/config 68 | sed -i s/"color0 = #.*"/"color0 = $COLOR_BG3"/g ~/.config/termite/config 69 | sed -i s/"color8 = #.*"/"color8 = $COLOR_BG5"/g ~/.config/termite/config 70 | sed -i s/"color1 = #.*"/"color1 = $COLOR_RED"/g ~/.config/termite/config 71 | sed -i s/"color9 = #.*"/"color9 = $COLOR_RED"/g ~/.config/termite/config 72 | sed -i s/"color2 = #.*"/"color2 = $COLOR_GREEN"/g ~/.config/termite/config 73 | sed -i s/"color10 = #.*"/"color10 = $COLOR_GREEN"/g ~/.config/termite/config 74 | sed -i s/"color3 = #.*"/"color3 = $COLOR_YELLOW"/g ~/.config/termite/config 75 | sed -i s/"color11 = #.*"/"color11 = $COLOR_YELLOW"/g ~/.config/termite/config 76 | sed -i s/"color3 = #.*"/"color3 = $COLOR_BLUE"/g ~/.config/termite/config 77 | sed -i s/"color12 = #.*"/"color12 = $COLOR_BLUE"/g ~/.config/termite/config 78 | sed -i s/"color5 = #.*"/"color5 = $COLOR_PURPLE"/g ~/.config/termite/config 79 | sed -i s/"color13 = #.*"/"color13 = $COLOR_PURPLE"/g ~/.config/termite/config 80 | sed -i s/"color6 = #.*"/"color6 = $COLOR_CYAN"/g ~/.config/termite/config 81 | sed -i s/"color14 = #.*"/"color14 = $COLOR_CYAN"/g ~/.config/termite/config 82 | sed -i s/"color7 = #.*"/"color7 = $COLOR_FG"/g ~/.config/termite/config 83 | sed -i s/"color15 = #.*"/"color15 = $COLOR_FG"/g ~/.config/termite/config 84 | } 85 | -------------------------------------------------------------------------------- /aerc/binds.conf: -------------------------------------------------------------------------------- 1 | # Binds are of the form = 2 | # To use '=' in a key sequence, substitute it with "Eq": "" 3 | # If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit 4 | = :prev-tab 5 | = :prev-tab 6 | = :next-tab 7 | = :next-tab 8 | \[t = :prev-tab 9 | \]t = :next-tab 10 | = :term 11 | ? = :help keys 12 | = :prompt 'Quit?' quit 13 | = :prompt 'Quit?' quit 14 | = :suspend 15 | 16 | [messages] 17 | q = :quit 18 | 19 | t = :next 20 | = :next 21 | = :next 50% 22 | = :next 100% 23 | = :next 100% 24 | 25 | s = :prev 26 | = :prev 27 | = :prev 50% 28 | = :prev 100% 29 | = :prev 100% 30 | g = :select 0 31 | G = :select -1 32 | 33 | T = :next-folder 34 | = :next-folder 35 | S = :prev-folder 36 | = :prev-folder 37 | C = :collapse-folder 38 | = :collapse-folder 39 | N = :expand-folder 40 | = :expand-folder 41 | 42 | v = :mark -t 43 | = :mark -t:next 44 | V = :mark -v 45 | 46 | J = :toggle-threads 47 | zc = :fold 48 | zo = :unfold 49 | za = :fold -t 50 | zM = :fold -a 51 | zR = :unfold -a 52 | = :fold -t 53 | 54 | = :view 55 | d = :prompt 'Really delete this message?' 'delete-message' 56 | D = :delete 57 | a = :archive flat 58 | A = :unmark -a:mark -T:archive flat 59 | 60 | #C = :compose 61 | m = :compose 62 | 63 | rr = :reply -a 64 | rq = :reply -aq 65 | Rr = :reply 66 | Rq = :reply -q 67 | 68 | c = :cf 69 | $ = :term 70 | ! = :term 71 | | = :pipe 72 | 73 | / = :search 74 | \ = :filter 75 | n = :next-result 76 | N = :prev-result 77 | = :clear 78 | 79 | k = :split 80 | K = :vsplit 81 | 82 | pl = :patch list 83 | pa = :patch apply 84 | pd = :patch drop 85 | pb = :patch rebase 86 | pt = :patch term 87 | ps = :patch switch 88 | 89 | [messages:folder=Drafts] 90 | = :recall 91 | 92 | [view] 93 | / = :toggle-key-passthrough/ 94 | q = :close 95 | O = :open 96 | o = :open 97 | S = :save 98 | | = :pipe 99 | D = :delete 100 | A = :archive flat 101 | 102 | = :open-link 103 | 104 | f = :forward 105 | rr = :reply -a 106 | rq = :reply -aq 107 | Rr = :reply 108 | Rq = :reply -q 109 | 110 | #H = :toggle-headers 111 | = :prev-part 112 | = :prev-part 113 | = :next-part 114 | = :next-part 115 | T = :next 116 | = :next 117 | S = :prev 118 | = :prev 119 | 120 | [view::passthrough] 121 | $noinherit = true 122 | $ex = 123 | = :toggle-key-passthrough 124 | 125 | [compose] 126 | # Keybindings used when the embedded terminal is not selected in the compose 127 | # view 128 | $noinherit = true 129 | $ex = 130 | $complete = 131 | = :prev-field 132 | = :prev-field 133 | = :next-field 134 | = :next-field 135 | = :switch-account -p 136 | = :switch-account -p 137 | = :switch-account -n 138 | = :switch-account -n 139 | = :next-field 140 | = :prev-field 141 | = :prev-tab 142 | = :prev-tab 143 | = :next-tab 144 | = :next-tab 145 | 146 | [compose::editor] 147 | # Keybindings used when the embedded terminal is selected in the compose view 148 | $noinherit = true 149 | $ex = 150 | = :prev-field 151 | = :prev-field 152 | = :next-field 153 | = :next-field 154 | = :prev-tab 155 | = :prev-tab 156 | = :next-tab 157 | = :next-tab 158 | 159 | [compose::review] 160 | # Keybindings used when reviewing a message to be sent 161 | y = :send 162 | n = :abort 163 | v = :preview 164 | p = :postpone 165 | q = :choose -o d discard abort -o p postpone postpone 166 | e = :edit 167 | a = :attach 168 | d = :detach 169 | 170 | [terminal] 171 | $noinherit = true 172 | $ex = 173 | 174 | = :prev-tab 175 | = :next-tab 176 | = :prev-tab 177 | = :next-tab 178 | -------------------------------------------------------------------------------- /rio/config.toml: -------------------------------------------------------------------------------- 1 | # Cursor 2 | # 3 | # Default cursor is Block 4 | # Other available options are: '_' and '|' 5 | cursor = Block 6 | 7 | # Performance 8 | # 9 | # Set WGPU rendering performance 10 | # High: Adapter that has the highest performance. This is often a discrete GPU. 11 | # Low: Adapter that uses the least possible power. This is often an integrated GPU. 12 | # 13 | performance = "High" 14 | 15 | # Theme 16 | # 17 | # It makes Rio look for the specified theme in the themes folder 18 | # (macos and linux: ~/.config/rio/themes/dracula.toml) 19 | # (windows: C:\Users\USER\AppData\Local\rio\themes\dracula.toml) 20 | # 21 | # Dracula theme code is available in: 22 | # https://github.com/dracula/rio-terminal 23 | # 24 | #theme = "dracula" 25 | 26 | # Padding-x 27 | # 28 | # define x axis padding (default is 10) 29 | # 30 | padding-x = 0 31 | 32 | # Option as Alt 33 | # 34 | # This config only works on MacOs. 35 | # Possible choices: 'both', 'left' and 'right'. 36 | # 37 | option-as-alt = 'right' 38 | 39 | # Window Opacity 40 | # 41 | # window-opacity changes the window transparency state. 42 | # Only works for Windows / X11 / WebAssembly 43 | # 44 | window-opacity = 0.5 45 | 46 | # Window Width 47 | # 48 | # window-width changes the intial window width. 49 | # Default: 600 50 | # 51 | window-width = 1200 52 | 53 | # Window Height 54 | # 55 | # window-height changes the inital window height. 56 | # Default: 400 57 | # 58 | window-height = 800 59 | 60 | 61 | # Fonts 62 | # 63 | # Configure fonts used by the terminal 64 | # 65 | # Note: You can set different font families but Rio terminal 66 | # will always look for regular font bounds whene 67 | # 68 | [fonts] 69 | size = 18 70 | 71 | [fonts.regular] 72 | family = "JetBrainsMono Nerd Font" 73 | style = "Thin" 74 | #weight = 400 75 | 76 | ##[fonts.bold] 77 | #family = "cascadiamono" 78 | #style = "normal" 79 | #weight = 800 80 | 81 | ##[fonts.italic] 82 | #family = "cascadiamono" 83 | #style = "italic" 84 | #weight = 400 85 | 86 | ##[fonts.bold-italic] 87 | #family = "cascadiamono" 88 | #style = "italic" 89 | #weight = 800 90 | 91 | # Navigation 92 | # 93 | # "mode" - Define navigation mode 94 | # - NativeTab (MacOs only) 95 | # - CollapsedTab 96 | # - BottomTab 97 | # - TopTab 98 | # - Breadcrumb 99 | # 100 | # "clickable" - Enable click on tabs to switch. 101 | # "use-current-path" - Use same path whenever a new tab is created. 102 | # "color-automation" - Set a specific color for the tab whenever a specific program is running. 103 | # "macos-hide-window-buttons" - (MacOS only) Hide window buttons 104 | # 105 | [navigation] 106 | mode = "BottomTab" 107 | clickable = true 108 | use-current-path = true 109 | color-automation = [ 110 | { program = "kak", color = "#FFFF00" } 111 | ] 112 | macos-hide-window-buttons = true 113 | 114 | # Shell 115 | # 116 | # You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. 117 | # Entries in `shell.args` are passed unmodified as arguments to the shell. 118 | # 119 | # Default: 120 | # - (macOS) user login shell 121 | # - (Linux/BSD) user login shell 122 | # - (Windows) powershell 123 | # 124 | #shell = { program = "/bin/zsh", args = ["--login"] } 125 | 126 | # Startup directory 127 | # 128 | # Directory the shell is started in. If this is unset the working 129 | # directory of the parent process will be used. 130 | # 131 | # This configuration only has effect if use-fork is disabled 132 | # 133 | #working-dir = "/Users/phaazon" 134 | 135 | # Editor 136 | # 137 | # You can set your default editor to open configuration file 138 | # 139 | # Default: 140 | # - (macOS) value of $EDITOR with a fallback to "vim" 141 | # - (Linux/BSD) value of $EDITOR with a fallback to "vi" 142 | # - (Windows) value of $EDITOR with a fallback to "vi" 143 | # 144 | # The example below sets VS Code as default editor 145 | # 146 | #editor = "code" 147 | 148 | # Environment variables 149 | # 150 | # The example below sets fish as the default SHELL using env vars 151 | # please do not copy this if you do not need 152 | # 153 | #env-vars = ['SHELL=/opt/homebrew/bin/fish'] 154 | 155 | # Disable render when unfocused 156 | # 157 | # This property disable renderer processes while Rio is unfocused. 158 | # 159 | disable-renderer-when-unfocused = false 160 | 161 | # Use fork 162 | # 163 | # Defaults for POSIX-based systems (Windows is not configurable): 164 | # MacOS: spawn processes 165 | # Linux/BSD: fork processes 166 | # 167 | use-fork = false 168 | 169 | # Colors 170 | # 171 | # Colors definition will overwrite any property in theme 172 | # (considering if theme folder does exists and is being used) 173 | # 174 | #[colors] 175 | #background = "#BBBD64" 176 | #foreground = "#040400" 177 | #cursor = "#242805" 178 | #tabs-active = "#F8A145" 179 | #blue = "#454A12" 180 | 181 | # Bindings 182 | # 183 | # Create custom Key bindings for Rio terminal 184 | # More information in: raphamorim.io/rio/docs/custom-key-bindings 185 | # 186 | [bindings] 187 | keys = [ 188 | { key = "q", with = "super", action = "Quit" }, 189 | # Bytes[27, 91, 53, 126] is equivalent to "\x1b[5~" 190 | { key = "home", with = "super | shift", bytes = [27, 91, 53, 126] } 191 | ] 192 | 193 | [developer] 194 | # Log level 195 | # 196 | # This property enables log level filter. Default is "OFF". 197 | # 198 | log-level = "INFO" 199 | -------------------------------------------------------------------------------- /nvim/init.lua: -------------------------------------------------------------------------------- 1 | -- 2 | -- ██████╗░██╗░░██╗░█████╗░░█████╗░███████╗░█████╗░███╗░░██╗░░░██╗░░░░░██╗░░░██╗░█████╗░ 3 | -- ██╔══██╗██║░░██║██╔══██╗██╔══██╗╚════██║██╔══██╗████╗░██║░░░██║░░░░░██║░░░██║██╔══██╗ 4 | -- ██████╔╝███████║███████║███████║░░███╔═╝██║░░██║██╔██╗██║░░░██║░░░░░██║░░░██║███████║ 5 | -- ██╔═══╝░██╔══██║██╔══██║██╔══██║██╔══╝░░██║░░██║██║╚████║░░░██║░░░░░██║░░░██║██╔══██║ 6 | -- ██║░░░░░██║░░██║██║░░██║██║░░██║███████╗╚█████╔╝██║░╚███║██╗███████╗╚██████╔╝██║░░██║ 7 | -- ╚═╝░░░░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝░╚════╝░╚═╝░░╚══╝╚═╝╚══════╝░╚═════╝░╚═╝░░╚═╝ 8 | -- °.· phaazon’s Neovim configuration ·.° 9 | -- 10 | -- The configuration is designed in several sections: 11 | -- 12 | -- - First we define better defaults (vim.opt). 13 | -- - We then define a couple global optinons (vim.g). 14 | -- - Some autocommands follow. 15 | -- - We then load some keybindinds. 16 | -- - Packages are then loaded. The list of packages is in lua/pkgs, and each individual 17 | -- package can have their configuration in lua/pkg/.lua. See the mapping to find 18 | -- the name of the package. 19 | -- - And finally, the home-made statusline. 20 | 21 | -- better defaults 22 | local opt = vim.opt 23 | opt.title = true -- report window title 24 | opt.textwidth = 120 -- live the dream 25 | opt.wrap = false -- disable wrapping 26 | opt.hidden = true -- prevent buffers from getting lost when closed 27 | opt.cursorline = true -- show the current line number highlighted for the cursor 28 | opt.termguicolors = true -- how the fuck isn’t that a default? 29 | opt.updatetime = 10 -- time to wait before updating things (typically, gutter / diagnostics) 30 | opt.expandtab = true -- fuck tabs 31 | opt.swapfile = false -- fuck swap files too 32 | opt.tabstop = 2 -- number of spaces to use to show tabs (when others use them…) 33 | opt.mouse = 'nvi' -- mouse support (normal, visual, insert) 34 | opt.showmode = false -- disable show mode, as we use the colorscheme to show it 35 | opt.ruler = true -- show the ruler 36 | opt.inccommand = 'nosplit' -- do not split and show matches when searching 37 | opt.fillchars = 'vert:│' -- various fill chars 38 | opt.timeout = false 39 | opt.timeoutlen = 0 40 | opt.completeopt = 'menuone,noselect' -- completions options 41 | opt.shortmess = 'filmxoOstTIc' -- it really is a mess 42 | opt.number = true 43 | opt.numberwidth = 1 44 | opt.shiftwidth = 2 -- indentation level 45 | opt.shiftwidth = 2 46 | opt.ignorecase = true 47 | opt.smartcase = true 48 | opt.virtualedit = 'onemore' 49 | opt.laststatus = 3 50 | opt.foldenable = true 51 | opt.foldmethod = 'expr' 52 | opt.foldexpr = 'nvim_treesitter#foldexpr()' 53 | opt.foldenable = false 54 | 55 | -- a couple of crap; I wish I could move that somewhere else; get rid of it 56 | local g = vim.g 57 | g.rust_recommended_style = 0 58 | g.mapleader = ' ' 59 | g.maplocalleader = ',' 60 | 61 | -- automatically remove line numbers in terminals 62 | vim.api.nvim_create_autocmd({ 'TermOpen' }, { 63 | pattern = { '*' }, 64 | callback = function() 65 | vim.opt.nu = false 66 | end 67 | }) 68 | 69 | -- remove trailing whitespaces & highlight yank 70 | vim.api.nvim_create_autocmd({ 'BufWritePre' }, { 71 | pattern = { '*' }, 72 | callback = function() 73 | vim.api.nvim_command [[%s/\s\+$//e]] 74 | end 75 | }) 76 | 77 | vim.api.nvim_create_autocmd({ 'TextYankPost' }, { 78 | pattern = { '*' }, 79 | callback = function() 80 | vim.highlight.on_yank() 81 | end 82 | }) 83 | 84 | require 'keybindings' 85 | 86 | -- package setup 87 | vim.cmd [[packadd packer.nvim]] 88 | require'packer'.startup(function(use) 89 | -- Load a package in a smarter way. 90 | local load_pkg = function(uid, name) 91 | local ok, pkg_cfg = pcall(require, 'pkg.' .. name) 92 | if not ok then 93 | pkg_cfg = {} 94 | end 95 | 96 | -- init; code that runs before the plugin is loaded 97 | if not pkg_cfg.disable and pkg_cfg.init ~= nil then 98 | pkg_cfg.init() 99 | pkg_cfg.init = nil 100 | end 101 | 102 | -- extract the keybindings, if any, because this config option is not recognized by packer 103 | local keybindings = pkg_cfg.keybindings or {} 104 | pkg_cfg.keybindings = nil 105 | 106 | pkg_cfg = vim.tbl_extend('keep', { uid }, pkg_cfg) 107 | 108 | 109 | if not pkg_cfg.disable then 110 | use(pkg_cfg) 111 | 112 | -- set keybindings 113 | for mode, bindings in pairs(keybindings) do 114 | for _, binding in ipairs(bindings) do 115 | local lhs = binding.key 116 | local rhs 117 | 118 | if binding.cmd ~= nil then 119 | rhs = '' .. binding.cmd .. '' 120 | elseif binding.lua ~= nil then 121 | local t = type(binding.lua) 122 | if t == 'string' then 123 | rhs = ':lua ' .. binding.lua .. '' 124 | elseif t == 'function' then 125 | rhs = binding.lua 126 | end 127 | end 128 | 129 | vim.keymap.set(mode, lhs, rhs, { silent = true, noremap = true }) 130 | -- vim.api.nvim_set_keymap(mode, lhs, rhs, { silent = true, noremap = true }) 131 | end 132 | end 133 | end 134 | end 135 | 136 | for uid, name in pairs(require'pkgs') do 137 | load_pkg(uid, name) 138 | end 139 | end) 140 | 141 | require 'statusline' 142 | -------------------------------------------------------------------------------- /sway/config: -------------------------------------------------------------------------------- 1 | input * { 2 | xkb_layout "fr" 3 | xkb_variant "bepo" 4 | xkb_options "caps:swapescape" 5 | } 6 | 7 | input "1:1:AT_Translated_Set_2_keyboard" { 8 | repeat_rate 30 9 | repeat_delay 200 10 | } 11 | 12 | input type:touchpad { 13 | tap enabled 14 | natural_scroll enabled 15 | dwt enabled 16 | } 17 | 18 | output "*" bg ~/pictures/wallpapers/126402.png fill 19 | 20 | #exec wl-paste -t text --watch clipman store --no-persist 21 | 22 | font pango:JetBrainsMono Nerd Font 8 23 | 24 | exec swayidle -w \ 25 | before-sleep 'playerctl pause' \ 26 | before-sleep 'swaylock -F -c 000000' \ 27 | timeout 1800 'swaylock -fF -c 000000' \ 28 | timeout 1805 'swaymsg "output * power off"' \ 29 | resume 'swaymsg "output * power on"' 30 | 31 | exec waybar 32 | 33 | default_orientation auto 34 | workspace_layout default 35 | 36 | default_border pixel 37 | default_floating_border normal 38 | smart_borders on 39 | show_marks yes 40 | tiling_drag off 41 | gaps inner 5px 42 | gaps outer 10px 43 | 44 | # Colors 45 | # class border backgr. text indicator child_border 46 | client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577 47 | client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a 48 | client.unfocused #333333 #222222 #888888 #292d2e #222222 49 | client.urgent #2f343a #900000 #ffffff #900000 #900000 50 | client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c 51 | 52 | client.background #ffffff 53 | 54 | # Various useful variables 55 | set $mod Mod4 56 | set $term alacritty 57 | 58 | # Use Mouse+$mod to drag floating windows to their wanted position 59 | floating_modifier $mod 60 | 61 | # keybindings 62 | 63 | # start a terminal 64 | bindsym $mod+Return exec $term 65 | 66 | # show the scratchpad 67 | bindsym $mod+d scratchpad show 68 | bindsym $mod+Shift+d move scratchpad 69 | 70 | # kill focused window 71 | bindsym $mod+Shift+q kill 72 | 73 | # change focus 74 | bindsym $mod+c focus left 75 | bindsym $mod+t focus down 76 | bindsym $mod+s focus up 77 | bindsym $mod+r focus right 78 | 79 | # move focused window 80 | bindsym $mod+Shift+C move left 81 | bindsym $mod+Shift+T move down 82 | bindsym $mod+Shift+S move up 83 | bindsym $mod+Shift+R move right 84 | 85 | # resize windows 86 | bindsym $mod+Ctrl+c resize grow width 10 px or 10 ppt 87 | bindsym $mod+Ctrl+t resize shrink height 10 px or 10 ppt 88 | bindsym $mod+Ctrl+s resize grow height 10 px or 10 ppt 89 | bindsym $mod+Ctrl+r resize shrink width 10 px or 10 ppt 90 | 91 | # split in horizontal orientation 92 | bindsym $mod+v split h 93 | 94 | # split in vertical orientation 95 | bindsym $mod+o split v 96 | 97 | # enter fullscreen mode for the focused container 98 | bindsym $mod+f fullscreen toggle 99 | 100 | # change container layout (stacked, tabbed, toggle split) 101 | bindsym $mod+u layout stacking 102 | bindsym $mod+eacute layout tabbed 103 | bindsym $mod+p layout toggle split 104 | 105 | # toggle tiling / floating 106 | bindsym $mod+Shift+space floating toggle 107 | 108 | # focus the parent container 109 | bindsym $mod+a focus parent 110 | 111 | # switch to workspace 112 | bindsym $mod+quotedbl workspace number 1 113 | bindsym $mod+guillemotleft workspace number 2 114 | bindsym $mod+guillemotright workspace number 3 115 | bindsym $mod+parenleft workspace number 4 116 | bindsym $mod+parenright workspace number 5 117 | bindsym $mod+at workspace number 6 118 | bindsym $mod+plus workspace number 7 119 | bindsym $mod+minus workspace number 8 120 | bindsym $mod+slash workspace number 9 121 | bindsym $mod+asterisk workspace number 0 122 | 123 | # move focused container to workspace 124 | bindsym $mod+Shift+quotedbl move container to workspace number 1 125 | bindsym $mod+Shift+guillemotleft move container to workspace number 2 126 | bindsym $mod+Shift+guillemotright move container to workspace number 3 127 | bindsym $mod+Shift+parenleft move container to workspace number 4 128 | bindsym $mod+Shift+parenright move container to workspace number 5 129 | bindsym $mod+Shift+at move container to workspace number 6 130 | bindsym $mod+Shift+plus move container to workspace number 7 131 | bindsym $mod+Shift+minus move container to workspace number 8 132 | bindsym $mod+Shift+slash move container to workspace number 9 133 | bindsym $mod+Shift+asterisk move container to workspace number 0 134 | 135 | # Launcher 136 | bindsym $mod+Space exec bemenu-run 137 | 138 | # Marks 139 | bindsym $mod+m exec echo "" | wmenu -p mark | xargs swaymsg mark 140 | 141 | # reload the configuration file 142 | bindsym $mod+Shift+X reload 143 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 144 | bindsym $mod+Shift+O restart 145 | 146 | bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% 147 | bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% 148 | bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle 149 | bindsym --locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle 150 | bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- 151 | bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ 152 | bindsym --locked XF86AudioPlay exec playerctl play-pause 153 | bindsym --locked XF86AudioNext exec playerctl next 154 | bindsym --locked XF86AudioPrev exec playerctl previous 155 | bindsym XF86Search exec bemenu-run 156 | -------------------------------------------------------------------------------- /nvim/lua/pkg/mind.lua: -------------------------------------------------------------------------------- 1 | return { 2 | branch = 'v2', 3 | requires = { 'nvim-lua/plenary.nvim' }, 4 | config = function() 5 | require'mind'.setup { 6 | persistence = { 7 | state_path = "~/mind/mind.json", 8 | data_dir = "~/mind/data" 9 | }, 10 | 11 | ui = { 12 | width = 40, 13 | 14 | highlight = { 15 | node_root = 'Number', 16 | } 17 | }, 18 | 19 | keymaps = { 20 | normal = { 21 | ['/'] = false, 22 | T = function(args) 23 | require'mind.ui'.with_cursor(function(line) 24 | local tree = args.get_tree() 25 | local node = require'mind.node'.get_node_by_line(tree, line) 26 | 27 | if node.icon == nil or node.icon == ' ' then 28 | node.icon = ' ' 29 | elseif node.icon == ' ' then 30 | node.icon = ' ' 31 | elseif node.icon == ' ' then 32 | node.icon = ' ' 33 | end 34 | 35 | args.save_tree() 36 | require'mind.ui'.rerender(tree, args.opts) 37 | end) 38 | end, 39 | }, 40 | selection = { 41 | ['/'] = false 42 | } 43 | } 44 | } 45 | end, 46 | keybindings = { 47 | n = { 48 | { 49 | key = 'mc', 50 | lua = function() 51 | require'mind'.wrap_smart_project_tree_fn(function(args) 52 | require'mind.commands'.create_node_index( 53 | args.get_tree(), 54 | require'mind.node'.MoveDir.INSIDE_END, 55 | args.save_tree, 56 | args.opts 57 | ) 58 | end) 59 | end 60 | }, 61 | { 62 | key = 'Mc', 63 | lua = function() 64 | require'mind'.wrap_main_tree_fn(function(args) 65 | require'mind.commands'.create_node_index( 66 | args.get_tree(), 67 | require'mind.node'.MoveDir.INSIDE_END, 68 | args.save_tree, 69 | args.opts 70 | ) 71 | end) 72 | end 73 | }, 74 | { 75 | key = 'mi', 76 | lua = function() 77 | vim.notify('initializing project tree') 78 | require'mind'.wrap_smart_project_tree_fn(function(args) 79 | local tree = args.get_tree() 80 | local mind_node = require'mind.node' 81 | 82 | local _,tasks = mind_node.get_node_by_path(tree, '/Tasks', true) 83 | tasks.icon = '陼' 84 | 85 | local _, backlog = mind_node.get_node_by_path(tree, '/Tasks/Backlog', true) 86 | backlog.icon = ' ' 87 | 88 | local _, on_going = mind_node.get_node_by_path(tree, '/Tasks/On-going', true) 89 | on_going.icon = ' ' 90 | 91 | local _, done = mind_node.get_node_by_path(tree, '/Tasks/Done', true) 92 | done.icon = ' ' 93 | 94 | local _, cancelled = mind_node.get_node_by_path(tree, '/Tasks/Cancelled', true) 95 | cancelled.icon = ' ' 96 | 97 | local _, notes = mind_node.get_node_by_path(tree, '/Notes', true) 98 | notes.icon = ' ' 99 | 100 | args.save_tree() 101 | end) 102 | end 103 | }, 104 | { 105 | key = 'ml', 106 | lua = function() 107 | require'mind'.wrap_smart_project_tree_fn(function(args) 108 | require'mind.commands'.copy_node_link_index(args.get_tree(), nil, args.opts) 109 | end) 110 | end 111 | }, 112 | { 113 | key = 'Ml', 114 | lua = function() 115 | require'mind'.wrap_main_tree_fn(function(args) 116 | require'mind.commands'.copy_node_link_index(args.get_tree(), nil, args.opts) 117 | end) 118 | end 119 | }, 120 | { 121 | key = 'j', 122 | lua = function() 123 | require'mind'.wrap_main_tree_fn(function(args) 124 | local tree = args.get_tree() 125 | local path = vim.fn.strftime('/Journal/%Y/%b/%d') 126 | local _, node = require'mind.node'.get_node_by_path(tree, path, true) 127 | 128 | if node == nil then 129 | vim.notify('cannot open journal 🙁', vim.log.levels.WARN) 130 | return 131 | end 132 | 133 | require'mind.commands'.open_data(tree, node, args.data_dir, args.save_tree, args.opts) 134 | args.save_tree() 135 | end) 136 | end 137 | }, 138 | { 139 | key = 'Mm', 140 | cmd = 'MindOpenMain', 141 | }, 142 | { 143 | key = 'mm', 144 | cmd = 'MindOpenSmartProject', 145 | }, 146 | { 147 | key = 'ms', 148 | lua = function() 149 | require'mind'.wrap_smart_project_tree_fn(function(args) 150 | require'mind.commands'.open_data_index(args.get_tree(), args.data_dir, args.save_tree, args.opts) 151 | end) 152 | end 153 | }, 154 | { 155 | key = 'Ms', 156 | lua = function() 157 | require'mind'.wrap_main_tree_fn(function(args) 158 | require'mind.commands'.open_data_index(args.get_tree(), args.data_dir, args.save_tree, args.opts) 159 | end) 160 | end 161 | }, 162 | } 163 | } 164 | } 165 | -------------------------------------------------------------------------------- /waybar/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | /* `otf-font-awesome` is required to be installed for icons */ 3 | font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; 4 | font-size: 13px; 5 | } 6 | 7 | window#waybar { 8 | background-color: rgba(43, 48, 59, 0.5); 9 | border-bottom: 3px solid rgba(100, 114, 125, 0.5); 10 | color: #ffffff; 11 | transition-property: background-color; 12 | transition-duration: .5s; 13 | } 14 | 15 | window#waybar.hidden { 16 | opacity: 0.2; 17 | } 18 | 19 | /* 20 | window#waybar.empty { 21 | background-color: transparent; 22 | } 23 | window#waybar.solo { 24 | background-color: #FFFFFF; 25 | } 26 | */ 27 | 28 | window#waybar.termite { 29 | background-color: #3F3F3F; 30 | } 31 | 32 | window#waybar.chromium { 33 | background-color: #000000; 34 | border: none; 35 | } 36 | 37 | button { 38 | /* Use box-shadow instead of border so the text isn't offset */ 39 | box-shadow: inset 0 -3px transparent; 40 | /* Avoid rounded borders under each button name */ 41 | border: none; 42 | border-radius: 0; 43 | } 44 | 45 | /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ 46 | button:hover { 47 | background: inherit; 48 | box-shadow: inset 0 -3px #ffffff; 49 | } 50 | 51 | #workspaces button { 52 | padding: 0 0.5em; 53 | background-color: @surface0; 54 | color: @text; 55 | margin: 0.25em; 56 | } 57 | 58 | #workspaces button.empty { 59 | color: @overlay0; 60 | } 61 | 62 | #workspaces button.visible { 63 | color: @blue; 64 | } 65 | 66 | #workspaces button.active { 67 | color: @green; 68 | } 69 | 70 | #workspaces button:hover { 71 | background: rgba(0, 0, 0, 0.2); 72 | } 73 | 74 | #workspaces button.focused { 75 | background-color: #64727D; 76 | box-shadow: inset 0 -3px #ffffff; 77 | } 78 | 79 | #workspaces button.urgent { 80 | background-color: #eb4d4b; 81 | } 82 | 83 | #mode { 84 | background-color: #64727D; 85 | border-bottom: 3px solid #ffffff; 86 | } 87 | 88 | #clock, 89 | #battery, 90 | #cpu, 91 | #memory, 92 | #disk, 93 | #temperature, 94 | #backlight, 95 | #network, 96 | #pulseaudio, 97 | #wireplumber, 98 | #custom-media, 99 | #tray, 100 | #mode, 101 | #idle_inhibitor, 102 | #scratchpad, 103 | #mpd { 104 | padding: 0 10px; 105 | color: #ffffff; 106 | } 107 | 108 | #window, 109 | #workspaces { 110 | margin: 0 4px; 111 | } 112 | 113 | /* If workspaces is the leftmost module, omit left margin */ 114 | .modules-left > widget:first-child > #workspaces { 115 | margin-left: 0; 116 | } 117 | 118 | /* If workspaces is the rightmost module, omit right margin */ 119 | .modules-right > widget:last-child > #workspaces { 120 | margin-right: 0; 121 | } 122 | 123 | #clock { 124 | background-color: #64727D; 125 | } 126 | 127 | #battery { 128 | background-color: #ffffff; 129 | color: #000000; 130 | } 131 | 132 | #battery.charging, #battery.plugged { 133 | color: #ffffff; 134 | background-color: #26A65B; 135 | } 136 | 137 | @keyframes blink { 138 | to { 139 | background-color: #ffffff; 140 | color: #000000; 141 | } 142 | } 143 | 144 | #battery.critical:not(.charging) { 145 | background-color: #f53c3c; 146 | color: #ffffff; 147 | animation-name: blink; 148 | animation-duration: 0.5s; 149 | animation-timing-function: linear; 150 | animation-iteration-count: infinite; 151 | animation-direction: alternate; 152 | } 153 | 154 | label:focus { 155 | background-color: #000000; 156 | } 157 | 158 | #cpu { 159 | background-color: #2ecc71; 160 | color: #000000; 161 | } 162 | 163 | #memory { 164 | background-color: #9b59b6; 165 | } 166 | 167 | #disk { 168 | background-color: #964B00; 169 | } 170 | 171 | #backlight { 172 | background-color: #90b1b1; 173 | } 174 | 175 | #network { 176 | background-color: #2980b9; 177 | } 178 | 179 | #network.disconnected { 180 | background-color: #f53c3c; 181 | } 182 | 183 | #pulseaudio { 184 | background-color: #f1c40f; 185 | color: #000000; 186 | } 187 | 188 | #pulseaudio.muted { 189 | background-color: #90b1b1; 190 | color: #2a5c45; 191 | } 192 | 193 | #wireplumber { 194 | background-color: #fff0f5; 195 | color: #000000; 196 | } 197 | 198 | #wireplumber.muted { 199 | background-color: #f53c3c; 200 | } 201 | 202 | #custom-media { 203 | background-color: #66cc99; 204 | color: #2a5c45; 205 | min-width: 100px; 206 | } 207 | 208 | #custom-media.custom-spotify { 209 | background-color: #66cc99; 210 | } 211 | 212 | #custom-media.custom-vlc { 213 | background-color: #ffa000; 214 | } 215 | 216 | #temperature { 217 | background-color: #f0932b; 218 | } 219 | 220 | #temperature.critical { 221 | background-color: #eb4d4b; 222 | } 223 | 224 | #tray { 225 | background-color: #2980b9; 226 | } 227 | 228 | #tray > .passive { 229 | -gtk-icon-effect: dim; 230 | } 231 | 232 | #tray > .needs-attention { 233 | -gtk-icon-effect: highlight; 234 | background-color: #eb4d4b; 235 | } 236 | 237 | #idle_inhibitor { 238 | background-color: #2d3436; 239 | } 240 | 241 | #idle_inhibitor.activated { 242 | background-color: #ecf0f1; 243 | color: #2d3436; 244 | } 245 | 246 | #mpd { 247 | background-color: #66cc99; 248 | color: #2a5c45; 249 | } 250 | 251 | #mpd.disconnected { 252 | background-color: #f53c3c; 253 | } 254 | 255 | #mpd.stopped { 256 | background-color: #90b1b1; 257 | } 258 | 259 | #mpd.paused { 260 | background-color: #51a37a; 261 | } 262 | 263 | #language { 264 | background: #00b093; 265 | color: #740864; 266 | padding: 0 5px; 267 | margin: 0 5px; 268 | min-width: 16px; 269 | } 270 | 271 | #keyboard-state { 272 | background: #97e1ad; 273 | color: #000000; 274 | padding: 0 0px; 275 | margin: 0 5px; 276 | min-width: 16px; 277 | } 278 | 279 | #keyboard-state > label { 280 | padding: 0 5px; 281 | } 282 | 283 | #keyboard-state > label.locked { 284 | background: rgba(0, 0, 0, 0.2); 285 | } 286 | 287 | #scratchpad { 288 | background: rgba(0, 0, 0, 0.2); 289 | } 290 | 291 | #scratchpad.empty { 292 | background-color: transparent; 293 | } 294 | -------------------------------------------------------------------------------- /waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | // "layer": "top", // Waybar at top layer 3 | // "position": "bottom", // Waybar position (top|bottom|left|right) 4 | "height": 30, // Waybar height (to be removed for auto height) 5 | // "width": 1280, // Waybar width 6 | "spacing": 4, // Gaps between modules (4px) 7 | // Choose the order of the modules 8 | "modules-left": ["sway/workspaces", "sway/mode", "custom/media"], 9 | "modules-center": [], 10 | "modules-right": ["idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "battery", "battery#bat2", "clock", "tray"], 11 | // Modules configuration 12 | // "sway/workspaces": { 13 | // "disable-scroll": true, 14 | // "all-outputs": true, 15 | // "warp-on-scroll": false, 16 | // "format": "{name}: {icon}", 17 | // "format-icons": { 18 | // "1": "", 19 | // "2": "", 20 | // "3": "", 21 | // "4": "", 22 | // "5": "", 23 | // "urgent": "", 24 | // "focused": "", 25 | // "default": "" 26 | // } 27 | // }, 28 | "keyboard-state": { 29 | "numlock": true, 30 | "capslock": true, 31 | "format": "{name} {icon}", 32 | "format-icons": { 33 | "locked": "", 34 | "unlocked": "" 35 | } 36 | }, 37 | "sway/mode": { 38 | "format": "{}" 39 | }, 40 | "river/mode": { 41 | "format": "{}" 42 | }, 43 | "sway/scratchpad": { 44 | "format": "{icon} {count}", 45 | "show-empty": false, 46 | "format-icons": ["", ""], 47 | "tooltip": true, 48 | "tooltip-format": "{app}: {title}" 49 | }, 50 | "mpd": { 51 | "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", 52 | "format-disconnected": "Disconnected ", 53 | "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", 54 | "unknown-tag": "N/A", 55 | "interval": 2, 56 | "consume-icons": { 57 | "on": " " 58 | }, 59 | "random-icons": { 60 | "off": " ", 61 | "on": " " 62 | }, 63 | "repeat-icons": { 64 | "on": " " 65 | }, 66 | "single-icons": { 67 | "on": "1 " 68 | }, 69 | "state-icons": { 70 | "paused": "", 71 | "playing": "" 72 | }, 73 | "tooltip-format": "MPD (connected)", 74 | "tooltip-format-disconnected": "MPD (disconnected)" 75 | }, 76 | "idle_inhibitor": { 77 | "format": "{icon}", 78 | "format-icons": { 79 | "activated": "", 80 | "deactivated": "" 81 | } 82 | }, 83 | "tray": { 84 | // "icon-size": 21, 85 | "spacing": 10 86 | }, 87 | "clock": { 88 | // "timezone": "America/New_York", 89 | "tooltip-format": "{:%Y %B}\n{calendar}", 90 | "format-alt": "{:%Y-%m-%d}" 91 | }, 92 | "cpu": { 93 | "format": "{usage}% ", 94 | "tooltip": false 95 | }, 96 | "memory": { 97 | "format": "{}% " 98 | }, 99 | "temperature": { 100 | // "thermal-zone": 2, 101 | // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", 102 | "critical-threshold": 80, 103 | // "format-critical": "{temperatureC}°C {icon}", 104 | "format": "{temperatureC}°C {icon}", 105 | "format-icons": ["", "", ""] 106 | }, 107 | "backlight": { 108 | // "device": "acpi_video1", 109 | "format": "{percent}% {icon}", 110 | "format-icons": ["", "", "", "", "", "", "", "", ""] 111 | }, 112 | "battery": { 113 | "states": { 114 | // "good": 95, 115 | "warning": 30, 116 | "critical": 15 117 | }, 118 | "format": "{capacity}% {icon}", 119 | "format-full": "{capacity}% {icon}", 120 | "format-charging": "{capacity}% ", 121 | "format-plugged": "{capacity}% ", 122 | "format-alt": "{time} {icon}", 123 | // "format-good": "", // An empty format will hide the module 124 | // "format-full": "", 125 | "format-icons": ["", "", "", "", ""] 126 | }, 127 | "battery#bat2": { 128 | "bat": "BAT2" 129 | }, 130 | "network": { 131 | // "interface": "wlp2*", // (Optional) To force the use of this interface 132 | "format-wifi": "{essid} ({signalStrength}%) ", 133 | "format-ethernet": "{ipaddr}/{cidr} ", 134 | "tooltip-format": "{ifname} via {gwaddr} ", 135 | "format-linked": "{ifname} (No IP) ", 136 | "format-disconnected": "Disconnected ⚠", 137 | "format-alt": "{ifname}: {ipaddr}/{cidr}" 138 | }, 139 | "pulseaudio": { 140 | // "scroll-step": 1, // %, can be a float 141 | "format": "{volume}% {icon} {format_source}", 142 | "format-bluetooth": "{volume}% {icon} {format_source}", 143 | "format-bluetooth-muted": " {icon} {format_source}", 144 | "format-muted": " {format_source}", 145 | "format-source": "{volume}% ", 146 | "format-source-muted": "", 147 | "format-icons": { 148 | "headphone": "", 149 | "hands-free": "", 150 | "headset": "", 151 | "phone": "", 152 | "portable": "", 153 | "car": "", 154 | "default": ["", "", ""] 155 | }, 156 | "on-click": "pavucontrol" 157 | }, 158 | "custom/media": { 159 | "format": "{icon} {}", 160 | "return-type": "json", 161 | "max-length": 40, 162 | "format-icons": { 163 | "spotify": "", 164 | "default": "🎜" 165 | }, 166 | "escape": true, 167 | "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder 168 | // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name 169 | } 170 | } 171 | 172 | 173 | -------------------------------------------------------------------------------- /nvim/lua/statusline.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | function M.create_highlights() 4 | local function set_hl(group, tbl) 5 | vim.api.nvim_set_hl(0, group, tbl) 6 | end 7 | 8 | set_hl('StatusLineBg', { link = 'Statusline' }) 9 | set_hl('StatusLineDeli', { link = 'Statusline' }) 10 | set_hl('StatusLineLineNb', { link = 'Statusline' }) 11 | set_hl('StatusLineColNb', { link = 'Statusline' }) 12 | set_hl('StatusLinePercent', { link = 'Statusline' }) 13 | set_hl('StatusLineCount', { link = 'Statusline' }) 14 | set_hl('StatusLineGitBranchSymbol', { link = 'Statusline' }) 15 | set_hl('StatusLineGitBranchName', { link = 'Statusline' }) 16 | set_hl('StatusLineGitDiffNone', { link = 'Statusline' }) 17 | set_hl('StatusLineGitDiffAdd', { link = 'Statusline' }) 18 | set_hl('StatusLineGitDiffMod', { link = 'Statusline' }) 19 | set_hl('StatusLineGitDifDel', { link = 'Statusline' }) 20 | set_hl('StatusLineNormalMode', { link = 'Statusline' }) 21 | set_hl('StatusLineInsertMode', { link = 'Statusline' }) 22 | set_hl('StatusLineReplaceMode', { link = 'Statusline' }) 23 | set_hl('StatusLineVisualMode', { link = 'Statusline' }) 24 | set_hl('StatusLineSelectMode', { link = 'Statusline' }) 25 | set_hl('StatusLineSelectLineMode', { link = 'Statusline' }) 26 | set_hl('StatusLineSelectBlockMode', { link = 'Statusline' }) 27 | set_hl('StatusLineCommandMode', { link = 'Statusline' }) 28 | set_hl('StatusLineHitEnterPromptMode', { link = 'Statusline'}) 29 | end 30 | 31 | vim.api.nvim_command('augroup phaazon') 32 | vim.api.nvim_command(' au!') 33 | vim.api.nvim_command([[ au ColorScheme * lua require'statusline'.create_highlights()]]) 34 | vim.api.nvim_command('augroup END') 35 | 36 | local function vcs_status() 37 | local dict = vim.b.gitsigns_status_dict 38 | 39 | if dict == nil then 40 | return '' 41 | end 42 | 43 | if dict.head == nil then 44 | return '' 45 | end 46 | 47 | local ahl, mhl, rhl 48 | local added, changed, removed = 0, 0, 0 49 | 50 | if dict.added ~= nil and dict.added > 0 then 51 | ahl = '%#StatusLineGitDiffAdd#' 52 | added = dict.added 53 | else 54 | ahl = '%#StatusLineGitDiffNone#' 55 | end 56 | 57 | if dict.changed ~= nil and dict.changed > 0 then 58 | mhl = '%#StatusLineGitDiffMod#' 59 | changed = dict.changed 60 | else 61 | mhl = '%#StatusLineGitDiffNone#' 62 | end 63 | 64 | if dict.removed ~= nil and dict.removed > 0 then 65 | rhl = '%#StatusLineGitDiffDel#' 66 | removed = dict.removed 67 | else 68 | rhl = '%#StatusLineGitDiffNone#' 69 | end 70 | 71 | return string.format('%s %i %s %i %s %i %%#StatusLineGitBranchSymbol# %%#StatusLineGitBranchName#%s ', 72 | ahl, 73 | added, 74 | mhl, 75 | changed, 76 | rhl, 77 | removed, 78 | dict.head:gsub('%s+', '') 79 | ) 80 | end 81 | 82 | local function get_file_name(modified) 83 | local max_width = vim.fn.winwidth(vim.g.statusline_winid) * 0.25 84 | local file_name = vim.fn.fnamemodify(vim.fn.bufname(vim.fn.winbufnr(vim.g.statusline_winid)), ':.') 85 | local width = vim.fn.strwidth(file_name) 86 | 87 | if width == 0 then 88 | file_name = '[scratch]' 89 | else 90 | -- If the file name is too big, we just write its tail part 91 | if width > max_width then 92 | file_name = vim.fn.fnamemodify(file_name, ':t') 93 | end 94 | 95 | local devicons = require'nvim-web-devicons' 96 | if devicons ~= nil then 97 | local ext = vim.fn.fnamemodify(file_name, ':e') 98 | local icon = devicons.get_icon(file_name, ext) 99 | 100 | if icon ~= nil then 101 | file_name = string.format('%s %s', icon, file_name) 102 | end 103 | end 104 | end 105 | 106 | if modified then 107 | return file_name .. ' ' 108 | else 109 | return file_name 110 | end 111 | end 112 | 113 | local function make_active_status_line() 114 | local hls = { 115 | n = 'StatusLineNormalMode', 116 | no = 'StatusLineReplaceMode', 117 | nov = 'StatusLineReplaceMode', 118 | ['noV'] = 'StatusLineReplaceMode', 119 | ['no'] = 'StatusLineReplaceMode', 120 | i = 'StatusLineInsertMode', 121 | ic = 'StatusLineInsertMode', 122 | ix = 'StatusLineInsertMode', 123 | ['niI'] = 'StatusLineInsertMode', 124 | v = 'StatusLineVisualMode', 125 | V = 'StatusLineVisualMode', 126 | [''] = 'StatusLineVisualMode', 127 | ['niV'] = 'StatusLineVisualMode', 128 | s = 'StatusLineVisualMode', 129 | S = 'StatusLineVisualMode', 130 | [''] = 'StatusLineVisualMode', 131 | R = 'StatusLineReplaceMode', 132 | Rc = 'StatusLineReplaceMode', 133 | Rv = 'StatusLineReplaceMode', 134 | Rx = 'StatusLineReplaceMode', 135 | ['niR'] = 'StatusLineReplaceMode', 136 | c = 'StatusLineCommandMode', 137 | cv = 'StatusLineCommandMode', 138 | ce = 'StatusLineCommandMode', 139 | r = 'StatusLineHitEnterPromptMode', 140 | rm = 'StatusLineHitEnterPromptMode', 141 | ['r?'] = 'StatusLineHitEnterPromptMode', 142 | ['!'] = 'StatusLineHitEnterPromptMode', 143 | t = 'StatusLineReplaceMode', 144 | } 145 | 146 | local hl = 'StatusLineBg' 147 | 148 | local mode = vim.fn.mode() 149 | if vim.fn.has_key(hls, mode) then 150 | hl = hls[mode] 151 | end 152 | 153 | local status_line = string.format('%%#%s# %s %%#StatusLineBg# ', 154 | hl, 155 | get_file_name(vim.bo.mod) 156 | ) 157 | status_line = status_line .. '%=' 158 | status_line = status_line .. ' %#StatusLineDeli#L:%#StatusLineColNb#%l %#StatusLineDeli#C:%#StatusLineLineNb#%v%< %#StatusLineDeli#(%#StatusLinePercent#%p%% %#StatusLineCount#%LL%#StatusLineDeli#) ' 159 | status_line = status_line .. '%Y ' .. vcs_status() 160 | 161 | return status_line 162 | end 163 | 164 | local function make_inactive_status_line() 165 | local hlend = 'StatusLineBg' 166 | local status_line = string.format(' %s %%#%s#', 167 | get_file_name(), 168 | hlend 169 | ) 170 | 171 | return status_line 172 | end 173 | 174 | function M.make_status_line() 175 | vim.wo.statusline = '%!v:lua.active_status_line()' 176 | end 177 | 178 | local function create_au() 179 | vim.api.nvim_command("au BufEnter * lua require'statusline'.make_status_line()") 180 | end 181 | 182 | create_au() 183 | 184 | M.make_status_line() 185 | 186 | _G.active_status_line = make_active_status_line 187 | _G.inactive_status_line = make_inactive_status_line 188 | _G.lsp_breadcrumbs = lsp_breadcrumbs 189 | 190 | return M 191 | -------------------------------------------------------------------------------- /doom/config.el: -------------------------------------------------------------------------------- 1 | ;; The best theme — ever. 2 | (setq doom-theme 'doom-one) 3 | 4 | ;; Compile all elisp 5 | (setq comp-deferred-compilation t) 6 | 7 | ;; This is sometimes required. I have no idea why. 8 | (setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin")) 9 | (setq exec-path (append exec-path '("/usr/local/bin"))) 10 | 11 | ;; Default fill-column to 120 and add the keybinding to toggle it on and off. 12 | (setq-default fill-column 120) 13 | (map! :leader 14 | :desc "Auto fill" 15 | :n "t a" 'auto-fill-mode) 16 | 17 | ;; Use , as local leader. 18 | (setq doom-localleader-key ",") 19 | 20 | ;; Font setting. 21 | (setq doom-font (font-spec :family "JetBrains Mono" :size 13 :weight 'medium) 22 | doom-variable-pitch-font (font-spec :family "Overpass" :size 13 :weight 'thin)) 23 | 24 | ;; Set all-the-icons factor to 1.0 to prevent weird issues with the modeline. 25 | (setq all-the-icons-scale-factor 1.0) 26 | 27 | ;; Enable major mode icons in the modeline. 28 | (setq doom-modeline-major-mode-icon t) 29 | 30 | ;; Prevents some cases of Emacs flickering 31 | (add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) 32 | 33 | ;; Tab spaces / indentation 34 | (setq tab-width 2) 35 | 36 | ;; Native compilation 37 | (setq package-native-compile t) 38 | 39 | ;; Undo / redo. 40 | (map! :n "U" 'undo-tree-redo) 41 | 42 | (map! :nvom "à" 'evil-find-char-to) 43 | (map! :nvom "À" 'evil-find-char-to-backward) 44 | 45 | ;; Fix for macOS and its stupid support for alt-gr. 46 | (when (string-equal system-type "darwin") 47 | (progn 48 | (setq mac-option-key-is-meta nil) 49 | (setq mac-command-key-is-meta t) 50 | (setq mac-command-modifier 'meta) 51 | (setq mac-option-modifier nil))) 52 | 53 | (setq evil-shift-width 2) 54 | 55 | (add-hook! 'before-save-hook 'delete-trailing-whitespace) 56 | 57 | (map! :n "w o" #'evil-window-split) 58 | 59 | (setq auto-save-default nil) 60 | 61 | (add-hook! 'rustic-mode-hook (auto-fill-mode 1)) 62 | 63 | (setq lsp-rust-analyzer-server-display-inlay-hints t) 64 | 65 | (map! :leader 66 | :prefix "b" 67 | :desc "Rename buffer" 68 | :n "R" #'rename-buffer) 69 | 70 | (map! :nvom "è" 'evil-avy-goto-word-0) 71 | (map! :nvom "È" 'evil-avy-goto-char) 72 | 73 | (after! avy 74 | (setq avy-keys '(?e ?t ?o ?v ?x ?q ?p ?d ?y ?g ?f ?b ?l ?z ?h ?c ?k ?i ?s ?u ?r ?a ?n) 75 | avy-background t)) 76 | 77 | (setq avy-orders-alist 78 | '((avy-goto-char . avy-order-closest) 79 | (avy-goto-word-0 . avy-order-closest))) 80 | 81 | (setq flycheck-check-syntax-automatically '(save idle-change)) 82 | 83 | (add-hook 'after-init-hook 'global-company-mode) 84 | 85 | (after! sh-script 86 | (set-company-backend! 'shmode 87 | '(company-shell :with company-yasnippet))) 88 | 89 | ;; ;; OVERRIDES 90 | ;; (map! :mode emacs :map company-active-map 91 | ;; "" nil 92 | ;; "" nil) 93 | 94 | ;; (map! :mode emacs :map general-company-active-map-backup-map 95 | ;; "" nil 96 | ;; "" nil) 97 | 98 | ;; ;; KEYBINDINGS 99 | ;; (map! :map company-mode-map 100 | ;; :i "C-y" 'company-complete-selection) 101 | 102 | (use-package company-box 103 | :hook (company-mode . company-box-mode)) 104 | 105 | (setq org-directory "~/org") 106 | (setq org-agenda-files '("~/org")) 107 | 108 | ;; (setq org-modules '(ol-bibtex habits)) 109 | 110 | (map! :map org-mode-map 111 | :n "C" 'org-shiftleft 112 | :n "R" 'org-shiftright 113 | :n "T" 'org-shiftdown 114 | :n "S" 'org-shiftup 115 | :n "M-c" 'org-metaleft 116 | :n "M-r" 'org-metaright 117 | :n "M-s" 'org-metaup 118 | :n "M-t" 'org-metadown 119 | :n "M-S-c" 'org-do-promote 120 | :n "M-S-r" 'org-do-demote) 121 | 122 | (setq org-link-abbrev-alist 123 | '(("google" . "http://www.google.com/search?q=%s") 124 | ("gmap" . "https://maps.google.com/maps?q=%s") 125 | ("gimages" . "https://google.com/images?q=%s") 126 | ("doom-repo" . "https://github.com/hlissner/doom-emacs/%s") 127 | ("wolfram" . "https://wolframalpha.com/input/?i=%s") 128 | ("wikipedia" . "https://en.wikipedia.org/wiki/%s") 129 | ("duckduckgo" . "https://duckduckgo.com/?q=%s") 130 | ("youtube" . "https://youtube.com/watch?v=%s") 131 | ("github" . "https://github.com/%s") 132 | ("wr" . "https://www.wordreference.com/enfr/%s"))) 133 | 134 | ;; (setq org-todo-keywords 135 | ;; '((sequence "TODO(t)" "WIP(w!/!)" "FROZEN(z!/!)" "LATER(l!/!)" "|" "DONE(d!/!)") 136 | ;; (sequence "BUG(b)" "|" "FIXED(f!/!)") 137 | ;; (sequence "FEATURE(r)" "|" "IMPLEMENTED(i!/!)") 138 | ;; (sequence "|" "CANCELLED(c@)"))) 139 | 140 | ;; (setq org-todo-keyword-faces 141 | ;; '(("TODO" . "blue") ("WIP" . (:foreground "green" :weight bold)) ("FROZEN" . "blue") ("DONE" . "grey") 142 | ;; ("BUG" . (:foreground "red" :weight bold)) ("FIXED" (:foreground "blue" :weight bold)) 143 | ;; ("FEATURE" . "purple") ("IMPLEMENTED" . (:foreground "blue" :weight bold)) 144 | ;; ("CANCELLED" . "grey"))) 145 | 146 | (setq org-log-done 'time) 147 | 148 | (setq org-log-into-drawer t) 149 | 150 | (setq org-fancy-priorities-list '("❗" "⬆" "⬇")) 151 | 152 | (defun org-summary-todo (n-done n-not-done) 153 | "Switch entry to DONE when all subentries are done, to TODO otherwise." 154 | (let (org-log-done org-log-states) ; turn off logging 155 | (org-todo (if (= n-not-done 0) "DONE" "TODO")))) 156 | 157 | (add-hook 'org-after-todo-statistics-hook 'org-summary-todo) 158 | 159 | (setq org-tag-alist '(("spare" . ?s) ("work" . ?w) ("learn" . ?l))) 160 | 161 | (setq org-roam-directory (file-truename "~/org")) 162 | 163 | (setq +org-roam-open-buffer-on-find-file nil) 164 | 165 | ;; Make bookmark face do nothing (it’s annoying). 166 | (custom-set-faces! '(bookmark-face :background nil :foreground nil)) 167 | 168 | (after! git-gutter-fringe 169 | (if (fboundp 'fringe-mode) (fringe-mode '4)) 170 | (define-fringe-bitmap 'git-gutter-fr:deleted [255 255 255] 171 | nil nil 'bottom)) 172 | 173 | (setq haskell-process-type 'cabal-new-repl) 174 | 175 | (setq rustic-indent-offset 2) 176 | 177 | (use-package! tree-sitter 178 | :config 179 | (require 'tree-sitter-langs) 180 | (global-tree-sitter-mode) 181 | (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode)) 182 | 183 | (setq projectile-project-search-path '("~/dev")) 184 | 185 | (setq-default treemacs-show-cursor t) 186 | 187 | (map! :leader 188 | :prefix "c" 189 | :desc "Symbol outline" 190 | :n "o" #'lsp-treemacs-symbols) 191 | 192 | (map! :leader 193 | :prefix "c" 194 | :desc "List errors" 195 | :n "x" #'consult-lsp-diagnostics) 196 | 197 | (setq epa-file-encrypt-to '(9BFDD250BBECA905)) 198 | 199 | (add-hook! 'rustic-mode-hook (modify-syntax-entry ?_ "w")) 200 | 201 | ;; Format-on-save ignore list. 202 | (setq +format-on-save-enabled-modes 203 | '(not emacs-lisp-mode 204 | java-mode 205 | sql-mode 206 | tex-mode 207 | latex-mode 208 | yaml-mode 209 | vue-mode 210 | typescript-mode 211 | lua-mode 212 | markdown-mode 213 | dhall-mode 214 | )) 215 | 216 | ;; Simpleclip 217 | (map! :desc "System-wide copy" 218 | "M-c" #'simpleclip-copy) 219 | 220 | (map! :desc "System-wide paste" 221 | "M-v" #'simpleclip-paste) 222 | -------------------------------------------------------------------------------- /picom/picom.conf: -------------------------------------------------------------------------------- 1 | # Thank you code_nomad: http://9m.no/ꪯ鵞 2 | # and Arch Wiki contributors: https://wiki.archlinux.org/index.php/Compton 3 | 4 | ################################# 5 | # 6 | # Backend 7 | # 8 | ################################# 9 | 10 | # Backend to use: "xrender" or "glx". 11 | # GLX backend is typically much faster but depends on a sane driver. 12 | backend = "glx"; 13 | 14 | ################################# 15 | # 16 | # GLX backend 17 | # 18 | ################################# 19 | 20 | glx-no-stencil = true; 21 | 22 | # GLX backend: Copy unmodified regions from front buffer instead of redrawing them all. 23 | # My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified, 24 | # but a 20% increase when only 1/4 is. 25 | # My tests on nouveau show terrible slowdown. 26 | glx-copy-from-front = false; 27 | 28 | # GLX backend: Use MESA_copy_sub_buffer to do partial screen update. 29 | # My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated. 30 | # May break VSync and is not available on some drivers. 31 | # Overrides --glx-copy-from-front. 32 | # glx-use-copysubbuffermesa = true; 33 | 34 | # GLX backend: Avoid rebinding pixmap on window damage. 35 | # Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe). 36 | # Recommended if it works. 37 | # glx-no-rebind-pixmap = true; 38 | 39 | # GLX backend: GLX buffer swap method we assume. 40 | # Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1). 41 | # undefined is the slowest and the safest, and the default value. 42 | # copy is fastest, but may fail on some drivers, 43 | # 2-6 are gradually slower but safer (6 is still faster than 0). 44 | # Usually, double buffer means 2, triple buffer means 3. 45 | # buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers. 46 | # Useless with --glx-use-copysubbuffermesa. 47 | # Partially breaks --resize-damage. 48 | # Defaults to undefined. 49 | #glx-swap-method = "undefined"; 50 | 51 | ################################# 52 | # 53 | # Shadows 54 | # 55 | ################################# 56 | 57 | # Enabled client-side shadows on windows. 58 | shadow = true; 59 | # The blur radius for shadows. (default 12) 60 | shadow-radius = 10; 61 | # The left offset for shadows. (default -15) 62 | shadow-offset-x = -5; 63 | # The top offset for shadows. (default -15) 64 | shadow-offset-y = -5; 65 | # The translucency for shadows. (default .75) 66 | shadow-opacity = 0.5; 67 | 68 | # Set if you want different colour shadows 69 | # shadow-red = 0.0; 70 | # shadow-green = 0.0; 71 | # shadow-blue = 0.0; 72 | 73 | # The shadow exclude options are helpful if you have shadows enabled. Due to the way picom draws its shadows, certain applications will have visual glitches 74 | # (most applications are fine, only apps that do weird things with xshapes or argb are affected). 75 | # This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher. 76 | shadow-exclude = [ 77 | "! name~=''", 78 | "name = 'Notification'", 79 | "name = 'Plank'", 80 | "name = 'Docky'", 81 | "name = 'Kupfer'", 82 | "name = 'xfce4-notifyd'", 83 | "name = 'cpt_frame_window'", 84 | "name *= 'polybar'", 85 | "name *= 'VLC'", 86 | "name *= 'compton'", 87 | "name *= 'picom'", 88 | "name *= 'Chromium'", 89 | "name *= 'Chrome'", 90 | "class_g = 'Firefox' && argb", 91 | "class_g = 'Conky'", 92 | "class_g = 'Kupfer'", 93 | "class_g = 'Synapse'", 94 | "class_g ?= 'Notify-osd'", 95 | "class_g ?= 'Cairo-dock'", 96 | "class_g ?= 'Xfce4-notifyd'", 97 | "class_g ?= 'Xfce4-power-manager'", 98 | "_GTK_FRAME_EXTENTS@:c", 99 | "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" 100 | ]; 101 | 102 | # Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners) 103 | shadow-ignore-shaped = false; 104 | 105 | ################################# 106 | # 107 | # Opacity 108 | # 109 | ################################# 110 | 111 | inactive-opacity = 1; 112 | active-opacity = 1; 113 | frame-opacity = 1; 114 | inactive-opacity-override = false; 115 | 116 | # Dim inactive windows. (0.0 - 1.0) 117 | # inactive-dim = 0.2; 118 | # Do not let dimness adjust based on window opacity. 119 | # inactive-dim-fixed = true; 120 | 121 | # Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred. 122 | blur-background = true; 123 | blur-method = "gaussian"; 124 | blur-size = 40; 125 | blur-deviation = 20.0; 126 | # Blur background of opaque windows with transparent frames as well. 127 | blur-background-frame = true; 128 | # Do not let blur radius adjust based on window opacity. 129 | blur-background-fixed = false; 130 | blur-background-exclude = [ 131 | "name = 'slop'", 132 | "window_type = 'desktop'" 133 | ]; 134 | 135 | ################################# 136 | # 137 | # Fading 138 | # 139 | ################################# 140 | 141 | # Fade windows during opacity changes. 142 | fading = true; 143 | # The time between steps in a fade in milliseconds. (default 10). 144 | fade-delta = 4; 145 | # Opacity change between steps while fading in. (default 0.028). 146 | fade-in-step = 0.03; 147 | # Opacity change between steps while fading out. (default 0.03). 148 | fade-out-step = 0.03; 149 | # Fade windows in/out when opening/closing 150 | # no-fading-openclose = true; 151 | 152 | # Specify a list of conditions of windows that should not be faded. 153 | fade-exclude = [ ]; 154 | 155 | ################################# 156 | # 157 | # Other 158 | # 159 | ################################# 160 | 161 | # Try to detect WM windows and mark them as active. 162 | mark-wmwin-focused = true; 163 | # Mark all non-WM but override-redirect windows active (e.g. menus). 164 | mark-ovredir-focused = true; 165 | # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events. 166 | # Usually more reliable but depends on a EWMH-compliant WM. 167 | use-ewmh-active-win = true; 168 | # Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on. 169 | detect-rounded-corners = true; 170 | 171 | # Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows. 172 | # This prevents opacity being ignored for some apps. 173 | # For example without this enabled my xfce4-notifyd is 100% opacity no matter what. 174 | detect-client-opacity = true; 175 | 176 | # Specify refresh rate of the screen. 177 | # If not specified or 0, picom will try detecting this with X RandR extension. 178 | refresh-rate = 0; 179 | 180 | # Vertical synchronization: match the refresh rate of the monitor 181 | vsync = true; 182 | 183 | # Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing. 184 | # Reported to have no effect, though. 185 | dbe = false; 186 | 187 | # Limit picom to repaint at most once every 1 / refresh_rate second to boost performance. 188 | # This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already, 189 | # unless you wish to specify a lower refresh rate than the actual value. 190 | #sw-opti = true; 191 | 192 | # Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games. 193 | # Known to cause flickering when redirecting/unredirecting windows. 194 | unredir-if-possible = false; 195 | 196 | # Specify a list of conditions of windows that should always be considered focused. 197 | focus-exclude = [ ]; 198 | 199 | # Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time. 200 | detect-transient = true; 201 | # Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time. 202 | # WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too. 203 | detect-client-leader = true; 204 | 205 | ################################# 206 | # 207 | # Window type settings 208 | # 209 | ################################# 210 | 211 | wintypes: 212 | { 213 | tooltip = 214 | { 215 | # fade: Fade the particular type of windows. 216 | fade = true; 217 | # shadow: Give those windows shadow 218 | shadow = false; 219 | # opacity: Default opacity for the type of windows. 220 | opacity = 0.85; 221 | # focus: Whether to always consider windows of this type focused. 222 | focus = true; 223 | }; 224 | }; 225 | 226 | ###################### 227 | # 228 | # XSync 229 | # See: https://github.com/yshui/picom/commit/b18d46bcbdc35a3b5620d817dd46fbc76485c20d 230 | # 231 | ###################### 232 | 233 | # Use X Sync fence to sync clients' draw calls. Needed on nvidia-drivers with GLX backend for some users. 234 | xrender-sync-fence = true; 235 | -------------------------------------------------------------------------------- /nvim/lua/pkg/lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | config = function() 3 | -- Useful configuration for multi-platform environments. 4 | local user_home = os.getenv("HOME") or "/tmp" 5 | local foss_path = string.format("%s/foss", user_home) 6 | 7 | local signs = { 8 | { name = "DiagnosticSignError", text = "" }, 9 | { name = "DiagnosticSignWarn", text = "" }, 10 | { name = "DiagnosticSignHint", text = "" }, 11 | { name = "DiagnosticSignInfo", text = "" }, 12 | } 13 | 14 | for _, sign in ipairs(signs) do 15 | vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) 16 | end 17 | 18 | vim.cmd [[ 19 | hi StatusLineLinNbr guibg=#23272e guifg=#51afef 20 | hi StatusLineLSPOk guibg=#23272e guifg=#98be65 21 | hi StatusLineLSPErrors guibg=#23272e guifg=#ff6c6b 22 | hi StatusLineLSPWarnings guibg=#23272e guifg=#ECBE7B 23 | hi StatusLineLSPInfo guibg=#23272e guifg=#51afef 24 | hi StatusLineLSPHints guibg=#23272e guifg=#c678dd 25 | ]] 26 | 27 | -- Prefix diagnostic virtual text 28 | vim.diagnostic.config { 29 | virtual_text = { 30 | source = "always", 31 | prefix = "» ", 32 | spacing = 6, 33 | }, 34 | float = { 35 | header = false, 36 | source = "always", 37 | }, 38 | signs = false, 39 | underline = false, 40 | update_in_insert = false, 41 | } 42 | 43 | local lsp = require'lspconfig' 44 | local lsp_capabilities = vim.lsp.protocol.make_client_capabilities() 45 | lsp_capabilities = require('cmp_nvim_lsp').default_capabilities(lsp_capabilities) 46 | 47 | -- attach 48 | local lsp_attach = function(args) 49 | return function(client, bufnr) 50 | if args == nil or args.format == nil or args.format then 51 | vim.api.nvim_exec([[ 52 | augroup lsp_formatting_sync 53 | autocmd! * 54 | autocmd BufWritePre lua vim.lsp.buf.format() 55 | augroup END 56 | ]], false) 57 | end 58 | 59 | -- make omnifunc go via LSP’s completion directly 60 | vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') 61 | 62 | -- keybindings 63 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'S', 'lua vim.lsp.buf.hover()', {}) 64 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'clr', 'lua vim.lsp.stop_client(vim.lsp.get_active_clients())', {}) 65 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()', {}) 66 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'cd', 'lua vim.lsp.buf.definition()', {}) 67 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'cD', 'Telescope lsp_references theme=get_dropdown ', {}) 68 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ch', 'lua vim.lsp.buf.signature_help()', {}) 69 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ci', 'Telescope lsp_implementations theme=get_dropdown ', {}) 70 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'cn', "lua vim.diagnostic.goto_next()", {}) 71 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'cp', "lua vim.diagnostic.goto_prev()", {}) 72 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'cr', 'lua vim.lsp.buf.rename()', {}) 73 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'cs', 'Telescope lsp_dynamic_workspace_symbols theme=get_dropdown ', {}) 74 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ct', 'lua vim.lsp.buf.type_definition()', {}) 75 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'cx', 'TroubleToggle', {}) 76 | vim.api.nvim_buf_set_keymap(bufnr, 'x', 'ca', 'Telescope lsp_range_code_actions theme=get_dropdown', {}) 77 | vim.api.nvim_buf_set_keymap(bufnr, 'i', '', 'Telescope lsp_code_actions theme=get_dropdown', {}) 78 | vim.api.nvim_buf_set_keymap(bufnr, 'i', '', 'lua vim.lsp.buf.signature_help()', {}) 79 | end 80 | end 81 | 82 | -- Lua. 83 | -- lsp.sumneko_lua.setup { 84 | -- capabilities = lsp_capabilities, 85 | -- cmd = { 86 | -- string.format("%s/lua-language-server/bin/platform/lua-language-server", foss_path), 87 | -- "-E", 88 | -- string.format("%s/lua-language-server/main.lua", foss_path) 89 | -- }, 90 | -- settings = { 91 | -- Lua = { 92 | -- runtime = { 93 | -- version = 'LuaJIT', 94 | -- path = vim.split(package.path, ';'), 95 | -- }, 96 | -- 97 | -- diagnostics = { 98 | -- enable = true, 99 | -- globals = { "vim" }, 100 | -- }, 101 | -- 102 | -- workspace = { 103 | -- -- Make the server aware of Neovim runtime files 104 | -- library = { 105 | -- [vim.fn.expand('$VIMRUNTIME/lua')] = true, 106 | -- [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, 107 | -- }, 108 | -- }, 109 | -- }, 110 | -- }, 111 | -- 112 | -- on_attach = lsp_attach { format = false }, 113 | -- } 114 | 115 | -- Rust. 116 | lsp.rust_analyzer.setup { 117 | capabilities = lsp_capabilities, 118 | settings = { 119 | ["rust-analyzer"] = { 120 | assist = { 121 | importGroup = true, 122 | importGranularity = "crate", 123 | importPrefix = "crate", 124 | }, 125 | 126 | callInfo = { 127 | full = true, 128 | }; 129 | 130 | cargo = { 131 | allFeatures = true, 132 | autoreload = true, 133 | loadOutDirsFromCheck = true, 134 | }, 135 | 136 | checkOnSave = { 137 | enable = true, 138 | allFeatures = true, 139 | }, 140 | 141 | completion = { 142 | addCallArgumentSnippets = true, 143 | addCallParenthesis = true, 144 | postfix = { 145 | enable = true, 146 | }, 147 | autoimport = { 148 | enable = true, 149 | }, 150 | }, 151 | 152 | diagnostics = { 153 | enable = true, 154 | enableExperimental = true, 155 | }, 156 | 157 | hoverActions = { 158 | enable = true, 159 | debug = true, 160 | gotoTypeDef = true, 161 | implementations = true, 162 | run = true, 163 | linksInHover = true, 164 | }, 165 | 166 | lens = { 167 | enable = true, 168 | debug = true, 169 | implementations = true, 170 | run = true, 171 | methodReferences = true, 172 | references = true, 173 | }, 174 | 175 | notifications = { 176 | cargoTomlNotFound = true, 177 | }, 178 | 179 | procMacro = { 180 | enable = true, 181 | }, 182 | }, 183 | }, 184 | 185 | on_attach = function(client, bufnr) 186 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'bb', 'belowright 10sp | term cargo build', {}) 187 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'bc', 'belowright 10sp | term cargo check', {}) 188 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'br', 'belowright 10sp | term cargo build --release', {}) 189 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'db', 'belowright 10sp | term rustup doc --book', {}) 190 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'dd', 'belowright 10sp | term cargo doc --open', {}) 191 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ds', 'belowright 10sp | term rustup doc --std', {}) 192 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rd', 'belowright 10sp | term cargo run', {}) 193 | vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rr', 'belowright 10sp | term cargo run --release', {}) 194 | 195 | vim.g.which_key_local_map = { 196 | b = { 197 | name = '+build', 198 | b = 'build', 199 | c = 'check', 200 | r = 'build (release)', 201 | }, 202 | d = { 203 | name = '+documentation', 204 | b = 'open the book', 205 | d = 'document everything', 206 | s = 'standard library documentation', 207 | }, 208 | r = { 209 | name = '+run', 210 | d = 'debug run', 211 | r = 'release run', 212 | }, 213 | } 214 | 215 | return lsp_attach()(client, bufnr) 216 | end 217 | } 218 | 219 | -- Haskell. 220 | lsp.hls.setup { 221 | capabilities = lsp_capabilities, 222 | on_attach = lsp_attach {}, 223 | } 224 | 225 | -- C/C++. 226 | lsp.clangd.setup { 227 | capabilities = lsp_capabilities, 228 | on_attach = lsp_attach {}, 229 | } 230 | 231 | -- Vue. 232 | lsp.vuels.setup { 233 | capabilities = lsp_capabilities, 234 | on_attach = lsp_attach { format = false }, 235 | } 236 | 237 | -- Python, sneeeek. 238 | -- lsp.pyls.setup { 239 | -- flags = lsp_flags, 240 | -- on_attach = lsp_attach {}, 241 | -- } 242 | 243 | -- Purescript 244 | lsp.purescriptls.setup { 245 | capabilities = lsp_capabilities, 246 | on_attach = lsp_attach {}, 247 | } 248 | 249 | -- Golang. 250 | lsp.gopls.setup { 251 | capabilities = lsp_capabilities, 252 | on_attach = lsp_attach {}, 253 | } 254 | end 255 | } 256 | -------------------------------------------------------------------------------- /doom/init.el: -------------------------------------------------------------------------------- 1 | ;;; init.el -*- lexical-binding: t; -*- 2 | 3 | ;; This file controls what Doom modules are enabled and what order they load 4 | ;; in. Remember to run 'doom sync' after modifying it! 5 | 6 | ;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's 7 | ;; documentation. There you'll find a "Module Index" link where you'll find 8 | ;; a comprehensive list of Doom's modules and what flags they support. 9 | 10 | ;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or 11 | ;; 'C-c c k' for non-vim users) to view its documentation. This works on 12 | ;; flags as well (those symbols that start with a plus). 13 | ;; 14 | ;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its 15 | ;; directory (for easy access to its source code). 16 | 17 | (doom! :input 18 | ;;chinese 19 | ;;japanese 20 | (layout +bepo) ; auie,ctsrnm is the superior home row 21 | 22 | :completion 23 | company ; the ultimate code completion backend 24 | ;helm ; the *other* search engine for love and life 25 | ;;ido ; the other *other* search engine... 26 | ;; (ivy +fuzzy +icons +prescient) ; a search engine for love and life 27 | (vertico +icons) 28 | 29 | :ui 30 | ;;deft ; notational velocity for Emacs 31 | doom ; what makes DOOM look the way it does 32 | doom-dashboard ; a nifty splash screen for Emacs 33 | ;; doom-quit ; DOOM quit-message prompts when you quit Emacs 34 | hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW 35 | ;;hydra 36 | indent-guides ; highlighted indent columns 37 | ;; (ligatures +extra) ; ligatures and symbols to make your code pretty again 38 | ;minimap ; show a map of the code on the side 39 | modeline ; snazzy, Atom-inspired modeline, plus API 40 | nav-flash ; blink cursor line after big motions 41 | ;;neotree ; a project drawer, like NERDTree for vim 42 | ophints ; highlight the region an operation acts on 43 | (popup +defaults) ; tame sudden yet inevitable temporary windows 44 | ;;tabs ; a tab bar for Emacs 45 | treemacs ; a project drawer, like neotree but cooler 46 | unicode ; extended unicode support for various languages 47 | vc-gutter ; vcs diff in the fringe 48 | vi-tilde-fringe ; fringe tildes to mark beyond EOB 49 | workspaces ; tab emulation, persistence & separate workspaces 50 | ;; zen ; distraction-free coding or writing 51 | 52 | :editor 53 | (evil +everywhere); come to the dark side, we have cookies 54 | file-templates ; auto-snippets for empty files 55 | fold ; (nigh) universal code folding 56 | (format +onsave) ; automated prettiness 57 | ;;god ; run Emacs commands without modifier keys 58 | ;;lispy ; vim for lisp, for people who don't like vim 59 | ;; multiple-cursors ; editing in many places at once 60 | ;;objed ; text object editing for the innocent 61 | ;;parinfer ; turn lisp into python, sort of 62 | ;;rotate-text ; cycle region at point between text candidates 63 | snippets ; my elves. They type so I don't have to 64 | ;;word-wrap ; soft wrapping with language-aware indent 65 | 66 | :emacs 67 | (dired +icons) ; making dired pretty [functional] 68 | electric ; smarter, keyword-based electric-indent 69 | (ibuffer +icons) ; interactive buffer management 70 | (undo +tree) ; persistent, smarter undo for your inevitable mistakes 71 | vc ; version-control and Emacs, sitting in a tree 72 | 73 | :term 74 | eshell ; the elisp shell that works everywhere 75 | ;;shell ; simple shell REPL for Emacs 76 | ;;term ; basic terminal emulator for Emacs 77 | vterm ; the best terminal emulation in Emacs 78 | 79 | :checkers 80 | syntax ; tasing you for every semicolon you forget 81 | ;; (spell +flyspell +everywhere) ; tasing you for misspelling mispelling 82 | ;;grammar ; tasing grammar mistake every you make 83 | 84 | :tools 85 | ;;ansible 86 | ;; (debugger +lsp) ; FIXME stepping through code, to help you add bugs 87 | ;;direnv 88 | (docker +lsp) 89 | ;;editorconfig ; let someone else argue about tabs vs spaces 90 | ;;ein ; tame Jupyter notebooks with emacs 91 | (eval +overlay) ; run code, run (also, repls) 92 | ;;gist ; interacting with github gists 93 | lookup ; navigate your code and its documentation 94 | (lsp +peek) 95 | (magit) ; a git porcelain for Emacs 96 | ;;make ; run make tasks from Emacs 97 | pass ; password manager for nerds 98 | ;; pdf ; pdf enhancements 99 | ;;prodigy ; FIXME managing external services & code builders 100 | rgb ; creating color strings 101 | ;;taskrunner ; taskrunner for all your projects 102 | terraform ; infrastructure as code 103 | ;;tmux ; an API for interacting with tmux 104 | tree-sitter 105 | ;;upload ; map local to remote projects via ssh/ftp 106 | 107 | :os 108 | (:if IS-MAC macos) ; improve compatibility with macOS 109 | ;;tty ; improve the terminal Emacs experience 110 | 111 | :lang 112 | ;;agda ; types of types of types of types... 113 | (cc +lsp) ; C/C++/Obj-C madness 114 | ;;clojure ; java with a lisp 115 | ;;common-lisp ; if you've seen one lisp, you've seen them all 116 | ;;coq ; proofs-as-programs 117 | ;;crystal ; ruby at the speed of c 118 | ;;csharp ; unity, .NET, and mono shenanigans 119 | ;;data ; config/data formats 120 | ;;(dart +flutter) ; paint ui and not much else 121 | ;;elixir ; erlang done right 122 | ;;elm ; care for a cup of TEA? 123 | emacs-lisp ; drown in parentheses 124 | ;;erlang ; an elegant language for a more civilized age 125 | ;;ess ; emacs speaks statistics 126 | ;;faust ; dsp, but you get to keep your soul 127 | ;;fsharp ; ML stands for Microsoft's Language 128 | ;;fstar ; (dependent) types and (monadic) effects and Z3 129 | ;;gdscript ; the language you waited for 130 | go ; the hipster dialect 131 | (haskell +lsp) ; a language that's lazier than I am 132 | ;;hy ; readability of scheme w/ speed of python 133 | ;;idris ; 134 | (json +lsp) ; At least it ain't XML 135 | java ; the poster child for carpal tunnel syndrome 136 | (javascript +lsp) ; all(hope(abandon(ye(who(enter(here)))))) 137 | ;;julia ; a better, faster MATLAB 138 | ;;kotlin ; a better, slicker Java(Script) 139 | ;;latex ; writing papers in Emacs has never been so fun 140 | ;;lean 141 | ;;factor 142 | ;;ledger ; an accounting system in Emacs 143 | lua ; one-based indices? one-based indices 144 | markdown ; writing docs for people to ignore 145 | ;;nim ; python + lisp at the speed of c 146 | ;;nix ; I hereby declare "nix geht mehr!" 147 | ;;ocaml ; an objective camel 148 | (org +pandoc 149 | +pretty 150 | +roam2) ; organize your plain life in plain text 151 | ;;php ; perl's insecure younger brother 152 | ;;plantuml ; diagrams for confusing people more 153 | (purescript +lsp) ; javascript, but functional 154 | (python +lsp) ; beautiful is better than ugly 155 | ;;qt ; the 'cutest' gui framework ever 156 | ;;racket ; a DSL for DSLs 157 | ;;raku ; the artist formerly known as perl6 158 | rest ; Emacs as a REST client 159 | ;;rst ; ReST in peace 160 | ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} 161 | (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() 162 | ;;scala ; java, but good 163 | ;;scheme ; a fully conniving family of lisps 164 | (sh +lsp) ; she sells {ba,z,fi}sh shells on the C xor 165 | ;;sml 166 | ;;solidity ; do you need a blockchain? No. 167 | ;;swift ; who asked for emoji variables? 168 | ;;terra ; Earth and Moon in alignment for performance. 169 | ;;web ; the tubes 170 | (yaml +lsp) ; JSON, but readable 171 | 172 | :email 173 | ;;(mu4e +gmail) 174 | ;;notmuch 175 | ;;(wanderlust +gmail) 176 | 177 | :app 178 | calendar 179 | ;;irc ; how neckbeards socialize 180 | (rss +org) ; emacs as an RSS reader 181 | ;;twitter ; twitter client https://twitter.com/vnought 182 | 183 | :config 184 | ;; literate 185 | (default +bindings +smartparens)) 186 | -------------------------------------------------------------------------------- /nvim/lua/pkg/diffview.lua: -------------------------------------------------------------------------------- 1 | return { 2 | requires = 'nvim-lua/plenary.nvim', 3 | disable = true, 4 | config = function() 5 | local actions = require("diffview.actions") 6 | 7 | require'diffview'.setup({ 8 | diff_binaries = false, -- Show diffs for binaries 9 | enhanced_diff_hl = true, -- See ':h diffview-config-enhanced_diff_hl' 10 | git_cmd = { "git" }, -- The git executable followed by default args. 11 | use_icons = true, -- Requires nvim-web-devicons 12 | watch_index = true, -- Update views and index buffers when the git index changes. 13 | icons = { -- Only applies when use_icons is true. 14 | folder_closed = "", 15 | folder_open = "", 16 | }, 17 | signs = { 18 | fold_closed = "", 19 | fold_open = "", 20 | done = "✓", 21 | }, 22 | view = { 23 | -- Configure the layout and behavior of different types of views. 24 | -- Available layouts: 25 | -- 'diff1_plain' 26 | -- |'diff2_horizontal' 27 | -- |'diff2_vertical' 28 | -- |'diff3_horizontal' 29 | -- |'diff3_vertical' 30 | -- |'diff3_mixed' 31 | -- |'diff4_mixed' 32 | -- For more info, see ':h diffview-config-view.x.layout'. 33 | default = { 34 | -- Config for changed files, and staged files in diff views. 35 | layout = "diff2_horizontal", 36 | }, 37 | merge_tool = { 38 | -- Config for conflicted files in diff views during a merge or rebase. 39 | layout = "diff3_horizontal", 40 | disable_diagnostics = true, -- Temporarily disable diagnostics for conflict buffers while in the view. 41 | }, 42 | file_history = { 43 | -- Config for changed files in file history views. 44 | layout = "diff2_horizontal", 45 | }, 46 | }, 47 | file_panel = { 48 | listing_style = "tree", -- One of 'list' or 'tree' 49 | tree_options = { -- Only applies when listing_style is 'tree' 50 | flatten_dirs = true, -- Flatten dirs that only contain one single dir 51 | folder_statuses = "only_folded", -- One of 'never', 'only_folded' or 'always'. 52 | }, 53 | win_config = { -- See ':h diffview-config-win_config' 54 | position = "left", 55 | width = 35, 56 | win_opts = {} 57 | }, 58 | }, 59 | file_history_panel = { 60 | log_options = { -- See ':h diffview-config-log_options' 61 | single_file = { 62 | diff_merges = "combined", 63 | }, 64 | multi_file = { 65 | diff_merges = "first-parent", 66 | }, 67 | }, 68 | win_config = { -- See ':h diffview-config-win_config' 69 | position = "bottom", 70 | height = 16, 71 | win_opts = {} 72 | }, 73 | }, 74 | commit_log_panel = { 75 | win_config = { -- See ':h diffview-config-win_config' 76 | win_opts = {}, 77 | } 78 | }, 79 | default_args = { -- Default args prepended to the arg-list for the listed commands 80 | DiffviewOpen = {}, 81 | DiffviewFileHistory = {}, 82 | }, 83 | hooks = {}, -- See ':h diffview-config-hooks' 84 | keymaps = { 85 | disable_defaults = false, -- Disable the default keymaps 86 | view = { 87 | -- The `view` bindings are active in the diff buffers, only when the current 88 | -- tabpage is a Diffview. 89 | [""] = actions.select_next_entry, -- Open the diff for the next file 90 | [""] = actions.select_prev_entry, -- Open the diff for the previous file 91 | ["gf"] = actions.goto_file, -- Open the file in a new split in the previous tabpage 92 | ["k"] = actions.toggle_stage_entry, 93 | ["S"] = actions.stage_all, 94 | [""] = actions.goto_file_split, -- Open the file in a new split 95 | ["gf"] = actions.goto_file_tab, -- Open the file in a new tabpage 96 | -- ["e"] = actions.focus_files, -- Bring focus to the file panel 97 | ["b"] = actions.toggle_files, -- Toggle the file panel. 98 | ["g"] = actions.cycle_layout, -- Cycle through available layouts. 99 | ["[x"] = actions.prev_conflict, -- In the merge_tool: jump to the previous conflict 100 | ["]x"] = actions.next_conflict, -- In the merge_tool: jump to the next conflict 101 | ["co"] = actions.conflict_choose("ours"), -- Choose the OURS version of a conflict 102 | ["ct"] = actions.conflict_choose("theirs"), -- Choose the THEIRS version of a conflict 103 | ["cb"] = actions.conflict_choose("base"), -- Choose the BASE version of a conflict 104 | ["ca"] = actions.conflict_choose("all"), -- Choose all the versions of a conflict 105 | ["dx"] = actions.conflict_choose("none"), -- Delete the conflict region 106 | }, 107 | diff1 = { --[[ Mappings in single window diff layouts ]] }, 108 | diff2 = { --[[ Mappings in 2-way diff layouts ]] }, 109 | diff3 = { 110 | -- Mappings in 3-way diff layouts 111 | { { "n", "x" }, "2do", actions.diffget("ours") }, -- Obtain the diff hunk from the OURS version of the file 112 | { { "n", "x" }, "3do", actions.diffget("theirs") }, -- Obtain the diff hunk from the THEIRS version of the file 113 | }, 114 | diff4 = { 115 | -- Mappings in 4-way diff layouts 116 | { { "n", "x" }, "1do", actions.diffget("base") }, -- Obtain the diff hunk from the BASE version of the file 117 | { { "n", "x" }, "2do", actions.diffget("ours") }, -- Obtain the diff hunk from the OURS version of the file 118 | { { "n", "x" }, "3do", actions.diffget("theirs") }, -- Obtain the diff hunk from the THEIRS version of the file 119 | }, 120 | file_panel = { 121 | ["t"] = actions.next_entry, -- Bring the cursor to the next file entry 122 | [""] = actions.next_entry, 123 | ["s"] = actions.prev_entry, -- Bring the cursor to the previous file entry. 124 | [""] = actions.prev_entry, 125 | [""] = actions.select_entry, -- Open the diff for the selected entry. 126 | ["o"] = actions.select_entry, 127 | ["<2-LeftMouse>"] = actions.select_entry, 128 | ["k"] = actions.toggle_stage_entry, -- Stage / unstage the selected entry. 129 | ["S"] = actions.stage_all, -- Stage all entries. 130 | ["U"] = actions.unstage_all, -- Unstage all entries. 131 | ["X"] = actions.restore_entry, -- Restore entry to the state on the left side. 132 | ["L"] = actions.open_commit_log, -- Open the commit log panel. 133 | [""] = actions.scroll_view(-0.25), -- Scroll the view up 134 | [""] = actions.scroll_view(0.25), -- Scroll the view down 135 | [""] = actions.select_next_entry, 136 | [""] = actions.select_prev_entry, 137 | ["gf"] = actions.goto_file, 138 | [""] = actions.goto_file_split, 139 | ["gf"] = actions.goto_file_tab, 140 | ["i"] = actions.listing_style, -- Toggle between 'list' and 'tree' views 141 | ["f"] = actions.toggle_flatten_dirs, -- Flatten empty subdirectories in tree listing style. 142 | ["R"] = actions.refresh_files, -- Update stats and entries in the file list. 143 | ["e"] = actions.focus_files, 144 | ["b"] = actions.toggle_files, 145 | ["g"] = actions.cycle_layout, 146 | ["[x"] = actions.prev_conflict, 147 | ["]x"] = actions.next_conflict, 148 | ["q"] = actions.close, 149 | }, 150 | file_history_panel = { 151 | ["g!"] = actions.options, -- Open the option panel 152 | [""] = actions.open_in_diffview, -- Open the entry under the cursor in a diffview 153 | ["y"] = actions.copy_hash, -- Copy the commit hash of the entry under the cursor 154 | ["L"] = actions.open_commit_log, 155 | ["zR"] = actions.open_all_folds, 156 | ["zM"] = actions.close_all_folds, 157 | ["t"] = actions.next_entry, 158 | [""] = actions.next_entry, 159 | ["s"] = actions.prev_entry, 160 | [""] = actions.prev_entry, 161 | [""] = actions.select_entry, 162 | ["o"] = actions.select_entry, 163 | ["<2-LeftMouse>"] = actions.select_entry, 164 | [""] = actions.scroll_view(-0.25), 165 | [""] = actions.scroll_view(0.25), 166 | [""] = actions.select_next_entry, 167 | [""] = actions.select_prev_entry, 168 | ["gf"] = actions.goto_file, 169 | [""] = actions.goto_file_split, 170 | ["gf"] = actions.goto_file_tab, 171 | ["e"] = actions.focus_files, 172 | ["b"] = actions.toggle_files, 173 | ["g"] = actions.cycle_layout, 174 | ["q"] = actions.close, 175 | }, 176 | option_panel = { 177 | [""] = actions.select_entry, 178 | ["q"] = actions.close, 179 | }, 180 | }, 181 | }) 182 | end 183 | } 184 | -------------------------------------------------------------------------------- /zellij/config.kdl: -------------------------------------------------------------------------------- 1 | // If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" 2 | keybinds clear-defaults=true { 3 | resize { 4 | bind "c" { Resize "Increase Left"; } 5 | bind "t" { Resize "Increase Down"; } 6 | bind "s" { Resize "Increase Up"; } 7 | bind "r" { Resize "Increase Right"; } 8 | bind "C" { Resize "Decrease Left"; } 9 | bind "T" { Resize "Decrease Down"; } 10 | bind "S" { Resize "Decrease Up"; } 11 | bind "R" { Resize "Decrease Right"; } 12 | bind "=" "+" { Resize "Increase"; } 13 | bind "-" { Resize "Decrease"; } 14 | } 15 | 16 | pane { 17 | bind "c" "Left" { MoveFocus "Left"; } 18 | bind "r" "Right" { MoveFocus "Right"; } 19 | bind "t" "Down" { MoveFocus "Down"; } 20 | bind "s" "Up" { MoveFocus "Up"; } 21 | bind "p" { SwitchFocus; } 22 | bind "n" { NewPane; } 23 | bind "o" { NewPane "Down"; } 24 | bind "v" { NewPane "Right"; } 25 | bind "x" { CloseFocus; } 26 | bind "f" { ToggleFocusFullscreen; } 27 | bind "F" { ToggleFloatingPanes; } 28 | bind "z" { TogglePaneFrames; } 29 | bind "e" { TogglePaneEmbedOrFloating; } 30 | bind "," { SwitchToMode "RenamePane"; PaneNameInput 0; } 31 | bind "m" { SwitchToMode "Move"; } 32 | bind "R" { SwitchToMode "Resize"; } 33 | } 34 | 35 | move { 36 | bind "n" "Tab" { MovePane; } 37 | bind "p" { MovePaneBackwards; } 38 | bind "c" { MovePane "Left"; } 39 | bind "t" { MovePane "Down"; } 40 | bind "s" { MovePane "Up"; } 41 | bind "r" { MovePane "Right"; } 42 | } 43 | 44 | tab { 45 | bind "$" { SwitchToMode "RenameTab"; TabNameInput 0; } 46 | bind "p" { GoToPreviousTab; } 47 | bind "n" { GoToNextTab; } 48 | bind "Space" { NewTab; } 49 | bind "x" { CloseTab; } 50 | bind "S" { ToggleActiveSyncTab; } 51 | bind "1" { GoToTab 1; } 52 | bind "2" { GoToTab 2; } 53 | bind "3" { GoToTab 3; } 54 | bind "4" { GoToTab 4; } 55 | bind "5" { GoToTab 5; } 56 | bind "6" { GoToTab 6; } 57 | bind "7" { GoToTab 7; } 58 | bind "8" { GoToTab 8; } 59 | bind "9" { GoToTab 9; } 60 | bind "Tab" { ToggleTab; } 61 | } 62 | 63 | scroll { 64 | bind "e" { EditScrollback; SwitchToMode "Locked"; } 65 | bind "S" { SwitchToMode "EnterSearch"; SearchInput 0; } 66 | bind "Ctrl c" { ScrollToBottom; SwitchToMode "Locked"; } 67 | bind "t" "Down" { ScrollDown; } 68 | bind "s" "Up" { ScrollUp; } 69 | bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } 70 | bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } 71 | bind "d" { HalfPageScrollDown; } 72 | bind "u" { HalfPageScrollUp; } 73 | // uncomment this and adjust key if using copy_on_select=false 74 | // bind "Alt c" { Copy; } 75 | } 76 | 77 | search { 78 | bind "Ctrl s" { SwitchToMode "Locked"; } 79 | bind "Ctrl c" { ScrollToBottom; SwitchToMode "Locked"; } 80 | bind "t" "Down" { ScrollDown; } 81 | bind "s" "Up" { ScrollUp; } 82 | bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } 83 | bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } 84 | bind "d" { HalfPageScrollDown; } 85 | bind "u" { HalfPageScrollUp; } 86 | bind "n" { Search "down"; } 87 | bind "p" { Search "up"; } 88 | bind "c" { SearchToggleOption "CaseSensitivity"; } 89 | bind "w" { SearchToggleOption "Wrap"; } 90 | bind "o" { SearchToggleOption "WholeWord"; } 91 | } 92 | 93 | tmux { 94 | bind "Ctrl p" { SwitchToMode "Pane"; } 95 | bind "Ctrl t" { SwitchToMode "Tab"; } 96 | bind "[" { SwitchToMode "Scroll"; } 97 | bind "o" { NewPane "Down"; SwitchToMode "Locked"; } 98 | bind "v" { NewPane "Right"; SwitchToMode "Locked"; } 99 | bind "f" { ToggleFocusFullscreen; SwitchToMode "Locked"; } 100 | bind "F" { ToggleFloatingPanes; SwitchToMode "Locked"; } 101 | bind "z" { TogglePaneFrames; SwitchToMode "Locked"; } 102 | bind "Space" { NewTab; SwitchToMode "Locked"; } 103 | bind "," { SwitchToMode "RenameTab"; TabNameInput 0; } 104 | bind "p" { GoToPreviousTab; SwitchToMode "Tab"; } 105 | bind "n" { GoToNextTab; SwitchToMode "Tab"; } 106 | bind "c" { MoveFocus "Left"; SwitchToMode "Pane"; } 107 | bind "r" { MoveFocus "Right"; SwitchToMode "Pane"; } 108 | bind "t" { MoveFocus "Down"; SwitchToMode "Pane"; } 109 | bind "s" { MoveFocus "Up"; SwitchToMode "Pane"; } 110 | bind "m" { SwitchToMode "Move"; } 111 | bind "R" { SwitchToMode "Resize"; } 112 | bind "d" { Detach; } 113 | bind "_" { NextSwapLayout; } 114 | bind "x" { CloseFocus; SwitchToMode "Locked"; } 115 | bind "w" { 116 | LaunchOrFocusPlugin "zellij:session-manager" { 117 | floating true 118 | move_to_focused_tab true 119 | }; 120 | 121 | SwitchToMode "Locked"; 122 | } 123 | } 124 | 125 | shared_except "locked" { 126 | bind "Ctrl g" "Esc" "Enter" { SwitchToMode "Locked"; } 127 | } 128 | 129 | shared_except "tmux" { 130 | bind "Ctrl a" { SwitchToMode "Tmux"; } 131 | } 132 | } 133 | 134 | plugins { 135 | tab-bar { path "tab-bar"; } 136 | } 137 | 138 | // Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP 139 | // eg. when terminal window with an active zellij session is closed 140 | // Options: 141 | // - detach (Default) 142 | // - quit 143 | // 144 | // on_force_close "quit" 145 | 146 | // Send a request for a simplified ui (without arrow fonts) to plugins 147 | // Options: 148 | // - true 149 | // - false (Default) 150 | // 151 | simplified_ui true 152 | 153 | // Choose the path to the default shell that zellij will use for opening new panes 154 | // Default: $SHELL 155 | // 156 | // default_shell "fish" 157 | 158 | // Toggle between having pane frames around the panes 159 | // Options: 160 | // - true (default) 161 | // - false 162 | // 163 | // pane_frames true 164 | 165 | // Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible 166 | // Options: 167 | // - true (default) 168 | // - false 169 | // 170 | // auto_layout true 171 | 172 | // Define color themes for Zellij 173 | // For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes 174 | // Once these themes are defined, one of them should to be selected in the "theme" section of this file 175 | // 176 | themes { 177 | dracula { 178 | fg 248 248 242 179 | bg 40 42 54 180 | red 255 85 85 181 | green 80 250 123 182 | yellow 241 250 140 183 | blue 98 114 164 184 | magenta 255 121 198 185 | orange 255 184 108 186 | cyan 139 233 253 187 | black 0 0 0 188 | white 255 255 255 189 | } 190 | 191 | catppuccin-latte { 192 | bg "#acb0be" 193 | fg "#acb0be" 194 | red "#d20f39" 195 | green "#40a02b" 196 | blue "#1e66f5" 197 | yellow "#df8e1d" 198 | magenta "#ea76cb" 199 | orange "#fe640b" 200 | cyan "#04a5e5" 201 | black "#4c4f69" 202 | white "#dce0e8" 203 | } 204 | 205 | catppuccin-frappe { 206 | bg "#626880" 207 | fg "#c6d0f5" 208 | red "#e78284" 209 | green "#a6d189" 210 | blue "#8caaee" 211 | yellow "#e5c890" 212 | magenta "#f4b8e4" 213 | orange "#ef9f76" 214 | cyan "#99d1db" 215 | black "#292c3c" 216 | white "#c6d0f5" 217 | } 218 | 219 | catppuccin-macchiato { 220 | bg "#5b6078" 221 | fg "#cad3f5" 222 | red "#ed8796" 223 | green "#a6da95" 224 | blue "#8aadf4" 225 | yellow "#eed49f" 226 | magenta "#f5bde6" 227 | orange "#f5a97f" 228 | cyan "#91d7e3" 229 | black "#1e2030" 230 | white "#cad3f5" 231 | } 232 | 233 | catppuccin-mocha { 234 | bg "#585b70" 235 | fg "#cdd6f4" 236 | red "#f38ba8" 237 | green "#a6e3a1" 238 | blue "#89b4fa" 239 | yellow "#f9e2af" 240 | magenta "#f5c2e7" 241 | orange "#fab387" 242 | cyan "#89dceb" 243 | black "#181825" 244 | white "#cdd6f4" 245 | } 246 | } 247 | 248 | // Choose the theme that is specified in the themes section. 249 | // Default: default 250 | // 251 | theme "catppuccin-macchiato" 252 | 253 | // The name of the default layout to load on startup 254 | // Default: "default" 255 | // 256 | //default_layout "compact" 257 | default_layout "top-tab" 258 | 259 | // Choose the mode that zellij uses when starting up. 260 | // Default: normal 261 | // 262 | default_mode "locked" 263 | 264 | // Toggle enabling the mouse mode. 265 | // On certain configurations, or terminals this could 266 | // potentially interfere with copying text. 267 | // Options: 268 | // - true (default) 269 | // - false 270 | // 271 | // mouse_mode false 272 | 273 | // Configure the scroll back buffer size 274 | // This is the number of lines zellij stores for each pane in the scroll back 275 | // buffer. Excess number of lines are discarded in a FIFO fashion. 276 | // Valid values: positive integers 277 | // Default value: 10000 278 | // 279 | // scroll_buffer_size 10000 280 | 281 | // Provide a command to execute when copying text. The text will be piped to 282 | // the stdin of the program to perform the copy. This can be used with 283 | // terminal emulators which do not support the OSC 52 ANSI control sequence 284 | // that will be used by default if this option is not set. 285 | // Examples: 286 | // 287 | // copy_command "xclip -selection clipboard" // x11 288 | // copy_command "wl-copy" // wayland 289 | // copy_command "pbcopy" // osx 290 | 291 | // Choose the destination for copied text 292 | // Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. 293 | // Does not apply when using copy_command. 294 | // Options: 295 | // - system (default) 296 | // - primary 297 | // 298 | // copy_clipboard "primary" 299 | 300 | // Enable or disable automatic copy (and clear) of selection when releasing mouse 301 | // Default: true 302 | // 303 | // copy_on_select false 304 | 305 | // Path to the default editor to use to edit pane scrollbuffer 306 | // Default: $EDITOR or $VISUAL 307 | // 308 | // scrollback_editor "/usr/bin/vim" 309 | 310 | // When attaching to an existing session with other users, 311 | // should the session be mirrored (true) 312 | // or should each user have their own cursor (false) 313 | // Default: false 314 | // 315 | // mirror_session true 316 | 317 | // The folder in which Zellij will look for layouts 318 | // 319 | // layout_dir "/path/to/my/layout_dir" 320 | 321 | // The folder in which Zellij will look for themes 322 | // 323 | // theme_dir "/path/to/my/theme_dir" 324 | 325 | session_serialization true 326 | -------------------------------------------------------------------------------- /i3/config: -------------------------------------------------------------------------------- 1 | # i3 config file (v4) 2 | 3 | set $mod Mod1 4 | 5 | # Font for window titles. Will also be used by the bar unless a different font 6 | # is used in the bar {} block below. 7 | font pango:JetBrainsMono Nerd Font 8 8 | 9 | # Use Mouse+$mod to drag floating windows to their wanted position 10 | floating_modifier $mod 11 | 12 | # keybindings 13 | 14 | # start a terminal 15 | bindsym $mod+Return exec alacritty 16 | 17 | # show the scratchpad 18 | bindsym $mod+d scratchpad show 19 | bindsym $mod+Shift+d move scratchpad 20 | 21 | # kill focused window 22 | bindsym $mod+Shift+B kill 23 | 24 | # rofi 25 | bindsym $mod+i exec "rofi -show drun -show-icons" 26 | bindsym $mod+w exec "rofi -lines 0 -modi workspace:workspace -show workspace" 27 | # marks 28 | bindsym $mod+m exec i3-input -F 'mark %s' -P 'Mark: ' 29 | bindsym $mod+g exec "rofi -modi rofi-i3-marks:rofi-i3-marks -show rofi-i3-marks -show-icons 30 | 31 | # change focus 32 | bindsym $mod+c focus left 33 | bindsym $mod+t focus down 34 | bindsym $mod+s focus up 35 | bindsym $mod+r focus right 36 | 37 | # # alternatively, you can use the cursor keys: 38 | # bindsym $mod+Left focus left 39 | # bindsym $mod+Down focus down 40 | # bindsym $mod+Up focus up 41 | # bindsym $mod+Right focus right 42 | 43 | # move focused window 44 | bindsym $mod+Shift+C move left 45 | bindsym $mod+Shift+T move down 46 | bindsym $mod+Shift+S move up 47 | bindsym $mod+Shift+R move right 48 | 49 | # alternatively, you can use the cursor keys: 50 | bindsym $mod+Shift+Left move left 51 | bindsym $mod+Shift+Down move down 52 | bindsym $mod+Shift+Up move up 53 | bindsym $mod+Shift+Right move right 54 | 55 | bindsym $mod+Ctrl+c resize grow width 10 px or 10 ppt 56 | bindsym $mod+Ctrl+t resize shrink height 10 px or 10 ppt 57 | bindsym $mod+Ctrl+s resize grow height 10 px or 10 ppt 58 | bindsym $mod+Ctrl+r resize shrink width 10 px or 10 ppt 59 | 60 | # split in horizontal orientation 61 | bindsym $mod+v split h 62 | 63 | # split in vertical orientation 64 | bindsym $mod+o split v 65 | 66 | # enter fullscreen mode for the focused container 67 | bindsym $mod+e fullscreen toggle 68 | 69 | # change container layout (stacked, tabbed, toggle split) 70 | bindsym $mod+u layout stacking 71 | bindsym $mod+eacute layout tabbed 72 | bindsym $mod+p layout toggle split 73 | 74 | # toggle tiling / floating 75 | bindsym $mod+Shift+space floating toggle 76 | 77 | # focus the parent container 78 | bindsym $mod+a focus parent 79 | 80 | # focus the child container 81 | #bindsym $mod+d focus child 82 | 83 | # switch to workspace 84 | bindsym $mod+quotedbl workspace number 1 85 | bindsym $mod+guillemotleft workspace number 2 86 | bindsym $mod+guillemotright workspace number 3 87 | bindsym $mod+parenleft workspace number 4 88 | bindsym $mod+parenright workspace number 5 89 | bindsym $mod+at workspace number 6 90 | bindsym $mod+plus workspace number 7 91 | bindsym $mod+minus workspace number 8 92 | bindsym $mod+slash workspace number 9 93 | bindsym $mod+asterisk workspace number 0 94 | 95 | # move focused container to workspace 96 | bindsym $mod+Shift+1 move container to workspace number 1 97 | bindsym $mod+Shift+guillemotleft move container to workspace number 2 98 | bindsym $mod+Shift+guillemotright move container to workspace number 3 99 | bindsym $mod+Shift+4 move container to workspace number 4 100 | bindsym $mod+Shift+5 move container to workspace number 5 101 | bindsym $mod+Shift+6 move container to workspace number 6 102 | bindsym $mod+Shift+7 move container to workspace number 7 103 | bindsym $mod+Shift+8 move container to workspace number 8 104 | bindsym $mod+Shift+9 move container to workspace number 9 105 | bindsym $mod+Shift+0 move container to workspace number 0 106 | 107 | bindsym XF86AudioRaiseVolume exec --no-startup-id "pactl set-sink-volume 0 +5%; pactl set-sink-volume 2 +5%" 108 | bindsym XF86AudioLowerVolume exec --no-startup-id "pactl set-sink-volume 0 -5%; pactl set-sink-volume 2 -5%" 109 | bindsym XF86AudioMute exec --no-startup-id "pactl set-sink-mute 0 toggle; pactl set-sink-mute 1 toggle" 110 | bindsym XF86MonBrightnessUp exec --no-startup-id "xbacklight -inc 10" 111 | bindsym XF86MonBrightnessDown exec --no-startup-id "xbacklight -dec 10" 112 | bindsym XF86Sleep exec --no-startup-id "systemctl suspend" 113 | bindsym Print exec "maim /tmp/img_$(date +%m%d%y_%H%M%S).png" 114 | bindsym --release Shift+Print exec "maim -s /tmp/img_$(date +%m%d%y_%H%M%S).png" 115 | bindsym $mod+Print exec "scrot -i /tmp/img_$(date +%m%d%y_%H%M%S).png" 116 | bindsym Mod4+l exec --no-startup-id "/home/phaazon/bin/random-wallpaper && cat /home/phaazon/.fehbg | tail -n1 | cut -d\' -f 2 | xargs i3lock -ti" 117 | bindsym Mod4+h exec --no-startup-id "/home/phaazon/bin/random-wallpaper && cat /home/phaazon/.fehbg | tail -n1 | cut -d\' -f 2 | xargs i3lock -ti && systemctl hibernate" 118 | 119 | # reload the configuration file 120 | bindsym $mod+Shift+X reload 121 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 122 | bindsym $mod+Shift+O restart 123 | # exit i3 (logs you out of your X session) 124 | bindsym $mod+Shift+P exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" 125 | 126 | set $mode_gaps Gaps: (o)uter, (i)nner, (h)orizontal, (v)ertical, (t)op, (r)ight, (b)ottom, (l)eft 127 | set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) 128 | set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) 129 | set $mode_gaps_horiz Horizontal Gaps: +|-|0 (local), Shift + +|-|0 (global) 130 | set $mode_gaps_verti Vertical Gaps: +|-|0 (local), Shift + +|-|0 (global) 131 | set $mode_gaps_top Top Gaps: +|-|0 (local), Shift + +|-|0 (global) 132 | set $mode_gaps_right Right Gaps: +|-|0 (local), Shift + +|-|0 (global) 133 | set $mode_gaps_bottom Bottom Gaps: +|-|0 (local), Shift + +|-|0 (global) 134 | set $mode_gaps_left Left Gaps: +|-|0 (local), Shift + +|-|0 (global) 135 | bindsym $mod+Shift+g mode "$mode_gaps" 136 | 137 | mode "$mode_gaps" { 138 | bindsym o mode "$mode_gaps_outer" 139 | bindsym i mode "$mode_gaps_inner" 140 | bindsym h mode "$mode_gaps_horiz" 141 | bindsym v mode "$mode_gaps_verti" 142 | bindsym t mode "$mode_gaps_top" 143 | bindsym r mode "$mode_gaps_right" 144 | bindsym b mode "$mode_gaps_bottom" 145 | bindsym l mode "$mode_gaps_left" 146 | bindsym Return mode "$mode_gaps" 147 | bindsym Escape mode "default" 148 | } 149 | 150 | mode "$mode_gaps_outer" { 151 | bindsym plus gaps outer current plus 5 152 | bindsym minus gaps outer current minus 5 153 | bindsym 0 gaps outer current set 0 154 | 155 | bindsym Shift+plus gaps outer all plus 5 156 | bindsym Shift+minus gaps outer all minus 5 157 | bindsym Shift+0 gaps outer all set 0 158 | 159 | bindsym Return mode "$mode_gaps" 160 | bindsym Escape mode "default" 161 | } 162 | mode "$mode_gaps_inner" { 163 | bindsym plus gaps inner current plus 5 164 | bindsym minus gaps inner current minus 5 165 | bindsym 0 gaps inner current set 0 166 | 167 | bindsym Shift+plus gaps inner all plus 5 168 | bindsym Shift+minus gaps inner all minus 5 169 | bindsym Shift+0 gaps inner all set 0 170 | 171 | bindsym Return mode "$mode_gaps" 172 | bindsym Escape mode "default" 173 | } 174 | mode "$mode_gaps_horiz" { 175 | bindsym plus gaps horizontal current plus 5 176 | bindsym minus gaps horizontal current minus 5 177 | bindsym 0 gaps horizontal current set 0 178 | 179 | bindsym Shift+plus gaps horizontal all plus 5 180 | bindsym Shift+minus gaps horizontal all minus 5 181 | bindsym Shift+0 gaps horizontal all set 0 182 | 183 | bindsym Return mode "$mode_gaps" 184 | bindsym Escape mode "default" 185 | } 186 | mode "$mode_gaps_verti" { 187 | bindsym plus gaps vertical current plus 5 188 | bindsym minus gaps vertical current minus 5 189 | bindsym 0 gaps vertical current set 0 190 | 191 | bindsym Shift+plus gaps vertical all plus 5 192 | bindsym Shift+minus gaps vertical all minus 5 193 | bindsym Shift+0 gaps vertical all set 0 194 | 195 | bindsym Return mode "$mode_gaps" 196 | bindsym Escape mode "default" 197 | } 198 | mode "$mode_gaps_top" { 199 | bindsym plus gaps top current plus 5 200 | bindsym minus gaps top current minus 5 201 | bindsym 0 gaps top current set 0 202 | 203 | bindsym Shift+plus gaps top all plus 5 204 | bindsym Shift+minus gaps top all minus 5 205 | bindsym Shift+0 gaps top all set 0 206 | 207 | bindsym Return mode "$mode_gaps" 208 | bindsym Escape mode "default" 209 | } 210 | mode "$mode_gaps_right" { 211 | bindsym plus gaps right current plus 5 212 | bindsym minus gaps right current minus 5 213 | bindsym 0 gaps right current set 0 214 | 215 | bindsym Shift+plus gaps right all plus 5 216 | bindsym Shift+minus gaps right all minus 5 217 | bindsym Shift+0 gaps right all set 0 218 | 219 | bindsym Return mode "$mode_gaps" 220 | bindsym Escape mode "default" 221 | } 222 | mode "$mode_gaps_bottom" { 223 | bindsym plus gaps bottom current plus 5 224 | bindsym minus gaps bottom current minus 5 225 | bindsym 0 gaps bottom current set 0 226 | 227 | bindsym Shift+plus gaps bottom all plus 5 228 | bindsym Shift+minus gaps bottom all minus 5 229 | bindsym Shift+0 gaps bottom all set 0 230 | 231 | bindsym Return mode "$mode_gaps" 232 | bindsym Escape mode "default" 233 | } 234 | mode "$mode_gaps_left" { 235 | bindsym plus gaps left current plus 5 236 | bindsym minus gaps left current minus 5 237 | bindsym 0 gaps left current set 0 238 | 239 | bindsym Shift+plus gaps left all plus 5 240 | bindsym Shift+minus gaps left all minus 5 241 | bindsym Shift+0 gaps left all set 0 242 | 243 | bindsym Return mode "$mode_gaps" 244 | bindsym Escape mode "default" 245 | } 246 | 247 | # class border backgr. text indicator child_border 248 | client.focused #5dbbc1 #5dbbc1 #FFFFFF #a0c980 #5dbbc1 249 | client.focused_inactive #394957 #394957 #FFFFFF #a0c980 #394957 250 | client.unfocused #666666 #666666 #FFFFFF #ec7279 #666666 251 | client.urgent #ec7279 #ec7279 #FFFFFF #ec7279 #ec7279 252 | client.placeholder #d38aea #d38aea #FFFFFF #d38aea #d38aea 253 | 254 | default_border pixel 2 255 | default_floating_border normal 256 | 257 | title_align center 258 | 259 | gaps inner 5 260 | gaps outer 5 261 | #workspace gaps [inner|outer|horizontal|vertical|top|left|bottom|right] 262 | 263 | #hide_edge_borders both 264 | 265 | focus_follows_mouse no 266 | workspace_auto_back_and_forth false 267 | show_marks yes 268 | 269 | exec dunst & 270 | exec nitrogen --restore & 271 | #exec picom --experimental-backends & 272 | #exec setxkbmap -option caps:escape 273 | exec xset r rate 200 30 274 | #exec redshift-gtk & 275 | exec_always --no-startup-id $HOME/.config/polybar/launch.sh 276 | --------------------------------------------------------------------------------