From d6cb5c683f5a439e08a591f02b29246e0f07791d Mon Sep 17 00:00:00 2001 From: pancakes Date: Mon, 28 Jul 2025 20:55:35 +1000 Subject: [PATCH] Super overhaul --- .gitignore | 11 +- README.md | 20 +- fish/dot-config/fish/config.fish | 12 + fish/dot-config/fish/fish_plugins | 3 + fish/dot-config/starship.toml | 22 + foot/dot-config/foot/foot.ini | 35 - helix/dot-config/helix/config.toml | 15 + helix/dot-config/helix/languages.toml | 13 + justfile | 182 +++-- kitty/dot-config/kitty/Tokyo Night.conf | 50 ++ kitty/dot-config/kitty/kitty.conf | 25 + niri/dot-config/fuzzel/fuzzel.ini | 26 + {wm => niri}/dot-config/niri/config.kdl | 414 ++++++---- niri/dot-config/swayidle/config | 4 + niri/dot-config/swaylock/config | 7 + niri/dot-config/waybar/config.jsonc | 103 +++ niri/dot-config/waybar/style.css | 130 +++ niri/dot-config/wpaperd/config.toml | 7 + ranger/dot-config/ranger/rc.conf | 757 ------------------ ranger/dot-config/ranger/scope.sh | 356 -------- ssh/dot-ssh/config | 2 - wm/dot-config/fuzzel/fuzzel.ini | 29 - wm/dot-config/gtklock/config.ini | 6 - wm/dot-config/mako/config | 14 - wm/dot-config/swayidle/config | 3 - wm/dot-config/waybar/config.jsonc | 93 --- wm/dot-config/waybar/style.css | 97 --- yazi/dot-config/yazi/keymap.toml | 49 ++ .../yazi/keymap.toml-1753599537122504 | 49 ++ yazi/dot-config/yazi/package.toml | 7 + yazi/dot-config/yazi/theme.toml | 2 + yazi/dot-config/yazi/yazi.toml | 3 + zsh/dot-zimrc | 58 -- zsh/dot-zshenv | 1 - zsh/dot-zshrc | 135 ---- 35 files changed, 891 insertions(+), 1849 deletions(-) create mode 100644 fish/dot-config/fish/config.fish create mode 100644 fish/dot-config/fish/fish_plugins create mode 100644 fish/dot-config/starship.toml delete mode 100644 foot/dot-config/foot/foot.ini create mode 100644 helix/dot-config/helix/config.toml create mode 100644 helix/dot-config/helix/languages.toml create mode 100644 kitty/dot-config/kitty/Tokyo Night.conf create mode 100644 kitty/dot-config/kitty/kitty.conf create mode 100644 niri/dot-config/fuzzel/fuzzel.ini rename {wm => niri}/dot-config/niri/config.kdl (51%) create mode 100644 niri/dot-config/swayidle/config create mode 100644 niri/dot-config/swaylock/config create mode 100644 niri/dot-config/waybar/config.jsonc create mode 100644 niri/dot-config/waybar/style.css create mode 100644 niri/dot-config/wpaperd/config.toml delete mode 100644 ranger/dot-config/ranger/rc.conf delete mode 100755 ranger/dot-config/ranger/scope.sh delete mode 100644 ssh/dot-ssh/config delete mode 100644 wm/dot-config/fuzzel/fuzzel.ini delete mode 100644 wm/dot-config/gtklock/config.ini delete mode 100644 wm/dot-config/mako/config delete mode 100644 wm/dot-config/swayidle/config delete mode 100644 wm/dot-config/waybar/config.jsonc delete mode 100644 wm/dot-config/waybar/style.css create mode 100644 yazi/dot-config/yazi/keymap.toml create mode 100644 yazi/dot-config/yazi/keymap.toml-1753599537122504 create mode 100644 yazi/dot-config/yazi/package.toml create mode 100644 yazi/dot-config/yazi/theme.toml create mode 100644 yazi/dot-config/yazi/yazi.toml delete mode 100644 zsh/dot-zimrc delete mode 100644 zsh/dot-zshenv delete mode 100644 zsh/dot-zshrc diff --git a/.gitignore b/.gitignore index 751553b..e7e69ae 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,10 @@ -*.bak +# fish shell +fish/dot-config/fish/completions/ +fish/dot-config/fish/conf.d/ +fish/dot-config/fish/functions/ +fish/dot-config/fish/themes/ +fish/dot-config/fish/fish_variables + +# Yazi file manager +yazi/dot-config/yazi/flavors/ +yazi/dot-config/yazi/plugins/ diff --git a/README.md b/README.md index 2247ddc..74d980d 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,16 @@ -# pancakes' setup +# pancakes' config -This is the setup that I use for my personal Arch Linux setup. This includes my ~~window manager~~ (I'm using GNOME atm) and frequently used software. +A repo containing my current desktop setup with stow modules and just recipes. -General install steps: +## Dependencies -```sh -git clone https://codeberg.org/pancakes/config.git -cd config -just -``` +- Arch Linux (or derivative) +- just -Each folder in the root of this repository functions as a module with files inside being stowed (symlinked) relative to `~`. For example, when stowing *river*, `river/.config/river/` is symlinked to `~/.config/river`, `river/.config/xdg-desktop-portal/river-portals.conf` to `~/.config/xdg-desktop-portal/river-portals.conf`, and `river/.config/xdg-desktop-portal-wlr/` to `~/.config/xdg-desktop-portal-wlr`. +## Usage +**WARNING:** All just recipes in this repository are destructive. Make sure you know what they do before using them. + +Clone the repository and run `just` in the repo directory for a list of recipes. + +You can use `just full-auto` or `just full-auto-gui` for fully automated setups. You can pick and choose recipes manually but you should `just packages` first to make sure Flatpak, Chaotic AUR, and paru are setup correctly. diff --git a/fish/dot-config/fish/config.fish b/fish/dot-config/fish/config.fish new file mode 100644 index 0000000..873b398 --- /dev/null +++ b/fish/dot-config/fish/config.fish @@ -0,0 +1,12 @@ +set -U fish_greeting + +if status is-interactive + # Commands to run in interactive sessions can go here + + # Aliases + alias cat="bat" + alias ls="eza --group-directories-first -x" + + # Load prompt (KEEP THIS AT THE END) + starship init fish | source +end diff --git a/fish/dot-config/fish/fish_plugins b/fish/dot-config/fish/fish_plugins new file mode 100644 index 0000000..25e9cc5 --- /dev/null +++ b/fish/dot-config/fish/fish_plugins @@ -0,0 +1,3 @@ +franciscolourenco/done +laughedelic/pisces +gazorby/fish-abbreviation-tips diff --git a/fish/dot-config/starship.toml b/fish/dot-config/starship.toml new file mode 100644 index 0000000..85bfb36 --- /dev/null +++ b/fish/dot-config/starship.toml @@ -0,0 +1,22 @@ +# Get editor completions based on the config schema +"$schema" = 'https://starship.rs/config-schema.json' + +format = "$directory$git_branch$git_status$character" +right_format = "$cmd_duration$status" +add_newline = true + +[character] +success_symbol = "[❯](bold purple)" + +[cmd_duration] +format = " [$duration]($style)" + +[git_branch] +format = "[$branch(:$remote_branch)]($style) " + +[git_status] +format = "([$all_status$ahead_behind]($style) )" + +[status] +format = " [$status]($style)" +disabled = false diff --git a/foot/dot-config/foot/foot.ini b/foot/dot-config/foot/foot.ini deleted file mode 100644 index d70f789..0000000 --- a/foot/dot-config/foot/foot.ini +++ /dev/null @@ -1,35 +0,0 @@ -[main] -font=FiraCode Nerd Font:size=13 -box-drawings-uses-font-glyphs=yes - -[environment] -RANGER_LOAD_DEFAULT_RC="FALSE" - -[bell] -urgent=yes -notify=yes -visual=yes - -[mouse] -hide-when-typing=yes - -[colors] -foreground=a9b1d6 -background=1a1b26 -regular0=32344a -regular1=f7768e -regular2=9ece6a -regular3=e0af68 -regular4=7aa2f7 -regular5=ad8ee6 -regular6=449dab -regular7=787c99 -bright0=444b6a -bright1=ff7a93 -bright2=b9f27c -bright3=ff9e64 -bright4=7da6ff -bright5=bb9af7 -bright6=0db9d7 -bright7=acb0d0 -alpha=0.9 \ No newline at end of file diff --git a/helix/dot-config/helix/config.toml b/helix/dot-config/helix/config.toml new file mode 100644 index 0000000..f7c0b31 --- /dev/null +++ b/helix/dot-config/helix/config.toml @@ -0,0 +1,15 @@ +theme = "tokyonight" + +[editor] +cursorline = true +popup-border = "all" + +[editor.cursor-shape] +insert = "bar" + +[editor.indent-guides] +render = true + +[editor.lsp] +display-inlay-hints = true + diff --git a/helix/dot-config/helix/languages.toml b/helix/dot-config/helix/languages.toml new file mode 100644 index 0000000..7342e67 --- /dev/null +++ b/helix/dot-config/helix/languages.toml @@ -0,0 +1,13 @@ +[[language]] +name = "bash" +auto-format = true + +[[language]] +name = "xml" +file-types = [ "xml", "svg", "xsd", "xslt", "xsl", "ui" ] +auto-format = true +formatter = { command = "xmllint", args = ["--format", "-"] } +language-servers = [ "xml" ] + +[language-server.xml] +command = "lemminx" diff --git a/justfile b/justfile index d807cf6..fa9f76e 100644 --- a/justfile +++ b/justfile @@ -1,108 +1,116 @@ -username := env_var('USER') - -# Displays this message +[private] default: - @just --list --justfile {{justfile()}} + @just --list -# Arch Linux package mirrors & timer for fetching best mirrors -arch-mirrors: - sudo reflector --country 'Australia,New Zealand,' --latest 15 --protocol https --sort rate --save /etc/pacman.d/mirrorlist - sudo systemctl enable --now reflector.timer +_echoerror text: + @echo -e "{{ style("error") }}{{ text }}{{ NORMAL }}" -# Arch User Repository -aur: - rustup install stable - rm -rf /tmp/paru-git - git clone https://aur.archlinux.org/paru-git.git /tmp/paru-git - cd /tmp/paru-git; makepkg -si - rm -rf /tmp/paru-git +_echowarning text: + @echo -e "{{ style("warning") }}{{ text }}{{ NORMAL }}" -# Essential CLI tools & utils -cli: - sudo pacman -S base-devel btop curl eza fastfetch ffmpeg fwupd fzf man-db man-pages nvtop openssh reflector ripgrep unrar vim vulkan-tools xdg-user-dirs yt-dlp +full-auto: packages dev-setup fish-shell helix-editor yazi-file-manager -# ranger terminal file browser -cli-ranger: - sudo pacman -S atool ffmpegthumbnailer highlight mediainfo p7zip transmission-cli unzip w3m zip - paru -S ranger-git - pipx install no_vtf python-bidi +full-auto-gui: full-auto kitty-terminal niri-window-manager - stow --dotfiles -S ranger +# (Run first unless running full-auto) Setup Flatpak, pacman mirrors, Chaotic AUR, and paru AUR helper +packages: + @just _echowarning "1) Installing Flatpak and adding Flathub repository" + sudo pacman -S flatpak flatpak-xdg-utils + flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo -codecs: - sudo pacman -S gst-libav gst-plugin-va gst-plugins-bad gst-plugins-base gst-plugins-good gstreamer + @just _echowarning "\n2) Installing reflector (automatic mirror configuration)" + sudo pacman -S reflector -# C#/.NET dev environment & Rider editor -dev-csharp: - sudo pacman -S aspnet-runtime aspnet-targeting-pack dotnet-sdk dotnet-runtime dotnet-targeting-pack - sudo dotnet workload install wasm-tools - paru -S rider + @just _echoerror "\n\n----- IMPORTANT -----\nPlease modify /etc/xdg/reflector/reflector.conf before continuing\n---------------------" + @read -p "Press enter to continue" -# Node dev environment -dev-node: - sudo pacman -S nodejs npm + sudo systemctl enable --now reflector.timer -# Python dev environment & PyCharm editor -dev-python: - sudo pacman -S pycharm-community-edition python python-pip python-pipx python-venv - - fish -c "fish_add_path $HOME/.local/bin" + @just _echowarning "\n3) Adding Chaotic AUR repository to pacman" + sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com + sudo pacman-key --lsign-key 3056513887B78AEB -# Rust dev environment -dev-rust: - sudo pacman -S rustup - rustup install stable + sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' + sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst' -# Docker container runtime -docker: - sudo pacman -S docker docker-compose - sudo systemctl enable --now docker + @just _echoerror "\n\n----- IMPORTANT -----\nPlease add the following 2 lines to the end of /etc/pacman.conf before continuing\n\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist\n---------------------" + @read -p "Press enter to continue" -# Flatpak & Flathub package repository -flatpak: - sudo pacman -S flatpak flatpak-xdg-utils - flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + @just _echowarning "\n4) Installing paru AUR helper" + sudo pacman -Sy paru -# Steam, Heroic, Prism Launcher, Gamescope, MangoHud & other utils -games: - sudo pacman -S goverlay mangohud steam ttf-liberation wine wine-gecko wine-mono winetricks wqy-zenhei - paru -S protontricks - flatpak install ca.parallel_launcher.ParallelLauncher com.heroicgameslauncher.hgl net.davidotek.pupgui2 org.prismlauncher.PrismLauncher +# Programming languages, runtimes, toolchains, and git +[group("essentials")] +dev-setup: + @just _echowarning "1) Installing languages, runtimes, and toolchains" + paru -S aspnet-runtime aspnet-targeting-pack dotnet-sdk nodejs npm python3 rustup zig -# git global config -git: - git config --global commit.gpgsign true - git config --global init.defaultBranch "main" - git config --global user.name "pancakes" + @just _echowarning "\n2) Installing Rust language" + rustup toolchain add stable-x86_64-unknown-linux-gnu -# Syncthing file sync -syncthing: - sudo pacman -S syncthing - systemctl enable --now --user syncthing + @just _echowarning "\n3) Setting git global config" + git config --global init.defaultBranch "main" -# Tailscale private VPN -tailscale: - sudo pacman -S tailscale - sudo systemctl enable --now tailscaled - sudo tailscale up --operator={{username}} --ssh=true +# fish shell and plugins +[group("essentials")] +fish-shell: + @just _echowarning "1) Installing fish, fish plugin manager, and Starship prompt" + paru -S fisher fish starship -# window manager and required programs -wm: - sudo pacman -S bluez bluez-utils cliphist easyeffects firefox fuzzel gdm gnome-keyring gtklock hunspell hunspell-en_au hunspell-en_us mako niri noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra power-profiles-daemon swayidle swww ttf-firacode-nerd ttf-font-awesome waybar wl-clipboard xdg-desktop-portal-gnome - paru -S xwayland-satellite - flatpak install it.mijorus.smile + @just _echowarning "\n2) Stowing fish config" + stow --dotfiles -S fish - sudo systemctl enable --now bluetooth - sudo systemctl enable gdm - sudo systemctl enable --now power-profiles-daemon + @just _echowarning "\n3) Setting user shell" + chsh -s /usr/bin/fish - stow --dotfiles -S wm + @just _echowarning "\n4) Installing fish plugins" + fish -c "fisher update" + +[group("essentials")] +helix-editor: + @just _echowarning "1) Installing Helix and dependencies" + paru -S bash-language-server clang fish-lsp helix just-lsp lemminx marksman python-lsp-server shfmt taplo-cli typescript-language-server vscode-css-languageserver vscode-html-languageserver vscode-json-languageserver yaml-language-server zls + + @just _echowarning "\n2) Stowing Helix config" + stow --dotfiles -S helix + +[group("graphical")] +kitty-terminal: + @just _echowarning "1) Installing Kitty and dependencies" + paru -S imagemagick kitty python-pygments ttf-firacode-nerd + + @just _echowarning "\n2) Stowing Kitty config" + stow --dotfiles -S kitty + +# Install niri and tools used with it +[group("graphical")] +niri-window-manager: + @just _echowarning "1) Installing niri and related tools" + paru -S cliphist fuzzel gdm gnome-keyring niri-git noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra polkit-kde-agent swayidle swaylock swaync ttf-firacode-nerd ttf-font-awesome waybar wl-clipboard wlsunset wpaperd xdg-desktop-portal-gnome xwayland-satellite-git + + @just _echowarning "\n2) Stowing niri config" + stow --dotfiles -S niri + + @just _echowarning "\n3) Enabling GNOME display manager service" + sudo systemctl enable gdm + +[group("other")] +syncthing-file-sync: + @just _echowarning "1) Installing Syncthing" + paru -S syncthing + + @just _echowarning "\n2) Enabling and starting Syncthing user service" + systemctl enable --now --user syncthing + +# Yazi terminal file manager and plugins +[group("essentials")] +yazi-file-manager: + @just _echowarning "1) Installing Yazi and dependencies" + paru -S 7zip fd ffmpeg fzf imagemagick jq poppler resvg ripgrep wl-clipboard yazi zoxide + + @just _echowarning "\n2) Stowing Yazi config" + stow --dotfiles -S yazi + + @just _echowarning "\n3) Installing Yazi plugins" + ya pkg install -zsh: - sudo pacman -S zsh - chsh -s /usr/bin/zsh - curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh - mv ~/.zimrc ~/.zimrc.old - mv ~/.zshenv ~/.zshenv.old - mv ~/.zshrc ~/.zshrc.old - stow --dotfiles -S zsh diff --git a/kitty/dot-config/kitty/Tokyo Night.conf b/kitty/dot-config/kitty/Tokyo Night.conf new file mode 100644 index 0000000..f2d9728 --- /dev/null +++ b/kitty/dot-config/kitty/Tokyo Night.conf @@ -0,0 +1,50 @@ +# vim:ft=kitty + +## name: Tokyo Night +## license: MIT +## author: Folke Lemaitre +## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_night.conf + + +background #1a1b26 +foreground #c0caf5 +selection_background #283457 +selection_foreground #c0caf5 +url_color #73daca +cursor #c0caf5 +cursor_text_color #1a1b26 + +# Tabs +active_tab_background #7aa2f7 +active_tab_foreground #16161e +inactive_tab_background #292e42 +inactive_tab_foreground #545c7e +#tab_bar_background #15161e + +# Windows +active_border_color #7aa2f7 +inactive_border_color #292e42 + +# normal +color0 #15161e +color1 #f7768e +color2 #9ece6a +color3 #e0af68 +color4 #7aa2f7 +color5 #bb9af7 +color6 #7dcfff +color7 #a9b1d6 + +# bright +color8 #414868 +color9 #f7768e +color10 #9ece6a +color11 #e0af68 +color12 #7aa2f7 +color13 #bb9af7 +color14 #7dcfff +color15 #c0caf5 + +# extended colors +color16 #ff9e64 +color17 #db4b4b diff --git a/kitty/dot-config/kitty/kitty.conf b/kitty/dot-config/kitty/kitty.conf new file mode 100644 index 0000000..870531a --- /dev/null +++ b/kitty/dot-config/kitty/kitty.conf @@ -0,0 +1,25 @@ +# Theme +include Tokyo Night.conf + +# Fonts +font_family FiraCode Nerd Font +font_size 12.0 + +# Bell +enable_audio_bell no +window_alert_on_bell yes + +# Window +enabled_layouts tall:bias=50;full_size=1;mirrored=false +draw_minimal_borders no +wayland_titlebar_color background + +# Keymaps +map alt+shift+enter launch --cwd=current +map alt+q close_window +map alt+n layout_action bias 50 62 70 + +map alt+h neighboring_window left +map alt+j neighboring_window down +map alt+k neighboring_window up +map alt+l neighboring_window right diff --git a/niri/dot-config/fuzzel/fuzzel.ini b/niri/dot-config/fuzzel/fuzzel.ini new file mode 100644 index 0000000..3821fc0 --- /dev/null +++ b/niri/dot-config/fuzzel/fuzzel.ini @@ -0,0 +1,26 @@ +font=Inter +use-bold=yes +placeholder=run +prompt="❯ " +anchor=top +y-margin=20 +lines=10 +tabs=4 +horizontal-pad=8 +vertical-pad=8 +inner-pad=8 + +[colors] +background=1a1b26e5 +text=c0caf5ff +prompt=bb9af7ff +placeholder=c4a7e770 +input=c0caf5ff +selection=bb9af7ff +selection-text=15161e70 +selection-match=232136ff +border=bb9af7ff + +[border] +width=2 +radius=5 diff --git a/wm/dot-config/niri/config.kdl b/niri/dot-config/niri/config.kdl similarity index 51% rename from wm/dot-config/niri/config.kdl rename to niri/dot-config/niri/config.kdl index 0a2617d..021d585 100644 --- a/wm/dot-config/niri/config.kdl +++ b/niri/dot-config/niri/config.kdl @@ -1,27 +1,13 @@ -// This config is in the KDL format: https://kdl.dev -// "/-" comments out the following node. -// Check the wiki for a full description of the configuration: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Overview +debug { + disable-cursor-plane +} -// Input device configuration. -// Find the full list of options on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Input input { - keyboard { - xkb { - // You can set rules, model, layout, variant and options. - // For more information, see xkeyboard-config(7). - - // For example: - // layout "us,ru" - // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps" - } - } - touchpad { tap // dwt // dwtp + drag-lock natural-scroll scroll-method "two-finger" disabled-on-external-mouse @@ -30,100 +16,104 @@ input { mouse { accel-profile "flat" } - - // warp-mouse-to-focus } // You can configure outputs by their name, which you can find // by running `niri msg outputs` while inside a niri instance. -// Remember to uncomment the node by removing "/-"! + output "eDP-1" { scale 1.5 + transform "normal" + // position x=1280 y=0 } output "LG Electronics LG ULTRAGEAR 404NTCZ0R931" { scale 1.5 - // variable-refresh-rate + variable-refresh-rate on-demand=true } -// Settings that influence how windows are positioned and sized. -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout layout { - // Set gaps around windows in logical pixels. gaps 10 - // When to center a column when changing focus, options are: - // - "never", default behavior, focusing an off-screen column will keep at the left - // or right edge of the screen. - // - "always", the focused column will always be centered. - // - "on-overflow", focusing a column will center it if it doesn't fit - // together with the previously focused column. center-focused-column "on-overflow" + always-center-single-column - // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. preset-column-widths { - // Proportion sets the width as a fraction of the output width, taking gaps into account. - // For example, you can perfectly fit four windows sized "proportion 0.25" on an output. - // The default preset widths are 1/3, 1/2 and 2/3 of the output. - proportion 0.33333 - proportion 0.5 - proportion 0.66667 - - // Fixed sets the width in logical pixels exactly. - // fixed 1920 - } - - // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between. - preset-window-heights { proportion 0.33333 proportion 0.5 proportion 0.66667 } - // You can change the default width of the new windows. - // default-column-width { proportion 0.5; } - // If you leave the brackets empty, the windows themselves will decide their initial width. - default-column-width {} + default-column-width { proportion 0.5; } focus-ring { - off + off } border { width 2 active-color "#bb9af7" - inactive-color "#565f89" + inactive-color "#414868" + } + + shadow { + on + softness 30 + spread 5 + offset x=0 y=5 + color "#0007" + } + + tab-indicator { + place-within-column + gap 4 + width 4 + gaps-between-tabs 4 + corner-radius 5 + } + + background-color "transparent" +} + +hotkey-overlay { + skip-at-startup +} + +overview { + workspace-shadow { + off } } -environment { - DISPLAY ":10" - MOZ_ENABLE_WAYLAND "1" - MOZ_USE_XINPUT2 "1" -} - -// Add lines like this to spawn processes at startup. -// Note that running niri as a session supports xdg-desktop-autostart - -// Services -spawn-at-startup "mako" -spawn-at-startup "xwayland-satellite" ":10" +// Utilities +spawn-at-startup "/usr/lib/polkit-kde-authentication-agent-1" spawn-at-startup "swayidle" "-w" +spawn-at-startup "wlsunset" "-l" "-27.4" "-L" "153" +spawn-at-startup "wpaperd" "-d" +spawn-at-startup "swaync" spawn-at-startup "waybar" -spawn-at-startup "swww-daemon" +spawn-at-startup "udiskie" spawn-at-startup "wl-paste" "--watch" "cliphist" "store" +spawn-at-startup "cliphist" "wipe" spawn-at-startup "flatpak" "run" "it.mijorus.smile" "--start-hidden" -// Applications -spawn-at-startup "firefox" -spawn-at-startup "easyeffects" -spawn-at-startup "vesktop" -spawn-at-startup "foot" "-e" "btop" +environment { + CLIPHIST_MAX_ITEMS "20" + ELECTRON_OZONE_PLATFORM_HINT "auto" + PROTON_ENABLE_WAYLAND "1" + TERMINAL "kitty" +} + +cursor { + xcursor-theme "Adwaita" + xcursor-size 24 +} + +workspace "web" +workspace "chat" +workspace "dev" +workspace "games" -// Uncomment this line to ask the clients to omit their client-side decorations if possible. -// If the client will specifically ask for CSD, the request will be honored. -// Additionally, clients will be informed that they are tiled, removing some rounded corners. prefer-no-csd // You can change the path where screenshots are saved. @@ -131,84 +121,132 @@ prefer-no-csd // The path is formatted with strftime(3) to give you the screenshot date and time. screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" -// You can also set this to null to disable saving screenshots to disk. -// screenshot-path null - -// Animation settings. -// The wiki explains how to configure individual animations: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Animations -animations { - // Uncomment to turn off all animations. - // off - - // Slow down all animations by this factor. Values below 1 speed them up instead. - // slowdown 3.0 -} - -workspace "web" -workspace "chat" - // Window rules let you adjust behavior for individual windows. // Find more information on the wiki: // https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules -// Round corners +// Make windows open floating +window-rule { + match app-id=r#"^it\.mijorus\.smile$"# + + open-floating true +} + +// Open the Firefox picture-in-picture player as floating by default. +window-rule { + match app-id=r#"firefox"# title="^Picture-in-Picture$" + + open-floating true +} + +// Block out windows from screen capture +window-rule { + match app-id=r#"discord"# + + block-out-from "screencast" +} + +// Display Steam notifications in corner of the screen +window-rule { + match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# + + default-floating-position x=0 y=0 relative-to="bottom-right" +} + +// Open windows in web workspace +window-rule { + match app-id=r#"firefox$"# at-startup=true + match app-id=r#"thunderbird$"# + + open-on-workspace "web" +} + +// Open windows in chat workspace +window-rule { + match app-id="discord" + + open-on-workspace "chat" +} + +// Open windows in games workspace +window-rule { + match app-id="gamescope" + match app-id=r#"PrismLauncher$"# + match app-id="steam" + + open-on-workspace "games" +} + +// Dont auto focus +window-rule { + match app-id="steam" + + open-focused false +} + +// Maximize at startup +window-rule { + match app-id=r#"firefox$"# at-startup=true + match app-id="discord" at-startup=true + match app-id="steam" at-startup=true + + open-maximized true +} + +// Enable rounded corners for all windows. window-rule { geometry-corner-radius 5 clip-to-geometry true } -// Firefox +// Indicate screencasted windows with red colors. window-rule { - match app-id="firefox" + match is-window-cast-target=true - open-on-workspace "web" + border { + active-color "#ff0000" + inactive-color "#aa0000" + } + + shadow { + color "#aa0000" + } + + tab-indicator { + active-color "#ff0000" + inactive-color "#aa0000" + } } -// Chat applications -window-rule { - match app-id="vesktop" +// Enable shadows on launcher and notifications +layer-rule { + match namespace="^launcher$" - block-out-from "screencast" - open-maximized true - open-on-workspace "chat" + shadow { + on + } + + geometry-corner-radius 5 } -window-rule { - match app-id="com.github.wwmm.easyeffects" +layer-rule { + match namespace=r#"^wpaperd-"# - open-on-workspace "chat" + place-within-backdrop true } -// Steam -window-rule { - match app-id="steam" title="Steam" - - open-maximized true -} - -window-rule { - match app-id="gamescope" - - open-fullscreen true -} - -// foot -window-rule { - match app-id="foot" - - default-column-width { proportion 0.5; } -} - -// Hide private stuff :3 -window-rule { - match app-id="firefox" title=r#"^Extension: \(Bitwarden Password Manager\)"# - match app-id="org.gnome.Nautilus" +// Block out mako notifications from screencasts. +layer-rule { + match namespace="swaync-notification-window" block-out-from "screencast" } binds { + // Keys consist of modifiers separated by + signs, followed by an XKB key name + // in the end. To find an XKB name for a particular key, you may use a program + // like wev. + // // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt // when running as a winit window. @@ -216,23 +254,35 @@ binds { // shows a list of important hotkeys. Mod+Shift+Slash { show-hotkey-overlay; } - Mod+Return { spawn "foot"; } - Mod+D { spawn "fuzzel"; } - Mod+E { spawn "foot" "-e" "ranger"; } - Mod+Alt+L { spawn "gtklock" "-d"; } - Mod+V { spawn "sh" "-c" "cliphist list | fuzzel -d -p '> ' --placeholder=clipboard | cliphist decode | wl-copy"; } - Mod+slash { spawn "flatpak" "run" "it.mijorus.smile"; } + // Suggested binds for running programs: terminal, app launcher, screen locker. + Mod+Return { spawn "kitty"; } + Mod+D { spawn "fuzzel"; } + Mod+V hotkey-overlay-title="Manage clipboard" { spawn "sh" "-c" "cliphist list | fuzzel --dmenu --placeholder clipboard --with-nth 2 | cliphist decode | wl-copy"; } + Super+Alt+L { spawn "swaylock"; } + Mod+E { spawn "kitty" "-e" "yazi"; } + Mod+Shift+E { spawn "nautilus"; } + Mod+Shift+D { spawn "emacsclient" "--alternate-editor=" "--create-frame"; } + Mod+Period { spawn "flatpak" "run" "it.mijorus.smile"; } + Control+Shift+Escape { spawn "kitty" "-e" "btop"; } + // You can also use a shell. Do this if you need pipes, multiple commands, etc. + // Note: the entire command goes as a single argument in the end. + // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; } + + // Volume keys mappings for PipeWire & WirePlumber. XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; } XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; } XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } + Alt+F4 { close-window; } Mod+Shift+Q { close-window; } + Mod+O { toggle-overview; } + Mod+H { focus-column-left; } - Mod+J { focus-window-down; } - Mod+K { focus-window-up; } + Mod+J { focus-window-down-or-top; } + Mod+K { focus-window-up-or-bottom; } Mod+L { focus-column-right; } Mod+Shift+H { move-column-left; } @@ -240,16 +290,19 @@ binds { Mod+Shift+K { move-window-up; } Mod+Shift+L { move-column-right; } - Mod+Home { focus-column-first; } - Mod+End { focus-column-last; } + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } Mod+Shift+Home { move-column-to-first; } Mod+Shift+End { move-column-to-last; } - Mod+Page_Down { focus-workspace-down; } + Mod+Page_Down { focus-workspace-down; } Mod+Page_Up { focus-workspace-up; } Mod+U { focus-workspace-down; } Mod+I { focus-workspace-up; } - + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } + Mod+Ctrl+U { move-column-to-workspace-down; } + Mod+Ctrl+I { move-column-to-workspace-up; } Mod+Shift+Page_Down { move-workspace-down; } Mod+Shift+Page_Up { move-workspace-up; } @@ -269,15 +322,11 @@ binds { Mod+WheelScrollRight { focus-column-right; } Mod+WheelScrollLeft { focus-column-left; } - Mod+Ctrl+WheelScrollRight { move-column-right; } - Mod+Ctrl+WheelScrollLeft { move-column-left; } // Usually scrolling up and down with Shift in applications results in // horizontal scrolling; these binds replicate that. Mod+Shift+WheelScrollDown { focus-column-right; } Mod+Shift+WheelScrollUp { focus-column-left; } - Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } - Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } // Similarly, you can bind touchpad scroll "ticks". // Touchpad scrolling is continuous, so for these binds it is split into @@ -305,23 +354,32 @@ binds { Mod+7 { focus-workspace 7; } Mod+8 { focus-workspace 8; } Mod+9 { focus-workspace 9; } - Mod+Shift+1 { move-window-to-workspace 1; } - Mod+Shift+2 { move-window-to-workspace 2; } - Mod+Shift+3 { move-window-to-workspace 3; } - Mod+Shift+4 { move-window-to-workspace 4; } - Mod+Shift+5 { move-window-to-workspace 5; } - Mod+Shift+6 { move-window-to-workspace 6; } - Mod+Shift+7 { move-window-to-workspace 7; } - Mod+Shift+8 { move-window-to-workspace 8; } - Mod+Shift+9 { move-window-to-workspace 9; } + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + + Mod+Ctrl+1 { move-window-to-workspace 1; } + Mod+Ctrl+2 { move-window-to-workspace 2; } + Mod+Ctrl+3 { move-window-to-workspace 3; } + Mod+Ctrl+4 { move-window-to-workspace 4; } + Mod+Ctrl+5 { move-window-to-workspace 5; } + Mod+Ctrl+6 { move-window-to-workspace 6; } + Mod+Ctrl+7 { move-window-to-workspace 7; } + Mod+Ctrl+8 { move-window-to-workspace 8; } + Mod+Ctrl+9 { move-window-to-workspace 9; } // Switches focus between the current and the previous workspace. - // Mod+Tab { focus-workspace-previous; } + Mod+Tab { focus-workspace-previous; } - Mod+Comma { consume-window-into-column; } - Mod+Period { expel-window-from-column; } - - // There are also commands that consume or expel a single window to the side. + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. Mod+BracketLeft { consume-or-expel-window-left; } Mod+BracketRight { consume-or-expel-window-right; } @@ -330,6 +388,11 @@ binds { Mod+Ctrl+R { reset-window-height; } Mod+F { maximize-column; } Mod+Shift+F { fullscreen-window; } + + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { expand-column-to-available-width; } + Mod+C { center-column; } // Finer width adjustments. @@ -347,6 +410,15 @@ binds { Mod+Shift+Minus { set-window-height "-10%"; } Mod+Shift+Equal { set-window-height "+10%"; } + // Move the focused window between the floating and the tiling layout. + Mod+B { toggle-window-floating; } + Mod+Shift+B { switch-focus-between-floating-and-tiling; } + + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+W { toggle-column-tabbed-display; } + // Actions to switch layouts. // Note: if you uncomment these, make sure you do NOT have // a matching layout switch hotkey configured in xkb options above. @@ -355,19 +427,29 @@ binds { // Mod+Space { switch-layout "next"; } // Mod+Shift+Space { switch-layout "prev"; } - Print { screenshot; } - Ctrl+Print { screenshot-screen; } - Alt+Print { screenshot-window; } + Print { screenshot; } + Shift+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + + Mod+Alt+Return { set-dynamic-cast-window; } + Mod+Alt+Shift+Return { set-dynamic-cast-monitor; } + Mod+Alt+Shift+Backspace { clear-dynamic-cast-target; } + + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+E { quit; } + Mod+Shift+Escape { quit; } + Ctrl+Alt+Delete { quit; } // Powers off the monitors. To turn them back on, do any input like // moving the mouse or pressing any other key. Mod+Shift+P { power-off-monitors; } } - -hotkey-overlay { - skip-at-startup -} - diff --git a/niri/dot-config/swayidle/config b/niri/dot-config/swayidle/config new file mode 100644 index 0000000..3e7aa2b --- /dev/null +++ b/niri/dot-config/swayidle/config @@ -0,0 +1,4 @@ +timeout 300 swaylock +timeout 600 "niri msg action power-off-monitors" +before-sleep swaylock +lock swaylock diff --git a/niri/dot-config/swaylock/config b/niri/dot-config/swaylock/config new file mode 100644 index 0000000..858bb4b --- /dev/null +++ b/niri/dot-config/swaylock/config @@ -0,0 +1,7 @@ +ignore-empty-password +show-failed-attempts +daemonize +color=232136 +font=Inter +font-size=12 +indicator-thickness=8 diff --git a/niri/dot-config/waybar/config.jsonc b/niri/dot-config/waybar/config.jsonc new file mode 100644 index 0000000..232dd61 --- /dev/null +++ b/niri/dot-config/waybar/config.jsonc @@ -0,0 +1,103 @@ +// -*- mode: jsonc -*- +{ + "layer": "top", + "spacing": 8, + "modules-left": [ + "niri/workspaces", + "privacy", + "niri/window" + ], + "modules-center": [ + "clock" + ], + "modules-right": [ + "tray", + "idle_inhibitor", + "battery", + "power-profiles-daemon", + "wireplumber", + "bluetooth", + "network", + "custom/notifications" + ], + "niri/workspaces": { + "format": "{icon}", + "format-icons": { + "web": "󰈹", + "chat": "󰭹", + "dev": "", + "games": "󰊖" + } + }, + "privacy": { + "icon-size": 12 + }, + "clock": { + "format": "{:%a %H:%M}", + "tooltip-format": "{calendar}", + "calendar": { + "format": { + "today": "{}" + } + } + }, + "tray": { + "spacing": 4, + "reverse-direction": true + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "battery": { + "format": "{icon} {capacity}%" + }, + "power-profiles-daemon": { + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "wireplumber": { + "format": "{icon} {volume}%", + "format-muted": " Muted", + "format-icons": ["", "", ""] + }, + "bluetooth": { + "format-disabled": "", + "format-connected": " {num_connections}" + }, + "network": { + "format-ethernet": "󰛳 Wired", + "format-wifi": " {essid}", + "format-disconnected": "󰅛 Disconnected", + "tooltip-format-ethernet": "Interface: {ifname}\nIP: {ipaddr}\nGateway: {gwaddr}", + "tooltip-format-wifi": "{frequency}GHz {signalStrength}%\n\nInterface: {ifname}\nIP: {ipaddr}\nGateway: {gwaddr}", + "tooltip-format-disconnected": "" + }, + "custom/notifications": { + "exec": "swaync-client -swb", + "exec-if": "which swaync-client", + "return-type": "json", + "format": "{icon}", + "format-icons": { + "notification": "", + "none": "", + "dnd-notification": "", + "dnd-none": "", + "inhibited-notification": "", + "inhibited-none": "", + "dnd-inhibited-notification": "", + "dnd-inhibited-none": "" + }, + "on-click": "swaync-client -t -sw", + "on-click-right": "swaync-client -d -sw", + "tooltip-format": "Notifications", + "escape": true + } +} diff --git a/niri/dot-config/waybar/style.css b/niri/dot-config/waybar/style.css new file mode 100644 index 0000000..8ad17d9 --- /dev/null +++ b/niri/dot-config/waybar/style.css @@ -0,0 +1,130 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: FontAwesome, Inter, sans-serif; + font-size: 12px; +} + +window#waybar { + background-color: rgba(26, 27, 38, 0.95); + color: #c0caf5; + transition-property: background-color; + transition-duration: .5s; +} + +button { + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; + padding: 0 4px; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +button:hover { + background: inherit; + box-shadow: inset 0 0 transparent; +} + +#workspaces button { + background-color: transparent; + color: #ffffff; +} + +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +#workspaces button.focused { + background-color: #bb9af7; + color: #15161e; +} + +#workspaces button.urgent { + background-color: #e0af68; + color: #15161e; +} + +#clock, +#battery, +#network, +#wireplumber, +#tray, +#idle_inhibitor, +#power-profiles-daemon, +#custom-notifications { + padding: 0 4px; + min-width: 1.5em; + color: #c0caf5; +} + +#window, +#workspaces { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +#clock { + font-weight: bold; +} + +#battery.charging, #battery.plugged { + background-color: #9ece6a; + color: #15161e; +} + +#battery.critical:not(.charging) { + background-color: #f7768e; + color: #15161e; +} + +#power-profiles-daemon.performance { + background-color: #e0af68; + color: #15161e; +} + +#power-profiles-daemon.power-saver { + background-color: #9ece6a; + color: #15161e; +} + +label:focus { + background-color: #000000; +} + +#network.disconnected { + background-color: #f7768e; + color: #15161e; +} + +#wireplumber.muted { + background-color: #f7768e; + color: #15161e; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #e0af68; + color: #15161e; +} + +#idle_inhibitor.activated { + background-color: #e0af68; + color: #15161e; +} + +#privacy { + padding: 0; +} + +#privacy-item { + padding: 0 4px; + background-color: #e0af68; + color: #15161e; +} diff --git a/niri/dot-config/wpaperd/config.toml b/niri/dot-config/wpaperd/config.toml new file mode 100644 index 0000000..bfdbea2 --- /dev/null +++ b/niri/dot-config/wpaperd/config.toml @@ -0,0 +1,7 @@ +[default] +duration = "1h" +mode = "center" +initial-transition = false + +[any] +path = "~/Pictures/Wallpapers" diff --git a/ranger/dot-config/ranger/rc.conf b/ranger/dot-config/ranger/rc.conf deleted file mode 100644 index 9ea8e37..0000000 --- a/ranger/dot-config/ranger/rc.conf +++ /dev/null @@ -1,757 +0,0 @@ -# =================================================================== -# This file contains the default startup commands for ranger. -# To change them, it is recommended to create either /etc/ranger/rc.conf -# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom -# commands there. -# -# If you copy this whole file there, you may want to set the environment -# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice. -# -# The purpose of this file is mainly to define keybindings and settings. -# For running more complex python code, please create a plugin in "plugins/" or -# a command in "commands.py". -# -# Each line is a command that will be run before the user interface -# is initialized. As a result, you can not use commands which rely -# on the UI such as :delete or :mark. -# =================================================================== - -# =================================================================== -# == Options -# =================================================================== - -# Which viewmode should be used? Possible values are: -# miller: Use miller columns which show multiple levels of the hierarchy -# multipane: Midnight-commander like multipane view showing all tabs next -# to each other -set viewmode miller -#set viewmode multipane - -# How many columns are there, and what are their relative widths? -set column_ratios 1,3,4 - -# Which files should be hidden? (regular expression) -set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$ - -# Show hidden files? You can toggle this by typing 'zh' -set show_hidden false - -# Ask for a confirmation when running the "delete" command? -# Valid values are "always", "never", "multiple" (default) -# With "multiple", ranger will ask only if you delete multiple files at once. -set confirm_on_delete always - -# Use non-default path for file preview script? -# ranger ships with scope.sh, a script that calls external programs (see -# README.md for dependencies) to preview images, archives, etc. -#set preview_script ~/.config/ranger/scope.sh - -# Use the external preview script or display simple plain text or image previews? -set use_preview_script true - -# Automatically count files in the directory, even before entering them? -set automatically_count_files true - -# Open all images in this directory when running certain image viewers -# like feh or sxiv? You can still open selected files by marking them. -set open_all_images true - -# Be aware of version control systems and display information. -set vcs_aware false - -# State of the four backends git, hg, bzr, svn. The possible states are -# disabled, local (only show local info), enabled (show local and remote -# information). -set vcs_backend_git enabled -set vcs_backend_hg disabled -set vcs_backend_bzr disabled -set vcs_backend_svn disabled - -# Truncate the long commit messages to this length when shown in the statusbar. -set vcs_msg_length 50 - -# Use one of the supported image preview protocols -set preview_images true - -# Set the preview image method. Supported methods: -# -# * w3m (default): -# Preview images in full color with the external command "w3mimgpreview"? -# This requires the console web browser "w3m" and a supported terminal. -# It has been successfully tested with "xterm" and "urxvt" without tmux. -# -# * iterm2: -# Preview images in full color using iTerm2 image previews -# (http://iterm2.com/images.html). This requires using iTerm2 compiled -# with image preview support. -# -# This feature relies on the dimensions of the terminal's font. By default, a -# width of 8 and height of 11 are used. To use other values, set the options -# iterm2_font_width and iterm2_font_height to the desired values. -# -# * terminology: -# Previews images in full color in the terminology terminal emulator. -# Supports a wide variety of formats, even vector graphics like svg. -# -# * urxvt: -# Preview images in full color using urxvt image backgrounds. This -# requires using urxvt compiled with pixbuf support. -# -# * urxvt-full: -# The same as urxvt but utilizing not only the preview pane but the -# whole terminal window. -# -# * kitty: -# Preview images in full color using kitty image protocol. -# Requires python PIL or pillow library. -# If ranger does not share the local filesystem with kitty -# the transfer method is changed to encode the whole image; -# while slower, this allows remote previews, -# for example during an ssh session. -# Tmux is unsupported. -# -# * ueberzug: -# Preview images in full color with the external command "ueberzug". -# Images are shown by using a child window. -# Only for users who run X11 in GNU/Linux. -set preview_images_method sixel - -# Delay in seconds before displaying an image with the w3m method. -# Increase it in case of experiencing display corruption. -set w3m_delay 0.02 - -# Manually adjust the w3mimg offset when using a terminal which needs this -set w3m_offset 0 - -# Default iTerm2 font size (see: preview_images_method: iterm2) -set iterm2_font_width 8 -set iterm2_font_height 11 - -# Use a unicode "..." character to mark cut-off filenames? -set unicode_ellipsis true - -# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic). -# Requires the python-bidi pip package -set bidi_support true - -# Show dotfiles in the bookmark preview box? -set show_hidden_bookmarks true - -# Which colorscheme to use? These colorschemes are available by default: -# default, jungle, snow, solarized -set colorscheme default - -# Preview files on the rightmost column? -# And collapse (shrink) the last column if there is nothing to preview? -set preview_files true -set preview_directories true -set collapse_preview true - -# Wrap long lines in plain text previews? -set wrap_plaintext_previews true - -# Save the console history on exit? -set save_console_history true - -# Draw the status bar on top of the browser window (default: bottom) -set status_bar_on_top false - -# Draw a progress bar in the status bar which displays the average state of all -# currently running tasks which support progress bars? -set draw_progress_bar_in_status_bar true - -# Draw borders around columns? (separators, outline, both, or none) -# Separators are vertical lines between columns. -# Outline draws a box around all the columns. -# Both combines the two. -set draw_borders separators - -# Display the directory name in tabs? -set dirname_in_tabs true - -# Enable the mouse support? -set mouse_enabled true - -# Display the file size in the main column or status bar? -set display_size_in_main_column true -set display_size_in_status_bar true - -# Display the free disk space in the status bar? -set display_free_space_in_status_bar true - -# Display files tags in all columns or only in main column? -set display_tags_in_all_columns true - -# Set a title for the window? Updates both `WM_NAME` and `WM_ICON_NAME` -set update_title true - -# Set the tmux/screen window-name to "ranger"? -set update_tmux_title true - -# Shorten the title if it gets long? The number defines how many -# directories are displayed at once, 0 turns off this feature. -set shorten_title 3 - -# Show hostname in titlebar? -set hostname_in_titlebar false - -# Abbreviate $HOME with ~ in the titlebar (first line) of ranger? -set tilde_in_titlebar true - -# How many directory-changes or console-commands should be kept in history? -set max_history_size 20 -set max_console_history_size 50 - -# Try to keep so much space between the top/bottom border when scrolling: -set scroll_offset 8 - -# Flush the input after each key hit? (Noticeable when ranger lags) -set flushinput true - -# Padding on the right when there's no preview? -# This allows you to click into the space to run the file. -set padding_right true - -# Save bookmarks (used with mX and `X) instantly? -# This helps to synchronize bookmarks between multiple ranger -# instances but leads to *slight* performance loss. -# When false, bookmarks are saved when ranger is exited. -set autosave_bookmarks true - -# Save the "`" bookmark to disk. This can be used to switch to the last -# directory by typing "``". -set save_backtick_bookmark true - -# You can display the "real" cumulative size of directories by using the -# command :get_cumulative_size or typing "dc". The size is expensive to -# calculate and will not be updated automatically. You can choose -# to update it automatically though by turning on this option: -set autoupdate_cumulative_size false - -# Turning this on makes sense for screen readers: -set show_cursor false - -# One of: size, natural, basename, atime, ctime, mtime, type, random -set sort natural - -# Additional sorting options -set sort_reverse false -set sort_case_insensitive true -set sort_directories_first true -set sort_unicode false - -# Enable this if key combinations with the Alt Key don't work for you. -# (Especially on xterm) -set xterm_alt_key false - -# Whether to include bookmarks in cd command -set cd_bookmarks true - -# Changes case sensitivity for the cd command tab completion -set cd_tab_case sensitive - -# Use fuzzy tab completion with the "cd" command. For example, -# ":cd /u/lo/b" expands to ":cd /usr/local/bin". -set cd_tab_fuzzy false - -# Avoid previewing files larger than this size, in bytes. Use a value of 0 to -# disable this feature. -set preview_max_size 0 - -# The key hint lists up to this size have their sublists expanded. -# Otherwise the submaps are replaced with "...". -set hint_collapse_threshold 10 - -# Add the highlighted file to the path in the titlebar -set show_selection_in_titlebar true - -# The delay that ranger idly waits for user input, in milliseconds, with a -# resolution of 100ms. Lower delay reduces lag between directory updates but -# increases CPU load. -set idle_delay 2000 - -# When the metadata manager module looks for metadata, should it only look for -# a ".metadata.json" file in the current directory, or do a deep search and -# check all directories above the current one as well? -set metadata_deep_search false - -# Clear all existing filters when leaving a directory -set clear_filters_on_dir_change false - -# Disable displaying line numbers in main column. -# Possible values: false, absolute, relative. -set line_numbers false - -# When line_numbers=relative show the absolute line number in the -# current line. -set relative_current_zero false - -# Start line numbers from 1 instead of 0 -set one_indexed false - -# Save tabs on exit -set save_tabs_on_exit false - -# Enable scroll wrapping - moving down while on the last item will wrap around to -# the top and vice versa. -set wrap_scroll true - -# Set the global_inode_type_filter to nothing. Possible options: d, f and l for -# directories, files and symlinks respectively. -set global_inode_type_filter - -# This setting allows to freeze the list of files to save I/O bandwidth. It -# should be 'false' during start-up, but you can toggle it by pressing F. -set freeze_files false - -# Print file sizes in bytes instead of the default human-readable format. -set size_in_bytes false - -# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words -# give a warning when you nest ranger in a subshell started by ranger. -# Special value "error" makes the warning more visible. -set nested_ranger_warning true - -# =================================================================== -# == Local Options -# =================================================================== -# You can set local options that only affect a single directory. - -# Examples: -# setlocal path=~/downloads sort mtime - -# =================================================================== -# == Command Aliases in the Console -# =================================================================== - -alias e edit -alias q quit -alias q! quit! -alias qa quitall -alias qa! quitall! -alias qall quitall -alias qall! quitall! -alias setl setlocal - -alias filter scout -prts -alias find scout -aets -alias mark scout -mr -alias unmark scout -Mr -alias search scout -rs -alias search_inc scout -rts -alias travel scout -aefklst - -# =================================================================== -# == Define keys for the browser -# =================================================================== - -# Basic -map Q quitall -map q quit -copymap q ZZ ZQ - -map R reload_cwd -map F set freeze_files! -map reset -map redraw_window -map abort -map change_mode normal -map ~ set viewmode! - -map i display_file -map scroll_preview 1 -map scroll_preview -1 -map ? help -map W display_log -map w taskview_open -map S shell $SHELL - -map : console -map ; console -map ! console shell%space -map @ console -p6 shell %%s -map # console shell -p%space -map s console shell%space -map r chain draw_possible_programs; console open_with%space -map f console find%space -map cd console cd%space - -map chain console; eval fm.ui.console.history_move(-1) - -# Change the line mode -map Mf linemode filename -map Mi linemode fileinfo -map Mm linemode mtime -map Mh linemode humanreadablemtime -map Mp linemode permissions -map Ms linemode sizemtime -map MH linemode sizehumanreadablemtime -map Mt linemode metatitle - -# Tagging / Marking -map t tag_toggle -map ut tag_remove -map " tag_toggle tag=%any -map mark_files toggle=True -map v mark_files all=True toggle=True -map uv mark_files all=True val=False -map V toggle_visual_mode -map uV toggle_visual_mode reverse=True - -# For the nostalgics: Midnight Commander bindings -map help -map rename_append -map display_file -map edit -map copy -map cut -map console mkdir%space -map console delete -#map console trash -map exit - -# In case you work on a keyboard with dvorak layout -map move up=1 -map move down=1 -map move left=1 -map move right=1 -map move to=0 -map move to=-1 -map move down=1 pages=True -map move up=1 pages=True -map move right=1 -#map console delete -map console touch%space - -# VIM-like -copymap k -copymap j -copymap h -copymap l -copymap gg -copymap G -copymap -copymap - -map J move down=0.5 pages=True -map K move up=0.5 pages=True -copymap J -copymap K - -# Jumping around -map H history_go -1 -map L history_go 1 -map ] move_parent 1 -map [ move_parent -1 -map } traverse -map { traverse_backwards -map ) jump_non - -map ghh cd ~ -map ghc cd ~/config -map ghC cd ~/.config -map ghd cd ~/Documents -map ghD cd ~/Downloads -map ghgm cd ~/.var/app/org.prismlauncher.PrismLauncher/data/PrismLauncher -map ghgs cd ~/.local/share/Steam/steamapps/common -map ghm cd ~/Music -map ghp cd ~/Pictures -map ghP cd ~/Projects -map ghv cd ~/Videos -map gl cd -r . -map gL cd -r %f -map gi eval fm.cd('/run/media/' + os.getenv('USER')) -map g/ cd / - -# External Programs -map E edit -map du shell -p du --max-depth=1 -h --apparent-size -map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh -map yp yank path -map yd yank dir -map yn yank name -map y. yank name_without_extension - -# Filesystem Operations -map = chmod - -map cw console rename%space -map a rename_append -map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%")) -map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7) - -map pp paste -map po paste overwrite=True -map pP paste append=True -map pO paste overwrite=True append=True -map pl paste_symlink relative=False -map pL paste_symlink relative=True -map phl paste_hardlink -map pht paste_hardlinked_subtree -map pd console paste dest= -map p` paste dest=%any_path -map p' paste dest=%any_path - -map dD console delete -map dT console trash - -map dd cut -map ud uncut -map da cut mode=add -map dr cut mode=remove -map dt cut mode=toggle - -map yy copy -map uy uncut -map ya copy mode=add -map yr copy mode=remove -map yt copy mode=toggle - -# Temporary workarounds -map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier) -map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier) -map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier) -map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier) -map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier) -map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier) -map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier) -map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier) - -# Searching -map / console search%space -map n search_next -map N search_next forward=False -map ct search_next order=tag -map cs search_next order=size -map ci search_next order=mimetype -map cc search_next order=ctime -map cm search_next order=mtime -map ca search_next order=atime - -# Tabs -map tab_new -map tab_close -map tab_move 1 -map tab_move -1 -map tab_move 1 -map tab_move -1 -map gt tab_move 1 -map gT tab_move -1 -map gn tab_new -map gc tab_close -map uq tab_restore -map tab_open 1 -map tab_open 2 -map tab_open 3 -map tab_open 4 -map tab_open 5 -map tab_open 6 -map tab_open 7 -map tab_open 8 -map tab_open 9 -map tab_shift 1 -map tab_shift -1 - -# Sorting -map or set sort_reverse! -map oz set sort=random -map os chain set sort=size; set sort_reverse=False -map ob chain set sort=basename; set sort_reverse=False -map on chain set sort=natural; set sort_reverse=False -map om chain set sort=mtime; set sort_reverse=False -map oc chain set sort=ctime; set sort_reverse=False -map oa chain set sort=atime; set sort_reverse=False -map ot chain set sort=type; set sort_reverse=False -map oe chain set sort=extension; set sort_reverse=False - -map oS chain set sort=size; set sort_reverse=True -map oB chain set sort=basename; set sort_reverse=True -map oN chain set sort=natural; set sort_reverse=True -map oM chain set sort=mtime; set sort_reverse=True -map oC chain set sort=ctime; set sort_reverse=True -map oA chain set sort=atime; set sort_reverse=True -map oT chain set sort=type; set sort_reverse=True -map oE chain set sort=extension; set sort_reverse=True - -map dc get_cumulative_size - -# Settings -map zc set collapse_preview! -map zd set sort_directories_first! -map zh set show_hidden! -map set show_hidden! -copymap -copymap -map zI set flushinput! -map zi set preview_images! -map zm set mouse_enabled! -map zp set preview_files! -map zP set preview_directories! -map zs set sort_case_insensitive! -map zu set autoupdate_cumulative_size! -map zv set use_preview_script! -map zf console filter%space -copymap zf zz - -# Filter stack -map .d filter_stack add type d -map .f filter_stack add type f -map .l filter_stack add type l -map .m console filter_stack add mime%space -map .n console filter_stack add name%space -map .# console filter_stack add hash%space -map ." filter_stack add duplicate -map .' filter_stack add unique -map .| filter_stack add or -map .& filter_stack add and -map .! filter_stack add not -map .r filter_stack rotate -map .c filter_stack clear -map .* filter_stack decompose -map .p filter_stack pop -map .. filter_stack show - -# Bookmarks -map ` enter_bookmark %any -map ' enter_bookmark %any -map m set_bookmark %any -map um unset_bookmark %any - -map m draw_bookmarks -copymap m um ` ' - -# Generate all the chmod bindings with some python help: -eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg)) -eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg)) -eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg)) -eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg)) -eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg)) - -eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg)) -eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg)) -eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg)) -eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg)) -eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg)) - -# =================================================================== -# == Define keys for the console -# =================================================================== -# Note: Unmapped keys are passed directly to the console. - -# Basic -cmap eval fm.ui.console.tab() -cmap eval fm.ui.console.tab(-1) -cmap eval fm.ui.console.close() -cmap eval fm.ui.console.execute() -cmap redraw_window - -copycmap -copycmap - -# Move around -cmap eval fm.ui.console.history_move(-1) -cmap eval fm.ui.console.history_move(1) -cmap eval fm.ui.console.move(left=1) -cmap eval fm.ui.console.move(right=1) -cmap eval fm.ui.console.move(right=0, absolute=True) -cmap eval fm.ui.console.move(right=-1, absolute=True) -cmap eval fm.ui.console.move_word(left=1) -cmap eval fm.ui.console.move_word(right=1) - -copycmap -copycmap - -# Line Editing -cmap eval fm.ui.console.delete(-1) -cmap eval fm.ui.console.delete(0) -cmap eval fm.ui.console.delete_word() -cmap eval fm.ui.console.delete_word(backward=False) -cmap eval fm.ui.console.delete_rest(1) -cmap eval fm.ui.console.delete_rest(-1) -cmap eval fm.ui.console.paste() - -# And of course the emacs way -copycmap -copycmap -copycmap -copycmap -copycmap -copycmap -copycmap -copycmap -copycmap - -# Note: There are multiple ways to express backspaces. (code 263) -# and (code 127). To be sure, use both. -copycmap - -# This special expression allows typing in numerals: -cmap false - -# =================================================================== -# == Pager Keybindings -# =================================================================== - -# Movement -pmap pager_move down=1 -pmap pager_move up=1 -pmap pager_move left=4 -pmap pager_move right=4 -pmap pager_move to=0 -pmap pager_move to=-1 -pmap pager_move down=1.0 pages=True -pmap pager_move up=1.0 pages=True -pmap pager_move down=0.5 pages=True -pmap pager_move up=0.5 pages=True - -copypmap k -copypmap j -copypmap h -copypmap l -copypmap g -copypmap G -copypmap d -copypmap u -copypmap n f -copypmap p b - -# Basic -pmap redraw_window -pmap pager_close -copypmap q Q i -pmap E edit_file - -# =================================================================== -# == Taskview Keybindings -# =================================================================== - -# Movement -tmap taskview_move up=1 -tmap taskview_move down=1 -tmap taskview_move to=0 -tmap taskview_move to=-1 -tmap taskview_move down=1.0 pages=True -tmap taskview_move up=1.0 pages=True -tmap taskview_move down=0.5 pages=True -tmap taskview_move up=0.5 pages=True - -copytmap k -copytmap j -copytmap g -copytmap G -copytmap u -copytmap n f -copytmap p b - -# Changing priority and deleting tasks -tmap J eval -q fm.ui.taskview.task_move(-1) -tmap K eval -q fm.ui.taskview.task_move(0) -tmap dd eval -q fm.ui.taskview.task_remove() -tmap eval -q fm.ui.taskview.task_move(-1) -tmap eval -q fm.ui.taskview.task_move(0) -tmap eval -q fm.ui.taskview.task_remove() - -# Basic -tmap redraw_window -tmap taskview_close -copytmap q Q w diff --git a/ranger/dot-config/ranger/scope.sh b/ranger/dot-config/ranger/scope.sh deleted file mode 100755 index e21ebfc..0000000 --- a/ranger/dot-config/ranger/scope.sh +++ /dev/null @@ -1,356 +0,0 @@ -#!/usr/bin/env bash - -set -o noclobber -o noglob -o nounset -o pipefail -IFS=$'\n' - -## If the option `use_preview_script` is set to `true`, -## then this script will be called and its output will be displayed in ranger. -## ANSI color codes are supported. -## STDIN is disabled, so interactive scripts won't work properly - -## This script is considered a configuration file and must be updated manually. -## It will be left untouched if you upgrade ranger. - -## Because of some automated testing we do on the script #'s for comments need -## to be doubled up. Code that is commented out, because it's an alternative for -## example, gets only one #. - -## Meanings of exit codes: -## code | meaning | action of ranger -## -----+------------+------------------------------------------- -## 0 | success | Display stdout as preview -## 1 | no preview | Display no preview at all -## 2 | plain text | Display the plain content of the file -## 3 | fix width | Don't reload when width changes -## 4 | fix height | Don't reload when height changes -## 5 | fix both | Don't ever reload -## 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview -## 7 | image | Display the file directly as an image - -## Script arguments -FILE_PATH="${1}" # Full path of the highlighted file -PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters) -## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused -PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters) -IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview -PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise. - -FILE_EXTENSION="${FILE_PATH##*.}" -FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')" - -## Settings -HIGHLIGHT_SIZE_MAX=262143 # 256KiB -HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8} -HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo} -HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}" -PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn} -OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000} -OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night} - -handle_extension() { - case "${FILE_EXTENSION_LOWER}" in - ## Archive - a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\ - rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip) - atool --list -- "${FILE_PATH}" && exit 5 - bsdtar --list --file "${FILE_PATH}" && exit 5 - exit 1;; - rar) - ## Avoid password prompt by providing empty password - unrar lt -p- -- "${FILE_PATH}" && exit 5 - exit 1;; - 7z) - ## Avoid password prompt by providing empty password - 7z l -p -- "${FILE_PATH}" && exit 5 - exit 1;; - - ## PDF - pdf) - ## Preview as text conversion - pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \ - fmt -w "${PV_WIDTH}" && exit 5 - mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \ - fmt -w "${PV_WIDTH}" && exit 5 - exiftool "${FILE_PATH}" && exit 5 - exit 1;; - - ## BitTorrent - torrent) - transmission-show -- "${FILE_PATH}" && exit 5 - exit 1;; - - ## OpenDocument - odt|ods|odp|sxw) - ## Preview as text conversion - odt2txt "${FILE_PATH}" && exit 5 - ## Preview as markdown conversion - pandoc -s -t markdown -- "${FILE_PATH}" && exit 5 - exit 1;; - - ## XLSX - xlsx) - ## Preview as csv conversion - ## Uses: https://github.com/dilshod/xlsx2csv - xlsx2csv -- "${FILE_PATH}" && exit 5 - exit 1;; - - ## HTML - htm|html|xhtml) - ## Preview as text conversion - w3m -dump "${FILE_PATH}" && exit 5 - lynx -dump -- "${FILE_PATH}" && exit 5 - elinks -dump "${FILE_PATH}" && exit 5 - pandoc -s -t markdown -- "${FILE_PATH}" && exit 5 - ;; - - ## JSON - json) - jq --color-output . "${FILE_PATH}" && exit 5 - python -m json.tool -- "${FILE_PATH}" && exit 5 - ;; - - ## Valve Texture Format - vtf) - # You need to install no_vtf with pipx - no_vtf --always-write --no-progress -f "png|apng" -O "${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" && exit 6 - ;; - - ## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected - ## by file(1). - dff|dsf|wv|wvc) - mediainfo "${FILE_PATH}" && exit 5 - exiftool "${FILE_PATH}" && exit 5 - ;; # Continue with next handler on failure - esac -} - -handle_image() { - ## Size of the preview if there are multiple options or it has to be - ## rendered from vector graphics. If the conversion program allows - ## specifying only one dimension while keeping the aspect ratio, the width - ## will be used. - local DEFAULT_SIZE="1920x1080" - - local mimetype="${1}" - case "${mimetype}" in - ## SVG - # image/svg+xml|image/svg) - # convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6 - # exit 1;; - - ## DjVu - # image/vnd.djvu) - # ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \ - # - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \ - # && exit 6 || exit 1;; - - ## Image - image/*) - local orientation - orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )" - ## If orientation data is present and the image actually - ## needs rotating ("1" means no rotation)... - if [[ -n "$orientation" && "$orientation" != 1 ]]; then - ## ...auto-rotate the image according to the EXIF data. - convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6 - fi - - ## `w3mimgdisplay` will be called for all images (unless overriden - ## as above), but might fail for unsupported types. - exit 7;; - - ## Video - # video/*) - # # Thumbnail - # ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6 - # exit 1;; - - ## PDF - # application/pdf) - # pdftoppm -f 1 -l 1 \ - # -scale-to-x "${DEFAULT_SIZE%x*}" \ - # -scale-to-y -1 \ - # -singlefile \ - # -jpeg -tiffcompression jpeg \ - # -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \ - # && exit 6 || exit 1;; - - - ## ePub, MOBI, FB2 (using Calibre) - # application/epub+zip|application/x-mobipocket-ebook|\ - # application/x-fictionbook+xml) - # # ePub (using https://github.com/marianosimone/epub-thumbnailer) - # epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \ - # "${DEFAULT_SIZE%x*}" && exit 6 - # ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \ - # >/dev/null && exit 6 - # exit 1;; - - ## Font - application/font*|application/*opentype) - preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png" - if fontimage -o "${preview_png}" \ - --pixelsize "120" \ - --fontname \ - --pixelsize "80" \ - --text " ABCDEFGHIJKLMNOPQRSTUVWXYZ " \ - --text " abcdefghijklmnopqrstuvwxyz " \ - --text " 0123456789.:,;(*!?') ff fl fi ffi ffl " \ - --text " The quick brown fox jumps over the lazy dog. " \ - "${FILE_PATH}"; - then - convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \ - && rm "${preview_png}" \ - && exit 6 - else - exit 1 - fi - ;; - - ## Preview archives using the first image inside. - ## (Very useful for comic book collections for example.) - # application/zip|application/x-rar|application/x-7z-compressed|\ - # application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar) - # local fn=""; local fe="" - # local zip=""; local rar=""; local tar=""; local bsd="" - # case "${mimetype}" in - # application/zip) zip=1 ;; - # application/x-rar) rar=1 ;; - # application/x-7z-compressed) ;; - # *) tar=1 ;; - # esac - # { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \ - # { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \ - # { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \ - # { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return - # - # fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \ - # [ print(l, end='') for l in sys.stdin if \ - # (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\ - # sort -V | head -n 1) - # [ "$fn" = "" ] && return - # [ "$bsd" ] && fn=$(printf '%b' "$fn") - # - # [ "$tar" ] && tar --extract --to-stdout \ - # --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6 - # fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g') - # [ "$bsd" ] && bsdtar --extract --to-stdout \ - # --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6 - # [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}" - # [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \ - # "${IMAGE_CACHE_PATH}" && exit 6 - # [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \ - # "${IMAGE_CACHE_PATH}" && exit 6 - # [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}" - # ;; - esac - - # openscad_image() { - # TMPPNG="$(mktemp -t XXXXXX.png)" - # openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \ - # --imgsize="${OPENSCAD_IMGSIZE/x/,}" \ - # -o "${TMPPNG}" "${1}" - # mv "${TMPPNG}" "${IMAGE_CACHE_PATH}" - # } - - # case "${FILE_EXTENSION_LOWER}" in - # ## 3D models - # ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH} - # ## is hardcoded as jpeg. So we make a tempfile.png and just - # ## move/rename it to jpg. This works because image libraries are - # ## smart enough to handle it. - # csg|scad) - # openscad_image "${FILE_PATH}" && exit 6 - # ;; - # 3mf|amf|dxf|off|stl) - # openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6 - # ;; - # esac -} - -handle_mime() { - local mimetype="${1}" - case "${mimetype}" in - ## RTF and DOC - text/rtf|*msword) - ## Preview as text conversion - ## note: catdoc does not always work for .doc files - ## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/ - catdoc -- "${FILE_PATH}" && exit 5 - exit 1;; - - ## DOCX, ePub, FB2 (using markdown) - ## You might want to remove "|epub" and/or "|fb2" below if you have - ## uncommented other methods to preview those formats - *wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml) - ## Preview as markdown conversion - pandoc -s -t markdown -- "${FILE_PATH}" && exit 5 - exit 1;; - - ## XLS - *ms-excel) - ## Preview as csv conversion - ## xls2csv comes with catdoc: - ## http://www.wagner.pp.ru/~vitus/software/catdoc/ - xls2csv -- "${FILE_PATH}" && exit 5 - exit 1;; - - ## Text - text/* | */xml) - ## Syntax highlight - if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then - exit 2 - fi - if [[ "$( tput colors )" -ge 256 ]]; then - local pygmentize_format='terminal256' - local highlight_format='xterm256' - else - local pygmentize_format='terminal' - local highlight_format='ansi' - fi - env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \ - --out-format="${highlight_format}" \ - --force -- "${FILE_PATH}" && exit 5 - env COLORTERM=8bit bat --color=always --style="plain" \ - -- "${FILE_PATH}" && exit 5 - pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\ - -- "${FILE_PATH}" && exit 5 - exit 2;; - - ## DjVu - image/vnd.djvu) - ## Preview as text conversion (requires djvulibre) - djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5 - exiftool "${FILE_PATH}" && exit 5 - exit 1;; - - ## Image - image/*) - ## Preview as text conversion - # img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4 - exiftool "${FILE_PATH}" && exit 5 - exit 1;; - - ## Video and audio - video/* | audio/*) - mediainfo "${FILE_PATH}" && exit 5 - exiftool "${FILE_PATH}" && exit 5 - exit 1;; - esac -} - -handle_fallback() { - echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5 - exit 1 -} - - -MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )" -if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then - handle_image "${MIMETYPE}" -fi -handle_extension -handle_mime "${MIMETYPE}" -handle_fallback - -exit 1 diff --git a/ssh/dot-ssh/config b/ssh/dot-ssh/config deleted file mode 100644 index 3c04601..0000000 --- a/ssh/dot-ssh/config +++ /dev/null @@ -1,2 +0,0 @@ -Host * -SetEnv TERM=xterm-256color \ No newline at end of file diff --git a/wm/dot-config/fuzzel/fuzzel.ini b/wm/dot-config/fuzzel/fuzzel.ini deleted file mode 100644 index c732f70..0000000 --- a/wm/dot-config/fuzzel/fuzzel.ini +++ /dev/null @@ -1,29 +0,0 @@ -[main] -font=Noto Sans:size=13 -use-bold=yes -dpi-aware=no -placeholder=program name -prompt=":3 " -show-actions=yes -terminal=alacritty -e -y-margin=15 -lines=5 -horizontal-pad=5 -vertical-pad=5 -inner-pad=5 - -[colors] -background=1a1b26e5 -text=a9b1d6ff -prompt=bb9af7ff -placeholder=bb9af7b2 -input=bb9af7ff -match=bb9af7ff -selection=bb9af7ff -selection-text=565f89ff -selection-match=1a1b26ff -border=bb9af7ff - -[border] -width=2 -radius=5 diff --git a/wm/dot-config/gtklock/config.ini b/wm/dot-config/gtklock/config.ini deleted file mode 100644 index 8caad4a..0000000 --- a/wm/dot-config/gtklock/config.ini +++ /dev/null @@ -1,6 +0,0 @@ -[main] -gtk-theme=Adwaita-dark -background=Pictures/Wallpapers/cafe.png -idle-hide=true -idle-timeout=30 -start-hidden=true \ No newline at end of file diff --git a/wm/dot-config/mako/config b/wm/dot-config/mako/config deleted file mode 100644 index c33bf49..0000000 --- a/wm/dot-config/mako/config +++ /dev/null @@ -1,14 +0,0 @@ -font=Noto Sans 13 -background-color=#1a1b26e5 -text-color=#a9b1d6ff -width=400 -height=200 -border-color=#bb9af7ff -margin=15 -border-radius=5 -format=%a - %s\n%b -default-timeout=30000 -group-by=app-name,summary - -[grouped] -format=(%g) %a - %s\n%b \ No newline at end of file diff --git a/wm/dot-config/swayidle/config b/wm/dot-config/swayidle/config deleted file mode 100644 index 0643783..0000000 --- a/wm/dot-config/swayidle/config +++ /dev/null @@ -1,3 +0,0 @@ -timeout 300 'gtklock -d' -timeout 600 'niri msg action power-off-monitors' -before-sleep 'gtklock -d' \ No newline at end of file diff --git a/wm/dot-config/waybar/config.jsonc b/wm/dot-config/waybar/config.jsonc deleted file mode 100644 index 6edc516..0000000 --- a/wm/dot-config/waybar/config.jsonc +++ /dev/null @@ -1,93 +0,0 @@ -{ - // make sure this renders above all non-fullscreen windows - "layer": "top", - // modules - "modules-left": [ - "niri/workspaces", - "niri/window" - ], - "modules-center": [ - "clock" - ], - "modules-right": [ - "privacy", - "gamemode", - "tray", - "idle_inhibitor", - "battery", - "wireplumber", - "bluetooth", - "network" - ], - // config - "niri/workspaces": { - "format": "{icon}{name}", - "format-icons": { - "web": " ", - "chat": " " - } - }, - "niri/window": { - // "format": "{app_id} | {title}" - }, - "clock": { - "format": "{:%a %R}", - "tooltip-format": "{calendar}", - "calendar": { - "mode": "month", - "weeks-pos": "right", - "format": { - "months": "{}", - "days": "{}", - "weeks": "W{}", - "weekdays": "{}", - "today": "{}" - } - } - }, - "privacy": { - "icon-size": 13, - "icon-spacing": 5 - }, - "gamemode": { - "icon-size": 13 - }, - "tray": { - "reverse-direction": true, - "show-passive-items": true, - "spacing": 5 - }, - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "", - "deactivated": "" - } - }, - "wireplumber": { - "format": "{icon} {volume}%", - "format-icons": [ - "", - "", - " " - ], - "format-muted": "", - "on-click": "pavucontrol", - "on-click-right": "helvum" - }, - "bluetooth": { - "format": "", - "format-connected": " {num_connections}", - "format-disabled": "", - "tooltip-format": "{controller_alias} {controller_address}", - "tooltip-format-connected": "{controller_alias} {controller_address}\n\n{num_connections} connected:\n{device_enumerate}", - "tooltip-format-enumerate-connected": "{device_alias} {device_address}" - }, - "network": { - "format-disconnected": "Disconnected", - "format-ethernet": "", - "format-wifi": " {essid}", - "tooltip-format-ethernet": "{ipaddr}/{cidr} via {ifname}", - "tooltip-format-wifi": "{ipaddr}/{cidr} via {ifname}\n{signalStrength}% signal" - } -} \ No newline at end of file diff --git a/wm/dot-config/waybar/style.css b/wm/dot-config/waybar/style.css deleted file mode 100644 index b24f300..0000000 --- a/wm/dot-config/waybar/style.css +++ /dev/null @@ -1,97 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: "Noto Sans", sans-serif; - font-size: 13px; - min-height: 0; -} - -window#waybar { - background: rgba(26, 27, 38, 0.9); - color: #a9b1d6; -} - -tooltip { - background: rgba(26, 27, 38, 0.9); - border: 2px solid #565f89; - border-radius: 5px; -} - -tooltip label { - color: #a9b1d6; -} - -#workspaces button { - margin: 5px 5px; - padding: 2px 5px; - background: transparent; - border-radius: 5px; - color: #a9b1d6; -} - -#workspaces button.focused { - background: #bb9af7; - color: #1a1b26; -} - -#window, -#clock, -#privacy, -#gamemode, -#tray, -#idle_inhibitor, -#battery, -#wireplumber, -#bluetooth, -#network { - margin: 5px 5px; - padding: 0 5px; - border-radius: 5px; -} - -#window, -#tray { - background-color: #24283b; -} - -#privacy { - background-color: #e0af68; - color: black; -} - -#gamemode.running { - background-color: #7dcfff; - color: black; -} - -#idle_inhibitor.activated { - background-color: #ff9e64; - color: black; -} - -#battery { - background-color: #ffffff; - color: black; -} - -#battery.charging { - background-color: #9ece6a; - color: #1a1b26; -} - -#battery.warning:not(.charging), -#network.disconnected { - background: #f7768e; - color: #1a1b26; -} - -#bluetooth.connected { - background: #7aa2f7; - color: #1a1b26; -} - -#network.ethernet, -#network.wifi { - background: #73daca; - color: #1a1b26; -} \ No newline at end of file diff --git a/yazi/dot-config/yazi/keymap.toml b/yazi/dot-config/yazi/keymap.toml new file mode 100644 index 0000000..609f979 --- /dev/null +++ b/yazi/dot-config/yazi/keymap.toml @@ -0,0 +1,49 @@ +[[mgr.prepend_keymap]] +on = [ "g", "C" ] +run = "cd ~/config" +desc = "Go to dotfiles" + +[[mgr.prepend_keymap]] +on = [ "g", "d" ] +run = "cd ~/Documents" +desc = "Go to Documents" + +[[mgr.prepend_keymap]] +on = [ "g", "D" ] +run = "cd ~/Downloads" +desc = "Go to Downloads" + +[[mgr.prepend_keymap]] +on = [ "g", "g", "s" ] +run = "cd ~/.local/share/Steam/steamapps/common" +desc = "Go to steamapps" + +[[mgr.prepend_keymap]] +on = [ "g", "m" ] +run = "cd ~/Music" +desc = "Go to Music" + +[[mgr.prepend_keymap]] +on = [ "g", "P" ] +run = "cd ~/Projects" +desc = "Go to Projects" + +[[mgr.prepend_keymap]] +on = [ "g", "p", "p" ] +run = "cd ~/Pictures" +desc = "Go to Pictures" + +[[mgr.prepend_keymap]] +on = [ "g", "p", "s" ] +run = "cd ~/Pictures/Screenshots" +desc = "Go to Screenshots" + +[[mgr.prepend_keymap]] +on = [ "g", "v", "v" ] +run = "cd ~/Videos" +desc = "Go to Videos" + +[[mgr.prepend_keymap]] +on = [ "g", "v", "r" ] +run = "cd ~/Videos/Recording" +desc = "Go to Recordings" diff --git a/yazi/dot-config/yazi/keymap.toml-1753599537122504 b/yazi/dot-config/yazi/keymap.toml-1753599537122504 new file mode 100644 index 0000000..e5abde3 --- /dev/null +++ b/yazi/dot-config/yazi/keymap.toml-1753599537122504 @@ -0,0 +1,49 @@ +[[manager.prepend_keymap]] +on = [ "g", "C" ] +run = "cd ~/config" +desc = "Go to dotfiles" + +[[manager.prepend_keymap]] +on = [ "g", "d" ] +run = "cd ~/Documents" +desc = "Go to Documents" + +[[manager.prepend_keymap]] +on = [ "g", "D" ] +run = "cd ~/Downloads" +desc = "Go to Downloads" + +[[manager.prepend_keymap]] +on = [ "g", "g", "s" ] +run = "cd ~/.local/share/Steam/steamapps/common" +desc = "Go to steamapps" + +[[manager.prepend_keymap]] +on = [ "g", "m" ] +run = "cd ~/Music" +desc = "Go to Music" + +[[manager.prepend_keymap]] +on = [ "g", "P" ] +run = "cd ~/Projects" +desc = "Go to Projects" + +[[manager.prepend_keymap]] +on = [ "g", "p", "p" ] +run = "cd ~/Pictures" +desc = "Go to Pictures" + +[[manager.prepend_keymap]] +on = [ "g", "p", "s" ] +run = "cd ~/Pictures/Screenshots" +desc = "Go to Screenshots" + +[[manager.prepend_keymap]] +on = [ "g", "v", "v" ] +run = "cd ~/Videos" +desc = "Go to Videos" + +[[manager.prepend_keymap]] +on = [ "g", "v", "r" ] +run = "cd ~/Videos/Recording" +desc = "Go to Recordings" diff --git a/yazi/dot-config/yazi/package.toml b/yazi/dot-config/yazi/package.toml new file mode 100644 index 0000000..2b7c2cd --- /dev/null +++ b/yazi/dot-config/yazi/package.toml @@ -0,0 +1,7 @@ +[plugin] +deps = [] + +[[flavor.deps]] +use = "BennyOe/tokyo-night" +rev = "5f56364" +hash = "c0bf69ad2c44005892d586e9693993c6" diff --git a/yazi/dot-config/yazi/theme.toml b/yazi/dot-config/yazi/theme.toml new file mode 100644 index 0000000..a1460bf --- /dev/null +++ b/yazi/dot-config/yazi/theme.toml @@ -0,0 +1,2 @@ +[flavor] +use = "tokyo-night" diff --git a/yazi/dot-config/yazi/yazi.toml b/yazi/dot-config/yazi/yazi.toml new file mode 100644 index 0000000..3b0b37e --- /dev/null +++ b/yazi/dot-config/yazi/yazi.toml @@ -0,0 +1,3 @@ +[preview] +wrap = "yes" +tab_size = 4 diff --git a/zsh/dot-zimrc b/zsh/dot-zimrc deleted file mode 100644 index 3a28637..0000000 --- a/zsh/dot-zimrc +++ /dev/null @@ -1,58 +0,0 @@ -# Start configuration added by Zim install {{{ -# -# This is not sourced during shell startup, and it's only used to configure the -# zimfw plugin manager. -# - -# -# Modules -# - -# Sets sane Zsh built-in environment options. -zmodule environment -# Provides handy git aliases and functions. -zmodule git -# Applies correct bindkeys for input events. -zmodule input -# Sets a custom terminal title. -zmodule termtitle -# Utility aliases and functions. Adds colour to ls, grep and less. -zmodule utility - -# -# Prompt -# - -# Exposes to prompts how long the last command took to execute -zmodule duration-info -# Exposes git repository status information to prompts -zmodule git-info -# Exposes currently working directory to prompts -zmodule prompt-pwd - -zmodule s1ck94 - -# -# Completion -# - -# Additional completion definitions for Zsh. -zmodule zsh-users/zsh-completions --fpath src -# Enables and configures smart and extensive tab completion. -# completion must be sourced after all modules that add completion definitions. -zmodule completion - -# -# Modules that must be initialized last -# - -# Fish-like syntax highlighting for Zsh. -# zsh-users/zsh-syntax-highlighting must be sourced after completion -zmodule zsh-users/zsh-syntax-highlighting -# Fish-like history search (up arrow) for Zsh. -# zsh-users/zsh-history-substring-search must be sourced after zsh-users/zsh-syntax-highlighting -zmodule zsh-users/zsh-history-substring-search -# Fish-like autosuggestions for Zsh. -zmodule zsh-users/zsh-autosuggestions -# }}} End configuration added by Zim install - diff --git a/zsh/dot-zshenv b/zsh/dot-zshenv deleted file mode 100644 index 2c60bef..0000000 --- a/zsh/dot-zshenv +++ /dev/null @@ -1 +0,0 @@ -ON_COLOR=magenta diff --git a/zsh/dot-zshrc b/zsh/dot-zshrc deleted file mode 100644 index fd01ac2..0000000 --- a/zsh/dot-zshrc +++ /dev/null @@ -1,135 +0,0 @@ -# Start configuration added by Zim install {{{ -# -# User configuration sourced by interactive shells -# - -# ----------------- -# Zsh configuration -# ----------------- - -# -# History -# - -# Remove older command from the history if a duplicate is to be added. -setopt HIST_IGNORE_ALL_DUPS - -# -# Input/output -# - -# Set editor default keymap to emacs (`-e`) or vi (`-v`) -bindkey -e - -# Prompt for spelling correction of commands. -#setopt CORRECT - -# Customize spelling correction prompt. -#SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' - -# Remove path separator from WORDCHARS. -WORDCHARS=${WORDCHARS//[\/]} - -# ----------------- -# Zim configuration -# ----------------- - -# Use degit instead of git as the default tool to install and update modules. -#zstyle ':zim:zmodule' use 'degit' - -# -------------------- -# Module configuration -# -------------------- - -# -# git -# - -# Set a custom prefix for the generated aliases. The default prefix is 'G'. -#zstyle ':zim:git' aliases-prefix 'g' - -# -# input -# - -# Append `../` to your input for each `.` you type after an initial `..` -#zstyle ':zim:input' double-dot-expand yes - -# -# termtitle -# - -# Set a custom terminal title format using prompt expansion escape sequences. -# See http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Simple-Prompt-Escapes -# If none is provided, the default '%n@%m: %~' is used. -#zstyle ':zim:termtitle' format '%1~' - -# -# zsh-autosuggestions -# - -# Disable automatic widget re-binding on each precmd. This can be set when -# zsh-users/zsh-autosuggestions is the last module in your ~/.zimrc. -ZSH_AUTOSUGGEST_MANUAL_REBIND=1 - -# Customize the style that the suggestions are shown with. -# See https://github.com/zsh-users/zsh-autosuggestions/blob/master/README.md#suggestion-highlight-style -#ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=242' - -# -# zsh-syntax-highlighting -# - -# Set what highlighters will be used. -# See https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md -ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets) - -# Customize the main highlighter styles. -# See https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters/main.md#how-to-tweak-it -#typeset -A ZSH_HIGHLIGHT_STYLES -#ZSH_HIGHLIGHT_STYLES[comment]='fg=242' - -# ------------------ -# Initialize modules -# ------------------ - -ZIM_HOME=${ZDOTDIR:-${HOME}}/.zim -# Download zimfw plugin manager if missing. -if [[ ! -e ${ZIM_HOME}/zimfw.zsh ]]; then - if (( ${+commands[curl]} )); then - curl -fsSL --create-dirs -o ${ZIM_HOME}/zimfw.zsh \ - https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh - else - mkdir -p ${ZIM_HOME} && wget -nv -O ${ZIM_HOME}/zimfw.zsh \ - https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh - fi -fi -# Install missing modules, and update ${ZIM_HOME}/init.zsh if missing or outdated. -if [[ ! ${ZIM_HOME}/init.zsh -nt ${ZIM_CONFIG_FILE:-${ZDOTDIR:-${HOME}}/.zimrc} ]]; then - source ${ZIM_HOME}/zimfw.zsh init -fi -# Initialize modules. -source ${ZIM_HOME}/init.zsh - -# ------------------------------ -# Post-init module configuration -# ------------------------------ - -# -# zsh-history-substring-search -# - -zmodload -F zsh/terminfo +p:terminfo -# Bind ^[[A/^[[B manually so up/down works both before and after zle-line-init -for key ('^[[A' '^P' ${terminfo[kcuu1]}) bindkey ${key} history-substring-search-up -for key ('^[[B' '^N' ${terminfo[kcud1]}) bindkey ${key} history-substring-search-down -for key ('k') bindkey -M vicmd ${key} history-substring-search-up -for key ('j') bindkey -M vicmd ${key} history-substring-search-down -unset key -# }}} End configuration added by Zim install - -HISTFILE=~/.histfile -HISTSIZE=1000 -SAVEHIST=5000 -unsetopt beep -bindkey -v