diff --git a/dots/.config/hypr/custom/variables.conf b/dots/.config/hypr/custom/variables.conf new file mode 100644 index 000000000..6df5899cb --- /dev/null +++ b/dots/.config/hypr/custom/variables.conf @@ -0,0 +1 @@ +# For all available variables, see ~/.config/hypr/hyprland/variables.conf diff --git a/dots/.config/hypr/hyprland.conf b/dots/.config/hypr/hyprland.conf index f51e0fbcc..b59a6d525 100644 --- a/dots/.config/hypr/hyprland.conf +++ b/dots/.config/hypr/hyprland.conf @@ -1,30 +1,40 @@ # This file sources other files in `hyprland` and `custom` folders # You wanna add your stuff in files in `custom` -$qsConfig = ii -exec = hyprctl dispatch submap global # DO NOT REMOVE THIS OR YOU WON'T BE ABLE TO USE ANY KEYBIND -submap = global # This is required for catchall to work - -# Environment variables +# --- Environment variables --- source=hyprland/env.conf source=custom/env.conf -# Defaults -source=hyprland/execs.conf -source=hyprland/general.conf -source=hyprland/rules.conf -source=hyprland/colors.conf -source=hyprland/keybinds.conf +# --- Other vars --- +source=hyprland/variables.conf +source=custom/variables.conf -# Custom +# --- Defaults --- +# hyprlang if !dontLoadDefaultExecs +source=hyprland/execs.conf +# hyprlang endif +# hyprlang if !dontLoadDefaultGeneral +source=hyprland/general.conf +# hyprlang endif +# hyprlang if !dontLoadDefaultRules +source=hyprland/rules.conf +# hyprlang endif +# hyprlang if !dontLoadDefaultColors +source=hyprland/colors.conf +# hyprlang endif +# hyprlang if !dontLoadDefaultKeybinds +source=hyprland/keybinds.conf +# hyprlang endif + +# --- Custom --- source=custom/execs.conf source=custom/general.conf source=custom/rules.conf source=custom/keybinds.conf -# nwg-displays support +# --- nwg-displays support --- source=workspaces.conf source=monitors.conf -# Shell overrides +# --- Shell overrides --- source=hyprland/shellOverrides/main.conf diff --git a/dots/.config/hypr/hyprland/env.conf b/dots/.config/hypr/hyprland/env.conf index 0c2103407..29a171f82 100644 --- a/dots/.config/hypr/hyprland/env.conf +++ b/dots/.config/hypr/hyprland/env.conf @@ -11,6 +11,3 @@ env = XDG_MENU_PREFIX, plasma- # ######## Virtual envrionment ######### env = ILLOGICAL_IMPULSE_VIRTUAL_ENV, ~/.local/state/quickshell/.venv - -# ######## Terminal application ######### -env = TERMINAL,kitty -1 diff --git a/dots/.config/hypr/hyprland/keybinds.conf b/dots/.config/hypr/hyprland/keybinds.conf index 604a5b87b..bad6190bb 100644 --- a/dots/.config/hypr/hyprland/keybinds.conf +++ b/dots/.config/hypr/hyprland/keybinds.conf @@ -1,6 +1,11 @@ # Lines ending with `# [hidden]` won't be shown on cheatsheet # Lines starting with #! are section headings +# DO NOT REMOVE THIS EXEC OR YOU WON'T BE ABLE TO USE ANY KEYBIND +exec = hyprctl dispatch submap global +# This is required for catchall to work +submap = global + #! ##! Shell # These absolutely need to be on top, or they won't work consistently @@ -52,7 +57,7 @@ bindld = Super+Alt,M, Toggle mic, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle # bindd = Ctrl+Super, T, Toggle wallpaper selector, global, quickshell:wallpaperSelectorToggle # Wallpaper selector bindd = Ctrl+Super+Alt, T, Select random wallpaper, global, quickshell:wallpaperSelectorRandom # Random wallpaper bindd = Ctrl+Super, T, Change wallpaper, exec, qs -c $qsConfig ipc call TEST_ALIVE || ~/.config/quickshell/$qsConfig/scripts/colors/switchwall.sh # [hidden] Change wallpaper (fallback) -bind = Ctrl+Super, R, exec, killall ags agsv1 gjs ydotool qs quickshell; qs -c $qsConfig & # Restart widgets +bind = Ctrl+Super, R, exec, killall ydotool qs quickshell; qs -c $qsConfig & # Restart widgets bind = Ctrl+Super, P, global, quickshell:panelFamilyCycle # Cycle panel family ##! Utilities @@ -69,7 +74,6 @@ bind = Super+Shift, T, global, quickshell:screenTranslate # Translate screen con bind = Super+Shift, X,exec, qs -c $qsConfig ipc call TEST_ALIVE || pidof slurp || grim -g "$(slurp $SLURP_ARGS)" "/tmp/ocr_image.png" && tesseract "/tmp/ocr_image.png" stdout -l $(tesseract --list-langs | awk 'NR>1{print $1}' | tr '\\n' '+' | sed 's/\\+$/\\n/') | wl-copy && rm "/tmp/ocr_image.png" # [hidden] # Color picker bindd = Super+Shift, C, Color picker, exec, hyprpicker -a # Pick color (Hex) >> clipboard -bindln = Ctrl,Print,exec,grim - | wl-copy # [hidden] Screenshot >> clipboard & file (clipboard) # Recording stuff bindl = Super+Shift, R, global, quickshell:regionRecord # Record region (no sound) bindl = Super+Shift, R, exec, qs -c $qsConfig ipc call TEST_ALIVE || ~/.config/quickshell/$qsConfig/scripts/videos/record.sh # [hidden] Record region (no sound) (fallback) @@ -81,7 +85,7 @@ bindl = Super+Shift+Alt, R, exec, ~/.config/quickshell/$qsConfig/scripts/videos/ bindl = ,Print,exec,grim - | wl-copy # Screenshot >> clipboard bindln = Ctrl,Print, exec, mkdir -p $(xdg-user-dir PICTURES)/Screenshots && grim $(xdg-user-dir PICTURES)/Screenshots/Screenshot_"$(date '+%Y-%m-%d_%H.%M.%S')".png # Screenshot >> clipboard & file # AI -bindd = Super+Shift+Alt, mouse:273, Generate AI summary for selected text, exec, ~/.config/hypr/hyprland/scripts/ai/primary-buffer-query.sh # [hidden] AI summary for selected text +bindd = Super+Shift+Alt, mouse:273, Generate AI summary for selected text, exec, ~/.config/hypr/hyprland/scripts/ai/primary-buffer-query.sh # [hidden] AI summary for selected text (requires a running ollama model) #! ##! Window @@ -249,17 +253,17 @@ bindl= ,XF86AudioPlay, exec, playerctl play-pause # [hidden] bindl= ,XF86AudioPause, exec, playerctl play-pause # [hidden] ##! Apps -bind = Super, Return, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "${TERMINAL}" "kitty -1" "foot" "alacritty" "wezterm" "konsole" "kgx" "uxterm" "xterm" # Terminal -bind = Super, T, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "${TERMINAL}" "kitty -1" "foot" "alacritty" "wezterm" "konsole" "kgx" "uxterm" "xterm" # [hidden] (terminal) (alt) -bind = Ctrl+Alt, T, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "${TERMINAL}" "kitty -1" "foot" "alacritty" "wezterm" "konsole" "kgx" "uxterm" "xterm" # [hidden] (terminal) (for Ubuntu people) -bind = Super, E, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "dolphin" "nautilus" "nemo" "thunar" "${TERMINAL}" "kitty -1 fish -c yazi" # File manager -bind = Super, W, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "google-chrome-stable" "zen-browser" "firefox" "brave" "chromium" "microsoft-edge-stable" "opera" "librewolf" # Browser -bind = Super, C, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "antigravity" "code" "codium" "cursor" "zed" "zedit" "zeditor" "kate" "gnome-text-editor" "emacs" "command -v nvim && kitty -1 nvim" "command -v micro && kitty -1 micro" # Code editor -bind = Ctrl+Super+Shift+Alt, W, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "wps" "onlyoffice-desktopeditors" "libreoffice" # Office software -bind = Super, X, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "kate" "gnome-text-editor" "emacs" # Text editor -bind = Ctrl+Super, V, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "pavucontrol-qt" "pavucontrol" # Volume mixer -bind = Super, I, exec, XDG_CURRENT_DESKTOP=gnome ~/.config/hypr/hyprland/scripts/launch_first_available.sh "qs -p ~/.config/quickshell/$qsConfig/settings.qml" "systemsettings" "gnome-control-center" "better-control" # Settings app -bind = Ctrl+Shift, Escape, exec, ~/.config/hypr/hyprland/scripts/launch_first_available.sh "gnome-system-monitor" "plasma-systemmonitor --page-name Processes" "command -v btop && kitty -1 fish -c btop" # Task manager +bind = Super, Return, exec, $terminal # Terminal +bind = Super, T, exec, $terminal # [hidden] (terminal) (alt) +bind = Ctrl+Alt, T, exec, $terminal # [hidden] (terminal) (for Ubuntu people) +bind = Super, E, exec, $fileManager # File manager +bind = Super, W, exec, $browser # Browser +bind = Super, C, exec, $codeEditor # Code editor +bind = Ctrl+Super+Shift+Alt, W, exec, $officeSoftware # Office software +bind = Super, X, exec, $textEditor # Text editor +bind = Ctrl+Super, V, exec, $volumeMixer # Volume mixer +bind = Super, I, exec, $settingsApp # Settings app +bind = Ctrl+Shift, Escape, exec, $taskManager # Task manager # Cursed stuff ## Make window not amogus large diff --git a/dots/.config/hypr/hyprland/rules.conf b/dots/.config/hypr/hyprland/rules.conf index 4c618847d..38e8cf560 100644 --- a/dots/.config/hypr/hyprland/rules.conf +++ b/dots/.config/hypr/hyprland/rules.conf @@ -67,6 +67,11 @@ windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, size (mo windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, float on windowrule = match:title ^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$, pin on +# Screen sharing +windowrule = match:title .*is sharing (a window|your screen).*, float on +windowrule = match:title .*is sharing (a window|your screen).*, pin on +windowrule = match:title .*is sharing (a window|your screen).*, move (monitor_w*.5-window_w*.5) (monitor_h-window_h-12) + # --- Tearing --- windowrule = match:title .*\.exe, immediate on windowrule = match:title .*minecraft.*, immediate on diff --git a/dots/.config/hypr/hyprland/variables.conf b/dots/.config/hypr/hyprland/variables.conf new file mode 100644 index 000000000..a32013782 --- /dev/null +++ b/dots/.config/hypr/hyprland/variables.conf @@ -0,0 +1,23 @@ +# Default variables +# Copy these to ~/.config/hypr/custom/variables.conf to make changes in a dotfiles-update-friendly manner + +# Apps +# PULL REQUESTS ADDING MORE WILL NOT BE ACCEPTED, CONFIG FOR YOURSELF +$terminal = ~/.config/hypr/hyprland/scripts/launch_first_available.sh "kitty -1" "foot" "alacritty" "wezterm" "konsole" "kgx" "uxterm" "xterm" +$fileManager = ~/.config/hypr/hyprland/scripts/launch_first_available.sh "dolphin" "nautilus" "nemo" "thunar" "kitty -1 fish -c yazi" +$browser = ~/.config/hypr/hyprland/scripts/launch_first_available.sh "google-chrome-stable" "zen-browser" "firefox" "brave" "chromium" "microsoft-edge-stable" "opera" "librewolf" +$codeEditor = ~/.config/hypr/hyprland/scripts/launch_first_available.sh "antigravity" "code" "codium" "cursor" "zed" "zedit" "zeditor" "kate" "gnome-text-editor" "emacs" "command -v nvim && kitty -1 nvim" "command -v micro && kitty -1 micro" +$officeSoftware = ~/.config/hypr/hyprland/scripts/launch_first_available.sh "wps" "onlyoffice-desktopeditors" "libreoffice" +$textEditor = ~/.config/hypr/hyprland/scripts/launch_first_available.sh "kate" "gnome-text-editor" "emacs" +$volumeMixer = ~/.config/hypr/hyprland/scripts/launch_first_available.sh "pavucontrol-qt" "pavucontrol" +$settingsApp = XDG_CURRENT_DESKTOP=gnome ~/.config/hypr/hyprland/scripts/launch_first_available.sh "qs -p ~/.config/quickshell/$qsConfig/settings.qml" "systemsettings" "gnome-control-center" "better-control" +$taskManager = ~/.config/hypr/hyprland/scripts/launch_first_available.sh "gnome-system-monitor" "plasma-systemmonitor --page-name Processes" "command -v btop && kitty -1 fish -c btop" + +# The folder within ~/.config/quickshell containing the config +$qsConfig = ii + +# Leave blank like this to load default config. Set to anything to not. +$dontLoadDefaultExecs = +$dontLoadDefaultGeneral = +$dontLoadDefaultRules = +$dontLoadDefaultKeybinds =