added niri config with waybar, rip, nvim update, brightness sh

This commit is contained in:
liph22
2026-01-12 22:26:10 +01:00
parent d7b808ce59
commit c4df37dacb
38 changed files with 1801 additions and 414 deletions

View File

Before

Width:  |  Height:  |  Size: 778 KiB

After

Width:  |  Height:  |  Size: 778 KiB

View File

Before

Width:  |  Height:  |  Size: 974 KiB

After

Width:  |  Height:  |  Size: 974 KiB

View File

Before

Width:  |  Height:  |  Size: 430 KiB

After

Width:  |  Height:  |  Size: 430 KiB

View File

@@ -13,7 +13,7 @@ general {
# BACKGROUND
background {
monitor =
path = $WALLPAPER
path = /home/liph/.config/backgrounds/universe/magenta.jpg
blur_passes = 2
color = $base
}

View File

@@ -11,4 +11,4 @@ bold_italic_font auto
font_size 14
background_opacity 0.9
background_opacity 0.90

View File

@@ -0,0 +1,322 @@
// 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://yalter.github.io/niri/Configuration:-Introduction
input {
keyboard {
xkb {
layout "ch"
variant "de_mac"
model "apple"
}
}
touchpad {
tap
natural-scroll
}
mouse {
}
trackpoint {
}
}
// x11 support for wayland
xwayland-satellite {
path "xwayland-satellite"
}
environment {
ELECTRON_OZONE_PLATFORM_HINT "auto"
ELECTRON_ENABLE_LOGGING "1"
}
output "eDP-1" {
mode "1920x1080@120.030"
position x=1280 y=0
}
layout {
gaps 2
center-focused-column "never"
preset-column-widths {
proportion 0.3333
proportion 0.5
proportion 0.66667
}
default-column-width { proportion 0.5; }
focus-ring {
width 2
active-color "#b4befe"
inactive-color "#a6adc8"
}
border {
off
width 4
active-color "#eba0ac"
inactive-color "#505050"
urgent-color "#9b0000"
}
shadow {
softness 30
spread 5
offset x=0 y=5
color "#0007"
}
struts {
}
}
spawn-at-startup "waybar" "-c" "/home/liph/.config/waybar-niri/config.jsonc" "-s" "/home/liph/.config/waybar-niri/style.css"
spawn-at-startup "swaync"
spawn-at-startup "swww-daemon"
spawn-at-startup "kitty"
spawn-at-startup "librewolf"
spawn-at-startup "sh" "-c" "sleep 5 && exec swayidle -w timeout 300 hyprlock timeout 600 'niri msg action power-off-monitors' resume 'niri msg action power-on-monitors' timeout 3600 'systemctl suspend'"
prefer-no-csd
gestures {
hot-corners {
off
}
}
// Open the Firefox picture-in-picture player as floating by default.
// window-rule {
// match app-id=r#"librewolf$"# title="^Picture-in-Picture$"
// open-floating false
// }
workspace "1"
workspace "2"
workspace "3"
// workspace "4"
// workspace "5"
// Example: block out two password managers from screen capture.
// (This example rule is commented out with a "/-" in front.)
/-window-rule {
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
match app-id=r#"^org\.gnome\.World\.Secrets$"#
block-out-from "screen-capture"
}
// terminal window-rule
window-rule {
match at-startup=true app-id="kitty"
open-on-workspace "1"
clip-to-geometry true
}
window-rule {
match at-startup=false app-id="kitty"
clip-to-geometry true
}
// browser window-rules
window-rule {
match at-startup=true app-id="librewolf"
open-on-workspace "2"
open-maximized true
// geometry-corner-radius 5
clip-to-geometry true
}
window-rule {
match at-startup=false app-id="librewolf"
clip-to-geometry true
}
window-rule {
match app-id="Claude"
open-on-workspace "3"
default-column-width { proportion 0.6667; }
clip-to-geometry true
}
window-rule {
geometry-corner-radius 5
clip-to-geometry true
}
binds {
// Mod+Shift+Slash { show-hotkey-overlay; }
Mod+Shift+L { spawn "hyprlock"; }
Mod+Alt+P hotkey-overlay-title="Open Bitwarden" { spawn "bitwarden-desktop"; }
Mod+Alt+T hotkey-overlay-title="Open Tipp10" { spawn "tipp10"; }
Mod+Alt+V hotkey-overlay-title="Open Vial" { spawn "Vial"; }
Mod+Alt+M hotkey-overlay-title="Open Tidal" { spawn "tidal-hifi" "--ozone-platform=wayland" "--enable-features=WaylandWindowDecorations"; }
Mod+Alt+O hotkey-overlay-title="Open Obsidian" { spawn "obsidian"; }
Mod+Alt+C hotkey-overlay-title="Open Claude" { spawn "claude-desktop"; }
Mod+Alt+Z hotkey-overlay-title="Open Librewolf" { spawn "librewolf"; }
Mod+Alt+Return hotkey-overlay-title="Open Kitty" { spawn "kitty"; }
Mod+Alt+Space hotkey-overlay-title="Open Wofi" { spawn "wofi" "--show" "drun"; }
// Brightness Controll
Mod+Ctrl+0 { spawn "sh" "-c" "~/scripts/layer_notify.sh 0"; }
Mod+Ctrl+1 { spawn "sh" "-c" "~/scripts/layer_notify.sh 1"; }
Mod+Ctrl+2 { spawn "sh" "-c" "~/scripts/layer_notify.sh 2"; }
Mod+Ctrl+3 { spawn "sh" "-c" "~/scripts/layer_notify.sh 3"; }
// Brightness controls
Mod+Ctrl+4 { spawn "sh" "-c" "~/scripts/niri_br_up.sh"; }
Mod+Ctrl+5 { spawn "sh" "-c" "~/scripts/niri_br_down.sh"; }
Mod+Ctrl+6 { spawn "sh" "-c" "~/scripts/niri_br_blue.sh"; }
Mod+Ctrl+7 { spawn "sh" "-c" "~/scripts/niri_br_reset.sh"; }
// Swaync Notifications
Mod+Ctrl+8 { spawn "swaync-client" "-t"; }
Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; }
XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; }
XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; }
XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
Mod+O repeat=false { toggle-overview; }
Mod+Shift+C repeat=false { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+Left { move-column-left; }
Mod+Ctrl+Down { move-window-down; }
Mod+Ctrl+Up { move-window-up; }
Mod+Ctrl+Right { move-column-right; }
Mod+Ctrl+H { move-column-left; }
Mod+Ctrl+J { move-window-down; }
Mod+Ctrl+K { move-window-up; }
Mod+Ctrl+L { move-column-right; }
// Mod+Shift+Down { focus-monitor-down; }
// Mod+Shift+Up { focus-monitor-up; }
// Mod+Shift+Right { focus-monitor-right; }
// Mod+Shift+H { focus-monitor-left; }
// Mod+Shift+J { focus-monitor-down; }
// Mod+Shift+K { focus-monitor-up; }
// Mod+Shift+L { focus-monitor-right; }
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+U { focus-workspace-down; }
Mod+I { focus-workspace-up; }
Mod+Alt+J { move-column-to-workspace-down; }
Mod+Alt+K { move-column-to-workspace-up; }
Mod+Alt+U { move-column-to-workspace-down; }
Mod+Alt+I { move-column-to-workspace-up; }
Mod+Shift+Page_Down { move-workspace-down; }
Mod+Shift+Page_Up { move-workspace-up; }
Mod+Shift+U { move-workspace-down; }
Mod+Shift+I { move-workspace-up; }
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
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; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
// Mod+Ctrl+1 { move-column-to-workspace 1; }
// Mod+Ctrl+2 { move-column-to-workspace 2; }
// Mod+Ctrl+3 { move-column-to-workspace 3; }
// Mod+Ctrl+4 { move-column-to-workspace 4; }
// Mod+Ctrl+5 { move-column-to-workspace 5; }
// Mod+Ctrl+6 { move-column-to-workspace 6; }
// Mod+Ctrl+7 { move-column-to-workspace 7; }
// Mod+Ctrl+8 { move-column-to-workspace 8; }
// Mod+Ctrl+9 { move-column-to-workspace 9; }
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+Comma { consume-window-into-column; }
Mod+Period { expel-window-from-column; }
Mod+R { switch-preset-column-width; }
// Cycling through the presets in reverse order is also possible.
// Mod+R { switch-preset-column-width-back; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+F { maximize-column; }
Mod+Shift+F { fullscreen-window; }
Mod+Ctrl+F { expand-column-to-available-width; }
// Mod+C { center-column; }
Mod+Ctrl+C { center-visible-columns; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
// Finer height adjustments when in column with other windows.
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+V { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
Mod+W { toggle-column-tabbed-display; }
// screenshot
Mod+Alt+4 { spawn "sh" "-c" "grim -g \"$(slurp)\" ~/Pictures/screenshot-$(date +%Y%m%d-%H%M%S).png && notify-send 'Screenshot' 'Area screenshot saved'"; }
// Fullscreen and save
Mod+Alt+5 { spawn "sh" "-c" "grim ~/Pictures/screenshot-$(date +%Y%m%d-%H%M%S).png && notify-send -t 2000 'Screenshot' 'Fullscreen screenshot saved'"; }
// Select area to clipboard
Mod+Shift+4 { spawn "sh" "-c" "grim -g \"$(slurp)\" - | wl-copy && notify-send -t 2000 'Screenshot' 'Fullscreen copied to clipboard'"; }
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
Mod+Shift+E { quit; }
Ctrl+Alt+Delete { quit; }
Mod+Shift+P { power-off-monitors; }
}

View File

@@ -0,0 +1,126 @@
// -*- mode: jsonc -*-
{
"layer": "top",
"position": "top",
"height": 30,
"spacing": 0,
"modules-left": ["custom/logo", "cpu", "memory", "bluetooth", "mpris"],
"modules-center": ["niri/workspaces"],
"modules-right": [
"tray",
"power-profiles-daemon",
// "niri/language",
"pulseaudio",
"network",
"battery",
"clock",
"custom/power",
],
"niri/workspaces": {
"format": "{icon}",
"format-icons": {
// Named workspaces
// (you need to configure them in niri)
// "1",
// "2": "2",
// "3": "3",
// "4": "4",
// "5": "5",
// "6": "6",
// Icons by state
"active": "",
"default": "",
},
},
"mpris": {
"format": "DEFAULT: {player_icon} {dynamic}",
"format-paused": "DEFAULT: {status_icon} <i>{dynamic}</i>",
"player-icons": {
"default": "▶",
"mpv": "🎵",
},
"status-icons": {
"paused": "⏸",
},
},
"tray": {
"icon-size": 14,
"spacing": 10,
},
"clock": {
"format": "{:%I:%M:%S %p}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}",
"interval": 1,
},
"cpu": {
"format": "<span font='14' color='#a6d189'> </span> {usage}%",
"tooltip": false,
"interval": 1,
},
"memory": {
"format": "<span font='14' color='#ea999c'> </span> {}%",
"interval": 1,
},
"battery": {
"interval": 1,
"states": {
"warning": 30,
"critical": 15,
},
"format": "<span font='14' color='#8caaee'>{icon}</span> {capacity}%",
"format-full": "<span font='14' color='#8caaee'>{icon}</span> {capacity}%",
"format-charging": "<span font='14' color='#8caaee'>󰂄</span> {capacity}%",
"format-plugged": "<span font='14' color='#8caaee'>󰂄</span> {capacity}%",
"format-icons": ["󰁺", "󰁼", "󰁾", "󰂀", "󰂂"],
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": "󰌪",
},
},
"network": {
"format-wifi": "<span font='14' color='#a6d189'>󰖩</span> ",
"format-ethernet": "<span font='14' color='#e5c890'>󰈀</span>",
"format-disconnected": "<span font='14'color='#e78284'>󱚵</span>",
"format-alt": "{bandwidthDownBytes}",
"interval": 1,
},
"pulseaudio": {
"format": "<span font='14' color='#e5c890'>{icon}</span> {volume}%",
"format-muted": "<span font='14'>󰝟</span>",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["󰕿", "󰖀", "󰕾"],
},
"on-click": "pavucontrol",
},
"custom/power": {
"format": "⏻",
"tooltip": false,
"on-click": "wlogout -l ~/.config/niri/wlogout/layout",
},
"custom/logo": {
"format": "<span font='14'>󰣇</span>",
"on-click": "wofi --show drun",
},
"bluetooth": {
"format": "<span font='14'>󰂯</span>",
"format-disabled": "<span font='14' color='#8caaee'>󰂲</span>",
"format-connected": "<span font='14' color='#8caaee'>󰂱</span>",
"on-click": "blueman-manager",
},
}

View File

@@ -0,0 +1,26 @@
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;

View File

@@ -0,0 +1,125 @@
* {
font-family: "FiraCode Nerd Font";
font-size: 13px;
}
window#waybar {
background-color: rgba(43, 48, 59, 0.5);
background: radial-gradient(alpha(@theme_base_color, 0.4), @theme_base_color);
color: @theme_fg_color;
transition-property: background-color;
transition-duration: 0.5s;
}
window#waybar.hidden {
opacity: 0.2;
}
button {
border: none;
border-radius: 0;
}
button:hover {
background: inherit;
}
#workspaces {
padding: 5px;
}
#workspaces button {
padding: 0 10px;
background-color: transparent;
color: @theme_fg_color;
border-radius: 10px;
}
#workspaces button:hover {
color: #e5c890;
}
#workspaces button.active,
#workspaces button.default,
#workspaces button.focused {
background: #babbf1;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: @theme_fg_color;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock,
#battery,
#cpu,
#memory,
#backlight,
#network,
#pulseaudio,
#custom-media,
#tray,
#custom-power,
#bluetooth,
#power-profiles-daemon {
padding: 5px 15px;
color: @theme_text_color;
background-color: alpha(@theme_unfocused_bg_color, 0.4);
border-radius: 20px;
margin: 0 4px;
}
#custom-power {
background-color: #e78284;
border-radius: 20px 0 0 20px;
transition: all 250ms ease-in-out;
}
#battery.charging {
color: #00ff1c;
}
#clock {
border-radius: 20px;
margin: 0 5px;
}
#pulseaudio.muted {
color: orange;
}
#network.disconnected {
color: red;
}
#tray {
border-radius: 20px;
margin: 0 5px;
}
#custom-logo {
background-color: #8caaee;
padding: 0 17px;
border-radius: 0 20px 20px 0;
}
#custom-power {
margin: 0;
}
#bluetooth {
border-radius: 20px;
margin: 0 5px;
}

View File

@@ -0,0 +1,36 @@
{
"label": "lock",
"action": "hyprlock",
"text": "Lock",
"keybind": "l"
}
{
"label": "logout",
"action": "niri msg action quit",
"text": "Logout",
"keybind": "e"
}
{
"label": "suspend",
"action": "systemctl suspend",
"text": "Suspend",
"keybind": "u"
}
{
"label": "hibernate",
"action": "systemctl hibernate",
"text": "Hibernate",
"keybind": "h"
}
{
"label": "shutdown",
"action": "systemctl poweroff",
"text": "Shutdown",
"keybind": "s"
}
{
"label": "reboot",
"action": "systemctl reboot",
"text": "Reboot",
"keybind": "r"
}

View File

@@ -1,6 +1,7 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "fb525166ccc30296fb3457441eb979113de46b00" },
"R.nvim": { "branch": "main", "commit": "b7de6e6f43d79e31b077096ca0089fde85190f46" },
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
"catppuccin": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
@@ -8,6 +9,7 @@
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
"cmp-nvim-lua": { "branch": "main", "commit": "e3a22cb071eb9d6508a156306b102c45cd2d573d" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp-r": { "branch": "main", "commit": "70bfe8f4c062acc10266e24825439c009a0b1b89" },
"cmp-tabnine": { "branch": "main", "commit": "c0167cdc86c15e782c5461ee62aebee89231c2ed" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"conform.nvim": { "branch": "master", "commit": "8314f4c9e205e7f30b62147069729f9a1227d8bf" },
@@ -16,8 +18,8 @@
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"fzf-lua": { "branch": "main", "commit": "a03d68e40eea835a1cdbd9f93049708dab3621e6" },
"gitsigns.nvim": { "branch": "main", "commit": "72acb69020c92d99cf388bfeb390481ccec50c04" },
"fzf-lua": { "branch": "main", "commit": "b8d1356b7120f5cf111709cb2fa504096248fb26" },
"gitsigns.nvim": { "branch": "main", "commit": "42d6aed4e94e0f0bbced16bbdcc42f57673bd75e" },
"grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" },
"harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
@@ -25,7 +27,7 @@
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"luvit-meta": { "branch": "main", "commit": "0ea4ff636c5bb559ffa78108561d0976f4de9682" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "e5f73a9e3d271d449685f1059eb1868f4ba276f6" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "fe661093f4b05136437b531e7f959af2a2ae66c8" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" },
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "f3df514fff2bdd4318127c40470984137f87b62e" },
@@ -35,7 +37,7 @@
"nvim-autopairs": { "branch": "master", "commit": "c2a0dd0d931d0fb07665e1fedb1ea688da3b80b4" },
"nvim-cmp": { "branch": "main", "commit": "85bbfad83f804f11688d1ab9486b459e699292d6" },
"nvim-lint": { "branch": "master", "commit": "ca6ea12daf0a4d92dc24c5c9ae22a1f0418ade37" },
"nvim-lspconfig": { "branch": "master", "commit": "5a82e10b2df0ed31bec642c1c0344baee7c458b6" },
"nvim-lspconfig": { "branch": "master", "commit": "92ee7d42320edfbb81f3cad851314ab197fa324a" },
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
"nvim-spectre": { "branch": "master", "commit": "72f56f7585903cd7bf92c665351aa585e150af0f" },
@@ -54,8 +56,8 @@
"telescope.nvim": { "branch": "master", "commit": "3333a52ff548ba0a68af6d8da1e54f9cd96e9179" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"vim-test": { "branch": "master", "commit": "aa619692ff48a3cf3e6bdb893765039488d4e5f3" },
"vimtex": { "branch": "master", "commit": "1b56d5ae6e19cd018f1adaf4868561b087698b9b" },
"vimtex": { "branch": "master", "commit": "3abfa1ff75b81c01e4305e8062549ac0ea5cc9b8" },
"vimux": { "branch": "master", "commit": "614f0bb1fb598f97accdcea71d5f7b18d7d62436" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
"yazi.nvim": { "branch": "main", "commit": "30d8c852a0ca52437dad84cf5c92962d565a54a9" }
"yazi.nvim": { "branch": "main", "commit": "4a8bd3284708e11e48bcd865892902a46abdcce0" }
}

View File

@@ -0,0 +1,30 @@
-- plugins/mason.lua
return {
{
"williamboman/mason.nvim",
lazy = false,
config = function()
require("mason").setup()
end,
},
{
"williamboman/mason-lspconfig.nvim",
lazy = false,
opts = {
auto_install = true,
ensure_installed = {
"lua_ls",
"pyright",
"bashls",
"ts_ls",
"solargraph",
"html",
"texlab",
"ltex",
"dockerls",
"yamlls",
"taplo",
},
},
},
}

View File

@@ -7,7 +7,6 @@ return {
formatters_by_ft = {
-- Lua
lua = { "stylua" },
-- JavaScript/TypeScript/Web
javascript = { "prettier" },
typescript = { "prettier" },
@@ -24,32 +23,24 @@ return {
markdown = { "prettier" },
graphql = { "prettier" },
handlebars = { "prettier" },
-- Toml
toml = { "tombi" },
-- text
toml = { "taplo" }, -- Changed from tombi to taplo
-- Ruby
ruby = { "rubocop" },
-- latex
-- LaTeX
tex = { "tex-fmt" },
-- Python (black first, then isort for imports)
python = { "black", "isort" },
-- Python (ruff replaces black + isort)
python = { "ruff_format" }, -- Changed: consolidated to ruff
-- Bash/Shell
sh = { "beautysh" },
bash = { "beautysh" },
zsh = { "beautysh" },
sh = { "shfmt" }, -- Changed: using shfmt instead of beautysh
bash = { "shfmt" }, -- Changed: using shfmt instead of beautysh
zsh = { "beautysh" }, -- Keep beautysh for zsh
},
-- Format on save
format_on_save = {
timeout_ms = 500,
lsp_fallback = true,
},
-- Formatter settings
formatters = {
stylua = {
@@ -58,12 +49,14 @@ return {
prettier = {
prepend_args = { "--tab-width", "2" },
},
shfmt = {
prepend_args = { "-i", "2" }, -- 2 spaces for bash/sh
},
beautysh = {
prepend_args = { "--indent-size", "2" }, -- 2 spaces for bash
prepend_args = { "--indent-size", "2" }, -- 2 spaces for zsh
},
},
})
-- Manual format keymap (same as your old <leader>gf)
vim.keymap.set("n", "<leader>gf", function()
require("conform").format({
@@ -72,7 +65,6 @@ return {
timeout_ms = 1000,
})
end, { desc = "Format buffer" })
-- Optional: format on visual selection
vim.keymap.set("v", "<leader>gf", function()
require("conform").format({

View File

@@ -11,6 +11,19 @@ return {
lazy = false,
opts = {
auto_install = true,
ensure_installed = {
"lua_ls",
"pyright",
"bashls",
"ts_ls",
"solargraph",
"html",
"texlab",
"ltex",
"dockerls", -- Fixed: correct name
"yamlls", -- Fixed: correct name (not yaml-language-server)
"taplo", -- TOML LSP
},
},
},
{
@@ -22,17 +35,37 @@ return {
config = function()
local capabilities = require("cmp_nvim_lsp").default_capabilities()
local navic = require("nvim-navic")
-- local lspconfig = require("lspconfig")
-- Common on_attach function
local on_attach = function(client, bufnr)
if client.server_capabilities.documentSymbolProvider then
navic.attach(client, bufnr)
end
end
-- Define server configurations
local servers = {
ts_ls = {},
tombi = {},
solargraph = {},
ts_ls = {
capabilities = capabilities,
on_attach = on_attach,
},
taplo = {
capabilities = capabilities,
on_attach = on_attach,
},
solargraph = {
capabilities = capabilities,
on_attach = on_attach,
},
textlsp = {
filetypes = { "ltx", "txt" },
capabilities = capabilities,
on_attach = on_attach,
},
-- Add texlab for LaTeX
texlab = {
capabilities = capabilities,
on_attach = on_attach,
settings = {
texlab = {
build = {
@@ -41,7 +74,7 @@ return {
onSave = true,
},
forwardSearch = {
executable = "zathura", -- Change to your PDF viewer if different
executable = "zathura",
args = { "--synctex-forward", "%l:1:%f", "%p" },
},
chktex = {
@@ -51,17 +84,29 @@ return {
},
},
},
-- Optional: Add ltex for grammar/spell checking (can be resource-heavy)
ltex = {
capabilities = capabilities,
on_attach = on_attach,
filetypes = { "latex", "tex", "bib", "markdown" },
settings = {
ltex = {
language = "en-US", -- or "de-DE", "de-CH", etc.
language = "en-US",
enabled = { "latex", "tex", "bib" },
java = {
path = "",
initialHeapSize = 64,
maximumHeapSize = 512,
},
},
},
},
html = {},
html = {
capabilities = capabilities,
on_attach = on_attach,
},
lua_ls = {
capabilities = capabilities,
on_attach = on_attach,
settings = {
Lua = {
diagnostics = {
@@ -76,9 +121,14 @@ return {
},
},
},
pyright = {},
pyright = {
capabilities = capabilities,
on_attach = on_attach,
},
bashls = {
filetypes = { "sh", "bash", "zsh" },
capabilities = capabilities,
on_attach = on_attach,
settings = {
bashIde = {
globPattern = "*@(.sh|.inc|.bash|.command|.zsh)",
@@ -86,17 +136,26 @@ return {
},
},
},
dockerls = {
capabilities = capabilities,
on_attach = on_attach,
},
yamlls = {
capabilities = capabilities,
on_attach = on_attach,
settings = {
yaml = {
schemas = {
["https://json.schemastore.org/docker-compose.json"] = "docker-compose*.{yml,yaml}",
["https://json.schemastore.org/github-workflow.json"] = ".github/workflows/*",
},
},
},
},
}
-- Setup each server with the new API
-- Setup each server
for server, config in pairs(servers) do
config.capabilities = capabilities
-- Add navic on_attach for breadcrumbs
config.on_attach = function(client, bufnr)
if client.server_capabilities.documentSymbolProvider then
navic.attach(client, bufnr)
end
end
vim.lsp.config[server] = config
vim.lsp.enable(server)
end

View File

@@ -1,39 +0,0 @@
return {
{
"WhoIsSethDaniel/mason-tool-installer.nvim",
dependencies = { "williamboman/mason.nvim" },
opts = {
ensure_installed = {
-- Formatters (you already have these)
"luaformatter",
"prettier",
"rubocop",
"black",
"isort",
"beautysh",
"tombi",
"tex-fmt",
"texlab",
-- Linters (add these)
"ruff", -- Python (fast!)
"shellcheck", -- Bash
"jsonlint", -- JSON
"stylelint", -- CSS/SCSS
"htmlhint", -- HTML
"hadolint", -- Dockerfile
"eslint_d", -- JavaScript/TypeScript
"markdownlint", -- Markdown
-- LSP servers (optional)
"bash-language-server",
"dockerfile-language-server",
"ts_ls",
"solargraph",
"html",
"lua_ls",
"pyright",
},
},
},
}

View File

@@ -1,13 +1,13 @@
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
config = function()
vim.keymap.set("n", "<leader>ee", ":Neotree filesystem reveal left<CR>", {})
vim.keymap.set("n", "<leader>bf", ":Neotree buffers reveal float<CR>", {})
end,
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
config = function()
vim.keymap.set("n", "<leader>ee", ":Neotree filesystem reveal left<CR>", {})
vim.keymap.set("n", "<leader>bf", ":Neotree buffers reveal float<CR>", {})
end,
}

View File

@@ -4,58 +4,48 @@ return {
event = { "BufReadPre", "BufNewFile" },
config = function()
local lint = require("lint")
lint.linters_by_ft = {
-- Python
python = { "ruff" }, -- Fast! Replaces pylint, flake8, isort
-- Alternative: python = { "pylint" },
-- Or combine: python = { "ruff", "mypy" }, -- ruff + type checking
-- Bash/Shell
sh = { "shellcheck" },
bash = { "shellcheck" },
zsh = { "shellcheck" },
zsh = { "zsh" },
-- JSON
json = { "jsonlint" },
jsonc = { "jsonlint" },
-- YAML (added for your compose files)
yaml = { "yamllint" },
-- CSS/SCSS
css = { "stylelint" },
scss = { "stylelint" },
sass = { "stylelint" },
less = { "stylelint" },
-- HTML
html = { "htmlhint" },
-- Alternative: html = { "tidy" },
-- Dockerfile (bonus)
dockerfile = { "hadolint" },
-- JavaScript/TypeScript (bonus)
javascript = { "eslint_d" },
typescript = { "eslint_d" },
javascriptreact = { "eslint_d" },
typescriptreact = { "eslint_d" },
-- Ruby (you already have this formatter)
ruby = { "rubocop" },
-- Markdown (bonus)
markdown = { "markdownlint" },
}
-- Auto-lint on save and when leaving insert mode
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
group = lint_augroup,
callback = function()
lint.try_lint()
end,
})
-- Manual lint trigger
vim.keymap.set("n", "<leader>l", function()
lint.try_lint()

View File

@@ -0,0 +1,16 @@
return {
"R-nvim/R.nvim",
lazy = false, -- load immediately
config = function()
local opts = {
R_args = { "--quiet", "--no-save" },
min_editor_width = 72,
hl_term = true, -- Add this line for terminal highlighting
rconsole_width = 78,
}
require("r").setup(opts)
end,
dependencies = {
"R-nvim/cmp-r",
},
}

View File

@@ -18,6 +18,9 @@ return {
"lua",
"vim",
"latex",
"r",
"rnoweb", -- for Sweave files
"yaml", -- for YAML headers in Rmdkk
},
-- Auto install missing parsers

View File

@@ -3,6 +3,7 @@ vim.cmd("set tabstop=2")
vim.cmd("set softtabstop=2")
vim.cmd("set shiftwidth=2")
vim.g.mapleader = " "
vim.g.maplocalleader = ","
vim.g.background = "light"
vim.opt.swapfile = false

View File

@@ -1 +1,3 @@
kanata --cfg ~/.config/kanata/config.kbd &
sudo mount -a

20
scripts/scripts/niri_br_blue.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
STATE_FILE="$HOME/.cache/brightness_state"
TEMP_FILE="$HOME/.cache/bluelight_state"
CURRENT=$(cat "$TEMP_FILE" 2>/dev/null || echo "6500")
BRIGHTNESS=$(cat "$STATE_FILE" 2>/dev/null || echo "1.0")
if [ "$CURRENT" = "6500" ]; then
NEW=3400
MSG="ON"
else
NEW=6500
MSG="OFF"
fi
pkill -9 gammastep
gammastep -O $NEW -b "$BRIGHTNESS" &>/dev/null &
echo "$NEW" >"$TEMP_FILE"
notify-send "Blue Light" "$MSG" -t 1000

15
scripts/scripts/niri_br_down.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
STATE_FILE="$HOME/.cache/brightness_state"
TEMP_FILE="$HOME/.cache/bluelight_state"
CURRENT=$(cat "$STATE_FILE" 2>/dev/null || echo "1.0")
NEW=$(echo "$CURRENT - 0.1" | bc -l)
if (($(echo "$NEW < 0.3" | bc -l))); then NEW=0.3; fi
TEMP=$(cat "$TEMP_FILE" 2>/dev/null || echo "6500")
pkill -9 gammastep
gammastep -O $TEMP -b "$NEW" &>/dev/null &
echo "$NEW" >"$STATE_FILE"
notify-send "Brightness" "$(printf '%.0f%%' $(echo "$NEW * 100" | bc))" -t 1000

View File

@@ -0,0 +1,11 @@
#!/bin/bash
STATE_FILE="$HOME/.cache/brightness_state"
TEMP_FILE="$HOME/.cache/bluelight_state"
TEMP=$(cat "$TEMP_FILE" 2>/dev/null || echo "6500")
pkill -9 gammastep
gammastep -O $TEMP -b 1.0 &>/dev/null &
echo "1.0" >"$STATE_FILE"
notify-send "Brightness" "100%" -t 1000

19
scripts/scripts/niri_br_up.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
STATE_FILE="$HOME/.cache/brightness_state"
TEMP_FILE="$HOME/.cache/bluelight_state"
CURRENT=$(cat "$STATE_FILE" 2>/dev/null || echo "1.0")
NEW=$(echo "$CURRENT + 0.1" | bc -l)
if (($(echo "$NEW > 1.0" | bc -l))); then
NEW=1.0
notify-send "Brightness" "Maximum (100%)" -t 1000
exit 0
fi
TEMP=$(cat "$TEMP_FILE" 2>/dev/null || echo "6500")
pkill -9 gammastep
gammastep -O $TEMP -b "$NEW" &>/dev/null &
echo "$NEW" >"$STATE_FILE"
notify-send "Brightness" "$(printf '%.0f%%' $(echo "$NEW * 100" | bc))" -t 1000

View File

@@ -0,0 +1,5 @@
{
"timeout": 3,
"timeout-low": 2,
"timeout-critical": 0
}

View File

@@ -0,0 +1,332 @@
* {
all: unset;
font-size: 18px;
font-family: "Inconsolata Nerd Font";
transition: 200ms;
}
trough highlight {
background: #cdd6f4;
}
scale {
margin: 0 7px;
}
scale trough {
margin: 0rem 1rem;
min-height: 8px;
min-width: 70px;
border-radius: 12.6px;
}
trough slider {
margin: -10px;
border-radius: 12.6px;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.8);
transition: all 0.2s ease;
background-color: #89b4fa;
}
trough slider:hover {
box-shadow: 0 0 2px rgba(0, 0, 0, 0.8), 0 0 8px #89b4fa;
}
trough {
background-color: #313244;
}
/* notifications */
.notification-background {
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #45475a;
border-radius: 12.6px;
margin: 18px;
background: #181825;
color: #cdd6f4;
padding: 0;
}
.notification-background .notification {
padding: 7px;
border-radius: 12.6px;
}
.notification-background .notification.critical {
box-shadow: inset 0 0 7px 0 #f38ba8;
}
.notification .notification-content {
margin: 7px;
}
.notification .notification-content overlay {
/* icons */
margin: 4px;
}
.notification-content .summary {
color: #cdd6f4;
}
.notification-content .time {
color: #a6adc8;
}
.notification-content .body {
color: #bac2de;
}
.notification > *:last-child > * {
min-height: 3.4em;
}
.notification-background .close-button {
margin: 7px;
padding: 2px;
border-radius: 6.3px;
color: #1e1e2e;
background-color: #f38ba8;
}
.notification-background .close-button:hover {
background-color: #eba0ac;
}
.notification-background .close-button:active {
background-color: #f5c2e7;
}
.notification .notification-action {
border-radius: 7px;
color: #cdd6f4;
box-shadow: inset 0 0 0 1px #45475a;
margin: 4px;
padding: 8px;
font-size: 0.2rem; /* controls the button size not text size*/
}
.notification .notification-action {
background-color: #313244;
}
.notification .notification-action:hover {
background-color: #45475a;
}
.notification .notification-action:active {
background-color: #585b70;
}
.notification.critical progress {
background-color: #f38ba8;
}
.notification.low progress,
.notification.normal progress {
background-color: #89b4fa;
}
.notification progress,
.notification trough,
.notification progressbar {
border-radius: 12.6px;
padding: 3px 0;
}
/* control center */
.control-center {
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #313244;
border-radius: 12.6px;
background-color: #1e1e2e;
color: #cdd6f4;
padding: 14px;
}
.control-center .notification-background {
border-radius: 7px;
box-shadow: inset 0 0 0 1px #45475a;
margin: 4px 10px;
}
.control-center .notification-background .notification {
border-radius: 7px;
}
.control-center .notification-background .notification.low {
opacity: 0.8;
}
.control-center .widget-title > label {
color: #cdd6f4;
font-size: 1.3em;
}
.control-center .widget-title button {
border-radius: 7px;
color: #cdd6f4;
background-color: #313244;
box-shadow: inset 0 0 0 1px #45475a;
padding: 8px;
}
.control-center .widget-title button:hover {
background-color: #45475a;
}
.control-center .widget-title button:active {
background-color: #585b70;
}
.control-center .notification-group {
margin-top: 10px;
}
.control-center .notification-group:focus .notification-background {
background-color: #313244;
}
scrollbar slider {
margin: -3px;
opacity: 0.8;
}
scrollbar trough {
margin: 2px 0;
}
/* dnd */
.widget-dnd {
margin-top: 5px;
border-radius: 8px;
font-size: 1.1rem;
}
.widget-dnd > switch {
font-size: initial;
border-radius: 8px;
background: #313244;
box-shadow: none;
min-height: 24px; /* Add this */
min-width: 48px; /* Add this */
}
.widget-dnd > switch:checked {
background: #89b4fa;
}
.widget-dnd > switch slider {
background: #45475a;
border-radius: 8px;
min-height: 20px; /* Add this */
min-width: 20px; /* Add this */
}
/* mpris */
.widget-mpris-player {
background: #313244;
border-radius: 12.6px;
color: #cdd6f4;
}
.mpris-overlay {
background-color: #313244;
opacity: 0.9;
padding: 15px 10px;
}
.widget-mpris-album-art {
-gtk-icon-size: 100px;
border-radius: 12.6px;
margin: 0 10px;
}
.widget-mpris-title {
font-size: 1.2rem;
color: #cdd6f4;
}
.widget-mpris-subtitle {
font-size: 1rem;
color: #bac2de;
}
.widget-mpris button {
border-radius: 12.6px;
color: #cdd6f4;
margin: 0 5px;
padding: 2px;
}
.widget-mpris button image {
-gtk-icon-size: 1.8rem;
}
.widget-mpris button:hover {
background-color: #313244;
}
.widget-mpris button:active {
background-color: #45475a;
}
.widget-mpris button:disabled {
opacity: 0.5;
}
.widget-menubar > box > .menu-button-bar > button > label {
font-size: 3rem;
padding: 0.5rem 2rem;
}
.widget-menubar > box > .menu-button-bar > :last-child {
color: #f38ba8;
}
.power-buttons button:hover,
.powermode-buttons button:hover,
.screenshot-buttons button:hover {
background: #313244;
}
.control-center .widget-label > label {
color: #cdd6f4;
font-size: 2rem;
}
.widget-buttons-grid {
padding-top: 1rem;
}
.widget-buttons-grid > flowbox > flowboxchild > button label {
font-size: 2.5rem;
}
.widget-volume {
padding: 1rem 0;
}
.widget-volume label {
color: #74c7ec;
padding: 0 1rem;
}
.widget-volume trough highlight {
background: #74c7ec;
}
.widget-backlight trough highlight {
background: #f9e2af;
}
.widget-backlight label {
font-size: 1.5rem;
color: #f9e2af;
}
.widget-backlight .KB {
padding-bottom: 1rem;
}
.image {
padding-right: 0.5rem;
}

View File

@@ -30,7 +30,7 @@ bind-key k select-pane -U
bind-key l select-pane -R
# Configure Catppuccin
set -g @catppuccin_flavor "macchiato"
set -g @catppuccin_flavor "mocha"
set -g @catppuccin_status_background "none"
set -g @catppuccin_window_status_style "none"
set -g @catppuccin_pane_status_enabled "off"

View File

@@ -1,137 +1,118 @@
// -*- mode: jsonc -*-
{
"layer": "top",
"position": "top",
"height": 30,
"spacing": 0,
"modules-left": [
"custom/logo",
"cpu",
"memory",
"bluetooth",
"mpris"
],
"modules-center": [
"hyprland/workspaces"
],
"modules-right": [
"tray",
"power-profiles-daemon",
"hyprland/language",
"pulseaudio",
"network",
"battery",
"clock",
"custom/power"
],
"mpris": {
"format": "DEFAULT: {player_icon} {dynamic}",
"format-paused": "DEFAULT: {status_icon} <i>{dynamic}</i>",
"player-icons": {
"default": "▶",
"mpv": "🎵"
},
"status-icons": {
"paused": "⏸"
}
// "ignored-players": ["firefox"]
"layer": "top",
"position": "top",
"height": 30,
"spacing": 0,
"modules-left": ["custom/logo", "cpu", "memory", "bluetooth", "mpris"],
"modules-center": ["hyprland/workspaces"],
"modules-right": [
"tray",
"power-profiles-daemon",
"hyprland/language",
"pulseaudio",
"network",
"battery",
"clock",
"custom/power",
],
"mpris": {
"format": "DEFAULT: {player_icon} {dynamic}",
"format-paused": "DEFAULT: {status_icon} <i>{dynamic}</i>",
"player-icons": {
"default": "▶",
"mpv": "🎵",
},
"tray": {
"icon-size": 14,
"spacing": 10
"status-icons": {
"paused": "⏸",
},
"clock": {
"format": "{:%I:%M:%S %p}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}",
"interval": 1
// "ignored-players": ["firefox"]
},
"tray": {
"icon-size": 14,
"spacing": 10,
},
"clock": {
"format": "{:%I:%M:%S %p}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}",
"interval": 1,
},
"cpu": {
"format": "<span font='14' color='#33d17a'> </span> {usage}%",
"tooltip": false,
"interval": 1,
},
"memory": {
"format": "<span font='14' color='#c061cb'> </span> {}%",
"interval": 1,
},
"battery": {
"interval": 1,
"states": {
// "good": 95,
"warning": 30,
"critical": 15,
},
"cpu": {
"format": "<span font='14' color='#33d17a'> </span> {usage}%",
"tooltip": false,
"interval": 1
"format": "<span font='14'>{icon}</span> {capacity}%",
"format-full": "<span font='14'>{icon}</span> {capacity}%",
"format-charging": "<span font='14'>󰂄</span> {capacity}%",
"format-plugged": "<span font='14'>󰂄</span> {capacity}%",
"format-icons": ["󰁺", "󰁼", "󰁾", "󰂀", "󰂂"],
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": "",
},
"memory": {
"format": "<span font='14' color='#c061cb'> </span> {}%",
"interval": 1
},
"network": {
"format-wifi": "<span font='14' color='#3584e4'></span> ",
"format-ethernet": "<span font='14'>󰈀</span>",
"format-disconnected": "<span font='14'>󰤭</span>",
"format-alt": "{bandwidthDownBytes}",
"interval": 1,
},
"pulseaudio": {
"format": "<span font='14' color='#f5c211'>{icon}</span> {volume}%",
"format-muted": "<span font='14'>󰝟</span>",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": " ",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["󰕿", "󰖀", "󰕾"],
},
"battery": {
"interval": 1,
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "<span font='14'>{icon}</span> {capacity}%",
"format-full": "<span font='14'>{icon}</span> {capacity}%",
"format-charging": "<span font='14'>󰂄</span> {capacity}%",
"format-plugged": "<span font='14'>󰂄</span> {capacity}%",
"format-icons": [
"󰁺",
"󰁼",
"󰁾",
"󰂀",
"󰂂"
]
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
"format-wifi": "<span font='14' color='#3584e4'></span> ",
"format-ethernet": "<span font='14'>󰈀</span>",
"format-disconnected": "<span font='14'>󰤭</span>",
"format-alt": "{bandwidthDownBytes}",
"interval": 1
},
"pulseaudio": {
"format": "<span font='14' color='#f5c211'>{icon}</span> {volume}%",
"format-muted": "<span font='14'>󰝟</span>",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": " ",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": [
"󰕿",
"󰖀",
"󰕾"
]
},
"on-click": "pavucontrol"
},
"custom/power": {
"format": "⏻",
"tooltip": false,
"on-click": "wlogout"
},
"custom/logo": {
"format": "<span font='14'>󰣇</span>",
"on-click": "wofi --show drun"
},
"bluetooth": {
"format": "<span font='14'>󰂯</span>",
"format-disabled": "<span font='14'>󰂲</span>",
"format-connected": "<span font='14'>󰂱</span>",
"on-click": "blueman-manager"
},
"custom/keyboard-layer": {
"exec": "~/scripts/keyboard-layer.sh",
"return-type": "json",
"interval": "once",
"format": "🎹 {}"
}
"on-click": "pavucontrol",
},
"custom/power": {
"format": "⏻",
"tooltip": false,
"on-click": "wlogout",
},
"custom/logo": {
"format": "<span font='14'>󰣇</span>",
"on-click": "wofi --show drun",
},
"bluetooth": {
"format": "<span font='14'>󰂯</span>",
"format-disabled": "<span font='14'>󰂲</span>",
"format-connected": "<span font='14'>󰂱</span>",
"on-click": "blueman-manager",
},
"custom/keyboard-layer": {
"exec": "~/scripts/keyboard-layer.sh",
"return-type": "json",
"interval": "once",
"format": "🎹 {}",
},
}

View File

@@ -2,11 +2,19 @@
prepend_keymap = [
{ on = "F", run = "plugin smart-filter", desc = "Smart filter" },
# rsync plugin
{ on = ["R"], run = "plugin rsync", desc = "Copy files using rsync" },
{ on = [
"R",
], run = "plugin rsync", desc = "Copy files using rsync" },
# yafg plugin
{ on = ["F", "G"], run = "plugin yafg" },
{ on = [
"F",
"G",
], run = "plugin yafg" },
# lazygit plugin
{ on = ["g", "i"], run = "plugin lazygit", desc = "run lazygit" },
{ on = [
"g",
"i",
], run = "plugin lazygit", desc = "run lazygit" },
# mount plugin
{ on = "M", run = "plugin mount" },
# smart-enter plugin
@@ -18,68 +26,207 @@ prepend_keymap = [
# Direct fuzzy search access
{ on = "}", run = "plugin whoosh jump_by_fzf", desc = "Direct fuzzy search for bookmarks" },
# Basic bookmark operations
{ on = ["]", "a"], run = "plugin whoosh save", desc = "Add bookmark (hovered file/directory)" },
{ on = ["]", "A"], run = "plugin whoosh save_cwd", desc = "Add bookmark (current directory)" },
{ on = [
"]",
"a",
], run = "plugin whoosh save", desc = "Add bookmark (hovered file/directory)" },
{ on = [
"]",
"A",
], run = "plugin whoosh save_cwd", desc = "Add bookmark (current directory)" },
## Temporary bookmarks
{ on = ["]", "t"], run = "plugin whoosh save_temp", desc = "Add temporary bookmark (hovered file/directory)" },
{ on = ["]", "T"], run = "plugin whoosh save_cwd_temp", desc = "Add temporary bookmark (current directory)" },
{ on = [
"]",
"t",
], run = "plugin whoosh save_temp", desc = "Add temporary bookmark (hovered file/directory)" },
{ on = [
"]",
"T",
], run = "plugin whoosh save_cwd_temp", desc = "Add temporary bookmark (current directory)" },
## Jump to bookmarks
{ on = "<A-k>", run = "plugin whoosh jump_key_k", desc = "Jump directly to bookmark with key k" },
{ on = ["]", "f"], run = "plugin whoosh jump_by_fzf", desc = "Jump bookmark by fzf" },
{ on = [
"]",
"f",
], run = "plugin whoosh jump_by_fzf", desc = "Jump bookmark by fzf" },
## Delete bookmarks
{ on = ["]", "d"], run = "plugin whoosh delete_by_key", desc = "Delete bookmark by key" },
{ on = ["]", "D"], run = "plugin whoosh delete_by_fzf", desc = "Delete bookmarks by fzf (use TAB to select multiple)" },
{ on = ["]", "C"], run = "plugin whoosh delete_all", desc = "Delete all user bookmarks" },
{ on = [
"]",
"d",
], run = "plugin whoosh delete_by_key", desc = "Delete bookmark by key" },
{ on = [
"]",
"D",
], run = "plugin whoosh delete_by_fzf", desc = "Delete bookmarks by fzf (use TAB to select multiple)" },
{ on = [
"]",
"C",
], run = "plugin whoosh delete_all", desc = "Delete all user bookmarks" },
## Rename Bookmarks
{ on = ["]", "r"], run = "plugin whoosh rename_by_key", desc = "Rename bookmark by key" },
{ on = ["]", "R"], run = "plugin whoosh rename_by_fzf", desc = "Rename bookmark by fzf" },
{ on = [
"]",
"r",
], run = "plugin whoosh rename_by_key", desc = "Rename bookmark by key" },
{ on = [
"]",
"R",
], run = "plugin whoosh rename_by_fzf", desc = "Rename bookmark by fzf" },
# Navigation
{ on = ["<Esc>"], run = "escape", desc = "Exit visual mode, clear selected, or cancel search" },
{ on = ["q"], run = "quit", desc = "Exit the process" },
{ on = ["<C-q>"], run = "close", desc = "Close the current tab, or quit if it is last tab" },
{ on = [
"<Esc>",
], run = "escape", desc = "Exit visual mode, clear selected, or cancel search" },
{ on = [
"q",
], run = "quit", desc = "Exit the process" },
{ on = [
"<C-q>",
], run = "close", desc = "Close the current tab, or quit if it is last tab" },
# projects plugin
{ on = ["P", "p"], run = "plugin projects 'load SomeProject'", desc = "Load the 'SomeProject' project" },
{ on = ["P", "s"], run = "plugin projects save", desc = "Save current project" },
{ on = ["P", "l"], run = "plugin projects load", desc = "Load project" },
{ on = ["P", "P"], run = "plugin projects load_last", desc = "Load last project" },
{ on = ["P", "d"], run = "plugin projects delete", desc = "Delete project" },
{ on = ["P", "D"], run = "plugin projects delete_all", desc = "Delete all projects" },
{ on = ["P", "m"], run = "plugin projects 'merge current'", desc = "Merge current tab to other projects" },
{ on = ["P", "M"], run = "plugin projects 'merge all'", desc = "Merge current project to other projects" },
{ on = [
"P",
"p",
], run = "plugin projects 'load SomeProject'", desc = "Load the 'SomeProject' project" },
{ on = [
"P",
"s",
], run = "plugin projects save", desc = "Save current project" },
{ on = [
"P",
"l",
], run = "plugin projects load", desc = "Load project" },
{ on = [
"P",
"P",
], run = "plugin projects load_last", desc = "Load last project" },
{ on = [
"P",
"d",
], run = "plugin projects delete", desc = "Delete project" },
{ on = [
"P",
"D",
], run = "plugin projects delete_all", desc = "Delete all projects" },
{ on = [
"P",
"m",
], run = "plugin projects 'merge current'", desc = "Merge current tab to other projects" },
{ on = [
"P",
"M",
], run = "plugin projects 'merge all'", desc = "Merge current project to other projects" },
# fazif plugin
{ on = ["b", "d"], run = "plugin fazif faziffd", desc = "Find files/directories with fd and fzf" },
{ on = ["b", "D"], run = "plugin fazif faziffdr", desc = "Find files/directories with fd and fzf" },
{ on = ["b", "r"], run = "plugin fazif fazifrg", desc = "Find content in files with ripgrep and fzf" },
{ on = ["b", "R"], run = "plugin fazif fazifrga", desc = "Find content in documents with ripgrep-all and fzf" },
{ on = [
"b",
"d",
], run = "plugin fazif faziffd", desc = "Find files/directories with fd and fzf" },
{ on = [
"b",
"D",
], run = "plugin fazif faziffdr", desc = "Find files/directories with fd and fzf" },
{ on = [
"b",
"r",
], run = "plugin fazif fazifrg", desc = "Find content in files with ripgrep and fzf" },
{ on = [
"b",
"R",
], run = "plugin fazif fazifrga", desc = "Find content in documents with ripgrep-all and fzf" },
# Tagging plugin
# ─────────────────────────── TOGGLE TAG(S) ────────────────────────────
{ on = ["t", "t", "k"], run = "plugin simple-tag -- toggle-tag", desc = "Toggle a tag (press any key)" },
{ on = ["'"], run = "plugin simple-tag -- toggle-tag --keys=!", desc = "Toggle tag(s) with fixed tag key(s) = (! and 1 and q)" },
{ on = ["-"], run = "plugin simple-tag -- toggle-tag --keys=1", desc = "Toggle tag(s) with fixed tag key(s) = (! and 1 and q)" },
{ on = ["t", "t", "i"], run = "plugin simple-tag -- toggle-tag --input", desc = "Toggle tag(s) with value from (input box)" },
{ on = [
"t",
"t",
"k",
], run = "plugin simple-tag -- toggle-tag", desc = "Toggle a tag (press any key)" },
{ on = [
"'",
], run = "plugin simple-tag -- toggle-tag --keys=!", desc = "Toggle tag(s) with fixed tag key(s) = (! and 1 and q)" },
{ on = [
"-",
], run = "plugin simple-tag -- toggle-tag --keys=1", desc = "Toggle tag(s) with fixed tag key(s) = (! and 1 and q)" },
{ on = [
"t",
"t",
"i",
], run = "plugin simple-tag -- toggle-tag --input", desc = "Toggle tag(s) with value from (input box)" },
# ─────────────────────────── ADD TAG(S) ───────────────────────────────
{ on = ["t", "a", "k"], run = "plugin simple-tag -- add-tag", desc = "Add a tag (press any key)" },
{ on = [
"t",
"a",
"k",
], run = "plugin simple-tag -- add-tag", desc = "Add a tag (press any key)" },
# { on = [ "t", "a", "f" ], run = "plugin simple-tag -- add-tag --keys=!1q", desc = "Add tag(s) with fixed tag keys = (! and 1 and q)" },
{ on = ["t", "a", "i"], run = "plugin simple-tag -- add-tag --input", desc = "Add tag(s) with value from (input box)" },
{ on = [
"t",
"a",
"i",
], run = "plugin simple-tag -- add-tag --input", desc = "Add tag(s) with value from (input box)" },
# ─────────────────────────── REMOVE/DELETE TAG(S) ───────────────────────────
{ on = ["t", "d", "k"], run = "plugin simple-tag -- remove-tag", desc = "Remove a tag (press any key)" },
{ on = ["t", "d", "f"], run = "plugin simple-tag -- remove-tag --keys=!1q", desc = "Remove tag(s) with fixed tag keys = (! and 1 and q)" },
{ on = ["t", "d", "i"], run = "plugin simple-tag -- remove-tag --input", desc = "Remove tag(s) with value from (input box)" },
{ on = [
"t",
"d",
"k",
], run = "plugin simple-tag -- remove-tag", desc = "Remove a tag (press any key)" },
{ on = [
"t",
"d",
"f",
], run = "plugin simple-tag -- remove-tag --keys=!1q", desc = "Remove tag(s) with fixed tag keys = (! and 1 and q)" },
{ on = [
"t",
"d",
"i",
], run = "plugin simple-tag -- remove-tag --input", desc = "Remove tag(s) with value from (input box)" },
# ─────────────────────────── REPLACE ALL OLD TAG(S) WITH NEW TAG(S) ───────────────────────────
{ on = ["t", "r", "k"], run = "plugin simple-tag -- replace-tag", desc = "Replace with a new tag (press any key)" },
{ on = ["t", "r", "f"], run = "plugin simple-tag -- replace-tag --keys=!1q", desc = "Replace tag(s) with fixed tag keys = (! and 1 and q)" },
{ on = ["t", "r", "i"], run = "plugin simple-tag -- replace-tag --input", desc = "Replace tag(s) with value from (input box)" },
{ on = [
"t",
"r",
"k",
], run = "plugin simple-tag -- replace-tag", desc = "Replace with a new tag (press any key)" },
{ on = [
"t",
"r",
"f",
], run = "plugin simple-tag -- replace-tag --keys=!1q", desc = "Replace tag(s) with fixed tag keys = (! and 1 and q)" },
{ on = [
"t",
"r",
"i",
], run = "plugin simple-tag -- replace-tag --input", desc = "Replace tag(s) with value from (input box)" },
# ─────────────────────────── EDIT TAG(S) ───────────────────────────
{ on = ["t", "e"], run = "plugin simple-tag -- edit-tag ", desc = "Edit tag(s) (input box)" },
{ on = [
"t",
"e",
], run = "plugin simple-tag -- edit-tag ", desc = "Edit tag(s) (input box)" },
# ───────────────────────────── CLEAR TAG(S) ─────────────────────────────
{ on = ["t", "c"], run = "plugin simple-tag -- clear", desc = "Clear all tags from selected or hovered files" },
{ on = [
"t",
"c",
], run = "plugin simple-tag -- clear", desc = "Clear all tags from selected or hovered files" },
# ───────────────────────────── CHANGE UI ─────────────────────────────
{ on = ["t", "u", "s"], run = "plugin simple-tag -- toggle-ui", desc = "Toggle tag indicator (icon > tag key > hidden)" },
{ on = ["t", "u", "h"], run = "plugin simple-tag -- toggle-ui --mode=hidden", desc = "Hide all tags indicator" },
{ on = [
"t",
"u",
"s",
], run = "plugin simple-tag -- toggle-ui", desc = "Toggle tag indicator (icon > tag key > hidden)" },
{ on = [
"t",
"u",
"h",
], run = "plugin simple-tag -- toggle-ui --mode=hidden", desc = "Hide all tags indicator" },
# ─────────────────────── FILTER FILES/FOLDERS BY TAGS: ───────────────────────
{ on = ["t", "f"], run = "plugin simple-tag -- filter", desc = "Filter files/folders by a tag (press any key)" },
{ on = ["t", "F"], run = "plugin simple-tag -- filter --input", desc = "Filter files/folders by tag(s) (input box)" },
{ on = ["t", "F"], run = "plugin simple-tag -- filter --input --mode=or", desc = "Filter files/folders by contain tags (input box)" },
{ on = [
"t",
"f",
], run = "plugin simple-tag -- filter", desc = "Filter files/folders by a tag (press any key)" },
{ on = [
"t",
"F",
], run = "plugin simple-tag -- filter --input", desc = "Filter files/folders by tag(s) (input box)" },
{ on = [
"t",
"F",
], run = "plugin simple-tag -- filter --input --mode=or", desc = "Filter files/folders by contain tags (input box)" },
# ─────────────────────── VISUAL SELECT FILES/FOLDERS BY TAGS: ───────────────────────
# Available selection actions:
# replace → Replaces the current selection list with files/folders that have the selected tag.
@@ -88,91 +235,247 @@ prepend_keymap = [
# subtract → Deselects files/folders that have the selected tag from the current selection.
# exclude → Combines the currently selected files/folders with the tagged items, then deselects any overlapping items between the current selection and the tagged items.
# undo → Undos or redoes the last selection action.
{ on = ["t", "s", "t"], run = "plugin simple-tag -- toggle-select", desc = "Select a selection action then select a tag key (toggle-select)" },
{ on = ["t", "s", "t"], run = "plugin simple-tag -- toggle-select --keys=!1q", desc = "" },
{ on = ["t", "s", "r"], run = "plugin simple-tag -- replace-select", desc = "replace-select" },
{ on = ["t", "s", "u"], run = "plugin simple-tag -- unite-select", desc = "unite-select" },
{ on = ["t", "s", "i"], run = "plugin simple-tag -- intersect-select", desc = "intersect-select" },
{ on = ["t", "s", "s"], run = "plugin simple-tag -- subtract-select", desc = "subtract-select" },
{ on = ["t", "s", "e"], run = "plugin simple-tag -- exclude-select", desc = "exclude-select" },
{ on = ["t", "s", "e"], run = "plugin simple-tag -- replace-select --keys=!1q", desc = "Replaces the current selection list with files/folders that have (! and 1 and q) tag(s)" },
{ on = ["t", "s", "R"], run = "plugin simple-tag -- replace-select --input", desc = "replace-select --input" },
{ on = ["t", "s", "U"], run = "plugin simple-tag -- unite-select --input", desc = "unite-select --input" },
{ on = ["t", "s", "I"], run = "plugin simple-tag -- intersect-select --input", desc = "intersect-select --input" },
{ on = ["t", "s", "S"], run = "plugin simple-tag -- subtract-select --input", desc = "subtract-select --input" },
{ on = ["t", "s", "E"], run = "plugin simple-tag -- exclude-select --input", desc = "exclude-select --input" },
{ on = ["t", "s", "R"], run = "plugin simple-tag -- replace-select --input --mode=or", desc = "replace-select --input --mode=or" },
{ on = ["t", "s", "R"], run = "plugin simple-tag -- replace-select --keys=!1q --mode=or", desc = "replace-select --keys=!1q --mode=or" },
{ on = [
"t",
"s",
"t",
], run = "plugin simple-tag -- toggle-select", desc = "Select a selection action then select a tag key (toggle-select)" },
{ on = [
"t",
"s",
"t",
], run = "plugin simple-tag -- toggle-select --keys=!1q", desc = "" },
{ on = [
"t",
"s",
"r",
], run = "plugin simple-tag -- replace-select", desc = "replace-select" },
{ on = [
"t",
"s",
"u",
], run = "plugin simple-tag -- unite-select", desc = "unite-select" },
{ on = [
"t",
"s",
"i",
], run = "plugin simple-tag -- intersect-select", desc = "intersect-select" },
{ on = [
"t",
"s",
"s",
], run = "plugin simple-tag -- subtract-select", desc = "subtract-select" },
{ on = [
"t",
"s",
"e",
], run = "plugin simple-tag -- exclude-select", desc = "exclude-select" },
{ on = [
"t",
"s",
"e",
], run = "plugin simple-tag -- replace-select --keys=!1q", desc = "Replaces the current selection list with files/folders that have (! and 1 and q) tag(s)" },
{ on = [
"t",
"s",
"R",
], run = "plugin simple-tag -- replace-select --input", desc = "replace-select --input" },
{ on = [
"t",
"s",
"U",
], run = "plugin simple-tag -- unite-select --input", desc = "unite-select --input" },
{ on = [
"t",
"s",
"I",
], run = "plugin simple-tag -- intersect-select --input", desc = "intersect-select --input" },
{ on = [
"t",
"s",
"S",
], run = "plugin simple-tag -- subtract-select --input", desc = "subtract-select --input" },
{ on = [
"t",
"s",
"E",
], run = "plugin simple-tag -- exclude-select --input", desc = "exclude-select --input" },
{ on = [
"t",
"s",
"R",
], run = "plugin simple-tag -- replace-select --input --mode=or", desc = "replace-select --input --mode=or" },
{ on = [
"t",
"s",
"R",
], run = "plugin simple-tag -- replace-select --keys=!1q --mode=or", desc = "replace-select --keys=!1q --mode=or" },
# Undo/Redo selection (only works after using 5 modes above)
{ on = ["t", "s", "u"], run = "plugin simple-tag -- undo-select", desc = "Undos/Redos the last selection action" },
{ on = [
"t",
"s",
"u",
], run = "plugin simple-tag -- undo-select", desc = "Undos/Redos the last selection action" },
# Directory navigation
{ on = ["k"], run = "arrow -1", desc = "Move cursor up" },
{ on = ["j"], run = "arrow 1", desc = "Move cursor down" },
{ on = ["h"], run = "leave", desc = "Go back to parent directory" },
{ on = ["l"], run = "enter", desc = "Enter directory" },
{ on = [
"k",
], run = "arrow -1", desc = "Move cursor up" },
{ on = [
"j",
], run = "arrow 1", desc = "Move cursor down" },
{ on = [
"h",
], run = "leave", desc = "Go back to parent directory" },
{ on = [
"l",
], run = "enter", desc = "Enter directory" },
# File operations
{ on = ["<Enter>"], run = "open", desc = "Open selected files" },
{ on = ["y"], run = "yank", desc = "Yank selected files (copy)" },
{ on = ["x"], run = "yank --cut", desc = "Yank selected files (cut)" },
{ on = ["p"], run = "paste", desc = "Paste yanked files" },
{ on = ["d"], run = "remove", desc = "Trash selected files" },
{ on = ["D"], run = "remove --permanently", desc = "Permanently delete selected files" },
{ on = ["a"], run = "create", desc = "Create a file or directory" },
{ on = ["r"], run = "rename --cursor=before_ext", desc = "Rename selected file" },
{ on = [
"<Enter>",
], run = "open", desc = "Open selected files" },
{ on = [
"y",
], run = "yank", desc = "Yank selected files (copy)" },
{ on = [
"x",
], run = "yank --cut", desc = "Yank selected files (cut)" },
{ on = [
"p",
], run = "paste", desc = "Paste yanked files" },
{ on = [
"d",
], run = "remove", desc = "Trash selected files" },
{ on = [
"D",
], run = "remove --permanently", desc = "Permanently delete selected files" },
{ on = [
"a",
], run = "create", desc = "Create a file or directory" },
{ on = [
"r",
], run = "rename --cursor=before_ext", desc = "Rename selected file" },
# Selection
{ on = ["e"], run = ["select --state=none", "arrow 1"], desc = "Toggle selection" },
{ on = ["v"], run = "visual_mode", desc = "Enter visual mode" },
{ on = ["V"], run = "visual_mode --unset", desc = "Enter visual mode (unset)" },
{ on = [
"e",
], run = [
"select --state=none",
"arrow 1",
], desc = "Toggle selection" },
{ on = [
"v",
], run = "visual_mode", desc = "Enter visual mode" },
{ on = [
"V",
], run = "visual_mode --unset", desc = "Enter visual mode (unset)" },
# Search
{ on = ["/"], run = "find --smart", desc = "Find file" },
{ on = ["n"], run = "find_arrow", desc = "Go to next found" },
{ on = ["N"], run = "find_arrow --previous", desc = "Go to previous found" },
{ on = [
"/",
], run = "find --smart", desc = "Find file" },
{ on = [
"n",
], run = "find_arrow", desc = "Go to next found" },
{ on = [
"N",
], run = "find_arrow --previous", desc = "Go to previous found" },
# Tabs
{ on = ["T"], run = "tab_create --current", desc = "Create new tab" },
{ on = ["1"], run = "tab_switch 0", desc = "Switch to tab 1" },
{ on = ["2"], run = "tab_switch 1", desc = "Switch to tab 2" },
{ on = ["3"], run = "tab_switch 2", desc = "Switch to tab 3" },
{ on = [
"T",
], run = "tab_create --current", desc = "Create new tab" },
{ on = [
"1",
], run = "tab_switch 0", desc = "Switch to tab 1" },
{ on = [
"2",
], run = "tab_switch 1", desc = "Switch to tab 2" },
{ on = [
"3",
], run = "tab_switch 2", desc = "Switch to tab 3" },
# Preview
{ on = ["z"], run = "plugin --sync hide-preview", desc = "Toggle preview" },
{ on = [
"z",
], run = "plugin --sync hide-preview", desc = "Toggle preview" },
# Other
{ on = ["g", "h"], run = "cd ~", desc = "Go to home directory" },
{ on = ["g", "c"], run = "cd ~/.config", desc = "Go to config directory" },
{ on = ["g", "d"], run = "cd ~/Downloads", desc = "Go to downloads" },
{ on = ["~"], run = "help", desc = "Open help" },
{ on = [
"g",
"h",
], run = "cd ~", desc = "Go to home directory" },
{ on = [
"g",
"c",
], run = "cd ~/.config", desc = "Go to config directory" },
{ on = [
"g",
"d",
], run = "cd ~/Downloads", desc = "Go to downloads" },
{ on = [
"~",
], run = "help", desc = "Open help" },
]
[tasks]
prepend_keymap = [
{ on = ["<Esc>"], run = "close", desc = "Close task manager" },
{ on = ["k"], run = "arrow -1", desc = "Move cursor up" },
{ on = ["j"], run = "arrow 1", desc = "Move cursor down" },
{ on = [
"<Esc>",
], run = "close", desc = "Close task manager" },
{ on = [
"k",
], run = "arrow -1", desc = "Move cursor up" },
{ on = [
"j",
], run = "arrow 1", desc = "Move cursor down" },
]
[select]
prepend_keymap = [
{ on = ["<Esc>"], run = "close", desc = "Cancel selection" },
{ on = ["<Enter>"], run = "close --submit", desc = "Submit selection" },
{ on = ["k"], run = "arrow -1", desc = "Move cursor up" },
{ on = ["j"], run = "arrow 1", desc = "Move cursor down" },
{ on = [
"<Esc>",
], run = "close", desc = "Cancel selection" },
{ on = [
"<Enter>",
], run = "close --submit", desc = "Submit selection" },
{ on = [
"k",
], run = "arrow -1", desc = "Move cursor up" },
{ on = [
"j",
], run = "arrow 1", desc = "Move cursor down" },
]
[input]
prepend_keymap = [
{ on = ["<Esc>"], run = "close", desc = "Cancel input" },
{ on = ["<Enter>"], run = "close --submit", desc = "Submit input" },
{ on = [
"<Esc>",
], run = "close", desc = "Cancel input" },
{ on = [
"<Enter>",
], run = "close --submit", desc = "Submit input" },
]
[completion]
prepend_keymap = [
{ on = ["<Tab>"], run = "close --submit", desc = "Submit completion" },
{ on = ["k"], run = "arrow -1", desc = "Move cursor up" },
{ on = ["j"], run = "arrow 1", desc = "Move cursor down" },
{ on = [
"<Tab>",
], run = "close --submit", desc = "Submit completion" },
{ on = [
"k",
], run = "arrow -1", desc = "Move cursor up" },
{ on = [
"j",
], run = "arrow 1", desc = "Move cursor down" },
]
[help]
prepend_keymap = [
{ on = ["<Esc>"], run = "escape", desc = "Clear filter or exit help" },
{ on = ["q"], run = "close", desc = "Exit help" },
{ on = ["k"], run = "arrow -1", desc = "Move cursor up" },
{ on = ["j"], run = "arrow 1", desc = "Move cursor down" },
{ on = [
"<Esc>",
], run = "escape", desc = "Clear filter or exit help" },
{ on = [
"q",
], run = "close", desc = "Exit help" },
{ on = [
"k",
], run = "arrow -1", desc = "Move cursor up" },
{ on = [
"j",
], run = "arrow 1", desc = "Move cursor down" },
]

View File

@@ -73,11 +73,6 @@ use = "GianniBYoung/rsync"
rev = "14d2828"
hash = "7394430ba473dce1023721622438bf3d"
[[plugin.deps]]
use = "Ape/simple-status"
rev = "d0da104"
hash = "68603fdd1dcaf415227e2c77a9317947"
[[plugin.deps]]
use = "llanosrocas/yaziline"
rev = "6266926"

View File

@@ -1,16 +1,19 @@
zshrc /home/liph/dotfiles/zshrc z
yazi /home/liph/dotfiles/yazi/.config/yazi y
tex /home/liph/Documents/tex D,t
tank /mnt/tank t,t
r /home/liph/Documents/r D,r
podman /mnt/flash1/podman t,p
ohmyposh /home/liph/dotfiles/ohmyposh/.config/ohmyposh d,o
obsidian /home/liph/Documents/obsidian/vault D,o
nvim /home/liph/dotfiles/nvim/.config/nvim/ n,n,n
neovim_plug /home/liph/dotfiles/nvim/.config/nvim/lua/plugins/ n,p
mnt /mnt m
kitty /home/liph/dotfiles/kitty/.config/kitty k
hypr /home/liph/.config/hypr h
home /home/liph f
Downloads /home/liph/Downloads D,D
Downloads /home/liph/Downloads D,d
dotfiles /home/liph/dotfiles d,d
Documents /home/liph/Documents D,d
Documents /home/liph/Documents D,D
.config /home/liph/.config c
aerc /home/liph/dotfiles/aerc/.config/aerc d,a

View File

@@ -23,24 +23,14 @@ image_quality = 75
# edit = [
# { run = '$EDITOR "$@"', block = true, for = "unix" },
# ]
open = [
{ run = 'xdg-open "$1"', desc = "Open", orphan = true },
]
edit = [
{ run = 'nvim "$@"', block = true, desc = "nvim", for = "unix" },
]
open = [{ run = 'xdg-open "$1"', desc = "Open", orphan = true }]
edit = [{ run = 'nvim "$@"', block = true, desc = "nvim", for = "unix" }]
reveal = [
{ run = 'xdg-open "$(dirname "$1")"', desc = "Reveal", for = "linux" },
]
play = [
{ run = 'mpv --force-window "$@"', orphan = true, for = "unix" },
]
pdf = [
{ run = 'zathura "$@"', orphan = true, for = "linux" },
]
text = [
{ run = 'nvim "$@"', block = true, for = "linux" },
]
play = [{ run = 'mpv --force-window "$@"', orphan = true, for = "unix" }]
pdf = [{ run = 'zathura "$@"', orphan = true, for = "linux" }]
text = [{ run = 'nvim "$@"', block = true, for = "linux" }]
[open]
rules = [
@@ -48,7 +38,7 @@ rules = [
{ mime = "inode/empty", use = "edit" },
# { mime = "inode/x-empty", use = "edit" },
# Text files - use edit (which uses $EDITOR/nvim)
{ mime = "text/*", use = "edit" }, # Changed from "text" to "edit"
{ mime = "text/*", use = "edit" }, # Changed from "text" to "edit"
# { mime = "text/x-tex", use = "edit" }, # Changed from "text" to "edit"
{ mime = "application/json", use = "edit" },
{ mime = "application/x-sh", use = "edit" },
@@ -142,10 +132,10 @@ prepend_previewers = [
{ url = "*/", run = 'piper -- eza -TL=3 --color=always --icons=always --group-directories-first --no-quotes "$1"' },
# piper markdown (commented out as you had it)
# rich preview plugin
{ url = "*.csv", run = "rich-preview" }, # for csv files
{ url = "*.md", run = "rich-preview" }, # for markdown (.md) files
{ url = "*.rst", run = "rich-preview" }, # for restructured text (.rst) files
{ url = "*.ipynb", run = "rich-preview" }, # for jupyter notebooks (.ipynb)
{ url = "*.csv", run = "rich-preview" }, # for csv files
{ url = "*.md", run = "rich-preview" }, # for markdown (.md) files
{ url = "*.rst", run = "rich-preview" }, # for restructured text (.rst) files
{ url = "*.ipynb", run = "rich-preview" }, # for jupyter notebooks (.ipynb)
{ url = "*.json", run = "rich-preview" }, # for json (.json) files
# { url = "*.lang_type", run = "rich-preview"} # for particular language files eg. .py, .go., .lua, etc.
]

View File

@@ -68,19 +68,19 @@ alias lgit='lazygit'
# proton vpn
alias vpnn='sudo protonvpn c'
alias vpnr='sudo protonvpn reconnect' # reconnect after sleep
alias vpn='sudo protonvpn c -f' # connect to fastest server
alias vpnd='sudo protonvpn d' # diconnect current session
alias vpnp='sudo protonvpn c --p2p' # connect to fastest p2p server
alias vpns='protonvpn status' # check status
alias vpnr='sudo protonvpn reconnect' # reconnect after sleep
alias vpn='sudo protonvpn c -f' # connect to fastest server
alias vpnd='sudo protonvpn d' # diconnect current session
alias vpnp='sudo protonvpn c --p2p' # connect to fastest p2p server
alias vpns='protonvpn status' # check status
# NetworkManager
alias nmwi='nmcli device wifi list' # show you all possible wifi networks
alias nmst='nmcli device status' # shows you the current connection
alias nmco='nmcli device wifi connect' # add '$SSID' and '$PASSWORD'
alias nmsh='nmcli con show' # shows all valid connnections
alias nmup='nmcli con up' # add the name of the connection in ''
alias nmdo='nmcli con down' # add the nome of the connection in ''
alias nmwi='nmcli device wifi list' # show you all possible wifi networks
alias nmst='nmcli device status' # shows you the current connection
alias nmco='nmcli device wifi connect' # add '$SSID' and '$PASSWORD'
alias nmsh='nmcli con show' # shows all valid connnections
alias nmup='nmcli con up' # add the name of the connection in ''
alias nmdo='nmcli con down' # add the nome of the connection in ''
# open with password
alias tshift='sudo -E timeshift-launcher'
@@ -99,13 +99,15 @@ alias lsu='sudo umount /mount/'
# streamrip
alias ripp='rip search tidal album'
alias rip='pyenv exec rip'
alias ripc='nvim ~/.config/streamrip/config.toml'
# paru
alias ys='$AUR_HELPER -S' # install package
alias yr='$AUR_HELPER -Rn' # remove package
alias yy='$AUR_HELPER -Ss' # paru search for package
alias ys='$AUR_HELPER -S' # install packoz
alias yr='$AUR_HELPER -Rn' # remove package
alias yy='$AUR_HELPER -Ss' # paru search for package
alias yay='$AUR_HELPER'
alias yi='$AUR_HELPER -Si' # aur info
alias yi='$AUR_HELPER -Si' # aur info
alias which-aur="echo 'Currently using: $AUR_HELPER'"
# trash-cli
@@ -113,30 +115,30 @@ alias te='trash-empty'
alias tr='trash-restore'
# pyenv
alias pyl='pyenv local' # set this for folder in spec python version
alias pyg='pyenv global' # changes the global python version
alias pyve='pyenv virtualenvs' # shows all possible vitualenvironments
alias pyl='pyenv local' # set this for folder in spec python version
alias pyg='pyenv global' # changes the global python version
alias pyve='pyenv virtualenvs' # shows all possible vitualenvironments
alias pyd='pyenv virtualenv-delete'
alias pyn='pyenv virtualenv' # makes a new env $VSERION $NAME
alias pyn='pyenv virtualenv' # makes a new env $VSERION $NAME
alias pyv='pyenv versions'
alias pyil='pyenv install -l'
alias pyi='pyenv install'
# aria2 and yt-dlp
alias aryt="yt-dlp --external-downloader aria2c --external-downloader-args '-x 8 -j2'" # add URL in ''
alias aria='aria2c -x 8' # add URL in '' for 8 segmented download
alias yd='yt-dlp' # copy link from videodownload helper and add the URL in ''
alias aryt="yt-dlp --external-downloader aria2c --external-downloader-args '-x 8 -j2'" # add URL in ''
alias aria='aria2c -x 8' # add URL in '' for 8 segmented download
alias yd='yt-dlp' # copy link from videodownload helper and add the URL in ''
alias photodetect='gphoto2 --auto-detect'
alias photoget='gphoto2 --get-all-files'
# borg backup
alias boinit='borg init --encryption repokey' # add folder like /folder/ initiates the backupfunction
alias bolist='borg list' # /backup/ creates a list of al the backups which are contained in this folder
alias boinit='borg init --encryption repokey' # add folder like /folder/ initiates the backupfunction
alias bolist='borg list' # /backup/ creates a list of al the backups which are contained in this folder
alias boc='borg create --stats --progress --compression lz4' # /backup::backup1 dotfiles creates the backup. The ::backup1 will be name of the backup
# create placeholder sudo borg create --stats --compression lz4 ::{user}-{now} file or folder
alias bomo='borg mount /home/liph/backup /tmp/borg' # which repo to mount and where to mount it. make sure the folder already exists
alias boumo='borg umount /tmp/borg' # unmount the mount folder
alias bomo='borg mount /home/liph/backup /tmp/borg' # which repo to mount and where to mount it. make sure the folder already exists
alias boumo='borg umount /tmp/borg' # unmount the mount folder
# systemctl
alias sysen='sudo systemctl enable'
@@ -165,13 +167,13 @@ alias pocupf='pocp && pocf'
alias pocdupd='pocst && pocd && pocp && poc'
# disk space
alias dfh='df -h' # shows a list of all mounted drives
alias duh='du -sh' #calculates folder space
alias duf='duf' # analyzes diskspace
alias duaa='dua i' # opens dua in interactive mode
alias dfh='df -h' # shows a list of all mounted drives
alias duh='du -sh' #calculates folder space
alias duf='duf' # analyzes diskspace
alias duaa='dua i' # opens dua in interactive mode
alias rns='sudo pacman -Rns $(pacman -Qdtq)' # remove orphaned packages
alias rsc='sudo pacman -Sc' # remove cached packeged
alias rmc='rm -rf ~/.cache/*' # clear user cache
alias rsc='sudo pacman -Sc' # remove cached packeged
alias rmc='rm -rf ~/.cache/*' # clear user cache
# ip addr
alias ipa='sudo ip addr add '
@@ -179,8 +181,7 @@ alias ipl='sudo ip link set '
alias ipf='sudo ip addr flush '
# wireguard vpn
alias wgu='sudo wg-quick up' # start the connection you like to establish (f.E open)
alias wgd='sudo wg-quick down' # end the connection you like to end (f.E open)
alias wgc='sudo wg showconf' # show the config for a connection (f.E open)
alias wgs='sudo wg show' # show informations about the connection
alias wgu='sudo wg-quick up' # start the connection you like to establish (f.E open)
alias wgd='sudo wg-quick down' # end the connection you like to end (f.E open)
alias wgc='sudo wg showconf' # show the config for a connection (f.E open)
alias wgs='sudo wg show' # show informations about the connection

View File

@@ -39,3 +39,6 @@ export MOZ_ENABLE_WAYLAND=1
# Bitwarde
# export BW_SESSION=$(bw unlock --raw)
# you-should-use settings (optional)
# export YSU_MESSAGE_POSITION="after" # Show reminder after command output
# export YSU_HARDCORE=0 # Prevent execution if alias exists (probably too aggressive)

View File

@@ -6,6 +6,12 @@ zinit light zsh-users/zsh-syntax-highlighting
zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-autosuggestions
zinit light Aloxaf/fzf-tab
zinit light hlissner/zsh-autopair
zinit light ajeetdsouza/zoxide
zinit ice lucid wait as"completion"
zinit snippet https://github.com/eza-community/eza/blob/main/completions/zsh/_eza
zinit light MichaelAquilina/zsh-you-should-use
zinit light wfxr/forgit
# Add in snippets from "OhMyZsh“
zinit snippet OMZP::git
@@ -15,3 +21,5 @@ zinit snippet OMZP::aws
zinit snippet OMZP::kubectl
zinit snippet OMZP::kubectx
zinit snippet OMZP::command-not-found
zinit light jeffreytse/zsh-vi-mode

View File

@@ -9,6 +9,12 @@ if [ ! -d "$ZINIT_HOME" ]; then
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
fi
ZVM_INIT_MODE=sourcing
# Fix zsh-vi-mode conflicts with fzf
function zvm_after_init() {
source <(fzf --zsh)
}
# Source zsh, alias
source "${ZINIT_HOME}/zinit.zsh"
source ~/.aliases.zsh
@@ -17,9 +23,8 @@ source ~/.export.zsh
# https://github.com/jungunn/fzf-git.sh
source ~/scripts/fzf-git.sh
# you should unse
source /usr/share/zsh/plugins/zsh-you-should-use/you-should-use.plugin.zsh
# source /usr/share/zsh/plugins/zsh-you-should-use/you-should-use.plugin.zsh
# Set up fzf key bindings and fuzzy completion
source <(fzf --zsh)
## hydroxide
#source ~/scripts/hydroxide.sh
@@ -51,9 +56,9 @@ eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/zen.toml)"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
# Bindkey
bindkey -e
bindkey '^p' history-search-backward
bindkey '^n' history-search-forward
# bindkey -e
# bindkey '^p' history-search-backward
# bindkey '^n' history-search-forward
# History
HISTSIZE=5000
@@ -80,9 +85,9 @@ eval "$(zoxide init --cmd cd zsh)"
eval "$(thefuck --alias)"
eval "$(navi widget zsh)"
# pyenv https://github.com/pyenv/pyenv-virtualenv
eval "$(pyenv init --path)"
# eval "$(pyenv init --path)"
eval "$(pyenv init -)"
# eval "$(pyenv virtualenv-init -)"
eval "$(pyenv virtualenv-init -)"
# starship
# eval "$(starship init zsh)"
@@ -118,3 +123,8 @@ zinit light-mode for \
### End of Zinit's installer chunk
# . "$HOME/.local/bin/env"
# In .zshrc, after zinit loads
function zvm_after_init() {
# Re-bind ctrl+space for autosuggestions if needed
bindkey '^@' autosuggest-accept
}