diff --git a/backgrounds/.config/backgrounds/unviverse/blue_universe.jpg b/backgrounds/.config/backgrounds/universe/blue_universe.jpg
similarity index 100%
rename from backgrounds/.config/backgrounds/unviverse/blue_universe.jpg
rename to backgrounds/.config/backgrounds/universe/blue_universe.jpg
diff --git a/backgrounds/.config/backgrounds/unviverse/magenta.jpg b/backgrounds/.config/backgrounds/universe/magenta.jpg
similarity index 100%
rename from backgrounds/.config/backgrounds/unviverse/magenta.jpg
rename to backgrounds/.config/backgrounds/universe/magenta.jpg
diff --git a/backgrounds/.config/backgrounds/unviverse/universe.jpg b/backgrounds/.config/backgrounds/universe/universe.jpg
similarity index 100%
rename from backgrounds/.config/backgrounds/unviverse/universe.jpg
rename to backgrounds/.config/backgrounds/universe/universe.jpg
diff --git a/hyprlock/.config/hypr/hyprlock.conf b/hyprlock/.config/hypr/hyprlock.conf
index 3215643..e7fc2d9 100644
--- a/hyprlock/.config/hypr/hyprlock.conf
+++ b/hyprlock/.config/hypr/hyprlock.conf
@@ -13,7 +13,7 @@ general {
# BACKGROUND
background {
monitor =
- path = $WALLPAPER
+ path = /home/liph/.config/backgrounds/universe/magenta.jpg
blur_passes = 2
color = $base
}
diff --git a/kitty/.config/kitty/kitty.conf b/kitty/.config/kitty/kitty.conf
index 217979e..e406f7f 100644
--- a/kitty/.config/kitty/kitty.conf
+++ b/kitty/.config/kitty/kitty.conf
@@ -11,4 +11,4 @@ bold_italic_font auto
font_size 14
-background_opacity 0.9
+background_opacity 0.90
diff --git a/niri/.config/niri/config.kdl b/niri/.config/niri/config.kdl
new file mode 100644
index 0000000..88dcb4d
--- /dev/null
+++ b/niri/.config/niri/config.kdl
@@ -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; }
+}
diff --git a/niri/.config/niri/waybar-niri/config.jsonc b/niri/.config/niri/waybar-niri/config.jsonc
new file mode 100644
index 0000000..7cf16f6
--- /dev/null
+++ b/niri/.config/niri/waybar-niri/config.jsonc
@@ -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} {dynamic}",
+ "player-icons": {
+ "default": "▶",
+ "mpv": "🎵",
+ },
+ "status-icons": {
+ "paused": "⏸",
+ },
+ },
+ "tray": {
+ "icon-size": 14,
+ "spacing": 10,
+ },
+ "clock": {
+ "format": "{:%I:%M:%S %p}",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%Y-%m-%d}",
+ "interval": 1,
+ },
+ "cpu": {
+ "format": " {usage}%",
+ "tooltip": false,
+ "interval": 1,
+ },
+ "memory": {
+ "format": " {}%",
+ "interval": 1,
+ },
+ "battery": {
+ "interval": 1,
+ "states": {
+ "warning": 30,
+ "critical": 15,
+ },
+ "format": "{icon} {capacity}%",
+ "format-full": "{icon} {capacity}%",
+ "format-charging": " {capacity}%",
+ "format-plugged": " {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": " ",
+ "format-ethernet": "",
+ "format-disconnected": "",
+ "format-alt": "{bandwidthDownBytes}",
+ "interval": 1,
+ },
+ "pulseaudio": {
+ "format": "{icon} {volume}%",
+ "format-muted": "",
+ "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": "",
+ "on-click": "wofi --show drun",
+ },
+ "bluetooth": {
+ "format": "",
+ "format-disabled": "",
+ "format-connected": "",
+ "on-click": "blueman-manager",
+ },
+}
diff --git a/niri/.config/niri/waybar-niri/mocha.css b/niri/.config/niri/waybar-niri/mocha.css
new file mode 100644
index 0000000..0eb6a82
--- /dev/null
+++ b/niri/.config/niri/waybar-niri/mocha.css
@@ -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;
diff --git a/niri/.config/niri/waybar-niri/style.css b/niri/.config/niri/waybar-niri/style.css
new file mode 100644
index 0000000..aba39bf
--- /dev/null
+++ b/niri/.config/niri/waybar-niri/style.css
@@ -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;
+}
diff --git a/niri/.config/niri/wlogout/layout b/niri/.config/niri/wlogout/layout
new file mode 100644
index 0000000..4c341d6
--- /dev/null
+++ b/niri/.config/niri/wlogout/layout
@@ -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"
+}
diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json
index a5a9d21..a663723 100644
--- a/nvim/.config/nvim/lazy-lock.json
+++ b/nvim/.config/nvim/lazy-lock.json
@@ -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" }
}
diff --git a/nvim/.config/nvim/lua/plugins/cmp.lua b/nvim/.config/nvim/lua/plugins.inactive/cmp_1.lua
similarity index 100%
rename from nvim/.config/nvim/lua/plugins/cmp.lua
rename to nvim/.config/nvim/lua/plugins.inactive/cmp_1.lua
diff --git a/nvim/.config/nvim/lua/plugins.inactive/mason.lua b/nvim/.config/nvim/lua/plugins.inactive/mason.lua
new file mode 100644
index 0000000..dbaa144
--- /dev/null
+++ b/nvim/.config/nvim/lua/plugins.inactive/mason.lua
@@ -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",
+ },
+ },
+ },
+}
diff --git a/nvim/.config/nvim/lua/plugins/conform.lua b/nvim/.config/nvim/lua/plugins/conform.lua
index 9ebe728..c8761fd 100644
--- a/nvim/.config/nvim/lua/plugins/conform.lua
+++ b/nvim/.config/nvim/lua/plugins/conform.lua
@@ -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 gf)
vim.keymap.set("n", "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", "gf", function()
require("conform").format({
diff --git a/nvim/.config/nvim/lua/plugins/lsp-config.lua b/nvim/.config/nvim/lua/plugins/lsp-config.lua
index 2f280b4..791a894 100644
--- a/nvim/.config/nvim/lua/plugins/lsp-config.lua
+++ b/nvim/.config/nvim/lua/plugins/lsp-config.lua
@@ -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
diff --git a/nvim/.config/nvim/lua/plugins/mason.lua b/nvim/.config/nvim/lua/plugins/mason.lua
deleted file mode 100644
index e18bb58..0000000
--- a/nvim/.config/nvim/lua/plugins/mason.lua
+++ /dev/null
@@ -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",
- },
- },
- },
-}
diff --git a/nvim/.config/nvim/lua/plugins/neo-tree.lua b/nvim/.config/nvim/lua/plugins/neo-tree.lua
index 3acf6dd..37a9fc4 100644
--- a/nvim/.config/nvim/lua/plugins/neo-tree.lua
+++ b/nvim/.config/nvim/lua/plugins/neo-tree.lua
@@ -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", "ee", ":Neotree filesystem reveal left", {})
- vim.keymap.set("n", "bf", ":Neotree buffers reveal float", {})
- 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", "ee", ":Neotree filesystem reveal left", {})
+ vim.keymap.set("n", "bf", ":Neotree buffers reveal float", {})
+ end,
}
diff --git a/nvim/.config/nvim/lua/plugins/nvim-lint.lua b/nvim/.config/nvim/lua/plugins/nvim-lint.lua
index 3d6f662..063e7f7 100644
--- a/nvim/.config/nvim/lua/plugins/nvim-lint.lua
+++ b/nvim/.config/nvim/lua/plugins/nvim-lint.lua
@@ -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", "l", function()
lint.try_lint()
diff --git a/nvim/.config/nvim/lua/plugins/r-nvim.lua b/nvim/.config/nvim/lua/plugins/r-nvim.lua
new file mode 100644
index 0000000..7da97c7
--- /dev/null
+++ b/nvim/.config/nvim/lua/plugins/r-nvim.lua
@@ -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",
+ },
+}
diff --git a/nvim/.config/nvim/lua/plugins/treesitter.lua b/nvim/.config/nvim/lua/plugins/treesitter.lua
index 9a908bb..baf3e3a 100644
--- a/nvim/.config/nvim/lua/plugins/treesitter.lua
+++ b/nvim/.config/nvim/lua/plugins/treesitter.lua
@@ -18,6 +18,9 @@ return {
"lua",
"vim",
"latex",
+ "r",
+ "rnoweb", -- for Sweave files
+ "yaml", -- for YAML headers in Rmdkk
},
-- Auto install missing parsers
diff --git a/nvim/.config/nvim/lua/vim-options.lua b/nvim/.config/nvim/lua/vim-options.lua
index c6ce233..a8c43c3 100644
--- a/nvim/.config/nvim/lua/vim-options.lua
+++ b/nvim/.config/nvim/lua/vim-options.lua
@@ -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
diff --git a/scripts/scripts/kanata.sh b/scripts/scripts/kanata.sh
index a6dcd61..23221ba 100755
--- a/scripts/scripts/kanata.sh
+++ b/scripts/scripts/kanata.sh
@@ -1 +1,3 @@
kanata --cfg ~/.config/kanata/config.kbd &
+
+sudo mount -a
diff --git a/scripts/scripts/niri_br_blue.sh b/scripts/scripts/niri_br_blue.sh
new file mode 100755
index 0000000..f19b164
--- /dev/null
+++ b/scripts/scripts/niri_br_blue.sh
@@ -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
diff --git a/scripts/scripts/niri_br_down.sh b/scripts/scripts/niri_br_down.sh
new file mode 100755
index 0000000..ec25e02
--- /dev/null
+++ b/scripts/scripts/niri_br_down.sh
@@ -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
diff --git a/scripts/scripts/niri_br_reset.sh b/scripts/scripts/niri_br_reset.sh
new file mode 100755
index 0000000..41e6b4c
--- /dev/null
+++ b/scripts/scripts/niri_br_reset.sh
@@ -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
diff --git a/scripts/scripts/niri_br_up.sh b/scripts/scripts/niri_br_up.sh
new file mode 100755
index 0000000..ca455e2
--- /dev/null
+++ b/scripts/scripts/niri_br_up.sh
@@ -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
diff --git a/swaync/.config/swaync/config.json b/swaync/.config/swaync/config.json
new file mode 100644
index 0000000..bfaaa2c
--- /dev/null
+++ b/swaync/.config/swaync/config.json
@@ -0,0 +1,5 @@
+{
+ "timeout": 3,
+ "timeout-low": 2,
+ "timeout-critical": 0
+}
diff --git a/swaync/.config/swaync/style.css b/swaync/.config/swaync/style.css
new file mode 100644
index 0000000..40f8646
--- /dev/null
+++ b/swaync/.config/swaync/style.css
@@ -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;
+}
diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf
index 095572b..e060b23 100644
--- a/tmux/.tmux.conf
+++ b/tmux/.tmux.conf
@@ -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"
diff --git a/waybar/.config/waybar/config.jsonc b/waybar/.config/waybar/config.jsonc
index 634b52f..be77934 100644
--- a/waybar/.config/waybar/config.jsonc
+++ b/waybar/.config/waybar/config.jsonc
@@ -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} {dynamic}",
- "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} {dynamic}",
+ "player-icons": {
+ "default": "▶",
+ "mpv": "🎵",
},
- "tray": {
- "icon-size": 14,
- "spacing": 10
+ "status-icons": {
+ "paused": "⏸",
},
- "clock": {
- "format": "{:%I:%M:%S %p}",
- "tooltip-format": "{:%Y %B}\n{calendar}",
- "format-alt": "{:%Y-%m-%d}",
- "interval": 1
+ // "ignored-players": ["firefox"]
+ },
+ "tray": {
+ "icon-size": 14,
+ "spacing": 10,
+ },
+ "clock": {
+ "format": "{:%I:%M:%S %p}",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%Y-%m-%d}",
+ "interval": 1,
+ },
+ "cpu": {
+ "format": " {usage}%",
+ "tooltip": false,
+ "interval": 1,
+ },
+ "memory": {
+ "format": " {}%",
+ "interval": 1,
+ },
+ "battery": {
+ "interval": 1,
+ "states": {
+ // "good": 95,
+ "warning": 30,
+ "critical": 15,
},
- "cpu": {
- "format": " {usage}%",
- "tooltip": false,
- "interval": 1
+ "format": "{icon} {capacity}%",
+ "format-full": "{icon} {capacity}%",
+ "format-charging": " {capacity}%",
+ "format-plugged": " {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": " {}%",
- "interval": 1
+ },
+ "network": {
+ "format-wifi": " ",
+ "format-ethernet": "",
+ "format-disconnected": "",
+ "format-alt": "{bandwidthDownBytes}",
+ "interval": 1,
+ },
+ "pulseaudio": {
+ "format": "{icon} {volume}%",
+ "format-muted": "",
+ "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": "{icon} {capacity}%",
- "format-full": "{icon} {capacity}%",
- "format-charging": " {capacity}%",
- "format-plugged": " {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": " ",
- "format-ethernet": "",
- "format-disconnected": "",
- "format-alt": "{bandwidthDownBytes}",
- "interval": 1
- },
- "pulseaudio": {
- "format": "{icon} {volume}%",
- "format-muted": "",
- "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": "",
- "on-click": "wofi --show drun"
- },
- "bluetooth": {
- "format": "",
- "format-disabled": "",
- "format-connected": "",
- "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": "",
+ "on-click": "wofi --show drun",
+ },
+ "bluetooth": {
+ "format": "",
+ "format-disabled": "",
+ "format-connected": "",
+ "on-click": "blueman-manager",
+ },
+ "custom/keyboard-layer": {
+ "exec": "~/scripts/keyboard-layer.sh",
+ "return-type": "json",
+ "interval": "once",
+ "format": "🎹 {}",
+ },
}
diff --git a/yazi/.config/yazi/keymap.toml b/yazi/.config/yazi/keymap.toml
index 06a443f..ac243b6 100644
--- a/yazi/.config/yazi/keymap.toml
+++ b/yazi/.config/yazi/keymap.toml
@@ -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 = "", 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 = [""], run = "escape", desc = "Exit visual mode, clear selected, or cancel search" },
- { on = ["q"], run = "quit", desc = "Exit the process" },
- { on = [""], run = "close", desc = "Close the current tab, or quit if it is last tab" },
+ { on = [
+ "",
+ ], run = "escape", desc = "Exit visual mode, clear selected, or cancel search" },
+ { on = [
+ "q",
+ ], run = "quit", desc = "Exit the process" },
+ { on = [
+ "",
+ ], 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 = [""], 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 = [
+ "",
+ ], 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 = [""], 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 = [
+ "",
+ ], 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 = [""], run = "close", desc = "Cancel selection" },
- { on = [""], 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 = [
+ "",
+ ], run = "close", desc = "Cancel selection" },
+ { on = [
+ "",
+ ], 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 = [""], run = "close", desc = "Cancel input" },
- { on = [""], run = "close --submit", desc = "Submit input" },
+ { on = [
+ "",
+ ], run = "close", desc = "Cancel input" },
+ { on = [
+ "",
+ ], run = "close --submit", desc = "Submit input" },
]
[completion]
prepend_keymap = [
- { on = [""], 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 = [
+ "",
+ ], 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 = [""], 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 = [
+ "",
+ ], 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" },
]
diff --git a/yazi/.config/yazi/package.toml b/yazi/.config/yazi/package.toml
index f0633be..14a5da2 100644
--- a/yazi/.config/yazi/package.toml
+++ b/yazi/.config/yazi/package.toml
@@ -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"
diff --git a/yazi/.config/yazi/plugins/whoosh.yazi/bookmarks b/yazi/.config/yazi/plugins/whoosh.yazi/bookmarks
index 73ff804..4df1853 100644
--- a/yazi/.config/yazi/plugins/whoosh.yazi/bookmarks
+++ b/yazi/.config/yazi/plugins/whoosh.yazi/bookmarks
@@ -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
diff --git a/yazi/.config/yazi/yazi.toml b/yazi/.config/yazi/yazi.toml
index fd9e726..409508c 100644
--- a/yazi/.config/yazi/yazi.toml
+++ b/yazi/.config/yazi/yazi.toml
@@ -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.
]
diff --git a/zshrc/.aliases.zsh b/zshrc/.aliases.zsh
index 60b4934..0ecd825 100644
--- a/zshrc/.aliases.zsh
+++ b/zshrc/.aliases.zsh
@@ -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
diff --git a/zshrc/.export.zsh b/zshrc/.export.zsh
index b5c052e..1abca63 100644
--- a/zshrc/.export.zsh
+++ b/zshrc/.export.zsh
@@ -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)
diff --git a/zshrc/.plugins.zsh b/zshrc/.plugins.zsh
index 3ac2607..959a4a0 100644
--- a/zshrc/.plugins.zsh
+++ b/zshrc/.plugins.zsh
@@ -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
diff --git a/zshrc/.zshrc b/zshrc/.zshrc
index a4b16d7..2f498ba 100644
--- a/zshrc/.zshrc
+++ b/zshrc/.zshrc
@@ -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
+}