diff options
Diffstat (limited to 'config/hypr')
28 files changed, 926 insertions, 908 deletions
diff --git a/config/hypr/UserConfigs/ENVariables.conf b/config/hypr/UserConfigs/ENVariables.conf index 4e736dc3..41d9b2d4 100644 --- a/config/hypr/UserConfigs/ENVariables.conf +++ b/config/hypr/UserConfigs/ENVariables.conf @@ -3,54 +3,20 @@ # Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf -# environment-variables -# Current Version of JakooLit Dotfiles: -env = DOTS_VERSION,2.3.18 +### QT Variables ### +# env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +# env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +# env = QT_QPA_PLATFORMTHEME,qt5ct +# env = QT_QPA_PLATFORMTHEME,qt6ct -# Toolkit Backend Variables -env = GDK_BACKEND,wayland,x11,* -env = QT_QPA_PLATFORM,wayland;xcb -env = CLUTTER_BACKEND,wayland - -#Run SDL2 applications on Wayland. -#Remove or set to x11 if games that provide older versions of SDL cause compatibility issues -#env = SDL_VIDEODRIVER,wayland - -# xdg Specifications -env = XDG_CURRENT_DESKTOP,Hyprland -env = XDG_SESSION_DESKTOP,Hyprland -env = XDG_SESSION_TYPE,wayland - -# QT Variables -env = QT_AUTO_SCREEN_SCALE_FACTOR,1 -env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 -env = QT_QPA_PLATFORMTHEME,qt5ct -env = QT_QPA_PLATFORMTHEME,qt6ct - -# hyprland-qt-support -env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style - -# xwayland apps scale fix (useful if you are use monitor scaling). +### xwayland apps scale fix (useful if you are use monitor scaling). ### # Set same value if you use scaling in Monitors.conf # 1 is 100% 1.5 is 150% # see https://wiki.hyprland.org/Configuring/XWayland/ -env = GDK_SCALE,1 -env = QT_SCALE_FACTOR,1 +# env = GDK_SCALE,1 +# env = QT_SCALE_FACTOR,1 -# Bibata-Modern-Ice-Cursor -# NOTE! You must have the hyprcursor version to activate this. -# https://wiki.hyprland.org/Hypr-Ecosystem/hyprcursor/ -#env = HYPRCURSOR_THEME,Bibata-Modern-Ice -#env = HYPRCURSOR_SIZE,24 - -# firefox -env = MOZ_ENABLE_WAYLAND,1 - -# electron >28 apps (may help) ## -# https://www.electronjs.org/docs/latest/api/environment-variables -env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11 otherwise - -# NVIDIA +### NVIDIA ### # This is from Hyprland Wiki. Below will be activated nvidia gpu detected # See hyprland wiki https://wiki.hyprland.org/Nvidia/#environment-variables @@ -59,34 +25,27 @@ env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11 #env = NVD_BACKEND,direct #env = GSK_RENDERER,ngl -# additional ENV's for nvidia. Caution, activate with care +### additional ENV's for nvidia. Caution, activate with care ### #env = GBM_BACKEND,nvidia-drm - #env = __GL_GSYNC_ALLOWED,1 #adaptive Vsync #env = __NV_PRIME_RENDER_OFFLOAD,1 #env = __VK_LAYER_NV_optimus,NVIDIA_only #env = WLR_DRM_NO_ATOMIC,1 -# FOR VM and POSSIBLY NVIDIA +### FOR VM and POSSIBLY NVIDIA ### # LIBGL_ALWAYS_SOFTWARE software mesa rendering #env = LIBGL_ALWAYS_SOFTWARE,1 # Warning. May cause hyprland to crash #env = WLR_RENDERER_ALLOW_SOFTWARE,1 -# nvidia firefox (for hardware acceleration on FF)? +### nvidia firefox ### # check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration #env = MOZ_DISABLE_RDD_SANDBOX,1 #env = EGL_PLATFORM,wayland -#### Aquamarine Environment Variables #### ( Hyprland > 0.45 ) -# https://wiki.hyprland.org/Configuring/Environment-variables/#aquamarine-environment-variables----ref-httpsgithubcomhyprwmaquamarineblobmaindocsenvmd--- +### Aquamarine Environment Variables (Hyprland > 0.45) ### +# https://wiki.hyprland.org/Configuring/Environment-variables/#aquamarine-environment-variables # env = AQ_TRACE,1 # Enables more verbose logging. # env = AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 # Set an explicit list of DRM devices (GPUs) to use. Itβs a colon-separated list of paths, with the first being the primary. E.g. /dev/dri/card1:/dev/dri/card0 # env = AQ_MGPU_NO_EXPLICIT,1 # Disables explicit syncing on mgpu buffers # env = AQ_NO_MODIFIERS,1 # Disables modifiers for DRM buffers -#### Hyprland Environment Variables #### -# https://wiki.hyprland.org/Configuring/Environment-variables/#hyprland-environment-variables -# env = HYPRLAND_TRACE,1 # Enables more verbose logging. -# env = HYPRLAND_NO_RT,1 # Disables realtime priority setting by Hyprland. -# env = HYPRLAND_NO_SD_NOTIFY,1 # If systemd, disables the 'sd_notify' calls. -# env = HYPRLAND_NO_SD_VARS,1 # Disables management of variables in systemd and dbus activation environments. diff --git a/config/hypr/UserConfigs/Laptops.conf b/config/hypr/UserConfigs/Laptops.conf index edb68463..af5cb583 100644 --- a/config/hypr/UserConfigs/Laptops.conf +++ b/config/hypr/UserConfigs/Laptops.conf @@ -1,5 +1,4 @@ # /* ---- π« https://github.com/JaKooLit π« ---- */ # - # See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings # These configs are mostly for laptops. This is addemdum to Keybinds.conf @@ -7,30 +6,6 @@ $mainMod = SUPER $scriptsDir = $HOME/.config/hypr/scripts $UserConfigs = $HOME/.config/hypr/UserConfigs -# for disabling Touchpad. hyprctl devices to get device name. -$Touchpad_Device=asue1209:00-04f3:319f-touchpad - -binde = , xf86KbdBrightnessDown, exec, $scriptsDir/BrightnessKbd.sh --dec # decrease keyboard brightness -binde = , xf86KbdBrightnessUp, exec, $scriptsDir/BrightnessKbd.sh --inc # increase keyboard brightness -bind = , xf86Launch1, exec, rog-control-center # ASUS Armory crate button -bind = , xf86Launch3, exec, asusctl led-mode -n # FN+F4 Switch keyboard RGB profile -bind = , xf86Launch4, exec, asusctl profile -n # FN+F5 change of fan profiles (Quite, Balance, Performance) -binde = , xf86MonBrightnessDown, exec, $scriptsDir/Brightness.sh --dec # decrease monitor brightness -binde = , xf86MonBrightnessUp, exec, $scriptsDir/Brightness.sh --inc # increase monitor brightness -bind = , xf86TouchpadToggle, exec, $scriptsDir/TouchPad.sh # disable touchpad - -# Screenshot keybindings using F6 (no PrinSrc button) -bind = $mainMod, F6, exec, $scriptsDir/ScreenShot.sh --now # screenshot -bind = $mainMod SHIFT, F6, exec, $scriptsDir/ScreenShot.sh --area # screenshot (area) -bind = $mainMod CTRL, F6, exec, $scriptsDir/ScreenShot.sh --in5 # # screenshot (5 secs delay) -bind = $mainMod ALT, F6, exec, $scriptsDir/ScreenShot.sh --in10 # screenshot (10 secs delay) -bind = ALT, F6, exec, $scriptsDir/ScreenShot.sh --active # screenshot (active window only) - -$TOUCHPAD_ENABLED = true -device { - name = $Touchpad_Device - enabled = $TOUCHPAD_ENABLED -} # Below are useful when you are connecting your laptop in external display # Suggest you edit below for your laptop display # From WIKI This is to disable laptop monitor when lid is closed. @@ -52,4 +27,3 @@ device { # for laptop-lid action (to erase the last entry) #exec-once = echo "monitor = eDP-1, preferred, auto, 1" > $HOME/.config/hypr/UserConfigs/LaptopDisplay.conf -# diff --git a/config/hypr/UserConfigs/Startup_Apps.conf b/config/hypr/UserConfigs/Startup_Apps.conf new file mode 100644 index 00000000..f00acf90 --- /dev/null +++ b/config/hypr/UserConfigs/Startup_Apps.conf @@ -0,0 +1,3 @@ +# /* ---- π« https://github.com/JaKooLit π« ---- */ # +# Commands and Apps to be executed at launch + diff --git a/config/hypr/UserConfigs/UserKeybinds.conf b/config/hypr/UserConfigs/UserKeybinds.conf index 17711559..e140cfe4 100644 --- a/config/hypr/UserConfigs/UserKeybinds.conf +++ b/config/hypr/UserConfigs/UserKeybinds.conf @@ -11,73 +11,30 @@ $scriptsDir = $HOME/.config/hypr/scripts $UserScripts = $HOME/.config/hypr/UserScripts $UserConfigs = $HOME/.config/hypr/UserConfigs -# settings for User defaults apps - set your default terminal and file manager on this file -source= $UserConfigs/01-UserDefaults.conf +# IMPORTANT: If you want to remap and existing keybind you MUST unbindd it first -# common shortcuts -#bindr = $mainMod, $mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window # Super Key to Launch rofi menu -bindd = $mainMod, D, app launcher, exec, pkill rofi || true && rofi -show drun -modi drun,filebrowser,run,window -bindd = $mainMod, B, open default browser, exec, xdg-open "https://" -bindd = $mainMod, A, desktop overview, exec, $scriptsDir/OverviewToggle.sh # toggles quickshell or ags overview (tries QS first, falls back to AGS) -#bindd = $mainMod, A, ags overview, exec, pkill rofi || true && ags -t 'overview' # desktop overview (if installed) -#bindd = $mainMod, A, Quickshell overview, global, quickshell:overviewToggle # desktop overview (if installed) -bindd = $mainMod, Return, Open terminal, exec, $term -bindd = $mainMod, E, file manager, exec, $files +# The bindings are CASE SENSITIVE. We suggest you copy the exisitng binding here +# Then change `bindd` to `unbind` +# E.g. +# unbind = $mainMod, Return, Open terminal, exec, $term +# bindd = $mainMod, Return, Open terminal, exec, ghostty +# +# unbind = $mainMod, E, file manager, exec, $files +# bindd = $mainMod, T, file manager, exec, $files -# FEATURES / EXTRAS -bindd = $mainMod, H, help / cheat sheet, exec, $scriptsDir/KeyHints.sh -bindd = $mainMod ALT, R, refresh bar and menus, exec, $scriptsDir/Refresh.sh -bindd = $mainMod ALT, E, emoji menu, exec, $scriptsDir/RofiEmoji.sh -bindd = $mainMod, S, web search, exec, $scriptsDir/RofiSearch.sh -bindd = $mainMod CTRL, S, window switcher, exec, rofi -show window -bindd = $mainMod ALT, O, toggle blur, exec, $scriptsDir/ChangeBlur.sh -bindd = $mainMod SHIFT, G, toggle game mode, exec, $scriptsDir/GameMode.sh -bindd = $mainMod ALT, L, toggle master/dwindle layout, exec, $scriptsDir/ChangeLayout.sh -bindd = $mainMod ALT, V, clipboard manager, exec, $scriptsDir/ClipManager.sh -bindd = $mainMod CTRL, R, rofi theme selector, exec, $scriptsDir/RofiThemeSelector.sh -bindd = $mainMod CTRL SHIFT, R, rofi theme selector (modified), exec, pkill rofi || true && $scriptsDir/RofiThemeSelector-modified.sh +# If you are ADDING a bindd, make sure you include the description +# Other the keybind search menu might not show it properly + +# E.g. +# bindd = $mainMod, Z, My z app, exec APPNAME -bindd = $mainMod SHIFT, F, fullscreen, fullscreen -bindd = $mainMod CTRL, F, maximize window, fullscreen, 1 -bindd = $mainMod, SPACE, Float current window, togglefloating, -bindd = $mainMod ALT, SPACE, Float all windows, exec, hyprctl dispatch workspaceopt allfloat -bindd = $mainMod SHIFT, Return, DropDown terminal, exec, $scriptsDir/Dropterminal.sh $term -# Desktop zooming or magnifier -bindd = $mainMod ALT, mouse_down, zoom in, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 2.0}')" -bindd = $mainMod ALT, mouse_up, zoom out, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')" -## NOTES for ja (Hyprland version 0.39 (Ubuntu 24.04)) -#bind = $mainMod ALT, mouse_down, exec, hyprctl keyword misc:cursor_zoom_factor "$(hyprctl getoption misc:cursor_zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 2.0}')" -#bind = $mainMod ALT, mouse_up, exec, hyprctl keyword misc:cursor_zoom_factor "$(hyprctl getoption misc:cursor_zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')" -# Waybar / Bar related -bindd = $mainMod CTRL ALT, B, toggle waybar on/off, exec, pkill -SIGUSR1 waybar -bindd = $mainMod CTRL, B, waybar styles menu, exec, $scriptsDir/WaybarStyles.sh -bindd = $mainMod ALT, B, waybar layout menu, exec, $scriptsDir/WaybarLayout.sh -# Night light toggle (Hyprsunset) -bindd = $mainMod, N, toggle night light, exec, $scriptsDir/Hyprsunset.sh toggle -# FEATURES / EXTRAS (UserScripts) -bindd = $mainMod SHIFT, M, online music, exec, $UserScripts/RofiBeats.sh -bindd = $mainMod, W, select wallpaper, exec, $UserScripts/WallpaperSelect.sh -bindd = $mainMod SHIFT, W, wallpaper effects, exec, $UserScripts/WallpaperEffects.sh -bindd = CTRL ALT, W, random wallpaper, exec, $UserScripts/WallpaperRandom.sh -bindd = $mainMod CTRL, O, toggle active window opacity, exec, hyprctl setprop active opaque toggle -bindd = $mainMod SHIFT, K, search keybinds, exec, $scriptsDir/KeyBinds.sh -bindd = $mainMod SHIFT, A, animations menu, exec, $scriptsDir/Animations.sh -bindd = $mainMod SHIFT, O, change oh-my-zsh theme, exec, $UserScripts/ZshChangeTheme.sh -bindlnd = ALT_L, SHIFT_L, switch keyboard layout globally, exec, $scriptsDir/SwitchKeyboardLayout.sh -bindlnd = SHIFT_L, ALT_L, switch keyboard layout per-window, exec, $scriptsDir/Tak0-Per-Window-Switch.sh -bindd = $mainMod ALT, C, calculator, exec, $UserScripts/RofiCalc.sh -# Move current workspaces to monitors (left right up or down) -bindd = $mainMod CTRL, F9, move workspace to left monitor, movecurrentworkspacetomonitor, l -bindd = $mainMod CTRL, F10, move workspace to right monitor, movecurrentworkspacetomonitor, r -bindd = $mainMod CTRL, F11, move workspace to up monitor, movecurrentworkspacetomonitor, u -bindd = $mainMod CTRL, F12, move workspace to down monitor, movecurrentworkspacetomonitor, d # For passthrough keyboard into a VM diff --git a/config/hypr/UserConfigs/UserSettings.conf b/config/hypr/UserConfigs/UserSettings.conf index f81ccc6a..df68b396 100644 --- a/config/hypr/UserConfigs/UserSettings.conf +++ b/config/hypr/UserConfigs/UserSettings.conf @@ -4,117 +4,7 @@ # if the upgrade.sh is used. # refer to Hyprland wiki for more info https://wiki.hyprland.org/Configuring/Variables/ - # NOTE: some settings are in ~/.config/hypr/UserConfigs/UserDecorAnimations.conf +# +# Look on ~/.config/hypr/configs/SystemSettings.conf to know how to modify this -dwindle { - pseudotile = true - preserve_split = true - #smart_split = true - special_scale_factor = 0.8 -} - -master { - new_status = master - new_on_top = 1 - mfact = 0.5 -} - -general { - resize_on_border = true - - layout = dwindle -} - -input { - kb_layout = us - kb_variant = - kb_model = - kb_options = - kb_rules = - repeat_rate = 50 - repeat_delay = 300 - - sensitivity = 0 #mouse sensitivity - #accel_profile = # flat or adaptive or blank or EMPTY means libinputβs default mode - numlock_by_default = true - left_handed = false - follow_mouse = 1 - float_switch_override_focus = false - - touchpad { - disable_while_typing = true - natural_scroll = true - clickfinger_behavior = false - middle_button_emulation = false - tap-to-click = true - drag_lock = false - } - - # below for devices with touchdevice ie. touchscreen - touchdevice { - enabled = true - } - - # below is for table see link above for proper variables - tablet { - transform = 0 - left_handed = 0 - } -} - - -gestures { - gesture = 3, horizontal, workspace - workspace_swipe_distance = 500 - workspace_swipe_invert = true - workspace_swipe_min_speed_to_force = 30 - workspace_swipe_cancel_ratio = 0.5 - workspace_swipe_create_new = true - workspace_swipe_forever = true - #workspace_swipe_use_r = true #uncomment if wanted a forever create a new workspace with swipe right -} - -misc { - disable_hyprland_logo = true - disable_splash_rendering = true - vfr = true - vrr = 2 - mouse_move_enables_dpms = true - enable_swallow = off - swallow_regex = ^(kitty)$ - focus_on_activate = false - initial_workspace_tracking = 0 - middle_click_paste = false - enable_anr_dialog = true # Application not Responding (ANR) - anr_missed_pings = 15 # ANR Threshold default 1 is too low - allow_session_lock_restore = true # Prevent lockscreen crash when resume from suspend -} - -#opengl { -# nvidia_anti_flicker = true -#} - -binds { - workspace_back_and_forth = true - allow_workspace_cycles = true - pass_mouse_when_bound = false -} - -#Could help when scaling and not pixelating -xwayland { - enabled = true - force_zero_scaling = true -} - -render { - direct_scanout = 0 -} - -cursor { - sync_gsettings_theme = true - no_hardware_cursors = 2 # change to 1 if want to disable - enable_hyprcursor = true - warp_on_change_workspace = 2 - no_warps = true -} diff --git a/config/hypr/UserConfigs/WindowRules-old.conf b/config/hypr/UserConfigs/WindowRules-old.conf deleted file mode 100644 index d6e1dead..00000000 --- a/config/hypr/UserConfigs/WindowRules-old.conf +++ /dev/null @@ -1,206 +0,0 @@ -# /* ---- π« https://github.com/JaKooLit π« ---- */ # -# For window rules and layerrules -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more - -# NOTES: This is only for Hyprland older versions (< 0.48) - -# windowrule v2 - tags - add apps under appropriate tag to use the same settings -# browser tags -windowrulev2 = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$ -windowrulev2 = tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$ -windowrulev2 = tag +browser, class:^(chrome-.+-Default)$ # Chrome PWAs -windowrulev2 = tag +browser, class:^([Cc]hromium)$ -windowrulev2 = tag +browser, class:^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$ -windowrulev2 = tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$ -windowrulev2 = tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$ -windowrulev2 = tag +browser, class:^(zen-alpha|zen)$ -windowrulev2 = tag +notif, class:^(swaync-control-center|swaync-notification-window|swaync-client|class)$ -windowrulev2 = tag +KooL_Cheat, title:^(KooL Quick Cheat Sheet)$ -windowrulev2 = tag +KooL_Settings, title:^(KooL Hyprland Settings)$ -windowrulev2 = tag +KooL-Settings, class:^(nwg-displays|nwg-look)$ - -# terminal tags -windowrulev2 = tag +terminal, class:^(Alacritty|kitty|kitty-dropterm)$ - -# email tags -windowrulev2 = tag +email, class:^([Tt]hunderbird|org.gnome.Evolution)$ -windowrulev2 = tag +email, class:^(eu.betterbird.Betterbird)$ - -# project tags -windowrulev2 = tag +projects, class:^(codium|codium-url-handler|VSCodium)$ -windowrulev2 = tag +projects, class:^(VSCode|code-url-handler)$ -windowrulev2 = tag +projects, class:^(jetbrains-.+)$ # JetBrains IDEs - -# screenshare tags -windowrulev2 = tag +screenshare, class:^(com.obsproject.Studio)$ - -# IM tags -windowrulev2 = tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$ -windowrulev2 = tag +im, class:^([Ff]erdium)$ -windowrulev2 = tag +im, class:^([Ww]hatsapp-for-linux)$ -windowrulev2 = tag +im, class:^(ZapZap|com.rtosta.zapzap)$ -windowrulev2 = tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$ -windowrulev2 = tag +im, class:^(teams-for-linux)$ - -# game tags -windowrulev2 = tag +games, class:^(gamescope)$ -windowrulev2 = tag +games, class:^(steam_app_\d+)$ - -# gamestore tags -windowrulev2 = tag +gamestore, class:^([Ss]team)$ -windowrulev2 = tag +gamestore, title:^([Ll]utris)$ -windowrulev2 = tag +gamestore, class:^(com.heroicgameslauncher.hgl)$ - -# file-manager tags -windowrulev2 = tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$ -windowrulev2 = tag +file-manager, class:^(app.drey.Warp)$ - -# wallpaper tags -windowrulev2 = tag +wallpaper title:^([Ww]aytrogen)$ -windowrulev2 = tag +wallpaper, class:^([Ww]aytrogen)$ - -# multimedia tags -windowrulev2 = tag +multimedia, class:^([Aa]udacious)$ - - -# settings tags -windowrulev2 = tag +settings, title:^(ROG Control)$ -windowrulev2 = tag +settings, class:^(wihotspot(-gui)?)$ # wifi hotspot -windowrulev2 = tag +settings, class:^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer -windowrulev2 = tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$ -windowrulev2 = tag +settings, title:(Kvantum Manager) -windowrulev2 = tag +settings, class:^(file-roller|org.gnome.FileRoller)$ # archive manager -windowrulev2 = tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$ -windowrulev2 = tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$ -windowrulev2 = tag +settings, class:^(qt5ct|qt6ct|[Yy]ad)$ -windowrulev2 = tag +settings, class:(xdg-desktop-portal-gtk) -windowrulev2 = tag +settings, class:^(org.kde.polkit-kde-authentication-agent-1)$ -windowrulev2 = tag +settings, class:^([Rr]ofi)$ - -# viewer tags -windowrulev2 = tag +viewer, class:^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor -windowrulev2 = tag +viewer, class:^(evince)$ # document viewer -windowrulev2 = tag +viewer, class:^(eog|org.gnome.Loupe)$ # image viewer - -# POSITION -# windowrulev2 = center,floating:1 # warning, it cause even the menu to float and center. -windowrulev2 = center, tag:KooL_Cheat* -windowrulev2 = center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*) -windowrulev2 = center, title:^(ROG Control)$ -windowrulev2 = center, tag:KooL-Settings* -windowrulev2 = center, title:^(Keybindings)$ -windowrulev2 = center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$ -windowrulev2 = center, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ -windowrulev2 = center, class:^([Ff]erdium)$ -windowrulev2 = move 72% 7%,title:^(Picture-in-Picture)$ -#windowrulev2 = move 72% 7%,title:^(Firefox)$ - -# windowrule v2 to avoid idle for fullscreen apps -#windowrulev2 = idleinhibit fullscreen, class:^(*)$ -#windowrulev2 = idleinhibit fullscreen, title:^(*)$ -windowrulev2 = idleinhibit fullscreen, fullscreen:1 - -# windowrule v2 move to workspace -windowrulev2 = workspace 1, tag:email* -windowrulev2 = workspace 2, tag:browser* -#windowrulev2 = workspace 3, class:^([Tt]hunar)$ -#windowrulev2 = workspace 3, tag:projects* -windowrulev2 = workspace 5, tag:gamestore* -windowrulev2 = workspace 7, tag:im* -windowrulev2 = workspace 8, tag:games* - -# windowrule v2 move to workspace (silent) -windowrulev2 = workspace 4 silent, tag:screenshare* -windowrulev2 = workspace 6 silent, class:^(virt-manager)$ -windowrulev2 = workspace 6 silent, class:^(.virt-manager-wrapped)$ -windowrulev2 = workspace 9 silent, tag:multimedia* - -# FLOAT -windowrulev2 = float, tag:KooL_Cheat* -windowrulev2 = float, tag:wallpaper* -windowrulev2 = float, tag:settings* -windowrulev2 = float, tag:viewer* -windowrulev2 = float, tag:KooL-Settings* -windowrulev2 = float, class:([Zz]oom|onedriver|onedriver-launcher)$ -windowrulev2 = float, class:(org.gnome.Calculator), title:(Calculator) -windowrulev2 = float, class:^(mpv|com.github.rafostar.Clapper)$ -windowrulev2 = float, class:^([Qq]alculate-gtk)$ -#windowrulev2 = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ -windowrulev2 = float, class:^([Ff]erdium)$ -windowrulev2 = float, title:^(Picture-in-Picture)$ -#windowrulev2 = float, title:^(Firefox)$ - - -#windowrule v2 - float popups and dialogue -windowrulev2 = float, title:^(Authentication Required)$ -windowrulev2 = center, title:^(Authentication Required)$ -windowrulev2 = float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*) -windowrulev2 = float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher) -windowrulev2 = float, class:^([Ss]team)$, title:negative:^([Ss]team)$ -windowrulev2 = float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*) -#windowrulev2 = float, class:(electron), title:(Add Folder to Workspace) -windowrulev2 = float, title:^(Add Folder to Workspace)$ -windowrulev2 = size 70% 60%, title:^(Add Folder to Workspace)$ -windowrulev2 = center, title:^(Add Folder to Workspace)$ -windowrulev2 = float, initialTitle:(Open Files) -windowrulev2 = size 70% 60%, initialTitle:(Open Files) -windowrulev2 = float, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background -windowrulev2 = center, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background -windowrulev2 = size 16% 12%, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background - -# OPACITY -windowrulev2 = opacity 0.9 0.7, tag:browser* -windowrulev2 = opacity 0.9 0.8, tag:projects* -windowrulev2 = opacity 0.94 0.86, tag:im* -windowrulev2 = opacity 0.94 0.86, tag:multimedia* -windowrulev2 = opacity 0.9 0.8, tag:file-manager* -windowrulev2 = opacity 0.8 0.7, tag:terminal* -windowrulev2 = opacity 0.8 0.7, tag:settings* -windowrulev2 = opacity 0.82 0.75, tag:viewer* -windowrulev2 = opacity 0.9 0.7, tag:wallpaper* -windowrulev2 = opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$ -windowrulev2 = opacity 0.9 0.8, class:^(deluge)$ -windowrulev2 = opacity 0.9 0.8, class:^(im.riot.Riot)$ # Element matrix client -windowrulev2 = opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui -windowrulev2 = opacity 0.95 0.75, title:^(Picture-in-Picture)$ - - -# SIZE -windowrulev2 = size 65% 90%, tag:KooL_Cheat* -windowrulev2 = size 70% 70%, tag:wallpaper* -windowrulev2 = size 70% 70%, tag:settings* -windowrulev2 = size 60% 70%, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ -windowrulev2 = size 60% 70%, class:^([Ff]erdium)$ - -#windowrulev2 = size 25% 25%, title:^(Picture-in-Picture)$ -#windowrulev2 = size 25% 25%, title:^(Firefox)$ - -# PINNING -windowrulev2 = pin, title:^(Picture-in-Picture)$ -#windowrulev2 = pin,title:^(Firefox)$ - -# windowrule v2 - extras -windowrulev2 = keepaspectratio, title:^(Picture-in-Picture)$ - -# BLUR & FULLSCREEN -windowrulev2 = noblur, tag:games* -windowrulev2 = fullscreen, tag:games* - -#windowrulev2 = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1 -#windowrulev2 = bordercolor rgb(282737) rgb(1E1D2D), floating:1 -#windowrulev2 = opacity 0.8 0.8, pinned:1 - -# LAYER RULES -layerrule = blur, rofi -layerrule = ignorezero, rofi -layerrule = blur, notifications -layerrule = ignorezero, notifications -#layerrule = ignorealpha 0.5, tag:notif* - -#layerrule = ignorezero, class:^([Rr]ofi)$ -#layerrule = blur, class:^([Rr]ofi)$ -#layerrule = unset,class:^([Rr]ofi)$ -#layerrule = ignorezero, <rofi> - -#layerrule = ignorezero, overview -#layerrule = blur, overview
\ No newline at end of file diff --git a/config/hypr/UserConfigs/WindowRules.conf b/config/hypr/UserConfigs/WindowRules.conf index 2c24dafc..ee9eb317 100644 --- a/config/hypr/UserConfigs/WindowRules.conf +++ b/config/hypr/UserConfigs/WindowRules.conf @@ -2,234 +2,5 @@ # For window rules and layerrules # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -# NOTES: This is only for Hyprland > 0.48 - -# note for ja: This should NOT be implemented on Debian and Ubuntu - -# windowrule - tags - add apps under appropriate tag to use the same settings -# browser tags -windowrule = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$ -windowrule = tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$ -windowrule = tag +browser, class:^(chrome-.+-Default)$ # Chrome PWAs -windowrule = tag +browser, class:^([Cc]hromium)$ -windowrule = tag +browser, class:^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$ -windowrule = tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$ -windowrule = tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$ -windowrule = tag +browser, class:^(zen-alpha|zen)$ - -# notif tags -windowrule = tag +notif, class:^(swaync-control-center|swaync-notification-window|swaync-client|class)$ - -# KooL settings tag -windowrule = tag +KooL_Cheat, title:^(KooL Quick Cheat Sheet)$ -windowrule = tag +KooL_Settings, title:^(KooL Hyprland Settings)$ -windowrule = tag +KooL-Settings, class:^(nwg-displays|nwg-look)$ - -# terminal tags -windowrule = tag +terminal, class:^(Alacritty|kitty|kitty-dropterm)$ - -# email tags -windowrule = tag +email, class:^([Tt]hunderbird|org.gnome.Evolution)$ -windowrule = tag +email, class:^(eu.betterbird.Betterbird)$ - -# project tags -windowrule = tag +projects, class:^(codium|codium-url-handler|VSCodium)$ -windowrule = tag +projects, class:^(VSCode|code-url-handler)$ -windowrule = tag +projects, class:^(jetbrains-.+)$ # JetBrains IDEs - -# screenshare tags -windowrule = tag +screenshare, class:^(com.obsproject.Studio)$ - -# IM tags -windowrule = tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$ -windowrule = tag +im, class:^([Ff]erdium)$ -windowrule = tag +im, class:^([Ww]hatsapp-for-linux)$ -windowrule = tag +im, class:^(ZapZap|com.rtosta.zapzap)$ -windowrule = tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$ -windowrule = tag +im, class:^(teams-for-linux)$ -windowrule = tag +im, class:^(im.riot.Riot|Element)$ # Element Matrix client - -# game tags -windowrule = tag +games, class:^(gamescope)$ -windowrule = tag +games, class:^(steam_app_\d+)$ - -# gamestore tags -windowrule = tag +gamestore, class:^([Ss]team)$ -windowrule = tag +gamestore, title:^([Ll]utris)$ -windowrule = tag +gamestore, class:^(com.heroicgameslauncher.hgl)$ - -# file-manager tags -windowrule = tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$ -windowrule = tag +file-manager, class:^(app.drey.Warp)$ - -# wallpaper tags -windowrule = tag +wallpaper, class:^([Ww]aytrogen)$ - -# multimedia tags -windowrule = tag +multimedia, class:^([Aa]udacious)$ - -# multimedia-video tags -windowrule = tag +multimedia_video, class:^([Mm]pv|vlc)$ - -# settings tags -windowrule = tag +settings, title:^(ROG Control)$ -windowrule = tag +settings, class:^(wihotspot(-gui)?)$ # wifi hotspot -windowrule = tag +settings, class:^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer -windowrule = tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$ -windowrule = tag +settings, title:(Kvantum Manager) -windowrule = tag +settings, class:^(file-roller|org.gnome.FileRoller)$ # archive manager -windowrule = tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$ -windowrule = tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$ -windowrule = tag +settings, class:^(qt5ct|qt6ct|[Yy]ad)$ -windowrule = tag +settings, class:(xdg-desktop-portal-gtk) -windowrule = tag +settings, class:^(org.kde.polkit-kde-authentication-agent-1)$ -windowrule = tag +settings, class:^([Rr]ofi)$ - -# viewer tags -windowrule = tag +viewer, class:^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor -windowrule = tag +viewer, class:^(evince)$ # document viewer -windowrule = tag +viewer, class:^(eog|org.gnome.Loupe)$ # image viewer - -# Some special override rules -windowrule = noblur, tag:multimedia_video* -windowrule = opacity 1.0, tag:multimedia_video* - -# POSITION -# windowrule = center,floating:1 # warning, it cause even the menu to float and center. -windowrule = center, tag:KooL_Cheat* -windowrule = center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*) -windowrule = center, title:^(ROG Control)$ -windowrule = center, tag:KooL-Settings* -windowrule = center, title:^(Keybindings)$ -windowrule = center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$ -windowrule = center, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ -windowrule = center, class:^([Ff]erdium)$ -windowrule = move 72% 7%,title:^(Picture-in-Picture)$ -#windowrule = move 72% 7%,title:^(Firefox)$ - -# windowrule to avoid idle for fullscreen apps -#windowrule = idleinhibit fullscreen, class:^(*)$ -#windowrule = idleinhibit fullscreen, title:^(*)$ -windowrule = idleinhibit fullscreen, fullscreen:1 - -# windowrule move to workspace -#windowrule = workspace 1, tag:email* -#windowrule = workspace 2, tag:browser* -#windowrule = workspace 3, class:^([Tt]hunar)$ -#windowrule = workspace 3, tag:projects* -#windowrule = workspace 5, tag:gamestore* -#windowrule = workspace 7, tag:im* -#windowrule = workspace 8, tag:games* - -# windowrule move to workspace (silent) -#windowrule = workspace 4 silent, tag:screenshare* -#windowrule = workspace 6 silent, class:^(virt-manager)$ -#windowrule = workspace 6 silent, class:^(.virt-manager-wrapped)$ -#windowrule = workspace 9 silent, tag:multimedia* -# -# FLOAT -windowrule = float, tag:KooL_Cheat* -windowrule = float, tag:wallpaper* -windowrule = float, tag:settings* -windowrule = float, tag:viewer* -windowrule = float, tag:KooL-Settings* -windowrule = float, class:([Zz]oom|onedriver|onedriver-launcher)$ -windowrule = float, class:(org.gnome.Calculator), title:(Calculator) -windowrule = float, class:^(mpv|com.github.rafostar.Clapper)$ -windowrule = float, class:^([Qq]alculate-gtk)$ -#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ -windowrule = float, class:^([Ff]erdium)$ -windowrule = float, title:^(Picture-in-Picture)$ -#windowrule = float, title:^(Firefox)$ - -# windowrule - ######### float popups and dialogue ####### -windowrule = float, title:^(Authentication Required)$ -windowrule = center, title:^(Authentication Required)$ -windowrule = float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*) -windowrule = float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher) -windowrule = float, class:^([Ss]team)$, title:negative:^([Ss]team)$ -windowrule = float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*) - -windowrule = float, title:^(Add Folder to Workspace)$ -windowrule = size 70% 60%, title:^(Add Folder to Workspace)$ -windowrule = center, title:^(Add Folder to Workspace)$ - -windowrule = float, title:^(Save As)$ -windowrule = size 70% 60%, title:^(Save As)$ -windowrule = center, title:^(Save As)$ - -windowrule = float, initialTitle:(Open Files) -windowrule = size 70% 60%, initialTitle:(Open Files) - -windowrule = float, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background -windowrule = center, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background -windowrule = size 16% 12%, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background -# END of float popups and dialogue ####### - -# OPACITY -windowrule = opacity 0.99 0.8, tag:browser* -windowrule = opacity 0.9 0.8, tag:projects* -windowrule = opacity 0.94 0.86, tag:im* -windowrule = opacity 0.94 0.86, tag:multimedia* -windowrule = opacity 0.9 0.8, tag:file-manager* -windowrule = opacity 0.9 0.7, tag:terminal* -windowrule = opacity 0.8 0.7, tag:settings* -windowrule = opacity 0.82 0.75, tag:viewer* -windowrule = opacity 0.9 0.7, tag:wallpaper* -windowrule = opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$ -windowrule = opacity 0.9 0.8, class:^(deluge)$ -windowrule = opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui -windowrule = opacity 0.95 0.75, title:^(Picture-in-Picture)$ -windowrule = opacity 0.9,class:^(code)$ - -# SIZE -windowrule = size 65% 90%, tag:KooL_Cheat* -windowrule = size 70% 70%, tag:wallpaper* -windowrule = size 70% 70%, tag:settings* -windowrule = size 60% 70%, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ -windowrule = size 60% 70%, class:^([Ff]erdium)$ - -#windowrule = size 25% 25%, title:^(Picture-in-Picture)$ -#windowrule = size 25% 25%, title:^(Firefox)$ - -# PINNING -windowrule = pin, title:^(Picture-in-Picture)$ -#windowrule = pin,title:^(Firefox)$ - -# windowrule - extras -windowrule = keepaspectratio, title:^(Picture-in-Picture)$ - -# BLUR & FULLSCREEN -windowrule = noblur, tag:games* -windowrule = fullscreen, tag:games* - - -#This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products -windowrule = noinitialfocus, class:^(jetbrains-*) -windowrule = noinitialfocus, title:^(wind.*)$ - -#This will gonna make the VS Code bluer like other apps -windowrule = opacity 0.8,class:^(code)$ - -#windowrule = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1 -#windowrule = bordercolor rgb(282737) rgb(1E1D2D), floating:1 -#windowrule = opacity 0.8 0.8, pinned:1 - -# LAYER RULES -layerrule = blur, rofi -layerrule = ignorezero, rofi -layerrule = blur, notifications -layerrule = ignorezero, notifications -layerrule = blur, quickshell:overview -layerrule = ignorezero, quickshell:overview -layerrule = ignorealpha 0.5, quickshell:overview - -#layerrule = ignorealpha 0.5, tag:notif* - -#layerrule = ignorezero, class:^([Rr]ofi)$ -#layerrule = blur, class:^([Rr]ofi)$ -#layerrule = unset,class:^([Rr]ofi)$ -#layerrule = ignorezero, <rofi> - -#layerrule = ignorezero, overview -#layerrule = blur, overview +# This file is used to add or overwrite window rules +# This file will not be modified during dotfiles updates diff --git a/config/hypr/UserConfigs/WorkSpaceRules b/config/hypr/UserConfigs/WorkSpaceRules.conf index aa86b35c..aa86b35c 100644 --- a/config/hypr/UserConfigs/WorkSpaceRules +++ b/config/hypr/UserConfigs/WorkSpaceRules.conf diff --git a/config/hypr/UserScripts/WallpaperSelect.sh b/config/hypr/UserScripts/WallpaperSelect.sh index 9e51125f..0029d3e5 100755 --- a/config/hypr/UserScripts/WallpaperSelect.sh +++ b/config/hypr/UserScripts/WallpaperSelect.sh @@ -93,7 +93,7 @@ menu() { fi printf "%s\x00icon\x1f%s\n" "$pic_name" "$cache_preview_image" else - printf "%s\x00icon\x1f%s\n" "$(echo "$pic_name" | cut -d. -f1)" "$pic_path" + printf "%s\x00icon\x1f%s\n" "$pic_name" "$pic_path" fi done } diff --git a/config/hypr/UserScripts/Weather.py b/config/hypr/UserScripts/Weather.py index 7da48f1e..14256cfd 100755 --- a/config/hypr/UserScripts/Weather.py +++ b/config/hypr/UserScripts/Weather.py @@ -44,7 +44,7 @@ class WeatherData: # Examples (zsh): # # One-off run # # WEATHER_UNITS can be "metric" or "imperial" -# WEATHER_UNITS=imperial WEATHER_PLACE="Concord, NH" python3 /home/dwilliams/Projects/Weather.py +# WEATHER_UNITS=imperial WEATHER_PLACE="Concord, NH" python3 ~/.config/hypr/UserScripts/Weather.py # # # Persist in current shell session # export WEATHER_UNITS=imperial diff --git a/config/hypr/configs/ENVariables.conf b/config/hypr/configs/ENVariables.conf new file mode 100644 index 00000000..d38c2d36 --- /dev/null +++ b/config/hypr/configs/ENVariables.conf @@ -0,0 +1,92 @@ +# /* ---- π« https://github.com/JaKooLit π« ---- */ # +# Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/ + +# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf + +# environment-variables +# Current Version of JakooLit Dotfiles: +env = DOTS_VERSION,2.3.18 + +### Toolkit Backend Variables ### +env = GDK_BACKEND,wayland,x11,* +env = QT_QPA_PLATFORM,wayland;xcb +env = CLUTTER_BACKEND,wayland + +#Run SDL2 applications on Wayland. +#Remove or set to x11 if games that provide older versions of SDL cause compatibility issues +#env = SDL_VIDEODRIVER,wayland + +### XDG Specifications ### +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland + +### QT Variables ### +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_QPA_PLATFORMTHEME,qt5ct +env = QT_QPA_PLATFORMTHEME,qt6ct + +### hyprland-qt-support ### +env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style + +### xwayland apps scale fix (useful if you are use monitor scaling) ### +# Set same value if you use scaling in Monitors.conf +# 1 is 100% 1.5 is 150% +# see https://wiki.hyprland.org/Configuring/XWayland/ +env = GDK_SCALE,1 +env = QT_SCALE_FACTOR,1 + +# Bibata-Modern-Ice-Cursor +# NOTE! You must have the hyprcursor version to activate this. +# https://wiki.hyprland.org/Hypr-Ecosystem/hyprcursor/ +#env = HYPRCURSOR_THEME,Bibata-Modern-Ice +#env = HYPRCURSOR_SIZE,24 + +### firefox ### +env = MOZ_ENABLE_WAYLAND,1 + +### electron >28 apps (may help) ### +# https://www.electronjs.org/docs/latest/api/environment-variables +env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11 otherwise + +### NVIDIA ### +# This is from Hyprland Wiki. Below will be activated nvidia gpu detected +# See hyprland wiki https://wiki.hyprland.org/Nvidia/#environment-variables + +#env = LIBVA_DRIVER_NAME,nvidia +#env = __GLX_VENDOR_LIBRARY_NAME,nvidia +#env = NVD_BACKEND,direct +#env = GSK_RENDERER,ngl + +### additional ENV's for nvidia. Caution, activate with care ### +#env = GBM_BACKEND,nvidia-drm + +#env = __GL_GSYNC_ALLOWED,1 #adaptive Vsync +#env = __NV_PRIME_RENDER_OFFLOAD,1 +#env = __VK_LAYER_NV_optimus,NVIDIA_only +#env = WLR_DRM_NO_ATOMIC,1 + +### FOR VM and POSSIBLY NVIDIA ### +# LIBGL_ALWAYS_SOFTWARE software mesa rendering +#env = LIBGL_ALWAYS_SOFTWARE,1 # Warning. May cause hyprland to crash +#env = WLR_RENDERER_ALLOW_SOFTWARE,1 + +### nvidia firefox ### +# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration +#env = MOZ_DISABLE_RDD_SANDBOX,1 +#env = EGL_PLATFORM,wayland + +### Aquamarine Environment Variables (Hyprland > 0.45) ### +# https://wiki.hyprland.org/Configuring/Environment-variables/#aquamarine-environment-variables----ref-httpsgithubcomhyprwmaquamarineblobmaindocsenvmd--- +# env = AQ_TRACE,1 # Enables more verbose logging. +# env = AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 # Set an explicit list of DRM devices (GPUs) to use. Itβs a colon-separated list of paths, with the first being the primary. E.g. /dev/dri/card1:/dev/dri/card0 +# env = AQ_MGPU_NO_EXPLICIT,1 # Disables explicit syncing on mgpu buffers +# env = AQ_NO_MODIFIERS,1 # Disables modifiers for DRM buffers + +#### Hyprland Environment Variables #### +# https://wiki.hyprland.org/Configuring/Environment-variables/#hyprland-environment-variables +# env = HYPRLAND_TRACE,1 # Enables more verbose logging. +# env = HYPRLAND_NO_RT,1 # Disables realtime priority setting by Hyprland. +# env = HYPRLAND_NO_SD_NOTIFY,1 # If systemd, disables the 'sd_notify' calls. +# env = HYPRLAND_NO_SD_VARS,1 # Disables management of variables in systemd and dbus activation environments. diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf index fbe3bfe5..1ddbc81a 100644 --- a/config/hypr/configs/Keybinds.conf +++ b/config/hypr/configs/Keybinds.conf @@ -8,6 +8,72 @@ $scriptsDir = $HOME/.config/hypr/scripts $UserConfigs = $HOME/.config/hypr/UserConfigs $UserScripts = $HOME/.config/hypr/UserScripts +# settings for User defaults apps - set your default terminal and file manager on this file +source= $UserConfigs/01-UserDefaults.conf + +#### STANDAR #### +# Common shortcuts +#bindr = $mainMod, $mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window # Super Key to Launch rofi menu +bindd = $mainMod, D, app launcher, exec, pkill rofi || true && rofi -show drun -modi drun,filebrowser,run,window +bindd = $mainMod, B, open default browser, exec, xdg-open "https://" +bindd = $mainMod, A, desktop overview, exec, $scriptsDir/OverviewToggle.sh # toggles quickshell or ags overview (tries QS first, falls back to AGS) +#bindd = $mainMod, A, ags overview, exec, pkill rofi || true && ags -t 'overview' # desktop overview (if installed) +#bindd = $mainMod, A, Quickshell overview, global, quickshell:overviewToggle # desktop overview (if installed) +bindd = $mainMod, Return, Open terminal, exec, $term +bindd = $mainMod, E, file manager, exec, $files + +# FEATURES / EXTRAS +bindd = $mainMod, H, help / cheat sheet, exec, $scriptsDir/KeyHints.sh +bindd = $mainMod ALT, R, refresh bar and menus, exec, $scriptsDir/Refresh.sh +bindd = $mainMod ALT, E, emoji menu, exec, $scriptsDir/RofiEmoji.sh +bindd = $mainMod, S, web search, exec, $scriptsDir/RofiSearch.sh +bindd = $mainMod CTRL, S, window switcher, exec, rofi -show window +bindd = $mainMod ALT, O, toggle blur, exec, $scriptsDir/ChangeBlur.sh +bindd = $mainMod SHIFT, G, toggle game mode, exec, $scriptsDir/GameMode.sh +bindd = $mainMod ALT, L, toggle master/dwindle layout, exec, $scriptsDir/ChangeLayout.sh +bindd = $mainMod ALT, V, clipboard manager, exec, $scriptsDir/ClipManager.sh +bindd = $mainMod CTRL, R, rofi theme selector, exec, $scriptsDir/RofiThemeSelector.sh +bindd = $mainMod CTRL SHIFT, R, rofi theme selector (modified), exec, pkill rofi || true && $scriptsDir/RofiThemeSelector-modified.sh + +bindd = $mainMod SHIFT, F, fullscreen, fullscreen +bindd = $mainMod CTRL, F, maximize window, fullscreen, 1 +bindd = $mainMod, SPACE, Float current window, togglefloating, +bindd = $mainMod ALT, SPACE, Float all windows, exec, hyprctl dispatch workspaceopt allfloat +bindd = $mainMod SHIFT, Return, DropDown terminal, exec, $scriptsDir/Dropterminal.sh $term + +# Desktop zooming or magnifier +bindd = $mainMod ALT, mouse_down, zoom in, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 2.0}')" +bindd = $mainMod ALT, mouse_up, zoom out, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')" + +# Waybar / Bar related +bindd = $mainMod CTRL ALT, B, toggle waybar on/off, exec, pkill -SIGUSR1 waybar +bindd = $mainMod CTRL, B, waybar styles menu, exec, $scriptsDir/WaybarStyles.sh +bindd = $mainMod ALT, B, waybar layout menu, exec, $scriptsDir/WaybarLayout.sh + +# Night light toggle (Hyprsunset) +bindd = $mainMod, N, toggle night light, exec, $scriptsDir/Hyprsunset.sh toggle + +# FEATURES / EXTRAS (UserScripts) +bindd = $mainMod SHIFT, M, online music, exec, $UserScripts/RofiBeats.sh +bindd = $mainMod, W, select wallpaper, exec, $UserScripts/WallpaperSelect.sh +bindd = $mainMod SHIFT, W, wallpaper effects, exec, $UserScripts/WallpaperEffects.sh +bindd = CTRL ALT, W, random wallpaper, exec, $UserScripts/WallpaperRandom.sh +bindd = $mainMod CTRL, O, toggle active window opacity, exec, hyprctl setprop active opaque toggle +bindd = $mainMod SHIFT, K, search keybinds, exec, $scriptsDir/KeyBinds.sh +bindd = $mainMod SHIFT, A, animations menu, exec, $scriptsDir/Animations.sh +bindd = $mainMod SHIFT, O, change oh-my-zsh theme, exec, $UserScripts/ZshChangeTheme.sh +bindlnd = ALT_L, SHIFT_L, switch keyboard layout globally, exec, $scriptsDir/SwitchKeyboardLayout.sh +bindlnd = SHIFT_L, ALT_L, switch keyboard layout per-window, exec, $scriptsDir/Tak0-Per-Window-Switch.sh +bindd = $mainMod ALT, C, calculator, exec, $UserScripts/RofiCalc.sh + +# Move current workspaces to monitors (left right up or down) +bindd = $mainMod CTRL, F9, move workspace to left monitor, movecurrentworkspacetomonitor, l +bindd = $mainMod CTRL, F10, move workspace to right monitor, movecurrentworkspacetomonitor, r +bindd = $mainMod CTRL, F11, move workspace to up monitor, movecurrentworkspacetomonitor, u +bindd = $mainMod CTRL, F12, move workspace to down monitor, movecurrentworkspacetomonitor, d + + +#### SYSTEM #### bindd = CTRL ALT, Delete, exit Hyprland, exec, hyprctl dispatch exit 0 bindd = $mainMod, Q, close active window, killactive, bindd = $mainMod SHIFT, Q, Terminate active process, exec, $scriptsDir/KillActiveProcess.sh @@ -32,9 +98,6 @@ bindd = $mainMod, P, toggle pseudo (dwindle), pseudo, # Works on either layout (Master or Dwindle) bindd = $mainMod, M, set split ratio 0.3, exec, hyprctl dispatch splitratio 0.3 -# group -bindd = $mainMod, G, toggle group, togglegroup -bindd = $mainMod CTRL, tab, change active in group, changegroupactive # Cycle windows; if floating bring to top bindd = ALT, tab, cycle next window, cyclenext @@ -84,6 +147,24 @@ bindd = $mainMod ALT, right, swap window right, swapwindow, r bindd = $mainMod ALT, up, swap window up, swapwindow, u bindd = $mainMod ALT, down, swap window down, swapwindow, d +# group +bindd = $mainMod, G, toggle group, togglegroup + +# Navigate within a group +bindd = $mainMod, Tab, Change Group Forward, changegroupactive, f +bindd = $mainMod CTRL, tab, change active in group, changegroupactive +bindd = $mainMod SHIFT, Tab, Change Group Back, changegroupactive, b + +# Move window into/out of group +bindd = $mainMod CTRL, K, Move left into group, moveintogroup, l # Move active window left into a group A +bindd = $mainMod CTRL, L, Move Right into group, moveintogroup, r # Move active window right into a group +bindd = $mainMod CTRL, H, Move active out of group, moveoutofgroup # Move active window out of group + +# Try to dynamically move in grouped window and when ungrouped +# Not working for me DW 11/26/25 PR: https://github.com/JaKooLit/Hyprland-Dots/pull/872 +#bindd = $mainMod, right, focus right, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[-1] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus r; else hyprctl dispatch changegroupactive f; fi' +#bindd = $mainMod, left, focus left, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[0] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus l; else hyprctl dispatch changegroupactive b; fi' + # Move focus with mainMod + arrow keys bindd = $mainMod, left, focus left, movefocus, l bindd = $mainMod, right, focus right, movefocus, r diff --git a/config/hypr/configs/Laptops.conf b/config/hypr/configs/Laptops.conf new file mode 100644 index 00000000..d6addb1d --- /dev/null +++ b/config/hypr/configs/Laptops.conf @@ -0,0 +1,33 @@ +# /* ---- π« https://github.com/JaKooLit π« ---- */ # +# See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings +# These configs are mostly for laptops. This is addemdum to Keybinds.conf + +$mainMod = SUPER +$scriptsDir = $HOME/.config/hypr/scripts +$UserConfigs = $HOME/.config/hypr/UserConfigs + +# for disabling Touchpad. hyprctl devices to get device name. +$Touchpad_Device=asue1209:00-04f3:319f-touchpad + +binde = , xf86KbdBrightnessDown, exec, $scriptsDir/BrightnessKbd.sh --dec # decrease keyboard brightness +binde = , xf86KbdBrightnessUp, exec, $scriptsDir/BrightnessKbd.sh --inc # increase keyboard brightness +bind = , xf86Launch1, exec, rog-control-center # ASUS Armory crate button +bind = , xf86Launch3, exec, asusctl led-mode -n # FN+F4 Switch keyboard RGB profile +bind = , xf86Launch4, exec, asusctl profile -n # FN+F5 change of fan profiles (Quite, Balance, Performance) +binde = , xf86MonBrightnessDown, exec, $scriptsDir/Brightness.sh --dec # decrease monitor brightness +binde = , xf86MonBrightnessUp, exec, $scriptsDir/Brightness.sh --inc # increase monitor brightness +bind = , xf86TouchpadToggle, exec, $scriptsDir/TouchPad.sh # disable touchpad + +# Screenshot keybindings using F6 (no PrinSrc button) +bind = $mainMod, F6, exec, $scriptsDir/ScreenShot.sh --now # screenshot +bind = $mainMod SHIFT, F6, exec, $scriptsDir/ScreenShot.sh --area # screenshot (area) +bind = $mainMod CTRL, F6, exec, $scriptsDir/ScreenShot.sh --in5 # # screenshot (5 secs delay) +bind = $mainMod ALT, F6, exec, $scriptsDir/ScreenShot.sh --in10 # screenshot (10 secs delay) +bind = ALT, F6, exec, $scriptsDir/ScreenShot.sh --active # screenshot (active window only) + +$TOUCHPAD_ENABLED = true +device { + name = $Touchpad_Device + enabled = $TOUCHPAD_ENABLED +} + diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf index 07a92a3f..0cfb6427 100644 --- a/config/hypr/configs/Startup_Apps.conf +++ b/config/hypr/configs/Startup_Apps.conf @@ -9,19 +9,20 @@ $lock = $scriptsDir/LockScreen.sh $SwwwRandom = $UserScripts/WallpaperAutoChange.sh $livewallpaper="" -# wallpaper stuff +### wallpaper stuff ### exec-once = swww-daemon --format xrgb #exec-once = mpvpaper '*' -o "load-scripts=no no-audio --loop" $livewallpaper # wallpaper random #exec-once = $SwwwRandom $wallDIR # random wallpaper switcher every 30 minutes -# Startup +### Startup ### exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = $scriptsDir/KeybindsLayoutInit.sh -# Initialize Drop Down terminal - See Bug#810 https://github.com/JaKooLit/Hyprland-Dots/issues/810#issuecomment-3351947644 +# Drop Down terminal +# See Bug#810 https://github.com/JaKooLit/Hyprland-Dots/issues/810#issuecomment-3351947644 exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh kitty & @@ -36,24 +37,27 @@ exec-once = swaync #exec-once = blueman-applet #exec-once = rog-control-center exec-once = waybar -exec-once = qs # quickshell AGS Desktop Overview alternative +exec-once = qs -c overview # Quickshell Overview -#clipboard manager +# Clipboard manager exec-once = wl-paste --type text --watch cliphist store exec-once = wl-paste --type image --watch cliphist store # Rainbow borders exec-once = $UserScripts/RainbowBorders.sh -# Starting hypridle to start hyprlock +# hypridle for hyprlock exec-once = hypridle +# Resume Hyprsunset if state is "on" from previous session +exec-once = $scriptsDir/Hyprsunset.sh init # Here are list of features available but disabled by default -# exec-once = swww-daemon --format xrgb && swww img $HOME/Pictures/wallpapers/mecha-nostalgia.png # persistent wallpaper +# Persistent wallpaper +# exec-once = swww-daemon --format xrgb && swww img $HOME/Pictures/wallpapers/mecha-nostalgia.png -#gnome polkit for nixos +# Gnome polkit for NixOS #exec-once = $scriptsDir/Polkit-NixOS.sh # xdg-desktop-portal-hyprland (should be auto starting. However, you can force to start) -#exec-once = $scriptsDir/PortalHyprland.sh
\ No newline at end of file +#exec-once = $scriptsDir/PortalHyprland.sh diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf new file mode 100644 index 00000000..44521156 --- /dev/null +++ b/config/hypr/configs/SystemSettings.conf @@ -0,0 +1,124 @@ +# /* ---- π« https://github.com/JaKooLit π« ---- */ # +# Default settings +# This is where you put your own settings as this will not be touched during update +# if the upgrade.sh is used. + +# refer to Hyprland wiki for more info https://wiki.hyprland.org/Configuring/Variables/ +# NOTE: some settings are in ~/.config/hypr/UserConfigs/UserDecorAnimations.conf + +$scriptsDir = $HOME/.config/hypr/scripts + +dwindle { + pseudotile = true + preserve_split = true + #smart_split = true + special_scale_factor = 0.8 +} + +master { + new_status = master + new_on_top = 1 + mfact = 0.5 +} + +general { + resize_on_border = true + layout = dwindle +} + +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + repeat_rate = 50 + repeat_delay = 300 + + sensitivity = 0 #mouse sensitivity + #accel_profile = # flat or adaptive or blank or EMPTY means libinputβs default mode + numlock_by_default = true + left_handed = false + follow_mouse = 1 + float_switch_override_focus = false + + touchpad { + disable_while_typing = true + natural_scroll = true + clickfinger_behavior = false + middle_button_emulation = false + tap-to-click = true + drag_lock = false + } + + # below for devices with touchdevice ie. touchscreen + touchdevice { + enabled = true + } + + # below is for table see link above for proper variables + tablet { + transform = 0 + left_handed = 0 + } +} + + +gestures { + gesture = 3, horizontal, workspace + workspace_swipe_distance = 500 + workspace_swipe_invert = true + workspace_swipe_min_speed_to_force = 30 + workspace_swipe_cancel_ratio = 0.5 + workspace_swipe_create_new = true + workspace_swipe_forever = true + #workspace_swipe_use_r = true #uncomment if wanted a forever create a new workspace with swipe right + + gesture = 4, up, dispatcher, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 1.5}')" + gesture = 4, down, dispatcher, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 1.5}')" + gesture = 3, up, dispatcher, exec, $scriptsDir/OverviewToggle.sh +} + +misc { + disable_hyprland_logo = true + disable_splash_rendering = true + vfr = true + vrr = 2 + mouse_move_enables_dpms = true + enable_swallow = off + swallow_regex = ^(kitty)$ + focus_on_activate = false + initial_workspace_tracking = 0 + middle_click_paste = false + enable_anr_dialog = true # Application not Responding (ANR) + anr_missed_pings = 15 # ANR Threshold default 1 is too low + allow_session_lock_restore = true # Prevent lockscreen crash when resume from suspend +} + +#opengl { +# nvidia_anti_flicker = true +#} + +binds { + workspace_back_and_forth = true + allow_workspace_cycles = true + pass_mouse_when_bound = false +} + +#Could help when scaling and not pixelating +xwayland { + enabled = true + force_zero_scaling = true +} + +render { + direct_scanout = 0 +} + +cursor { + sync_gsettings_theme = true + no_hardware_cursors = 2 # change to 1 if want to disable + enable_hyprcursor = true + warp_on_change_workspace = 2 + no_warps = true +} diff --git a/config/hypr/configs/WindowRules-config-v3.conf b/config/hypr/configs/WindowRules-config-v3.conf new file mode 100644 index 00000000..fa62b316 --- /dev/null +++ b/config/hypr/configs/WindowRules-config-v3.conf @@ -0,0 +1,208 @@ +# /* ---- π« https://github.com/JaKooLit π« ---- */ # +# For window rules and layerrules +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + +# NOTES: This is only for Hyprland > 0.52.1 +# note: This should NOT be implemented on Debian and Ubuntu +# Vendor defaults for window rules and layerrules + +# windowrule - tags - add apps under appropriate tag to use the same settings +windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser +windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +browser +windowrule = match:class ^(chrome-.+-Default)$ # Chrome PWAs, tag +browser +windowrule = match:class ^([Cc]hromium)$, tag +browser +windowrule = match:class ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$, tag +browser +windowrule = match:class ^(Brave-browser(-beta|-dev|-unstable)?)$, tag +browser +windowrule = match:class ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser +windowrule = match:class ^(zen-alpha|zen)$, tag +browser + +windowrule = match:class ^(swaync-control-center|swaync-notification-window|swaync-client|class)$, tag +notif + +windowrule = match:title ^(KooL Quick Cheat Sheet)$, tag +KooL_Cheat +windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings +windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings + +windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal + +windowrule = match:class ^([Tt]hunderbird|org.gnome.Evolution)$, tag +email +windowrule = match:class ^(eu.betterbird.Betterbird)$, tag +email + +windowrule = match:class ^(codium|codium-url-handler|VSCodium)$, tag +projects +windowrule = match:class ^(VSCode|code-url-handler)$, tag +projects +windowrule = match:class ^(jetbrains-.+)$ # JetBrains IDEs, tag +projects + +windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare + +windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im +windowrule = match:class ^([Ff]erdium)$, tag +im +windowrule = match:class ^([Ww]hatsapp-for-linux)$, tag +im +windowrule = match:class ^(ZapZap|com.rtosta.zapzap)$, tag +im +windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im +windowrule = match:class ^(teams-for-linux)$, tag +im +windowrule = match:class ^(im.riot.Riot|Element)$ # Element Matrix client, tag +im + +windowrule = match:class ^(gamescope)$, tag +games +windowrule = match:class ^(steam_app_\d+)$, tag +games + +windowrule = match:class ^([Ss]team)$, tag +gamestore +windowrule = match:title ^([Ll]utris)$, tag +gamestore +windowrule = match:class ^(com.heroicgameslauncher.hgl)$, tag +gamestore + +windowrule = match:class ^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$, tag +file-manager +windowrule = match:class ^(app.drey.Warp)$, tag +file-manager + +windowrule = match:class ^([Ww]aytrogen)$, tag +wallpaper +windowrule = match:class ^([Aa]udacious)$, tag +multimedia +windowrule = match:class ^([Mm]pv|vlc)$, tag +multimedia_video + +windowrule = match:title ^(ROG Control)$, tag +settings +windowrule = match:class ^(wihotspot(-gui)?)$ # wifi hotspot, tag +settings +windowrule = match:class ^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer, tag +settings +windowrule = match:class ^(gnome-disks|wihotspot(-gui)?)$, tag +settings +windowrule = match:title (Kvantum Manager), tag +settings +windowrule = match:class ^(file-roller|org.gnome.FileRoller)$ # archive manager, tag +settings +windowrule = match:class ^(nm-applet|nm-connection-editor|blueman-manager)$, tag +settings +windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, tag +settings +windowrule = match:class ^(qt5ct|qt6ct|[Yy]ad)$, tag +settings +windowrule = match:class (xdg-desktop-portal-gtk), tag +settings +windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings +windowrule = match:class ^([Rr]ofi)$, tag +settings + +windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor, tag +viewer +windowrule = match:class ^(evince)$ # document viewer, tag +viewer +windowrule = match:class ^(eog|org.gnome.Loupe)$ # image viewer, tag +viewer + +windowrule = match:tag multimedia_video*, noblur +windowrule = match:tag multimedia_video*, opacity 1.0 + +# POSITION +windowrule = match:tag KooL_Cheat*, center +windowrule = match:class ([Tt]hunar) title negative:(.*[Tt]hunar.*), center +windowrule = match:title ^(ROG Control)$, center +windowrule = match:tag KooL-Settings*, center +windowrule = match:title ^(Keybindings)$, center +windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center +windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center +windowrule = match:class ^([Ff]erdium)$, center +windowrule = match:title ^(Picture-in-Picture)$, move 72% 7% +#windowrule = move 72% 7%,title:^(Firefox)$ + +# windowrule to avoid idle for fullscreen apps +#windowrule = idleinhibit fullscreen, class:^(*)$ +#windowrule = idleinhibit fullscreen, title:^(*)$ +windowrule = match:fullscreen 1, idleinhibit fullscreen + +# windowrule move to workspace +#windowrule = workspace 1, tag:email* +#windowrule = workspace 2, tag:browser* +#windowrule = workspace 3, class:^([Tt]hunar)$ +#windowrule = workspace 3, tag:projects* +#windowrule = workspace 5, tag:gamestore* +#windowrule = workspace 7, tag:im* +#windowrule = workspace 8, tag:games* + +# windowrule move to workspace (silent) +#windowrule = workspace 4 silent, tag:screenshare* +#windowrule = workspace 6 silent, class:^(virt-manager)$ +#windowrule = workspace 6 silent, class:^(.virt-manager-wrapped)$ +#windowrule = workspace 9 silent, tag:multimedia* + +# FLOAT +windowrule = match:tag KooL_Cheat*, float +windowrule = match:tag wallpaper*, float +windowrule = match:tag settings*, float +windowrule = match:tag viewer*, float +windowrule = match:tag KooL-Settings*, float +windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher)$, float +windowrule = match:class (org.gnome.Calculator) title (Calculator), float +windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float +windowrule = match:class ^([Qq]alculate-gtk)$, float +#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ +windowrule = match:class ^([Ff]erdium)$, float +windowrule = match:title ^(Picture-in-Picture)$, float +#windowrule = float, title:^(Firefox)$ + +# windowrule - ######### float popups and dialogue ####### +windowrule = match:title ^(Authentication Required)$, float +windowrule = match:title ^(Authentication Required)$, center +windowrule = match:class (codium|codium-url-handler|VSCodium) title negative:(.*codium.*|.*VSCodium.*), float +windowrule = match:class ^(com.heroicgameslauncher.hgl)$ title negative:(Heroic Games Launcher), float +windowrule = match:class ^([Ss]team)$ title negative:^([Ss]team)$, float +windowrule = match:class ([Tt]hunar) title negative:(.*[Tt]hunar.*), float +windowrule = match:title ^(Add Folder to Workspace)$, float +windowrule = match:title ^(Add Folder to Workspace)$, size 70% 60% +windowrule = match:title ^(Add Folder to Workspace)$, center +windowrule = match:title ^(Save As)$, float +windowrule = match:title ^(Save As)$, size 70% 60% +windowrule = match:title ^(Save As)$, center +windowrule = match:initialTitle (Open Files), float +windowrule = match:initialTitle (Open Files), size 70% 60% +windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, float +windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, center +windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, size 16% 12% +# END of float popups and dialogue ####### + +# OPACITY +windowrule = match:tag browser*, opacity 0.99 0.8 +windowrule = match:tag projects*, opacity 0.9 0.8 +windowrule = match:tag im*, opacity 0.94 0.86 +windowrule = match:tag multimedia*, opacity 0.94 0.86 +windowrule = match:tag file-manager*, opacity 0.9 0.8 +windowrule = match:tag terminal*, opacity 0.9 0.7 +windowrule = match:tag settings*, opacity 0.8 0.7 +windowrule = match:tag viewer*, opacity 0.82 0.75 +windowrule = match:tag wallpaper*, opacity 0.9 0.7 +windowrule = match:class ^(gedit|org.gnome.TextEditor|mousepad)$, opacity 0.8 0.7 +windowrule = match:class ^(deluge)$, opacity 0.9 0.8 +windowrule = match:class ^(seahorse)$ # gnome-keyring gui, opacity 0.9 0.8 +windowrule = match:title ^(Picture-in-Picture)$, opacity 0.95 0.75 +windowrule = match:class ^(code)$, opacity 0.9 + +# SIZE +windowrule = match:tag KooL_Cheat*, size 65% 90% +windowrule = match:tag wallpaper*, size 70% 70% +windowrule = match:tag settings*, size 70% 70% +windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, size 60% 70% +windowrule = match:class ^([Ff]erdium)$, size 60% 70% + +#windowrule = size 25% 25%, title:^(Picture-in-Picture)$ +#windowrule = size 25% 25%, title:^(Firefox)$ + +# PINNING +windowrule = match:title ^(Picture-in-Picture)$, pin +#windowrule = pin,title:^(Firefox)$ + +# windowrule - extras +windowrule = match:title ^(Picture-in-Picture)$, keepaspectratio + +# BLUR & FULLSCREEN +windowrule = match:tag games*, noblur +windowrule = match:tag games*, fullscreen + +#This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products +windowrule = match:class ^(jetbrains-*), noinitialfocus +windowrule = match:title ^(wind.*)$, noinitialfocus + +#This will gonna make the VS Code bluer like other apps +windowrule = match:class ^(code)$, opacity 0.8 + +#windowrule = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1 +#windowrule = bordercolor rgb(282737) rgb(1E1D2D), floating:1 +#windowrule = opacity 0.8 0.8, pinned:1 + +# LAYER RULES +layerrule = blur, rofi +layerrule = ignorezero, rofi +layerrule = blur, notifications +layerrule = ignorezero, notifications +layerrule = blur, quickshell:overview +layerrule = ignorezero, quickshell:overview +layerrule = ignorealpha 0.5, quickshell:overview + +#layerrule = ignorealpha 0.5, tag:notif* +#layerrule = ignorezero, class:^([Rr]ofi)$ +#layerrule = blur, class:^([Rr]ofi)$ +#layerrule = unset,class:^([Rr]ofi)$ +#layerrule = ignorezero, <rofi> +#layerrule = ignorezero, overview +#layerrule = blur, overview diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 8eb91df7..7119b3df 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -1,5 +1,5 @@ # /* ---- π« https://github.com/JaKooLit π« ---- */ # -# always refer to Hyprland wiki +# Always refer to Hyprland wiki # https://wiki.hyprland.org/ # Initial boot script enable to apply initial wallpapers, theming, new settings etc. @@ -7,37 +7,34 @@ # as long as the referrence file is present, this initial-boot.sh will not execute exec-once = $HOME/.config/hypr/initial-boot.sh -# Sourcing external config files +### Sourcing external config files ### $configs = $HOME/.config/hypr/configs # Default Configs directory path - -source=$configs/Keybinds.conf # Pre-configured keybinds - -# ## This is where you want to start tinkering $UserConfigs = $HOME/.config/hypr/UserConfigs # User Configs directory path -# Load vendor defaults, then user additions/overrides -source= $configs/Startup_Apps.conf +source=$configs/Keybinds.conf # Pre-configured keybinds -source= $UserConfigs/ENVariables.conf # Environment variables to load +# Load defaults, then user additions/overrides +source= $configs/Startup_Apps.conf +source= $UserConfigs/Startup_Apps.conf -#source= $UserConfigs/Monitors.conf # Its all about your monitor config (old dots) will remove on push to main -#source= $UserConfigs/WorkspaceRules.conf # Hyprland workspaces (old dots) will remove on push to main +source= $configs/ENVariables.conf # Environment variables (defaults) +source= $UserConfigs/ENVariables.conf # Environment variables (user) -source= $UserConfigs/Laptops.conf # For laptop related +# For laptop related +source= $configs/Laptops.conf +source= $UserConfigs/Laptops.conf +source= $UserConfigs/LaptopDisplay.conf -source= $UserConfigs/LaptopDisplay.conf # Laptop display related. You need to read the comment on this file +# Load defaults, then user additions +source= $configs/WindowRules.conf # Window Rules and Layer Rules (defaults) +source= $UserConfigs/WindowRules.conf # Window Rules and Layer Rules (user) -# Load vendor defaults, then user additions -source= $configs/WindowRules.conf # all about Hyprland Window Rules and Layer Rules (defaults) +source= $configs/SystemSettings.conf # Default config for hypr source= $UserConfigs/UserDecorations.conf # Decorations config file - source= $UserConfigs/UserAnimations.conf # Animation config file - source= $UserConfigs/UserKeybinds.conf # Put your own keybinds here - source= $UserConfigs/UserSettings.conf # Main Hyprland Settings. - source= $UserConfigs/01-UserDefaults.conf # settings for User defaults apps # nwg-displays diff --git a/config/hypr/hyprlock-1080p.conf b/config/hypr/hyprlock-1080p.conf index 14f2f35e..4251ac68 100644 --- a/config/hypr/hyprlock-1080p.conf +++ b/config/hypr/hyprlock-1080p.conf @@ -37,9 +37,9 @@ label { monitor = text = cmd[update:18000000] echo "<b> "$(date +'%A, %-d %B')" </b>" color = $color13 - font_size = 16 + font_size = 48 font_family = Victor Mono Bold Italic - position = 0, -120 + position = 0, -60 halign = center valign = center } @@ -47,42 +47,42 @@ label { # Hour-Time label { monitor = - text = cmd[update:1000] echo "$(date +"%H")" -# text = cmd[update:1000] echo "$(date +"%I")" #AM/PM +# text = cmd[update:1000] echo "$(date +"%H")" + text = cmd[update:1000] echo "$(date +"%I:%M %p")" #AM/PM #color = rgba(255, 185, 0, .8) - color = $color13 - font_size = 200 + color = $color8 + font_size = 130 font_family = JetBrainsMono Nerd Font ExtraBold - position = 0, -60 + position = 0, -250 halign = center valign = top } # Minute-Time -label { - monitor = - text = cmd[update:1000] echo "$(date +"%M")" - #color = rgba(15, 10, 222, .8) - color = $color12 - font_size = 200 - font_family = JetBrainsMono Nerd Font ExtraBold - position = 0, -340 - halign = center - valign = top -} +# label { +# monitor = +# text = cmd[update:1000] echo "$(date +"%M")" +# #color = rgba(15, 10, 222, .8) +# color = $color12 +# font_size = 150 +# font_family = JetBrainsMono Nerd Font ExtraBold +# position = 0, -340 +# halign = center + # valign = top +# } # Seconds-Time -label { - monitor = - text = cmd[update:1000] echo "$(date +"%S")" +#label { +# monitor = +## text = cmd[update:1000] echo "$(date +"%S")" # text = cmd[update:1000] echo "$(date +"%S %p")" #AM/PM - color = $color11 - font_size = 35 - font_family = JetBrainsMono Nerd Font ExtraBold - position = 0, -350 - halign = center - valign = top -} +# color = $color11 +# font_size = 32 +# font_family = JetBrainsMono Nerd Font ExtraBold +# position = 0, -350 +# halign = center +# valign = top +#} # Put a picture of choice here. Default is the current wallpaper #image { @@ -103,10 +103,10 @@ label { label { monitor = text = οΎ $USER - color = $color13 - font_size = 24 + color = $color9 + font_size = 36 font_family = Victor Mono Bold Oblique - position = 0, 220 + position = 0, 275 halign = center valign = bottom } @@ -114,12 +114,12 @@ label { # INPUT FIELD input-field { monitor = - size = 200, 60 + size = 230, 70 outline_thickness = 2 dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 dots_center = true - outer_color = $color11 + outer_color = $color8 inner_color = rgba(255, 255, 255, 0.1) capslock_color = rgb(255,255,255) font_color = $color13 @@ -136,8 +136,8 @@ input-field { label { monitor = text = $LAYOUT - color = $color13 - font_size = 10 + color = $color8 + font_size = 14 font_family = Victor Mono Bold Oblique position = 0, 70 halign = center @@ -148,8 +148,8 @@ label { label { monitor = text = cmd[update:60000] echo "<b> "$(uptime -p || $Scripts/UptimeNixOS.sh)" </b>" - color = $color13 - font_size = 16 + color = $color8 + font_size = 24 font_family = Victor Mono Bold Oblique position = 0, 0 halign = right @@ -160,7 +160,7 @@ label { label { monitor = text = cmd[update:1000] echo "<b> "$($Scripts/Battery.sh)" </b>" - color = $color13 + color = $color8 font_size = 16 font_family = Victor Mono Bold Oblique position = 0, 30 @@ -174,8 +174,8 @@ label { label { monitor = text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache" - color = $color13 - font_size = 16 + color = $color8 + font_size = 14 font_family = Victor Mono Bold Oblique position = 50, 0 halign = left diff --git a/config/hypr/hyprlock.conf b/config/hypr/hyprlock.conf index b67bba51..f359357f 100644 --- a/config/hypr/hyprlock.conf +++ b/config/hypr/hyprlock.conf @@ -37,52 +37,52 @@ label { monitor = text = cmd[update:18000000] echo "<b> "$(date +'%A, %-d %B')" </b>" color = $color13 - font_size = 18 + font_size = 64 font_family = Victor Mono Bold Italic - position = 0, -120 + position = 0, -20 halign = center valign = center } -# Hour-Time +# Hour-Time (single horizontal time like 1080p variant) label { monitor = - text = cmd[update:1000] echo "$(date +"%H")" -# text = cmd[update:1000] echo "$(date +"%I")" #AM/PM +# text = cmd[update:1000] echo "$(date +"%H:%M")" # 24h option + text = cmd[update:1000] echo "$(date +"%I:%M %p")" # AM/PM #color = rgba(255, 185, 0, .8) - color = $color13 - font_size = 240 + color = $color8 + font_size = 173 font_family = JetBrainsMono Nerd Font ExtraBold - position = 0, -100 + position = 0, -133 halign = center valign = top } -# Minute-Time -label { - monitor = - text = cmd[update:1000] echo "$(date +"%M")" - #color = rgba(15, 10, 222, .8) - color = $color12 - font_size = 240 - font_family = JetBrainsMono Nerd Font ExtraBold - position = 0, -450 - halign = center - valign = top -} +# Minute-Time (disabled; kept for reference) +# label { +# monitor = +# text = cmd[update:1000] echo "$(date +"%M")" +# #color = rgba(15, 10, 222, .8) +# color = $color12 +# font_size = 240 +# font_family = JetBrainsMono Nerd Font ExtraBold +# position = 0, -450 +# halign = center +# valign = top +# } -# Seconds-Time -label { - monitor = - text = cmd[update:1000] echo "$(date +"%S")" -# text = cmd[update:1000] echo "$(date +"%S %p")" #AM/PM - color = $color11 - font_size = 50 - font_family = JetBrainsMono Nerd Font ExtraBold - position = 0, -450 - halign = center - valign = top -} +# Seconds-Time (disabled; kept for reference) +# label { +# monitor = +# text = cmd[update:1000] echo "$(date +"%S")" +# # text = cmd[update:1000] echo "$(date +"%S %p")" #AM/PM +# color = $color11 +# font_size = 50 +# font_family = JetBrainsMono Nerd Font ExtraBold +# position = 0, -450 +# halign = center +# valign = top +# } # Put a picture of choice here. Default is the current wallpaper #image { @@ -103,10 +103,10 @@ label { label { monitor = text = οΎ $USER - color = $color13 - font_size = 24 + color = $color9 + font_size = 48 font_family = Victor Mono Bold Oblique - position = 0, 280 + position = 0, 300 halign = center valign = bottom } @@ -114,33 +114,32 @@ label { # INPUT FIELD input-field { monitor = - size = 300, 60 + size = 306, 93 outline_thickness = 2 dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 dots_center = true - outer_color = $color11 + outer_color = $color8 inner_color = rgba(255, 255, 255, 0.1) + capslock_color = rgb(255,255,255) font_color = $color13 - capslock_color = rgb(255,255,255) fade_on_empty = false font_family = Victor Mono Bold Oblique placeholder_text = <i><span foreground="##ffffff99">π Type Password</span></i> hide_input = false - position = 0, 120 + position = 0, 100 halign = center valign = bottom } - # Keyboard LAYOUT label { monitor = text = $LAYOUT - color = $color13 - font_size = 12 + color = $color8 + font_size = 19 font_family = Victor Mono Bold Oblique - position = 0, 80 + position = 0, 53 halign = center valign = bottom } @@ -149,8 +148,8 @@ label { label { monitor = text = cmd[update:60000] echo "<b> "$(uptime -p || $Scripts/UptimeNixOS.sh)" </b>" - color = $color13 - font_size = 18 + color = $color8 + font_size = 32 font_family = Victor Mono Bold Oblique position = 0, 0 halign = right @@ -161,10 +160,10 @@ label { label { monitor = text = cmd[update:1000] echo "<b> "$($Scripts/Battery.sh)" </b>" - color = $color13 - font_size = 18 + color = $color8 + font_size = 21 font_family = Victor Mono Bold Oblique - position = 0, 30 + position = 0, 40 halign = right valign = bottom } @@ -175,8 +174,8 @@ label { label { monitor = text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache" - color = $color13 - font_size = 18 + color = $color8 + font_size = 19 font_family = Victor Mono Bold Oblique position = 50, 0 halign = left diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh index 78428188..e2436b79 100755 --- a/config/hypr/scripts/ChangeLayout.sh +++ b/config/hypr/scripts/ChangeLayout.sh @@ -9,20 +9,14 @@ LAYOUT=$(hyprctl -j getoption general:layout | jq '.str' | sed 's/"//g') case $LAYOUT in "master") hyprctl keyword general:layout dwindle - hyprctl keyword unbind SUPER,J - hyprctl keyword unbind SUPER,K - hyprctl keyword bind SUPER,J,cyclenext - hyprctl keyword bind SUPER,K,cyclenext,prev + # SUPER+J/K are global and managed by KeybindsLayoutInit.sh; only manage SUPER+O here hyprctl keyword bind SUPER,O,togglesplit notify-send -e -u low -i "$notif" " Dwindle Layout" ;; "dwindle") hyprctl keyword general:layout master - hyprctl keyword unbind SUPER,J - hyprctl keyword unbind SUPER,K + # Drop togglesplit binding on SUPER+O when switching back to master hyprctl keyword unbind SUPER,O - hyprctl keyword bind SUPER,J,layoutmsg,cyclenext - hyprctl keyword bind SUPER,K,layoutmsg,cycleprev notify-send -e -u low -i "$notif" " Master Layout" ;; *) ;; diff --git a/config/hypr/scripts/GameMode.sh b/config/hypr/scripts/GameMode.sh index ec1e541e..59cf7372 100755 --- a/config/hypr/scripts/GameMode.sh +++ b/config/hypr/scripts/GameMode.sh @@ -20,6 +20,7 @@ if [ "$HYPRGAMEMODE" = 1 ] ; then hyprctl keyword "windowrule opacity 1 override 1 override 1 override, ^(.*)$" swww kill notify-send -e -u low -i "$notif" " Gamemode:" " enabled" + sleep 0.1 exit else swww-daemon --format xrgb && swww img "$HOME/.config/rofi/.current_wallpaper" & diff --git a/config/hypr/scripts/Hyprsunset.sh b/config/hypr/scripts/Hyprsunset.sh index c7c4b395..4a2b52f4 100755 --- a/config/hypr/scripts/Hyprsunset.sh +++ b/config/hypr/scripts/Hyprsunset.sh @@ -8,12 +8,12 @@ set -euo pipefail # - On: sunset icon if available, otherwise a blue sun # # Customize via env vars: -# HYPERSUNSET_TEMP default 4500 (K) -# HYPERSUNSET_ICON_MODE sunset|blue (default: sunset) +# HYPRSUNSET_TEMP default 4500 (K) +# HYPRSUNSET_ICON_MODE sunset|blue (default: sunset) STATE_FILE="$HOME/.cache/.hyprsunset_state" -TARGET_TEMP="${HYPERSUNSET_TEMP:-4500}" -ICON_MODE="${HYPERSUNSET_ICON_MODE:-sunset}" +TARGET_TEMP="${HYPRSUNSET_TEMP:-4500}" +ICON_MODE="${HYPRSUNSET_ICON_MODE:-sunset}" ensure_state() { [[ -f "$STATE_FILE" ]] || echo "off" > "$STATE_FILE" @@ -92,8 +92,20 @@ cmd_status() { printf '{"text":"%s","class":"%s","tooltip":"%s"}\n' "$txt" "$cls" "$tip" } +cmd_init() { + ensure_state + state="$(cat "$STATE_FILE" || echo off)" + + if [[ "$state" == "on" ]]; then + if command -v hyprsunset >/dev/null 2>&1; then + nohup hyprsunset -t "$TARGET_TEMP" >/dev/null 2>&1 & + fi + fi +} + case "${1:-}" in toggle) cmd_toggle ;; status) cmd_status ;; - *) echo "usage: $0 [toggle|status]" >&2; exit 2 ;; + init) cmd_init ;; + *) echo "usage: $0 [toggle|status|init]" >&2; exit 2 ;; esac diff --git a/config/hypr/scripts/KeyBinds.sh b/config/hypr/scripts/KeyBinds.sh index 46953cc5..4158b762 100755 --- a/config/hypr/scripts/KeyBinds.sh +++ b/config/hypr/scripts/KeyBinds.sh @@ -21,9 +21,87 @@ msg='β£οΈ NOTE β£οΈ: Clicking with Mouse or Pressing ENTER will have NO func files=("$keybinds_conf" "$user_keybinds_conf") [[ -f "$laptop_conf" ]] && files+=("$laptop_conf") -raw_keybinds=$(cat "${files[@]}" 2>/dev/null \ - | grep -E '^[[:space:]]*bind' \ - | sed -E 's/[[:space:]]+#.*$//') +# Parse binds/unbinds from files, detect overrides, and keep unique effective binds +declare -A binding_map # combo -> bind line (effective) +declare -A source_map # combo -> source file +declare -A user_bind_map # combo -> user bind line +declare -A unbound_user # combo -> 1 if explicitly unbound in user file +declare -A seen_any_bind # combo -> 1 if any bind seen (for iteration) +declare -A default_seen # combo -> 1 if default bind exists +declare -a missing_unbind_suggestions_arr + +normalize_combo() { echo "$1" | sed -E 's/[[:space:]]//g'; } + +extract_combo() { + # arg: a bind/unbind line; returns "mods,key" via echo + local s="$1" + s="$(echo "$s" | sed -E 's/[[:space:]]+#.*$//')" + if [[ "$s" =~ = ]]; then + local rhs="${s#*=}" + local mods="$(echo "$rhs" | awk -F',' '{gsub(/^[ \t]+|[ \t]+$/,"",$1); print $1}')" + local key="$(echo "$rhs" | awk -F',' '{gsub(/^[ \t]+|[ \t]+$/,"",$2); print $2}')" + echo "${mods},${key}" + fi +} + +for file in "${files[@]}"; do + [[ ! -f "$file" ]] && continue + while IFS= read -r line; do + [[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue + + if [[ "$line" =~ ^[[:space:]]*bind[a-z]*[[:space:]]*= ]]; then + combo_raw="$(extract_combo "$line")" + [[ -z "$combo_raw" ]] && continue + combo="$(normalize_combo "$combo_raw")" + seen_any_bind["$combo"]=1 + + if [[ "$file" != "$user_keybinds_conf" ]]; then + default_seen["$combo"]=1 + fi + + # prefer user bind, else first seen + if [[ -z "${source_map[$combo]}" ]]; then + binding_map["$combo"]="$line" + source_map["$combo"]="$file" + fi + if [[ "$file" == "$user_keybinds_conf" ]]; then + user_bind_map["$combo"]="$line" + binding_map["$combo"]="$line" + source_map["$combo"]="$file" + fi + + elif [[ "$line" =~ ^[[:space:]]*unbind[[:space:]]*= ]]; then + combo_raw="$(extract_combo "$line")" + [[ -z "$combo_raw" ]] && continue + combo="$(normalize_combo "$combo_raw")" + if [[ "$file" == "$user_keybinds_conf" ]]; then + unbound_user["$combo"]=1 + fi + fi + done < "$file" +done + +# Build raw_keybinds for display and collect missing unbind suggestions +raw_keybinds="" +for combo in "${!seen_any_bind[@]}"; do + eff_line="${binding_map[$combo]}" + src="${source_map[$combo]}" + [[ -z "$eff_line" ]] && continue + raw_keybinds+="$eff_line"$'\n' + + # If user overrides a default but didn't unbind in user file, suggest unbind + if [[ "$src" == "$user_keybinds_conf" && -n "${default_seen[$combo]}" && -z "${unbound_user[$combo]}" ]]; then + suggest="$(echo "$eff_line" | sed -E 's/^[[:space:]]*bind[a-z]*/unbind/')" + missing_unbind_suggestions_arr+=("$suggest") + fi +done + +# If there are missing unbinds, write suggestions to a temp file and note in message +if (( ${#missing_unbind_suggestions_arr[@]} > 0 )); then + suggestions_file="$(mktemp -t hypr-unbind-suggestions.XXXX.conf)" + printf '%s\n' "${missing_unbind_suggestions_arr[@]}" > "$suggestions_file" + msg="$msg | Overrides missing unbind: ${#missing_unbind_suggestions_arr[@]} (suggestions: $suggestions_file)" +fi # check for any keybinds to display if [[ -z "$raw_keybinds" ]]; then @@ -31,7 +109,7 @@ if [[ -z "$raw_keybinds" ]]; then exit 1 fi -# transform into a readable list: MODS+KEY β DESCRIPTION β DISPATCHER [PARAMS] +# transform into a readable list: MODS+KEY β DESCRIPTION (for bindd) or DISPATCHER [PARAMS] (for bind) display_keybinds=$(echo "$raw_keybinds" | awk -F'=' ' function trim(s){ gsub(/^[ \t]+|[ \t]+$/,"",s); return s } /^[[:space:]]*bind/ { @@ -60,13 +138,8 @@ display_keybinds=$(echo "$raw_keybinds" | awk -F'=' ' combo = (mods && key) ? mods "+" key : (key?key:mods); - if (desc != "") { - if (dispatcher != "" && params != "") - print combo, " β ", desc, " β ", dispatcher, " ", params; - else if (dispatcher != "") - print combo, " β ", desc, " β ", dispatcher; - else - print combo, " β ", desc; + if (hasdesc && desc != "") { + print combo, " β ", desc; } else { if (dispatcher != "" && params != "") print combo, " β ", dispatcher, " ", params; diff --git a/config/hypr/scripts/KeybindsLayoutInit.sh b/config/hypr/scripts/KeybindsLayoutInit.sh index fd34f90e..0a53eaaf 100755 --- a/config/hypr/scripts/KeybindsLayoutInit.sh +++ b/config/hypr/scripts/KeybindsLayoutInit.sh @@ -1,38 +1,14 @@ #!/usr/bin/env bash # /* ---- π« https://github.com/JaKooLit π« ---- */ ## -# Initialize J/K keybinds to match the current default layout at startup +# Initialize J/K keybinds so they always cycle windows globally (no layout-specific behavior) +# This avoids double-actions when layouts change. set -euo pipefail -# Determine current layout (master|dwindle); be robust to null at startup -LAYOUT=$(hyprctl -j getoption general:layout | jq -r '.str // empty' 2>/dev/null || true) -if [ -z "${LAYOUT:-}" ]; then - # Fallback: parse non-JSON output (e.g., "str: dwindle") - LAYOUT=$(hyprctl getoption general:layout 2>/dev/null | awk -F'str:' 'NF>1 {gsub(/^ +| +$/,"",$2); print $2}') -fi -[ -z "${LAYOUT:-}" ] && exit 0 +# Always reset and bind SUPER+J/K the same way on startup +hyprctl keyword unbind SUPER,J || true +hyprctl keyword unbind SUPER,K || true -case "$LAYOUT" in - master) - # Ensure master layout-style binds - hyprctl keyword unbind SUPER,J - hyprctl keyword unbind SUPER,K - hyprctl keyword unbind SUPER,O - hyprctl keyword bind SUPER,J,layoutmsg,cyclenext - hyprctl keyword bind SUPER,K,layoutmsg,cycleprev - ;; - dwindle) - # Ensure dwindle layout-style binds - hyprctl keyword unbind SUPER,J - hyprctl keyword unbind SUPER,K - hyprctl keyword unbind SUPER,O - hyprctl keyword bind SUPER,J,cyclenext - hyprctl keyword bind SUPER,K,cyclenext,prev - # ensure SUPER+O togglesplit is available on dwindle - hyprctl keyword bind SUPER,O,togglesplit - ;; - *) - # Do nothing for unexpected values - : - ;; - esac +# Cycle windows globally: J = next, K = previous +hyprctl keyword bind SUPER,J,cyclenext +hyprctl keyword bind SUPER,K,cyclenext,prev diff --git a/config/hypr/scripts/Kool_Quick_Settings.sh b/config/hypr/scripts/Kool_Quick_Settings.sh index 16742492..8ab71ba2 100755 --- a/config/hypr/scripts/Kool_Quick_Settings.sh +++ b/config/hypr/scripts/Kool_Quick_Settings.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # /* ---- π« https://github.com/JaKooLit π« ---- */ ## # Rofi menu for KooL Hyprland Quick Settings (SUPER SHIFT E) +# Updated for UserConfigs/configs separation # Modify this config file for default terminal and EDITOR config_file="$HOME/.config/hypr/UserConfigs/01-UserDefaults.conf" @@ -19,19 +20,30 @@ iDIR="$HOME/.config/swaync/images" scriptsDir="$HOME/.config/hypr/scripts" UserScripts="$HOME/.config/hypr/UserScripts" +# Function to show info notification +show_info() { + notify-send -i "$iDIR/info.png" "Info" "$1" +} + # Function to display the menu options without numbers menu() { cat <<EOF -view/edit User Defaults -view/edit ENV variables -view/edit Window Rules -view/edit User Keybinds -view/edit User Settings -view/edit Startup Apps -view/edit Decorations -view/edit Animations -view/edit Laptop Keybinds -view/edit Default Keybinds +--- USER CUSTOMIZATIONS --- +Edit User Defaults +Edit User Keybinds +Edit User ENV variables +Edit User Startup Apps (overlay) +Edit User Window Rules (overlay) +Edit User Settings +Edit User Decorations +Edit User Animations +Edit User Laptop Settings +--- SYSTEM DEFAULTS --- +Edit System Default Keybinds +Edit System Default Startup Apps +Edit System Default Window Rules +Edit System Default Settings +--- UTILITIES --- Choose Kitty Terminal Theme Configure Monitors (nwg-displays) Configure Workspace Rules (nwg-displays) @@ -53,16 +65,19 @@ main() { # Map choices to corresponding files case "$choice" in - "view/edit User Defaults") file="$UserConfigs/01-UserDefaults.conf" ;; - "view/edit ENV variables") file="$UserConfigs/ENVariables.conf" ;; - "view/edit Window Rules") file="$configs/WindowRules.conf" ;; - "view/edit User Keybinds") file="$UserConfigs/UserKeybinds.conf" ;; - "view/edit User Settings") file="$UserConfigs/UserSettings.conf" ;; - "view/edit Startup Apps") file="$configs/Startup_Apps.conf" ;; - "view/edit Decorations") file="$UserConfigs/UserDecorations.conf" ;; - "view/edit Animations") file="$UserConfigs/UserAnimations.conf" ;; - "view/edit Laptop Keybinds") file="$UserConfigs/Laptops.conf" ;; - "view/edit Default Keybinds") file="$configs/Keybinds.conf" ;; + "Edit User Defaults") file="$UserConfigs/01-UserDefaults.conf" ;; + "Edit User ENV variables") file="$UserConfigs/ENVariables.conf" ;; + "Edit User Keybinds") file="$UserConfigs/UserKeybinds.conf" ;; + "Edit User Startup Apps (overlay)") file="$UserConfigs/Startup_Apps.conf" ;; + "Edit User Window Rules (overlay)") file="$UserConfigs/WindowRules.conf" ;; + "Edit User Settings") file="$configs/SystemSettings.conf"; show_info "Editing default settings. Copy to UserConfigs/UserSettings.conf to override." ;; + "Edit User Decorations") file="$UserConfigs/UserDecorations.conf" ;; + "Edit User Animations") file="$UserConfigs/UserAnimations.conf" ;; + "Edit User Laptop Settings") file="$UserConfigs/Laptops.conf" ;; + "Edit System Default Keybinds") file="$configs/Keybinds.conf" ;; + "Edit System Default Startup Apps") file="$configs/Startup_Apps.conf" ;; + "Edit System Default Window Rules") file="$configs/WindowRules.conf" ;; + "Edit System Default Settings") file="$configs/SystemSettings.conf" ;; "Choose Kitty Terminal Theme") $scriptsDir/Kitty_themes.sh ;; "Configure Monitors (nwg-displays)") if ! command -v nwg-displays &>/dev/null; then @@ -114,4 +129,4 @@ if pidof rofi > /dev/null; then pkill rofi fi -main
\ No newline at end of file +main diff --git a/config/hypr/scripts/OverviewToggle.sh b/config/hypr/scripts/OverviewToggle.sh index 21c2da34..8d4b285f 100755 --- a/config/hypr/scripts/OverviewToggle.sh +++ b/config/hypr/scripts/OverviewToggle.sh @@ -4,16 +4,18 @@ set -euo pipefail -# 1) Try Quickshell via Hyprland global dispatch (works if QS is running and listening) -if hyprctl dispatch global quickshell:overviewToggle >/dev/null 2>&1; then - exit 0 +# 1) Try Quickshell via IPC (works if QS is running and listening) +if pgrep -x quickshell >/dev/null 2>&1; then + if qs ipc -c overview call overview toggle >/dev/null 2>&1; then + exit 0 + fi fi -# If QS isn't running, try starting it and retry once +# If QS isn't running, but the CLI exists, try starting it and retry once if command -v qs >/dev/null 2>&1; then - qs >/dev/null 2>&1 & + qs -c overview >/dev/null 2>&1 & sleep 0.6 - if hyprctl dispatch global quickshell:overviewToggle >/dev/null 2>&1; then + if qs ipc -c overview call overview toggle >/dev/null 2>&1; then exit 0 fi fi diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh index 2e772aa9..76757aa4 100755 --- a/config/hypr/scripts/Refresh.sh +++ b/config/hypr/scripts/Refresh.sh @@ -7,23 +7,25 @@ UserScripts=$HOME/.config/hypr/UserScripts # Define file_exists function file_exists() { - if [ -e "$1" ]; then - return 0 # File exists - else - return 1 # File does not exist - fi + if [ -e "$1" ]; then + return 0 # File exists + else + return 1 # File does not exist + fi } # Kill already running processes _ps=(waybar rofi swaync ags) for _prs in "${_ps[@]}"; do - if pidof "${_prs}" >/dev/null; then - pkill "${_prs}" - fi + if pidof "${_prs}" >/dev/null; then + pkill "${_prs}" + fi done # added since wallust sometimes not applying -killall -SIGUSR2 waybar +killall -SIGUSR2 waybar +# Added sleep for GameMode causing multiple waybar +sleep 0.1 # quit ags & relaunch ags #ags -q && ags & @@ -33,23 +35,24 @@ killall -SIGUSR2 waybar # some process to kill for pid in $(pidof waybar rofi swaync ags swaybg); do - kill -SIGUSR1 "$pid" + kill -SIGUSR1 "$pid" + sleep 0.1 done #Restart waybar -sleep 1 +sleep 0.1 waybar & # relaunch swaync -sleep 0.5 -swaync > /dev/null 2>&1 & +sleep 0.3 +swaync >/dev/null 2>&1 & # reload swaync swaync-client --reload-config # Relaunching rainbow borders if the script exists sleep 1 if file_exists "${UserScripts}/RainbowBorders.sh"; then - ${UserScripts}/RainbowBorders.sh & + ${UserScripts}/RainbowBorders.sh & fi -exit 0
\ No newline at end of file +exit 0 diff --git a/config/hypr/scripts/UserConfigsSwitcher.sh b/config/hypr/scripts/UserConfigsSwitcher.sh new file mode 100755 index 00000000..ad1d4e63 --- /dev/null +++ b/config/hypr/scripts/UserConfigsSwitcher.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +# /* ---- π« https://github.com/JaKooLit π« ---- */ ## +# Script to manage UserConfigs and UserConfigsBak + +HYPR_CONFIG_DIR="$HOME/.config/hypr" +USER_CONFIGS="$HYPR_CONFIG_DIR/UserConfigs" +USER_CONFIGS_BAK="$HYPR_CONFIG_DIR/UserConfigsBak" + +if [ -d "$USER_CONFIGS" ] && [ ! -d "$USER_CONFIGS_BAK" ]; then + echo "Moving UserConfigs to UserConfigsBak..." + mv "$USER_CONFIGS" "$USER_CONFIGS_BAK" + echo "Done. Your UserConfigs are now in UserConfigsBak." +elif [ ! -d "$USER_CONFIGS" ] && [ -d "$USER_CONFIGS_BAK" ]; then + echo "Moving UserConfigsBak to UserConfigs..." + mv "$USER_CONFIGS_BAK" "$USER_CONFIGS" + echo "Done. Your backup has been restored to UserConfigs." +elif [ -d "$USER_CONFIGS" ] && [ -d "$USER_CONFIGS_BAK" ]; then + echo "Both UserConfigs and UserConfigsBak exist." + echo "Please choose what to do:" + PS3="Enter your choice: " + select option in "Backup current UserConfigs (move to UserConfigsBak)" "Restore backup (move UserConfigsBak to UserConfigs)" "Swap them" "Do nothing"; do + case $REPLY in + 1) + echo "Backing up UserConfigs..." + rm -rf "$USER_CONFIGS_BAK" + mv "$USER_CONFIGS" "$USER_CONFIGS_BAK" + echo "Done. UserConfigs moved to UserConfigsBak." + break + ;; + 2) + echo "Restoring backup..." + rm -rf "$USER_CONFIGS" + mv "$USER_CONFIGS_BAK" "$USER_CONFIGS" + echo "Done. UserConfigsBak moved to UserConfigs." + break + ;; + 3) + echo "Swapping..." + mv "$USER_CONFIGS" "$HYPR_CONFIG_DIR/UserConfigs.tmp" + mv "$USER_CONFIGS_BAK" "$USER_CONFIGS" + mv "$HYPR_CONFIG_DIR/UserConfigs.tmp" "$USER_CONFIGS_BAK" + echo "Done. UserConfigs and UserConfigsBak have been swapped." + break + ;; + 4) + echo "No changes made." + break + ;; + *) + echo "Invalid option. Please try again." + ;; + esac + done +else + echo "Neither UserConfigs nor UserConfigsBak directory found. Nothing to do." +fi |
