Super overhaul
This commit is contained in:
parent
3a40187c80
commit
d6cb5c683f
35 changed files with 891 additions and 1849 deletions
11
.gitignore
vendored
11
.gitignore
vendored
|
@ -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/
|
||||
|
|
20
README.md
20
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.
|
||||
|
|
12
fish/dot-config/fish/config.fish
Normal file
12
fish/dot-config/fish/config.fish
Normal file
|
@ -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
|
3
fish/dot-config/fish/fish_plugins
Normal file
3
fish/dot-config/fish/fish_plugins
Normal file
|
@ -0,0 +1,3 @@
|
|||
franciscolourenco/done
|
||||
laughedelic/pisces
|
||||
gazorby/fish-abbreviation-tips
|
22
fish/dot-config/starship.toml
Normal file
22
fish/dot-config/starship.toml
Normal file
|
@ -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
|
|
@ -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
|
15
helix/dot-config/helix/config.toml
Normal file
15
helix/dot-config/helix/config.toml
Normal file
|
@ -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
|
||||
|
13
helix/dot-config/helix/languages.toml
Normal file
13
helix/dot-config/helix/languages.toml
Normal file
|
@ -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"
|
182
justfile
182
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
|
||||
|
|
50
kitty/dot-config/kitty/Tokyo Night.conf
Normal file
50
kitty/dot-config/kitty/Tokyo Night.conf
Normal file
|
@ -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
|
25
kitty/dot-config/kitty/kitty.conf
Normal file
25
kitty/dot-config/kitty/kitty.conf
Normal file
|
@ -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
|
26
niri/dot-config/fuzzel/fuzzel.ini
Normal file
26
niri/dot-config/fuzzel/fuzzel.ini
Normal file
|
@ -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
|
|
@ -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
|
||||
}
|
||||
|
4
niri/dot-config/swayidle/config
Normal file
4
niri/dot-config/swayidle/config
Normal file
|
@ -0,0 +1,4 @@
|
|||
timeout 300 swaylock
|
||||
timeout 600 "niri msg action power-off-monitors"
|
||||
before-sleep swaylock
|
||||
lock swaylock
|
7
niri/dot-config/swaylock/config
Normal file
7
niri/dot-config/swaylock/config
Normal file
|
@ -0,0 +1,7 @@
|
|||
ignore-empty-password
|
||||
show-failed-attempts
|
||||
daemonize
|
||||
color=232136
|
||||
font=Inter
|
||||
font-size=12
|
||||
indicator-thickness=8
|
103
niri/dot-config/waybar/config.jsonc
Normal file
103
niri/dot-config/waybar/config.jsonc
Normal file
|
@ -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": "<tt>{calendar}</tt>",
|
||||
"calendar": {
|
||||
"format": {
|
||||
"today": "<b><u>{}</u></b>"
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": "<span foreground='red'><sup></sup></span>",
|
||||
"none": "",
|
||||
"dnd-notification": "<span foreground='red'><sup></sup></span>",
|
||||
"dnd-none": "",
|
||||
"inhibited-notification": "<span foreground='red'><sup></sup></span>",
|
||||
"inhibited-none": "",
|
||||
"dnd-inhibited-notification": "<span foreground='red'><sup></sup></span>",
|
||||
"dnd-inhibited-none": ""
|
||||
},
|
||||
"on-click": "swaync-client -t -sw",
|
||||
"on-click-right": "swaync-client -d -sw",
|
||||
"tooltip-format": "Notifications",
|
||||
"escape": true
|
||||
}
|
||||
}
|
130
niri/dot-config/waybar/style.css
Normal file
130
niri/dot-config/waybar/style.css
Normal file
|
@ -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;
|
||||
}
|
7
niri/dot-config/wpaperd/config.toml
Normal file
7
niri/dot-config/wpaperd/config.toml
Normal file
|
@ -0,0 +1,7 @@
|
|||
[default]
|
||||
duration = "1h"
|
||||
mode = "center"
|
||||
initial-transition = false
|
||||
|
||||
[any]
|
||||
path = "~/Pictures/Wallpapers"
|
|
@ -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<tab>" 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 <C-r> reset
|
||||
map <C-l> redraw_window
|
||||
map <C-c> abort
|
||||
map <esc> change_mode normal
|
||||
map ~ set viewmode!
|
||||
|
||||
map i display_file
|
||||
map <A-j> scroll_preview 1
|
||||
map <A-k> 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 <C-p> 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 "<any> tag_toggle tag=%any
|
||||
map <Space> 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 <F1> help
|
||||
map <F2> rename_append
|
||||
map <F3> display_file
|
||||
map <F4> edit
|
||||
map <F5> copy
|
||||
map <F6> cut
|
||||
map <F7> console mkdir%space
|
||||
map <F8> console delete
|
||||
#map <F8> console trash
|
||||
map <F10> exit
|
||||
|
||||
# In case you work on a keyboard with dvorak layout
|
||||
map <UP> move up=1
|
||||
map <DOWN> move down=1
|
||||
map <LEFT> move left=1
|
||||
map <RIGHT> move right=1
|
||||
map <HOME> move to=0
|
||||
map <END> move to=-1
|
||||
map <PAGEDOWN> move down=1 pages=True
|
||||
map <PAGEUP> move up=1 pages=True
|
||||
map <CR> move right=1
|
||||
#map <DELETE> console delete
|
||||
map <INSERT> console touch%space
|
||||
|
||||
# VIM-like
|
||||
copymap <UP> k
|
||||
copymap <DOWN> j
|
||||
copymap <LEFT> h
|
||||
copymap <RIGHT> l
|
||||
copymap <HOME> gg
|
||||
copymap <END> G
|
||||
copymap <PAGEDOWN> <C-F>
|
||||
copymap <PAGEUP> <C-B>
|
||||
|
||||
map J move down=0.5 pages=True
|
||||
map K move up=0.5 pages=True
|
||||
copymap J <C-D>
|
||||
copymap K <C-U>
|
||||
|
||||
# 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`<any> paste dest=%any_path
|
||||
map p'<any> 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 <C-n> tab_new
|
||||
map <C-w> tab_close
|
||||
map <TAB> tab_move 1
|
||||
map <S-TAB> tab_move -1
|
||||
map <A-Right> tab_move 1
|
||||
map <A-Left> 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 <a-1> tab_open 1
|
||||
map <a-2> tab_open 2
|
||||
map <a-3> tab_open 3
|
||||
map <a-4> tab_open 4
|
||||
map <a-5> tab_open 5
|
||||
map <a-6> tab_open 6
|
||||
map <a-7> tab_open 7
|
||||
map <a-8> tab_open 8
|
||||
map <a-9> tab_open 9
|
||||
map <a-r> tab_shift 1
|
||||
map <a-l> 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 <C-h> set show_hidden!
|
||||
copymap <C-h> <backspace>
|
||||
copymap <backspace> <backspace2>
|
||||
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 `<any> enter_bookmark %any
|
||||
map '<any> enter_bookmark %any
|
||||
map m<any> set_bookmark %any
|
||||
map um<any> unset_bookmark %any
|
||||
|
||||
map m<bg> draw_bookmarks
|
||||
copymap m<bg> um<bg> `<bg> '<bg>
|
||||
|
||||
# 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 <tab> eval fm.ui.console.tab()
|
||||
cmap <s-tab> eval fm.ui.console.tab(-1)
|
||||
cmap <ESC> eval fm.ui.console.close()
|
||||
cmap <CR> eval fm.ui.console.execute()
|
||||
cmap <C-l> redraw_window
|
||||
|
||||
copycmap <ESC> <C-c>
|
||||
copycmap <CR> <C-j>
|
||||
|
||||
# Move around
|
||||
cmap <up> eval fm.ui.console.history_move(-1)
|
||||
cmap <down> eval fm.ui.console.history_move(1)
|
||||
cmap <left> eval fm.ui.console.move(left=1)
|
||||
cmap <right> eval fm.ui.console.move(right=1)
|
||||
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
|
||||
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
|
||||
cmap <a-b> eval fm.ui.console.move_word(left=1)
|
||||
cmap <a-f> eval fm.ui.console.move_word(right=1)
|
||||
|
||||
copycmap <a-b> <a-left>
|
||||
copycmap <a-f> <a-right>
|
||||
|
||||
# Line Editing
|
||||
cmap <backspace> eval fm.ui.console.delete(-1)
|
||||
cmap <delete> eval fm.ui.console.delete(0)
|
||||
cmap <C-w> eval fm.ui.console.delete_word()
|
||||
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
|
||||
cmap <C-k> eval fm.ui.console.delete_rest(1)
|
||||
cmap <C-u> eval fm.ui.console.delete_rest(-1)
|
||||
cmap <C-y> eval fm.ui.console.paste()
|
||||
|
||||
# And of course the emacs way
|
||||
copycmap <ESC> <C-g>
|
||||
copycmap <up> <C-p>
|
||||
copycmap <down> <C-n>
|
||||
copycmap <left> <C-b>
|
||||
copycmap <right> <C-f>
|
||||
copycmap <home> <C-a>
|
||||
copycmap <end> <C-e>
|
||||
copycmap <delete> <C-d>
|
||||
copycmap <backspace> <C-h>
|
||||
|
||||
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
|
||||
# and <backspace2> (code 127). To be sure, use both.
|
||||
copycmap <backspace> <backspace2>
|
||||
|
||||
# This special expression allows typing in numerals:
|
||||
cmap <allow_quantifiers> false
|
||||
|
||||
# ===================================================================
|
||||
# == Pager Keybindings
|
||||
# ===================================================================
|
||||
|
||||
# Movement
|
||||
pmap <down> pager_move down=1
|
||||
pmap <up> pager_move up=1
|
||||
pmap <left> pager_move left=4
|
||||
pmap <right> pager_move right=4
|
||||
pmap <home> pager_move to=0
|
||||
pmap <end> pager_move to=-1
|
||||
pmap <pagedown> pager_move down=1.0 pages=True
|
||||
pmap <pageup> pager_move up=1.0 pages=True
|
||||
pmap <C-d> pager_move down=0.5 pages=True
|
||||
pmap <C-u> pager_move up=0.5 pages=True
|
||||
|
||||
copypmap <UP> k <C-p>
|
||||
copypmap <DOWN> j <C-n> <CR>
|
||||
copypmap <LEFT> h
|
||||
copypmap <RIGHT> l
|
||||
copypmap <HOME> g
|
||||
copypmap <END> G
|
||||
copypmap <C-d> d
|
||||
copypmap <C-u> u
|
||||
copypmap <PAGEDOWN> n f <C-F> <Space>
|
||||
copypmap <PAGEUP> p b <C-B>
|
||||
|
||||
# Basic
|
||||
pmap <C-l> redraw_window
|
||||
pmap <ESC> pager_close
|
||||
copypmap <ESC> q Q i <F3>
|
||||
pmap E edit_file
|
||||
|
||||
# ===================================================================
|
||||
# == Taskview Keybindings
|
||||
# ===================================================================
|
||||
|
||||
# Movement
|
||||
tmap <up> taskview_move up=1
|
||||
tmap <down> taskview_move down=1
|
||||
tmap <home> taskview_move to=0
|
||||
tmap <end> taskview_move to=-1
|
||||
tmap <pagedown> taskview_move down=1.0 pages=True
|
||||
tmap <pageup> taskview_move up=1.0 pages=True
|
||||
tmap <C-d> taskview_move down=0.5 pages=True
|
||||
tmap <C-u> taskview_move up=0.5 pages=True
|
||||
|
||||
copytmap <UP> k <C-p>
|
||||
copytmap <DOWN> j <C-n> <CR>
|
||||
copytmap <HOME> g
|
||||
copytmap <END> G
|
||||
copytmap <C-u> u
|
||||
copytmap <PAGEDOWN> n f <C-F> <Space>
|
||||
copytmap <PAGEUP> p b <C-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 <pagedown> eval -q fm.ui.taskview.task_move(-1)
|
||||
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
|
||||
tmap <delete> eval -q fm.ui.taskview.task_remove()
|
||||
|
||||
# Basic
|
||||
tmap <C-l> redraw_window
|
||||
tmap <ESC> taskview_close
|
||||
copytmap <ESC> q Q w <C-c>
|
|
@ -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
|
|
@ -1,2 +0,0 @@
|
|||
Host *
|
||||
SetEnv TERM=xterm-256color
|
|
@ -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
|
|
@ -1,6 +0,0 @@
|
|||
[main]
|
||||
gtk-theme=Adwaita-dark
|
||||
background=Pictures/Wallpapers/cafe.png
|
||||
idle-hide=true
|
||||
idle-timeout=30
|
||||
start-hidden=true
|
|
@ -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=<b>%a - %s</b>\n%b
|
||||
default-timeout=30000
|
||||
group-by=app-name,summary
|
||||
|
||||
[grouped]
|
||||
format=(%g) <b>%a - %s</b>\n%b
|
|
@ -1,3 +0,0 @@
|
|||
timeout 300 'gtklock -d'
|
||||
timeout 600 'niri msg action power-off-monitors'
|
||||
before-sleep 'gtklock -d'
|
|
@ -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": "<tt><small>{calendar}</small></tt>",
|
||||
"calendar": {
|
||||
"mode": "month",
|
||||
"weeks-pos": "right",
|
||||
"format": {
|
||||
"months": "<span color='#9ece6a'><b>{}</b></span>",
|
||||
"days": "<span color='#a9b1d6'><b>{}</b></span>",
|
||||
"weeks": "<span color='#f7768e'><b>W{}</b></span>",
|
||||
"weekdays": "<span color='#7aa2f7'><b>{}</b></span>",
|
||||
"today": "<span color='#bb9af7'><b><u>{}</u></b></span>"
|
||||
}
|
||||
}
|
||||
},
|
||||
"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} <tt>{controller_address}</tt>",
|
||||
"tooltip-format-connected": "{controller_alias} <tt>{controller_address}</tt>\n\n{num_connections} connected:\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias} <tt>{device_address}</tt>"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
49
yazi/dot-config/yazi/keymap.toml
Normal file
49
yazi/dot-config/yazi/keymap.toml
Normal file
|
@ -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"
|
49
yazi/dot-config/yazi/keymap.toml-1753599537122504
Normal file
49
yazi/dot-config/yazi/keymap.toml-1753599537122504
Normal file
|
@ -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"
|
7
yazi/dot-config/yazi/package.toml
Normal file
7
yazi/dot-config/yazi/package.toml
Normal file
|
@ -0,0 +1,7 @@
|
|||
[plugin]
|
||||
deps = []
|
||||
|
||||
[[flavor.deps]]
|
||||
use = "BennyOe/tokyo-night"
|
||||
rev = "5f56364"
|
||||
hash = "c0bf69ad2c44005892d586e9693993c6"
|
2
yazi/dot-config/yazi/theme.toml
Normal file
2
yazi/dot-config/yazi/theme.toml
Normal file
|
@ -0,0 +1,2 @@
|
|||
[flavor]
|
||||
use = "tokyo-night"
|
3
yazi/dot-config/yazi/yazi.toml
Normal file
3
yazi/dot-config/yazi/yazi.toml
Normal file
|
@ -0,0 +1,3 @@
|
|||
[preview]
|
||||
wrap = "yes"
|
||||
tab_size = 4
|
|
@ -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
|
||||
|
|
@ -1 +0,0 @@
|
|||
ON_COLOR=magenta
|
135
zsh/dot-zshrc
135
zsh/dot-zshrc
|
@ -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
|
Loading…
Add table
Reference in a new issue