diff options
| author | Donald Williams <129223418+dwilliam62@users.noreply.github.com> | 2026-03-31 00:01:05 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-31 00:01:05 -0400 |
| commit | e4b9059d346e6a6dbd6216cd1fb5e41085bb6e7b (patch) | |
| tree | f0d18c37bbc34801a7bf0a21fe49b4a22aedc57a /config | |
| parent | 79d42f055949b59f9c6a8f039eb4c90561b0d2ac (diff) | |
Updating Hyprland to v2.3.22 (#40)
* Updated version to 2.3.22 on development branch
v2.3.21 released on 2/23/26
v2.3.22 next release branch
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/ENVariables.conf
renamed: config/hypr/v2.3.21 -> config/hypr/v2.3.22
* Changed dotfiles name to KoolDots in fastfetch
* Added two new rofi themes
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/rofi/themes/KooL_TokyoNight.rasi
new file: config/rofi/themes/KooL_dwm.rasi
* Fixed new rofi themes
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/rofi/themes/KooL_TokyoNight.rasi
modified: config/rofi/themes/KooL_dwm.rasi
* Added DWM dmenu inspired app menus horiz & vertical
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/rofi/dwm-config-horiz.rasi
new file: config/rofi/dwm-config-vert.rasi
new file: config/rofi/dwm-dmenu-horiz.rasi
new file: config/rofi/dwm-dmenu-vert.rasi
* Had both QT5CT and QT6CT variables
Added style ENV for kvantum
```
env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_STYLE_OVERRIDE,kvantum
```
Trying this to see if that allows support for kvantum but not
break existing config
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/ENVariables.conf
* Updated headers with new Project name and add GPLv3 license
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Distro-Hyprland.sh
modified: archive/release.sh
modified: archive/update-dots.sh
modified: archive/upgrade.sh
modified: copy.sh
modified: scripts/copy_menu.sh
modified: scripts/lib_apps.sh
modified: scripts/lib_backup.sh
modified: scripts/lib_copy.sh
modified: scripts/lib_detect.sh
modified: scripts/lib_prompts.sh
modified: scripts/lib_update.sh
* Updated config files and scripts to new Project name and URL
On branch development
Your branch is ahead of 'origin/development' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
modified: config/hypr/UserConfigs/00-Readme
modified: config/hypr/UserConfigs/01-UserDefaults.conf
modified: config/hypr/UserConfigs/ENVariables.conf
modified: config/hypr/UserConfigs/LaptopDisplay.conf
modified: config/hypr/UserConfigs/Laptops.conf
modified: config/hypr/UserConfigs/Startup_Apps.conf
modified: config/hypr/UserConfigs/UserAnimations.conf
modified: config/hypr/UserConfigs/UserDecorations.conf
modified: config/hypr/UserConfigs/UserKeybinds.conf
modified: config/hypr/UserConfigs/UserSettings.conf
modified: config/hypr/UserConfigs/WindowRules.conf
modified: config/hypr/UserConfigs/WorkSpaceRules.conf
modified: config/hypr/UserScripts/00-Readme
modified: config/hypr/UserScripts/RainbowBorders-low-cpu.sh
modified: config/hypr/UserScripts/RainbowBorders.bak.sh
modified: config/hypr/UserScripts/RofiBeats.sh
modified: config/hypr/UserScripts/RofiCalc.sh
modified: config/hypr/UserScripts/Tak0-Autodispatch.sh
modified: config/hypr/UserScripts/WallpaperAutoChange.sh
modified: config/hypr/UserScripts/WallpaperEffects.sh
modified: config/hypr/UserScripts/WallpaperRandom.sh
modified: config/hypr/UserScripts/WallpaperSelect.sh
modified: config/hypr/UserScripts/Weather.py
modified: config/hypr/UserScripts/Weather.sh
modified: config/hypr/UserScripts/WeatherWrap.sh
modified: config/hypr/UserScripts/ZshChangeTheme.sh
modified: config/hypr/configs/ENVariables.conf
modified: config/hypr/configs/Keybinds.conf
modified: config/hypr/configs/Laptops.conf
modified: config/hypr/configs/Startup_Apps.conf
modified: config/hypr/configs/SystemSettings.conf
modified: config/hypr/configs/WindowRules-config-v3.conf
modified: config/hypr/configs/WindowRules-pre-53.conf
modified: config/hypr/configs/WindowRules.conf
modified: config/hypr/scripts/AirplaneMode.sh
modified: config/hypr/scripts/Animations.sh
modified: config/hypr/scripts/Battery.sh
modified: config/hypr/scripts/Brightness.sh
modified: config/hypr/scripts/BrightnessKbd.sh
modified: config/hypr/scripts/ChangeBlur.sh
modified: config/hypr/scripts/ChangeLayout.sh
modified: config/hypr/scripts/ClipManager.sh
modified: config/hypr/scripts/DarkLight.sh
modified: config/hypr/scripts/Distro_update.sh
modified: config/hypr/scripts/Dropterminal.sh
modified: config/hypr/scripts/GameMode.sh
modified: config/hypr/scripts/Hypridle.sh
modified: config/hypr/scripts/Hyprsunset.sh
modified: config/hypr/scripts/KeyBinds.sh
modified: config/hypr/scripts/KeyHints.sh
modified: config/hypr/scripts/KeybindsLayoutInit.sh
modified: config/hypr/scripts/KeyboardLayout.sh
modified: config/hypr/scripts/KillActiveProcess.sh
modified: config/hypr/scripts/Kitty_themes.sh
modified: config/hypr/scripts/KooLsDotsUpdate.sh
modified: config/hypr/scripts/Kool_Quick_Settings.sh
modified: config/hypr/scripts/LockScreen.sh
modified: config/hypr/scripts/MediaCtrl.sh
modified: config/hypr/scripts/MonitorProfiles.sh
modified: config/hypr/scripts/OverviewToggle.sh
modified: config/hypr/scripts/Polkit-NixOS.sh
modified: config/hypr/scripts/Polkit.sh
modified: config/hypr/scripts/PortalHyprland.sh
modified: config/hypr/scripts/PortalHyprlandUbuntu2604.sh
modified: config/hypr/scripts/Refresh.sh
modified: config/hypr/scripts/RefreshNoWaybar.sh
modified: config/hypr/scripts/RofiEmoji.sh
modified: config/hypr/scripts/RofiSearch.sh
modified: config/hypr/scripts/RofiThemeSelector-modified.sh
modified: config/hypr/scripts/RofiThemeSelector.sh
modified: config/hypr/scripts/ScreenShot.sh
modified: config/hypr/scripts/Sounds.sh
modified: config/hypr/scripts/Tak0-Autodispatch.sh
modified: config/hypr/scripts/Tak0-Per-Window-Switch.sh
modified: config/hypr/scripts/ThemeChanger.sh
modified: config/hypr/scripts/Toggle-Active-Window-Audio.sh
modified: config/hypr/scripts/Toggle-weather-waybar-units.sh
modified: config/hypr/scripts/TouchPad.sh
modified: config/hypr/scripts/UptimeNixOS.sh
modified: config/hypr/scripts/UserConfigsSwitcher.sh
modified: config/hypr/scripts/Volume.sh
modified: config/hypr/scripts/WallustSwww.sh
modified: config/hypr/scripts/WaybarCava.sh
modified: config/hypr/scripts/WaybarLayout.sh
modified: config/hypr/scripts/WaybarScripts.sh
modified: config/hypr/scripts/WaybarStyles.sh
modified: config/hypr/scripts/Wlogout.sh
modified: config/hypr/scripts/hyprshot.sh
modified: config/hypr/scripts/install-uv.sh
modified: config/hypr/scripts/keybinds_parser.py
modified: config/hypr/scripts/sddm_wallpaper.sh
modified: config/hypr/scripts/update_WindowRules.sh
* Added "No color" theme to Kitty, changed default to 01-Wallust.conf
This will maintain current feature of following wallust colors by
default
But user can select "no color" if they desire it
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/Kitty_themes.sh
modified: config/kitty/kitty-themes/00-Default.conf
modified: config/kitty/kitty.conf
* Added custom module for External Brightness control
For External Monitors via DDCUTIL / EDID
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/hypr/scripts/ExternalBrightness.sh
modified: config/waybar/ModulesCustom
* Updating ExternalBrightness script to hopefully better detect monitors
Currently my monitor isn't showing support for brightness
So I can't fully test this code right now
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/ExternalBrightness.sh
* Switching wallust color references to avoid washed out colors
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/style/Wallust-ML4W-modern.css
* Fixed colors to use different wallust colors
Widgets were getting washed out
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/style/Dark-Latte-Wallust-combined-v2.css
* Fixing opactity and color issues in Dark-Latte-Wallust-combined*
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/style/Dark-Latte-Wallust-combined-v2.css
modified: config/waybar/style/Dark-Latte-Wallust-combined.css
* Adding fixes applied to the other wallust style sheets to these
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css
modified: config/waybar/style/Wallust-Chroma-Edge.css
modified: config/waybar/style/Wallust-Chroma-Fusion.css
modified: config/waybar/style/Wallust-ML4W-modern-mixed.css
* Updted CHANGELOG
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: CHANGELOG.md
* Updated CHANGELOG
* Changed proj name in CHANGELOG
* Fix: UserConfig updates were being removed on updates
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: scripts/lib_backup.sh
modified: scripts/lib_copy.sh
* Fix: Syntax error in copy.sh
* Updated ubuntu portal check for all ubuntu versions, common variants
The hyprland portals have to be manually started on recent ubuntu
distros. otherwise waybar never loads
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Startup_Apps.conf
renamed: config/hypr/scripts/PortalHyprlandUbuntu2604.sh -> config/hypr/scripts/PortalHyprlandUbuntu.sh
* Togglesplit being replaced by layoutmsg Togglesplit
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Keybinds.conf
modified: config/hypr/scripts/ChangeLayout.sh
* Update Ukrainian README translation (#22)
* Fixed Hyprshotsh output directory
* Adding scrolling to ChangeLayout script
Requires HL v0.54+
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/ChangeLayout.sh
* Fixed type, added two bindings for scrolling
bindd = $mainMod SHIFT, period, move column, layoutmsg, move +col
bindd = $mainMod SHIFT, comma, swap columns, layoutmsg, swapcol l
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Keybinds.conf
* Updated CHANGELOG
* Creating script to set the default terminal to kitty for thunar
Also creates shim for xterm for other programs that might call xterm
and as fallback
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/hypr/scripts/set-default-thunar-terminal.sh
* Fixing terminal not found and remove kitty URL handler entry
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/set-default-thunar-terminal.sh
* Fixing wallust to be more consistent and faster
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/UserScripts/WallpaperRandom.sh
modified: config/hypr/scripts/Refresh.sh
modified: config/hypr/scripts/RefreshNoWaybar.sh
modified: config/hypr/scripts/WallustSwww.sh
* Trying to fix rofi/waybar colors contrast to fix dark on dark colors
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/WallustSwww.sh
modified: config/waybar/style/Wallust-Box-type.css
* Fixing inconsistent colors in Wallust-Bordered-Chroma-Simple file
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css
* Fixing styling issues in waybar
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css
* Fixing style sheet #2
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css
* FIXED: style sheet no more pink on pink widgets
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css
* Updted Changelog
* Added scrolling options and scrolling keybinds
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: configs/Keybinds.conf
modified: configs/SystemSettings.conf
* Updated CHANGELOG with scrolling keybinds
On branch development
Your branch is ahead of 'origin/development' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
modified: CHANGELOG.md
* Added more scrolling bindings
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Keybinds.conf
* Fixed scrolling keybinds
* Updated layerrule for rofi to turn off blur
It's commented out in WindowRules files with comment on how to enable
and why
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/UserConfigs/WindowRules.conf
modified: config/hypr/configs/WindowRules.conf
* Trying new settings for cursor and master / dwindle layouts
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/SystemSettings.conf
* Adding addtional layerrules to test
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/WindowRules.conf
* Updated gestures - corrected layout and added new gestures
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/SystemSettings.conf
* Fixed duplicate gesture for up motion
* Added monocle layout
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/SystemSettings.conf
modified: config/hypr/scripts/ChangeLayout.sh
* Fixing Monocle settings
* Fixing Monocle settings x2
* Updated CHANGELOG fixed monocle settings
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: CHANGELOG.md
modified: config/hypr/configs/SystemSettings.conf
* Making sure UserConfigs dir entries not deleted from 2.3.19+
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: scripts/lib_copy.sh
* Fixed package name for waybar-weather
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: scripts/lib_apps.sh
* Updated CHANGELOG
* Added check for waybar-weather installed local binary or AUR
If local static binary then it will remove it and install from AUR
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: scripts/lib_apps.sh
* Update gestures on hyprland
* Added script to set ghostty theme to Quick settings
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
modified: config/ghostty/ghostty.config
new file: config/hypr/scripts/Ghostty_themes.sh
modified: config/hypr/scripts/Kool_Quick_Settings.sh
* Created dedicated rofi theme for ghostty added license/URL info
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/ghostty/ghostty.config
modified: config/hypr/scripts/Ghostty_themes.sh
new file: config/rofi/config-ghostty-theme.rasi
* fix: hypr windowrules for qalculate gtk
* Updted all float toggle with script to replace depreciated cmd
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Keybinds.conf
* Updated CHANGELOG
* Trying different ghostty fonts
* Moved Float-all-Windows command string to script
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: CHANGELOG.md
modified: config/hypr/configs/Keybinds.conf
new file: config/hypr/scripts/Float-all-Windows.sh
* Made Float-all-Windows script executable
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Float-all-Windows.sh
* Trying to fix dropdown terminal dropping down again on hide
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Adding logging to Dropterminal
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Adding monitor info to better handle dropdown and other hardening
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Adding more debug info
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Changing sequence move to special workspace b4 pinning
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Fixed flashing but now doesn't hide completely
Redid pinning logic to adjust that
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Added kitty-dropdown class and improved handling
Hopefully this will fix the issue
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: ../configs/Startup_Apps.conf
modified: Dropterminal.sh
* Hopefully this fixes the hide issue
Hyprland reports the visible special workspace name as either special:scratchpad or scratchpad depending on context. My visibility check only matched the former, so the hide toggle didn’t always turn it off—hence the sliver.
I updated the visibility check to accept either name.
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Visibility check was a bust
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Using special workspace isn't working
Trying new approach
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Fixed syntax error on local outside of the function
Getting closer (I hope)
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Fixed issue where first toggle didn't drop down terminal
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Adding a state file to resolve not dropping down on first activation
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Dropterminal.sh
* Updated CHANGELOG on Dropdown terminal fix
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: CHANGELOG.md
* Renamed ghostty config to proper cfgname
* Dynamic Handling of WindowRules.conf (#24)
Need to set 0.53 to WindowRules.conf
* Synced WindowRules-config-v3 to WindowRules.conf layyerrules
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: WindowRules-config-v3.conf
modified: WindowRules.conf
* Improved layout toggleing and added Keybinds to set mode individually
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Keybinds.conf
modified: config/hypr/configs/WindowRules.conf
modified: config/hypr/scripts/ChangeLayout.sh
* Fixing layout for SUPER J/K and SUPER arrow keys
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: hypr/scripts/ChangeLayout.sh
modified: hypr/scripts/KeybindsLayoutInit.sh
* Added fixes for layout cycling with SUPER J/K and SUPER ARROWS
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/ChangeLayout.sh
new file: config/hypr/scripts/HyprlandCycleWindow.sh
modified: config/hypr/scripts/KeybindsLayoutInit.sh
* Fixing script had extra unbind for SUPER J/K
Implementing the single script to set layout and proper bingings
in one step
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/ChangeLayout.sh
deleted: config/hypr/scripts/HyprlandCycleWindow.sh
modified: config/hypr/scripts/KeybindsLayoutInit.sh
* Still fixing J/K for all modes and super ARROW also
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Keybinds.conf
modified: config/hypr/scripts/ChangeLayout.sh
* moved to lower case to resolve SUPER J/K
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Keybinds.conf
modified: config/hypr/scripts/KeybindsLayoutInit.sh
* Once more try to get dwindle/scrolling binds working
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/ChangeLayout.sh
* Removed hyprland if statement is loads wrong file on v0.54.1
I don't want to make gated rules and update them on every HL update.
v0.53 is available, users of 0.52.x should upgrade or copy the older rev
file manually
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/WindowRules.conf
* WindowRules had CTRL-B character at end
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/WindowRules-config-v3.conf
modified: config/hypr/configs/WindowRules.conf
* Added Antigravity icon to waybar
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/ModulesWorkspaces
* Added keybind search script and rofi menu for emacs
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/hypr/scripts/rofi-emacs-keybinds
new file: config/rofi/config-emacs-keybinds.rasi
* Added icon for emacs for waybar
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/ModulesWorkspaces
* Fixed screenshot delay issues added icon for nautilus
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/ScreenShot.sh
modified: config/waybar/ModulesWorkspaces
* Added icon for nautilus and terminal with RED X for apps w/o icons
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/ModulesWorkspaces
* Updated Sounds.sh to play sound directly
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: ../../../CHANGELOG.md
modified: ScreenShot.sh
modified: Sounds.sh
* Updated CHANGELOG
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: CHANGELOG.md
* FIXED long delay updating theme colors when changing wallpaper
Wallust was being run multiple times
also made updates to ghostty / kitty more asynchronous
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/WallustSwww.sh
* Updated CHANGELOG
On branch development
Your branch is ahead of 'origin/development' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
modified: CHANGELOG.md
* Added WallpaperDaemon to use awww if available fallback swww
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: CHANGELOG.md
modified: config/hypr/configs/Startup_Apps.conf
new file: config/hypr/scripts/WallpaperDaemon.sh
* SWWW archived, using AWWW updated scripts to prefer AWWW if installed
Next will be to update all the Distro-Hyprland to install AWWW
NixOS-Hyprland is already done
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/UserScripts/WallpaperAutoChange.sh
modified: config/hypr/UserScripts/WallpaperEffects.sh
modified: config/hypr/UserScripts/WallpaperRandom.sh
modified: config/hypr/UserScripts/WallpaperSelect.sh
modified: config/hypr/initial-boot.sh
modified: config/hypr/scripts/DarkLight.sh
modified: config/hypr/scripts/GameMode.sh
modified: config/hypr/scripts/KeyHints.sh
modified: config/hypr/scripts/WallpaperDaemon.sh
modified: config/hypr/scripts/WallustSwww.sh
* Added icon for NVIDIA settings app and Centered/floating rule
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/WindowRules-config-v3.conf
modified: config/hypr/configs/WindowRules.conf
modified: config/waybar/ModulesWorkspaces
* Tuned ddubs simple waybar config
* waybar: change thunderbird and gemini icons
* waybar: fix gemini waybar
* Added icon for mainline kernel mgr and Window rule for it
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/WindowRules-config-v3.conf
modified: config/hypr/configs/WindowRules.conf
modified: config/waybar/ModulesWorkspaces
* Added new fastfetches for Arch, fedora, ubuntu, Gentoo
Looking for openSuse and debian logos
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: images/Arch-Logo-1.png
new file: images/Arch-Logo-2.png
new file: images/fedora.png
new file: images/gentoo-abducted-1600x1200.png
new file: images/gentoo1.png
new file: images/gentoo2.png
new file: images/gentoo3.png
new file: images/ubuntu.jpeg
new file: images/ubuntu.png
new file: kooldots-arch.jsonc
new file: kooldots-fedora.jsonc
new file: kooldots-gentoo.jsonc
new file: kooldots-ubuntu.jsonc
* Added copy.sh vs. TUI first pass analysis
* WallpaperSelect upd shows names for current/random wallpapers
Thank you S3cBar0n https://github.com/S3cBar0n
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: CHANGELOG.md
modified: config/hypr/UserScripts/WallpaperSelect.sh
* Fixing wallpaper select
* Added fastfetches w/logos need one for OpenSuse
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/fastfetch/images/debian_swirl.png
deleted: config/fastfetch/images/gentoo-abducted-1600x1200.png
deleted: config/fastfetch/images/gentoo3.png
new file: config/fastfetch/images/nixos.png
new file: config/fastfetch/kooldots-debian.jsonc
new file: config/fastfetch/kooldots-nixos.jsonc
* Changed Arch to alternate fastfetch logo
* Building fastfetch wrapper to call distro logo
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/hypr/scripts/fastfetch-wrapper.sh
* Added ghostty config to the backup / restore process
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: copy.sh
modified: scripts/lib_apps.sh
modified: scripts/lib_copy.sh
* Updated CHANGELOG
* docs: update readme (#30)
* docs(README): clean up structure, fix typos, and improve clarity
* docs(README): fix anchor
* docs(README): remove some emojis
* docs(README): remove some emojis
* docs(README): update discord url
* docs(README): update youtube links
* docs(README): fix discord link
* docs(README): add Legacy Jak videos
* docs(README): fix spacing
* docs(README): fix unnecesary list
* fix: NVIDIA url
* Preliminary review of tasks for HL LUA conversion
List current scripts that do and do not modify hyprland configuration files
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: Hyprland-LUA-analysis-Phase1.md
* fix: change cursor config on tablets
* Updated CHANGELOG on enabling cursor on tablet
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: CHANGELOG.md
* Added gitnuro icon to ModulesWorkspaces
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/ModulesWorkspaces
renamed: Hyprland-LUA-analysis-Phase1.md -> docs/Hyprland-LUA-analysis-Phase1.md
renamed: copy.sh-tui-analysis-3-14-2026.md -> docs/copy.sh-tui-analysis-3-14-2026.md
* Fix: restore wallpaper failed, garbage character filename
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/UserScripts/WallpaperSelect.sh
modified: config/hypr/scripts/WallpaperDaemon.sh
* Fixing wallpaper restore issue
Fixed bad filename / symlink issue but WP not being restored on login
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/WallpaperDaemon.sh
* Trying a different fix for WP restore
* updated ModulesWorkspaces with boxxy-terminal icon
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/waybar/ModulesWorkspaces
* Merged in converion to awww code
this is Phase 2. Scripts check for awww or swww
Once this is tested need to add migration function
to clear the swww cache otherwise some colors weren't updated on
wallpaper change
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: build-awww.sh
modified: config/hypr/UserScripts/WallpaperRandom.sh
modified: config/hypr/UserScripts/WallpaperSelect.sh
modified: config/hypr/configs/WindowRules-config-v3.conf
modified: config/hypr/configs/WindowRules.conf
modified: config/hypr/scripts/DarkLight.sh
modified: config/hypr/scripts/GameMode.sh
new file: config/hypr/scripts/WallpaperCmd.sh
modified: config/hypr/scripts/WallpaperDaemon.sh
* Added a check if awww cache has been cleared already
Looks for ~/.cache/awww/.cache_cleared otherwise runs `awww clear-cache`
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/WallpaperCmd.sh
* Fixed syntax errors
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/UserScripts/WallpaperSelect.sh
modified: config/hypr/scripts/WallpaperCmd.sh
* Fixed swww vs awww handling made WallpaperDaemon executable
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/UserScripts/WallpaperEffects.sh
modified: config/hypr/UserScripts/WallpaperRandom.sh
modified: config/hypr/UserScripts/WallpaperSelect.sh
modified: config/hypr/scripts/WallpaperDaemon.sh
* Fixed build-awww script
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: build-awww.sh
* Fixed distro detection bug
* Moved build-awww.sh to
* WallpaperCmd.sh wasn't executable
* build-awww wasn't added
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: scripts/build-awww.sh
* Add ghostty/wezterm to terminal window WindowRules
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/WindowRules-config-v3.conf
modified: config/hypr/configs/WindowRules.conf
* Crtical fix to restore polkit function
This and addtional packages are needed to allow polit to elevate
permission for GUI apps
More updates likely but making sure these fixes are included
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/Polkit.sh
* Fixing polkit startup for NixOS
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/Polkit-NixOS.sh
* resolving Polkit startup caused issue with arch
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/scripts/Polkit.sh
* Added hyprpolkitagent override to archlinux installer
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/systemd/user/hyprpolkitagent.service.d/override.conf
modified: copy.sh
* Updated Window Rules for xfce polkit diaglog window
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/UserConfigs/WindowRules.conf
modified: config/hypr/configs/WindowRules-config-v3.conf
modified: config/hypr/configs/WindowRules.conf
* xfce4-polkit not in debian repo adding mate-polkit as alternative
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/WindowRules.conf
modified: config/hypr/scripts/Polkit.sh
* Added Window Rule for kwallet manager
* Fixing calculator window rule
* fix kitty font style mix-up of bold and regular (#38)
* Updated CHANGELOG, kitty font fix
* Added rofi-ssh-menu SUPER+S to pull .ssh/config entries
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Keybinds.conf
new file: config/hypr/scripts/rofi-ssh-menu.sh
* Fixed duplicate keybind
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: Keybinds.conf
* Added script to disable cpu turbo and set power settings
CPU turbo will often spin up the fan, leave it high the slowly
drop the fan speed. Very noisy. 11th/12th gen notorious for this
Should be added to User Startup as needed
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/hypr/scripts/disable.cpu.turbo.sh
---------
Co-authored-by: brockar <martin@mguz.dev>
Co-authored-by: Vyle <121424993+IvyProtocol@users.noreply.github.com>
Co-authored-by: Martin Guzman <55927935+brockar@users.noreply.github.com>
Co-authored-by: Jason Schuehlein <34405484+JasonNero@users.noreply.github.com>
Diffstat (limited to 'config')
145 files changed, 3762 insertions, 376 deletions
diff --git a/config/fastfetch/images/Arch-Logo-1.png b/config/fastfetch/images/Arch-Logo-1.png Binary files differnew file mode 100644 index 00000000..0a587b3e --- /dev/null +++ b/config/fastfetch/images/Arch-Logo-1.png diff --git a/config/fastfetch/images/Arch-Logo-2.png b/config/fastfetch/images/Arch-Logo-2.png Binary files differnew file mode 100644 index 00000000..b0abc76b --- /dev/null +++ b/config/fastfetch/images/Arch-Logo-2.png diff --git a/config/fastfetch/images/debian_swirl.png b/config/fastfetch/images/debian_swirl.png Binary files differnew file mode 100755 index 00000000..d45dffce --- /dev/null +++ b/config/fastfetch/images/debian_swirl.png diff --git a/config/fastfetch/images/fedora.png b/config/fastfetch/images/fedora.png Binary files differnew file mode 100644 index 00000000..2fdc5793 --- /dev/null +++ b/config/fastfetch/images/fedora.png diff --git a/config/fastfetch/images/gentoo1.png b/config/fastfetch/images/gentoo1.png Binary files differnew file mode 100644 index 00000000..65e6a934 --- /dev/null +++ b/config/fastfetch/images/gentoo1.png diff --git a/config/fastfetch/images/gentoo2.png b/config/fastfetch/images/gentoo2.png Binary files differnew file mode 100644 index 00000000..d9db41bf --- /dev/null +++ b/config/fastfetch/images/gentoo2.png diff --git a/config/fastfetch/images/nixos.png b/config/fastfetch/images/nixos.png Binary files differnew file mode 100755 index 00000000..571410a7 --- /dev/null +++ b/config/fastfetch/images/nixos.png diff --git a/config/fastfetch/images/ubuntu.jpeg b/config/fastfetch/images/ubuntu.jpeg Binary files differnew file mode 100644 index 00000000..62da0561 --- /dev/null +++ b/config/fastfetch/images/ubuntu.jpeg diff --git a/config/fastfetch/images/ubuntu.png b/config/fastfetch/images/ubuntu.png Binary files differnew file mode 100644 index 00000000..f54657ed --- /dev/null +++ b/config/fastfetch/images/ubuntu.png diff --git a/config/fastfetch/kooldots-arch.jsonc b/config/fastfetch/kooldots-arch.jsonc new file mode 100644 index 00000000..bb1f2cd8 --- /dev/null +++ b/config/fastfetch/kooldots-arch.jsonc @@ -0,0 +1,150 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + + "logo": { + "type": "kitty-direct", + "source": "$HOME/.config/fastfetch/images/Arch-Logo-2.png", + // "type": "small", + "width": 20, + "height": 10, + "padding": { + "top": 4, + "right": 4, + "left": 2, + }, + }, + + "display": { + "separator": " ", + "color": { + "keys": "white", + }, + "key": { + "width": 18, + }, + "brightColor": false, + }, + + "modules": [ + "break", + "break", + + // ── Identity header ──────────────────────────────────────────── + // { + // "type": "custom", + // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m" + // }, + // "break", + + "break", + // ── System ───────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m", + }, + { + "type": "os", + "key": " {icon} OS", + }, + { + "type": "kernel", + "key": " {icon} Kernel", + }, + { + "type": "command", + "key": " {icon} Hostname", + "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"", + }, + { + "type": "uptime", + "key": " {icon} Uptime", + }, + { + "type": "packages", + "key": " {icon} Packages", + }, + { + "type": "disk", + "key": " {icon} OS Age", + "folders": "/", + "format": "installed {create-time:10} ({days} days ago)", + }, + "break", + + // ── Hardware ─────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m", + }, + { + "type": "host", + "key": " {icon} Machine", + "format": "{name}", + }, + { + "type": "cpu", + "key": " {icon} CPU", + "showPeCoreCount": true, + }, + { + "type": "gpu", + "key": " {icon} GPU", + }, + { + "type": "memory", + "key": " {icon} RAM", + "percent": { + "type": 3, + "green": 40, + "yellow": 75, + }, + }, + { + "type": "disk", + "key": " {icon} Disk", + "format": "{size-used} / {size-total} ({size-percentage})", + }, + "break", + + // ── Desktop ──────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m", + }, + { + "type": "wm", + "key": " {icon} WM", + }, + { + "type": "command", + "key": " KoolDots", + "text": "echo v${DOTS_VERSION}", + }, + { + "type": "display", + "key": " {icon} Display", + "compactType": "original-with-refresh-rate", + }, + { + "type": "shell", + "key": " {icon} Shell", + }, + { + "type": "terminal", + "key": " {icon} Terminal", + }, + { + "type": "editor", + "key": " {icon} Editor", + }, + "break", + + // ── Footer ───────────────────────────────────────────────────── + // { + // black → dark pink → hot pink → light pink → white + // "type": "custom", + // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m" + // }, + "break", + ], +} diff --git a/config/fastfetch/kooldots-debian.jsonc b/config/fastfetch/kooldots-debian.jsonc new file mode 100644 index 00000000..f66233fb --- /dev/null +++ b/config/fastfetch/kooldots-debian.jsonc @@ -0,0 +1,150 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + + "logo": { + "type": "kitty-direct", + "source": "$HOME/.config/fastfetch/images/debian_swirl.png", + // "type": "small", + "width": 20, + "height": 10, + "padding": { + "top": 4, + "right": 4, + "left": 2, + }, + }, + + "display": { + "separator": " ", + "color": { + "keys": "white", + }, + "key": { + "width": 18, + }, + "brightColor": false, + }, + + "modules": [ + "break", + "break", + + // ── Identity header ──────────────────────────────────────────── + // { + // "type": "custom", + // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m" + // }, + // "break", + + "break", + // ── System ───────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m", + }, + { + "type": "os", + "key": " {icon} OS", + }, + { + "type": "kernel", + "key": " {icon} Kernel", + }, + { + "type": "command", + "key": " {icon} Hostname", + "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"", + }, + { + "type": "uptime", + "key": " {icon} Uptime", + }, + { + "type": "packages", + "key": " {icon} Packages", + }, + { + "type": "disk", + "key": " {icon} OS Age", + "folders": "/", + "format": "installed {create-time:10} ({days} days ago)", + }, + "break", + + // ── Hardware ─────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m", + }, + { + "type": "host", + "key": " {icon} Machine", + "format": "{name}", + }, + { + "type": "cpu", + "key": " {icon} CPU", + "showPeCoreCount": true, + }, + { + "type": "gpu", + "key": " {icon} GPU", + }, + { + "type": "memory", + "key": " {icon} RAM", + "percent": { + "type": 3, + "green": 40, + "yellow": 75, + }, + }, + { + "type": "disk", + "key": " {icon} Disk", + "format": "{size-used} / {size-total} ({size-percentage})", + }, + "break", + + // ── Desktop ──────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m", + }, + { + "type": "wm", + "key": " {icon} WM", + }, + { + "type": "command", + "key": " KoolDots", + "text": "echo v${DOTS_VERSION}", + }, + { + "type": "display", + "key": " {icon} Display", + "compactType": "original-with-refresh-rate", + }, + { + "type": "shell", + "key": " {icon} Shell", + }, + { + "type": "terminal", + "key": " {icon} Terminal", + }, + { + "type": "editor", + "key": " {icon} Editor", + }, + "break", + + // ── Footer ───────────────────────────────────────────────────── + // { + // black → dark pink → hot pink → light pink → white + // "type": "custom", + // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m" + // }, + "break", + ], +} diff --git a/config/fastfetch/kooldots-fedora.jsonc b/config/fastfetch/kooldots-fedora.jsonc new file mode 100644 index 00000000..4a877680 --- /dev/null +++ b/config/fastfetch/kooldots-fedora.jsonc @@ -0,0 +1,150 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + + "logo": { + "type": "kitty-direct", + "source": "$HOME/.config/fastfetch/images/fedora.png", + // "type": "small", + "width": 20, + "height": 10, + "padding": { + "top": 4, + "right": 4, + "left": 2, + }, + }, + + "display": { + "separator": " ", + "color": { + "keys": "white", + }, + "key": { + "width": 18, + }, + "brightColor": false, + }, + + "modules": [ + "break", + "break", + + // ── Identity header ──────────────────────────────────────────── + // { + // "type": "custom", + // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m" + // }, + // "break", + + "break", + // ── System ───────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m", + }, + { + "type": "os", + "key": " {icon} OS", + }, + { + "type": "kernel", + "key": " {icon} Kernel", + }, + { + "type": "command", + "key": " {icon} Hostname", + "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"", + }, + { + "type": "uptime", + "key": " {icon} Uptime", + }, + { + "type": "packages", + "key": " {icon} Packages", + }, + { + "type": "disk", + "key": " {icon} OS Age", + "folders": "/", + "format": "installed {create-time:10} ({days} days ago)", + }, + "break", + + // ── Hardware ─────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m", + }, + { + "type": "host", + "key": " {icon} Machine", + "format": "{name}", + }, + { + "type": "cpu", + "key": " {icon} CPU", + "showPeCoreCount": true, + }, + { + "type": "gpu", + "key": " {icon} GPU", + }, + { + "type": "memory", + "key": " {icon} RAM", + "percent": { + "type": 3, + "green": 40, + "yellow": 75, + }, + }, + { + "type": "disk", + "key": " {icon} Disk", + "format": "{size-used} / {size-total} ({size-percentage})", + }, + "break", + + // ── Desktop ──────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m", + }, + { + "type": "wm", + "key": " {icon} WM", + }, + { + "type": "command", + "key": " KoolDots", + "text": "echo v${DOTS_VERSION}", + }, + { + "type": "display", + "key": " {icon} Display", + "compactType": "original-with-refresh-rate", + }, + { + "type": "shell", + "key": " {icon} Shell", + }, + { + "type": "terminal", + "key": " {icon} Terminal", + }, + { + "type": "editor", + "key": " {icon} Editor", + }, + "break", + + // ── Footer ───────────────────────────────────────────────────── + // { + // black → dark pink → hot pink → light pink → white + // "type": "custom", + // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m" + // }, + "break", + ], +} diff --git a/config/fastfetch/kooldots-gentoo.jsonc b/config/fastfetch/kooldots-gentoo.jsonc new file mode 100644 index 00000000..591f7755 --- /dev/null +++ b/config/fastfetch/kooldots-gentoo.jsonc @@ -0,0 +1,150 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + + "logo": { + "type": "kitty-direct", + "source": "$HOME/.config/fastfetch/images/gentoo1.png", + // "type": "small", + "width": 20, + "height": 10, + "padding": { + "top": 4, + "right": 4, + "left": 2 + } + }, + + "display": { + "separator": " ", + "color": { + "keys": "white" + }, + "key": { + "width": 18 + }, + "brightColor": false + }, + + "modules": [ + "break", + "break", + + // ── Identity header ──────────────────────────────────────────── + // { + // "type": "custom", + // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m" + // }, + // "break", + + "break", + // ── System ───────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m" + }, + { + "type": "os", + "key": " {icon} OS" + }, + { + "type": "kernel", + "key": " {icon} Kernel" + }, + { + "type": "command", + "key": " {icon} Hostname", + "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"" + }, + { + "type": "uptime", + "key": " {icon} Uptime" + }, + { + "type": "packages", + "key": " {icon} Packages" + }, + { + "type": "disk", + "key": " {icon} OS Age", + "folders": "/", + "format": "installed {create-time:10} ({days} days ago)" + }, + "break", + + // ── Hardware ─────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m" + }, + { + "type": "host", + "key": " {icon} Machine", + "format": "{name}" + }, + { + "type": "cpu", + "key": " {icon} CPU", + "showPeCoreCount": true + }, + { + "type": "gpu", + "key": " {icon} GPU" + }, + { + "type": "memory", + "key": " {icon} RAM", + "percent": { + "type": 3, + "green": 40, + "yellow": 75 + } + }, + { + "type": "disk", + "key": " {icon} Disk", + "format": "{size-used} / {size-total} ({size-percentage})" + }, + "break", + + // ── Desktop ──────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m" + }, + { + "type": "wm", + "key": " {icon} WM" + }, + { + "type": "command", + "key": " KoolDots", + "text": "echo v${DOTS_VERSION}" + }, + { + "type": "display", + "key": " {icon} Display", + "compactType": "original-with-refresh-rate" + }, + { + "type": "shell", + "key": " {icon} Shell" + }, + { + "type": "terminal", + "key": " {icon} Terminal" + }, + { + "type": "editor", + "key": " {icon} Editor" + }, + "break", + + // ── Footer ───────────────────────────────────────────────────── + // { + // black → dark pink → hot pink → light pink → white + // "type": "custom", + // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m" + // }, + "break" + ] +} diff --git a/config/fastfetch/kooldots-nixos.jsonc b/config/fastfetch/kooldots-nixos.jsonc new file mode 100644 index 00000000..54cb39e8 --- /dev/null +++ b/config/fastfetch/kooldots-nixos.jsonc @@ -0,0 +1,150 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + + "logo": { + "type": "kitty-direct", + "source": "$HOME/.config/fastfetch/images/nixos.png", + // "type": "small", + "width": 20, + "height": 10, + "padding": { + "top": 4, + "right": 4, + "left": 2, + }, + }, + + "display": { + "separator": " ", + "color": { + "keys": "white", + }, + "key": { + "width": 18, + }, + "brightColor": false, + }, + + "modules": [ + "break", + "break", + + // ── Identity header ──────────────────────────────────────────── + // { + // "type": "custom", + // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m" + // }, + // "break", + + "break", + // ── System ───────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m", + }, + { + "type": "os", + "key": " {icon} OS", + }, + { + "type": "kernel", + "key": " {icon} Kernel", + }, + { + "type": "command", + "key": " {icon} Hostname", + "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"", + }, + { + "type": "uptime", + "key": " {icon} Uptime", + }, + { + "type": "packages", + "key": " {icon} Packages", + }, + { + "type": "disk", + "key": " {icon} OS Age", + "folders": "/", + "format": "installed {create-time:10} ({days} days ago)", + }, + "break", + + // ── Hardware ─────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m", + }, + { + "type": "host", + "key": " {icon} Machine", + "format": "{name}", + }, + { + "type": "cpu", + "key": " {icon} CPU", + "showPeCoreCount": true, + }, + { + "type": "gpu", + "key": " {icon} GPU", + }, + { + "type": "memory", + "key": " {icon} RAM", + "percent": { + "type": 3, + "green": 40, + "yellow": 75, + }, + }, + { + "type": "disk", + "key": " {icon} Disk", + "format": "{size-used} / {size-total} ({size-percentage})", + }, + "break", + + // ── Desktop ──────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m", + }, + { + "type": "wm", + "key": " {icon} WM", + }, + { + "type": "command", + "key": " KoolDots", + "text": "echo v${DOTS_VERSION}", + }, + { + "type": "display", + "key": " {icon} Display", + "compactType": "original-with-refresh-rate", + }, + { + "type": "shell", + "key": " {icon} Shell", + }, + { + "type": "terminal", + "key": " {icon} Terminal", + }, + { + "type": "editor", + "key": " {icon} Editor", + }, + "break", + + // ── Footer ───────────────────────────────────────────────────── + // { + // black → dark pink → hot pink → light pink → white + // "type": "custom", + // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m" + // }, + "break", + ], +} diff --git a/config/fastfetch/kooldots-ubuntu.jsonc b/config/fastfetch/kooldots-ubuntu.jsonc new file mode 100644 index 00000000..1bf94987 --- /dev/null +++ b/config/fastfetch/kooldots-ubuntu.jsonc @@ -0,0 +1,150 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + + "logo": { + "type": "kitty-direct", + "source": "$HOME/.config/fastfetch/images/ubuntu.png", + // "type": "small", + "width": 20, + "height": 10, + "padding": { + "top": 4, + "right": 4, + "left": 2 + } + }, + + "display": { + "separator": " ", + "color": { + "keys": "white" + }, + "key": { + "width": 18 + }, + "brightColor": false + }, + + "modules": [ + "break", + "break", + + // ── Identity header ──────────────────────────────────────────── + // { + // "type": "custom", + // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m" + // }, + // "break", + + "break", + // ── System ───────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m" + }, + { + "type": "os", + "key": " {icon} OS" + }, + { + "type": "kernel", + "key": " {icon} Kernel" + }, + { + "type": "command", + "key": " {icon} Hostname", + "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"" + }, + { + "type": "uptime", + "key": " {icon} Uptime" + }, + { + "type": "packages", + "key": " {icon} Packages" + }, + { + "type": "disk", + "key": " {icon} OS Age", + "folders": "/", + "format": "installed {create-time:10} ({days} days ago)" + }, + "break", + + // ── Hardware ─────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m" + }, + { + "type": "host", + "key": " {icon} Machine", + "format": "{name}" + }, + { + "type": "cpu", + "key": " {icon} CPU", + "showPeCoreCount": true + }, + { + "type": "gpu", + "key": " {icon} GPU" + }, + { + "type": "memory", + "key": " {icon} RAM", + "percent": { + "type": 3, + "green": 40, + "yellow": 75 + } + }, + { + "type": "disk", + "key": " {icon} Disk", + "format": "{size-used} / {size-total} ({size-percentage})" + }, + "break", + + // ── Desktop ──────────────────────────────────────────────────── + { + "type": "custom", + "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m" + }, + { + "type": "wm", + "key": " {icon} WM" + }, + { + "type": "command", + "key": " KoolDots", + "text": "echo v${DOTS_VERSION}" + }, + { + "type": "display", + "key": " {icon} Display", + "compactType": "original-with-refresh-rate" + }, + { + "type": "shell", + "key": " {icon} Shell" + }, + { + "type": "terminal", + "key": " {icon} Terminal" + }, + { + "type": "editor", + "key": " {icon} Editor" + }, + "break", + + // ── Footer ───────────────────────────────────────────────────── + // { + // black → dark pink → hot pink → light pink → white + // "type": "custom", + // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m" + // }, + "break" + ] +} diff --git a/config/ghostty/ghostty.config b/config/ghostty/config index 42b073d5..fb539f6b 100644 --- a/config/ghostty/ghostty.config +++ b/config/ghostty/config @@ -114,9 +114,17 @@ font-size = 12 #font-family-italic = JetBrainsMono NFM Italic #font-family = BerkeleyMono Nerd Font -font-family = Iosevka Nerd Font +#font-family = Iosevka Nerd Font # font-family = SFMono Nerd Font +# Font families +font-family = "Iosevkeley Mono" +font-family-bold = "Iosevkeley Mono" +font-family-italic = "Iosevkeley Mono" +font-family-bold-italic = "Iosevkeley Mono" +font-family = "Symbols Nerd Font Mono" + + title = "GhosTTY" wait-after-command = false diff --git a/config/hypr/UserConfigs/00-Readme b/config/hypr/UserConfigs/00-Readme index b39873b1..275919bb 100644 --- a/config/hypr/UserConfigs/00-Readme +++ b/config/hypr/UserConfigs/00-Readme @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== KooL's Hyprland-Dots diff --git a/config/hypr/UserConfigs/01-UserDefaults.conf b/config/hypr/UserConfigs/01-UserDefaults.conf index 7a91336f..dd5f299a 100644 --- a/config/hypr/UserConfigs/01-UserDefaults.conf +++ b/config/hypr/UserConfigs/01-UserDefaults.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # This is a file where you put your own default apps, default search Engine etc diff --git a/config/hypr/UserConfigs/ENVariables.conf b/config/hypr/UserConfigs/ENVariables.conf index 67861b86..e2b3498a 100644 --- a/config/hypr/UserConfigs/ENVariables.conf +++ b/config/hypr/UserConfigs/ENVariables.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/ # Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf diff --git a/config/hypr/UserConfigs/LaptopDisplay.conf b/config/hypr/UserConfigs/LaptopDisplay.conf index 9f766582..a9129190 100644 --- a/config/hypr/UserConfigs/LaptopDisplay.conf +++ b/config/hypr/UserConfigs/LaptopDisplay.conf @@ -1,3 +1,9 @@ +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # NOTE, THIS FILE IS BEING USED by disabling Laptop display monitor behaviour when closing lid. # See notes on Laptops.conf diff --git a/config/hypr/UserConfigs/Laptops.conf b/config/hypr/UserConfigs/Laptops.conf index 463f0b46..b4e3cbdc 100644 --- a/config/hypr/UserConfigs/Laptops.conf +++ b/config/hypr/UserConfigs/Laptops.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings # These configs are mostly for laptops. This is addemdum to Keybinds.conf diff --git a/config/hypr/UserConfigs/Startup_Apps.conf b/config/hypr/UserConfigs/Startup_Apps.conf index f87bbe15..8a3de78a 100644 --- a/config/hypr/UserConfigs/Startup_Apps.conf +++ b/config/hypr/UserConfigs/Startup_Apps.conf @@ -1,3 +1,8 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Commands and Apps to be executed at launch diff --git a/config/hypr/UserConfigs/UserAnimations.conf b/config/hypr/UserConfigs/UserAnimations.conf index f2d33d93..aebff1be 100644 --- a/config/hypr/UserConfigs/UserAnimations.conf +++ b/config/hypr/UserConfigs/UserAnimations.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== animations { enabled = yes diff --git a/config/hypr/UserConfigs/UserDecorations.conf b/config/hypr/UserConfigs/UserDecorations.conf index eaccff80..d962092f 100644 --- a/config/hypr/UserConfigs/UserDecorations.conf +++ b/config/hypr/UserConfigs/UserDecorations.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Decoration Settings # Hyprland Wiki Links diff --git a/config/hypr/UserConfigs/UserKeybinds.conf b/config/hypr/UserConfigs/UserKeybinds.conf index 82a7e568..cc19ff78 100644 --- a/config/hypr/UserConfigs/UserKeybinds.conf +++ b/config/hypr/UserConfigs/UserKeybinds.conf @@ -1,11 +1,15 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # This is where you put your own keybinds. Be Mindful to check as well ~/.config/hypr/configs/Keybinds.conf to avoid conflict # if you think I should replace the Pre-defined Keybinds in ~/.config/hypr/configs/Keybinds.conf , submit an issue or let me know in DC and present me a valid reason as to why, such as conflicting with global shortcuts, etc etc # See https://wiki.hyprland.org/Configuring/Keywords/ for more settings and variables # See also Laptops.conf for laptops keybinds -# /* ---- ✴️ Variables ✴️ ---- */ # $mainMod = SUPER $scriptsDir = $HOME/.config/hypr/scripts $UserScripts = $HOME/.config/hypr/UserScripts diff --git a/config/hypr/UserConfigs/UserSettings.conf b/config/hypr/UserConfigs/UserSettings.conf index 9bd9131d..51b0adbd 100644 --- a/config/hypr/UserConfigs/UserSettings.conf +++ b/config/hypr/UserConfigs/UserSettings.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # User Settings # This is where you put your own settings as this will not be touched during update # if the upgrade.sh is used. diff --git a/config/hypr/UserConfigs/WindowRules.conf b/config/hypr/UserConfigs/WindowRules.conf index 79fbc24e..b6d65135 100644 --- a/config/hypr/UserConfigs/WindowRules.conf +++ b/config/hypr/UserConfigs/WindowRules.conf @@ -1,7 +1,18 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # For window rules and layerrules # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # This file is used to add or overwrite window rules # This file will not be modified during dotfiles updates + +# Optional Layer rules +# To Resolve blurred corners in rofi Uncomment +# layerrule = blur on, ignore_alpha 0, match:namespace rofi + + diff --git a/config/hypr/UserConfigs/WorkSpaceRules.conf b/config/hypr/UserConfigs/WorkSpaceRules.conf index 78d61389..7d45ec16 100644 --- a/config/hypr/UserConfigs/WorkSpaceRules.conf +++ b/config/hypr/UserConfigs/WorkSpaceRules.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # NOTE: THIS IS NOT BEING SOURCED by hyprland # It is only here as a guide if you want to do it manually diff --git a/config/hypr/UserScripts/00-Readme b/config/hypr/UserScripts/00-Readme index 54d7fff2..259fc9d9 100755 --- a/config/hypr/UserScripts/00-Readme +++ b/config/hypr/UserScripts/00-Readme @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Place your new scripts here. # If you need to edit a script from main script (~/.config/hypr/scripts), copy it on this directory, and edit. diff --git a/config/hypr/UserScripts/RainbowBorders-low-cpu.sh b/config/hypr/UserScripts/RainbowBorders-low-cpu.sh index bc0ab9ef..a8de4c89 100755 --- a/config/hypr/UserScripts/RainbowBorders-low-cpu.sh +++ b/config/hypr/UserScripts/RainbowBorders-low-cpu.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # RainbowBorders-low-cpu.sh — low-overhead animated rainbow border for Hyprland # # Goal diff --git a/config/hypr/UserScripts/RainbowBorders.bak.sh b/config/hypr/UserScripts/RainbowBorders.bak.sh index 49de9ea7..87f13c34 100755 --- a/config/hypr/UserScripts/RainbowBorders.bak.sh +++ b/config/hypr/UserScripts/RainbowBorders.bak.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Smooth border cycling effect using Wallust palette or full rainbow # Possible values: "wallust_random", "rainbow", "gradient_flow" diff --git a/config/hypr/UserScripts/RofiBeats.sh b/config/hypr/UserScripts/RofiBeats.sh index 64e8ee99..057d53b9 100755 --- a/config/hypr/UserScripts/RofiBeats.sh +++ b/config/hypr/UserScripts/RofiBeats.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # RofiBeats - unified, dynamic UI (add, remove, manage, play) mDIR="$HOME/Music/" diff --git a/config/hypr/UserScripts/RofiCalc.sh b/config/hypr/UserScripts/RofiCalc.sh index 116fc6cc..40a7ca3f 100755 --- a/config/hypr/UserScripts/RofiCalc.sh +++ b/config/hypr/UserScripts/RofiCalc.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # /* Calculator (using qalculate) and rofi */ # /* Submitted by: https://github.com/JosephArmas */ diff --git a/config/hypr/UserScripts/Tak0-Autodispatch.sh b/config/hypr/UserScripts/Tak0-Autodispatch.sh index 48c22515..b0607e13 100755 --- a/config/hypr/UserScripts/Tak0-Autodispatch.sh +++ b/config/hypr/UserScripts/Tak0-Autodispatch.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # USAGE: # 1) Run from terminal: # ./dispatch.sh <application_command> <target_workspace_number> diff --git a/config/hypr/UserScripts/WallpaperAutoChange.sh b/config/hypr/UserScripts/WallpaperAutoChange.sh index 9643c7e9..aa6cf89e 100755 --- a/config/hypr/UserScripts/WallpaperAutoChange.sh +++ b/config/hypr/UserScripts/WallpaperAutoChange.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # source https://wiki.archlinux.org/title/Hyprland#Using_a_script_to_change_wallpaper_every_X_minutes # This script will randomly go through the files of a directory, setting it @@ -10,6 +15,11 @@ wallust_refresh=$HOME/.config/hypr/scripts/RefreshNoWaybar.sh focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}') +if command -v awww >/dev/null 2>&1; then + WWW="awww" +else + WWW="swww" +fi if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then echo "Usage: @@ -31,7 +41,7 @@ while true; do done \ | sort -n | cut -d':' -f2- \ | while read -r img; do - swww img -o $focused_monitor "$img" + $WWW img -o $focused_monitor "$img" # Regenerate colors from the exact image path to avoid cache races $HOME/.config/hypr/scripts/WallustSwww.sh "$img" # Refresh UI components that depend on wallust output diff --git a/config/hypr/UserScripts/WallpaperEffects.sh b/config/hypr/UserScripts/WallpaperEffects.sh index caca56e1..57db3532 100755 --- a/config/hypr/UserScripts/WallpaperEffects.sh +++ b/config/hypr/UserScripts/WallpaperEffects.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Wallpaper Effects using ImageMagick (SUPER SHIFT W) # Variables @@ -9,17 +14,26 @@ wallpaper_output="$HOME/.config/hypr/wallpaper_effects/.wallpaper_modified" SCRIPTSDIR="$HOME/.config/hypr/scripts" focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name') rofi_theme="$HOME/.config/rofi/config-wallpaper-effect.rasi" +if command -v awww >/dev/null 2>&1; then + WWW="awww" +else + WWW="swww" +fi # Directory for swaync iDIR="$HOME/.config/swaync/images" iDIRi="$HOME/.config/swaync/icons" -# swww transition config +# swww transition config (only when using swww) FPS=60 TYPE="wipe" DURATION=2 BEZIER=".43,1.19,1,.4" -SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" +if [[ "$WWW" == "swww" ]]; then + SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" +else + SWWW_PARAMS="" +fi # Define ImageMagick effects declare -A effects=( @@ -45,7 +59,7 @@ declare -A effects=( # Function to apply no effects no-effects() { - swww img -o "$focused_monitor" "$wallpaper_current" $SWWW_PARAMS && + $WWW img -o "$focused_monitor" "$wallpaper_current" $SWWW_PARAMS && wait $! wallust run "$wallpaper_current" -s && wait $! @@ -83,7 +97,7 @@ main() { done sleep 1 - swww img -o "$focused_monitor" "$wallpaper_output" $SWWW_PARAMS & + $WWW img -o "$focused_monitor" "$wallpaper_output" $SWWW_PARAMS & sleep 2 diff --git a/config/hypr/UserScripts/WallpaperRandom.sh b/config/hypr/UserScripts/WallpaperRandom.sh index a9908e19..db8251f2 100755 --- a/config/hypr/UserScripts/WallpaperRandom.sh +++ b/config/hypr/UserScripts/WallpaperRandom.sh @@ -1,10 +1,17 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script for Random Wallpaper ( CTRL ALT W) PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")" wallDIR="$PICTURES_DIR/wallpapers" SCRIPTSDIR="$HOME/.config/hypr/scripts" +# shellcheck source=/dev/null +. "$SCRIPTSDIR/WallpaperCmd.sh" focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name') @@ -12,18 +19,24 @@ PICS=($(find -L "${wallDIR}" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]} -# Transition config +# Transition config (only when using swww) FPS=30 TYPE="random" DURATION=1 BEZIER=".43,1.19,1,.4" -SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" +if [[ "$WWW_CMD" == "swww" ]]; then + SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" +else + SWWW_PARAMS="" +fi +if ! "$WWW_CMD" query >/dev/null 2>&1; then + "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" & +fi - -swww query || swww-daemon --format xrgb && swww img -o $focused_monitor ${RANDOMPICS} $SWWW_PARAMS +"$WWW_CMD" img -o "$focused_monitor" "$RANDOMPICS" $SWWW_PARAMS wait $! -"$SCRIPTSDIR/WallustSwww.sh" && +"$SCRIPTSDIR/WallustSwww.sh" "$RANDOMPICS" && wait $! sleep 2 diff --git a/config/hypr/UserScripts/WallpaperSelect.sh b/config/hypr/UserScripts/WallpaperSelect.sh index ed0b2846..9dafdf57 100755 --- a/config/hypr/UserScripts/WallpaperSelect.sh +++ b/config/hypr/UserScripts/WallpaperSelect.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # This script for selecting wallpapers (SUPER W) # WALLPAPERS PATH @@ -7,18 +12,25 @@ terminal=kitty PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")" wallDIR="$PICTURES_DIR/wallpapers" SCRIPTSDIR="$HOME/.config/hypr/scripts" +# shellcheck source=/dev/null +. "$SCRIPTSDIR/WallpaperCmd.sh" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" +wallpaper_link="$HOME/.config/rofi/.current_wallpaper" # Directory for swaync iDIR="$HOME/.config/swaync/images" iDIRi="$HOME/.config/swaync/icons" -# swww transition config +# swww transition config (only when using swww) FPS=60 TYPE="any" DURATION=2 BEZIER=".43,1.19,1,.4" -SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" +if [[ "$WWW_CMD" == "swww" ]]; then + SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" +else + SWWW_PARAMS="" +fi # Check if package bc exists if ! command -v bc &>/dev/null; then @@ -46,7 +58,7 @@ rofi_override="element-icon{size:${adjusted_icon_size}%;}" # Kill existing wallpaper daemons for video kill_wallpaper_for_video() { - swww kill 2>/dev/null + "$WWW_CMD" kill 2>/dev/null pkill mpvpaper 2>/dev/null pkill swaybg 2>/dev/null pkill hyprpaper 2>/dev/null @@ -66,7 +78,19 @@ mapfile -d '' PICS < <(find -L "${wallDIR}" -type f \( \ -iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" -o -iname "*.webm" \) -print0) RANDOM_PIC="${PICS[$((RANDOM % ${#PICS[@]}))]}" -RANDOM_PIC_NAME=". random" +RANDOM_PIC_NAME="$(basename "$RANDOM_PIC")" + +CURRENT_MON_PIC_PATH=$("$WWW_CMD" query 2>/dev/null | grep "$focused_monitor" | awk '{print $NF}') +if [[ -z "$CURRENT_MON_PIC_PATH" ]]; then + if [[ -L "$wallpaper_link" ]]; then + CURRENT_MON_PIC_PATH="$(readlink -f "$wallpaper_link")" + elif [[ -f "$wallpaper_link" ]]; then + CURRENT_MON_PIC_PATH="$wallpaper_link" + elif [[ -f "$wallpaper_current" ]]; then + CURRENT_MON_PIC_PATH="$wallpaper_current" + fi +fi +CURRENT_MON_PIC_NAME=$(basename "$CURRENT_MON_PIC_PATH") # Rofi command rofi_command="rofi -i -show -dmenu -config $rofi_theme -theme-str $rofi_override" @@ -75,7 +99,10 @@ rofi_command="rofi -i -show -dmenu -config $rofi_theme -theme-str $rofi_override menu() { IFS=$'\n' sorted_options=($(sort <<<"${PICS[*]}")) - printf "%s\x00icon\x1f%s\n" "$RANDOM_PIC_NAME" "$RANDOM_PIC" + printf "%s\x00icon\x1f%s\n" "Random: $RANDOM_PIC_NAME" "$RANDOM_PIC" + if [[ -n "$CURRENT_MON_PIC_PATH" ]]; then + printf "%s\x00icon\x1f%s\n" "Current: $CURRENT_MON_PIC_NAME" "$CURRENT_MON_PIC_PATH" + fi for pic_path in "${sorted_options[@]}"; do pic_name=$(basename "$pic_path") @@ -107,6 +134,7 @@ modify_startup_config() { # Check if it's a live wallpaper (video) if [[ "$selected_file" =~ \.(mp4|mkv|mov|webm)$ ]]; then # For video wallpapers: + sed -i '/^\s*exec-once\s*=\s*\$scriptsDir\/WallpaperDaemon\.sh\s*$/s/^/\#/' "$startup_config" sed -i '/^\s*exec-once\s*=\s*swww-daemon\s*--format\s*xrgb\s*$/s/^/\#/' "$startup_config" sed -i '/^\s*#\s*exec-once\s*=\s*mpvpaper\s*.*$/s/^#\s*//;' "$startup_config" @@ -117,6 +145,7 @@ modify_startup_config() { echo "Configured for live wallpaper (video)." else # For image wallpapers: + sed -i '/^\s*#\s*exec-once\s*=\s*\$scriptsDir\/WallpaperDaemon\.sh\s*$/s/^\s*#\s*//;' "$startup_config" sed -i '/^\s*#\s*exec-once\s*=\s*swww-daemon\s*--format\s*xrgb\s*$/s/^\s*#\s*//;' "$startup_config" sed -i '/^\s*exec-once\s*=\s*mpvpaper\s*.*$/s/^/\#/' "$startup_config" @@ -131,12 +160,20 @@ apply_image_wallpaper() { kill_wallpaper_for_image - if ! pgrep -x "swww-daemon" >/dev/null; then - echo "Starting swww-daemon..." - swww-daemon --format xrgb & + if ! pgrep -x "$WWW_DAEMON" >/dev/null; then + echo "Starting $WWW_DAEMON..." + "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" & fi - - swww img -o "$focused_monitor" "$image_path" $SWWW_PARAMS + # Wait for daemon to be ready before applying + for _ in {1..20}; do + "$WWW_CMD" query >/dev/null 2>&1 && break + sleep 0.1 + done + "$WWW_CMD" img -o "$focused_monitor" "$image_path" $SWWW_PARAMS || { + sleep 0.2 + "$WWW_CMD" img -o "$focused_monitor" "$image_path" $SWWW_PARAMS + } + "$WWW_CMD" img -o "$focused_monitor" "$image_path" $SWWW_PARAMS # Run additional scripts (pass the image path to avoid cache race conditions) "$SCRIPTSDIR/WallustSwww.sh" "$image_path" @@ -165,21 +202,32 @@ main() { choice=$(menu | $rofi_command) choice=$(echo "$choice" | xargs) RANDOM_PIC_NAME=$(echo "$RANDOM_PIC_NAME" | xargs) + raw_choice="$choice" + choice="${choice#Random: }" + choice="${choice#Current: }" if [[ -z "$choice" ]]; then echo "No choice selected. Exiting." exit 0 fi - # Handle random selection correctly - if [[ "$choice" == "$RANDOM_PIC_NAME" ]]; then - choice=$(basename "$RANDOM_PIC") - fi - - choice_basename=$(basename "$choice" | sed 's/\(.*\)\.[^.]*$/\1/') + # Resolve selection directly when using Random/Current entries + if [[ "$raw_choice" == Random:\ * ]]; then + selected_file="$RANDOM_PIC" + elif [[ "$raw_choice" == Current:\ * && -n "$CURRENT_MON_PIC_PATH" ]]; then + selected_file="$CURRENT_MON_PIC_PATH" + elif [[ -f "$choice" ]]; then + selected_file="$choice" + else + # Handle random selection by name when needed + if [[ "$choice" == "$RANDOM_PIC_NAME" ]]; then + choice=$(basename "$RANDOM_PIC") + fi + choice_basename=$(basename "$choice" | sed 's/\(.*\)\.[^.]*$/\1/') - # Search for the selected file in the wallpapers directory, including subdirectories - selected_file=$(find "$wallDIR" -iname "$choice_basename.*" -print -quit) + # Search for the selected file in the wallpapers directory, including subdirectories + selected_file=$(find "$wallDIR" -iname "$choice_basename.*" -print -quit) + fi if [[ -z "$selected_file" ]]; then echo "File not found. Selected choice: $choice" diff --git a/config/hypr/UserScripts/Weather.py b/config/hypr/UserScripts/Weather.py index e7a0fe01..6905e0e1 100755 --- a/config/hypr/UserScripts/Weather.py +++ b/config/hypr/UserScripts/Weather.py @@ -1,5 +1,10 @@ #!/usr/bin/env python3 -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Rewritten to use Open-Meteo APIs (worldwide, no API key) for robust weather data. # Outputs Waybar-compatible JSON and a simple text cache. diff --git a/config/hypr/UserScripts/Weather.sh b/config/hypr/UserScripts/Weather.sh index c01a4e12..c6683e07 100755 --- a/config/hypr/UserScripts/Weather.sh +++ b/config/hypr/UserScripts/Weather.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # weather info from wttr. https://github.com/chubin/wttr.in # Remember to add city # Function to get current city from IP address with fallback diff --git a/config/hypr/UserScripts/WeatherWrap.sh b/config/hypr/UserScripts/WeatherWrap.sh index 5e8b4733..1e15e4a6 100755 --- a/config/hypr/UserScripts/WeatherWrap.sh +++ b/config/hypr/UserScripts/WeatherWrap.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Weather entrypoint: prefer Python (Open‑Meteo), fallback to legacy Bash (wttr.in) SCRIPT_DIR="$(dirname "$0")" diff --git a/config/hypr/UserScripts/ZshChangeTheme.sh b/config/hypr/UserScripts/ZshChangeTheme.sh index 3e2f077a..94c1b448 100755 --- a/config/hypr/UserScripts/ZshChangeTheme.sh +++ b/config/hypr/UserScripts/ZshChangeTheme.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script for Oh my ZSH theme ( CTRL SHIFT O) # preview of theme can be view here: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes diff --git a/config/hypr/configs/ENVariables.conf b/config/hypr/configs/ENVariables.conf index 585ae9f5..fd7831b8 100644 --- a/config/hypr/configs/ENVariables.conf +++ b/config/hypr/configs/ENVariables.conf @@ -1,11 +1,16 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # 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.21 +# Current Version of KoolDots: +env = DOTS_VERSION,2.3.22 ### Toolkit Backend Variables ### env = GDK_BACKEND,wayland,x11,* @@ -24,8 +29,8 @@ 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 +env = QT_STYLE_OVERRIDE,kvantum ### hyprland-qt-support ### env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf index ba0201f1..bbc93b25 100644 --- a/config/hypr/configs/Keybinds.conf +++ b/config/hypr/configs/Keybinds.conf @@ -1,8 +1,12 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Default Keybinds # visit https://wiki.hyprland.org/Configuring/Binds/ for more info -# /* ---- ✴️ Variables ✴️ ---- */ # $mainMod = SUPER $scriptsDir = $HOME/.config/hypr/scripts $UserConfigs = $HOME/.config/hypr/UserConfigs @@ -11,7 +15,7 @@ $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 #### +#### STANDARD #### # 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 @@ -21,6 +25,7 @@ bindd = $mainMod, A, desktop overview, exec, $scriptsDir/OverviewToggle.sh # tog #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 +bindd = $mainMod, C, SSH session manager, exec, $scriptsDir/rofi-ssh-menu.sh # FEATURES / EXTRAS bindd = $mainMod, T, Global theme switcher using Wallust, exec, $scriptsDir/ThemeChanger.sh #Global theme switcher @@ -31,19 +36,19 @@ 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, L, toggle layouts, exec, $scriptsDir/ChangeLayout.sh toggle 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 CTRL, K, Kitty theme selector, exec, $scriptsDir/Kitty_themes.sh bindd = $mainMod SHIFT, B, Set static Rainbow Border, exec, $UserScripts/RainbowBorders-low-cpu.sh --run-once bindd = $mainMod SHIFT, H, Toggle Mute/Unmute for Active-Window, exec, $scriptsDir/Toggle-Active-Window-Audio.sh -bindd = ALT SHIFT, S, Hyprshot Screen Capture, exec, $scriptsDir/hyprshot.sh -m region -o %HOME/Pictures/Screenshots +bindd = ALT SHIFT, S, Hyprshot Screen Capture, exec, $scriptsDir/hyprshot.sh -m region -o $HOME/Pictures/Screenshots 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 ALT, SPACE, Float all windows, exec, $scriptsDir/Float-all-Windows.sh bindd = $mainMod SHIFT, Return, DropDown terminal, exec, $scriptsDir/Dropterminal.sh $term # Desktop zooming or magnifier @@ -90,14 +95,13 @@ bindd = $mainMod SHIFT, E, Quick settings menu, exec, $scriptsDir/Kool_Quick_Set # Master Layout bindd = $mainMod CTRL, D, remove master, layoutmsg, removemaster bindd = $mainMod, I, add master, layoutmsg, addmaster -# NOTE: J/K bindings are set dynamically by scripts/KeybindsLayoutInit.sh and scripts/ChangeLayout.sh -# (we intentionally do not bind them statically here to avoid conflicts across layouts) -# bindd = $mainMod, J, cycle next, layoutmsg, cyclenext -# bindd = $mainMod, K, cycle previous, layoutmsg, cycleprev +# j/k cycle windows globally +bindd = $mainMod, j, cycle next, layoutmsg, cyclenext +bindd = $mainMod, k, cycle previous, layoutmsg, cycleprev bindd = $mainMod CTRL, Return, swap with master, layoutmsg, swapwithmaster # Dwindle Layout -bindd = $mainMod SHIFT, I, toggle split (dwindle), togglesplit +bindd = $mainMod SHIFT, I, toggle split (dwindle), layoutmsg, togglesplit bindd = $mainMod, P, toggle pseudo (dwindle), pseudo, # Works on either layout (Master or Dwindle) @@ -105,6 +109,24 @@ bindd = $mainMod, M, set split ratio 0.3, exec, hyprctl dispatch splitratio 0.3 # layout aware keybinds exec-once = $scriptsDir/ChangeLayout.sh init +# Direct layout binds +bindd = $mainMod ALT, 1, layout dwindle, exec, $scriptsDir/ChangeLayout.sh dwindle +bindd = $mainMod ALT, 2, layout master, exec, $scriptsDir/ChangeLayout.sh master +bindd = $mainMod ALT, 3, layout scrolling, exec, $scriptsDir/ChangeLayout.sh scrolling +bindd = $mainMod ALT, 4, layout monocle, exec, $scriptsDir/ChangeLayout.sh monocle + +# Scrolling Layout +bindd = $mainMod SHIFT, period, move to right column, layoutmsg, move +col +bindd = $mainMod SHIFT, comma, move to left column, layoutmsg, move -col +bindd = $mainMod ALT, comma, swap columns left, layoutmsg, swapcol l +bindd = $mainMod ALT, period, swap columns right, layoutmsg, swapcol r + +# Set layout to Horizontal (Standard "Tape" style) +bindd = $mainMod ALT, H, Horizonal scroll right,exec, hyprctl keyword scrolling:direction right +# Set layout to Vertical (Stacked "Column" style) +bindd = $mainMod ALT, V, Vertical Scroll down,exec, hyprctl keyword scrolling:direction down +# Create a toggle bind (e.g., Mod + Shift + S) +bindd = $mainMod ALT, S, toggle scrolling V/H, exec, bash -c '[[ $(hyprctl getoption scrolling:direction -j | jq -r ".str") == "right" ]] && hyprctl keyword scrolling:direction down || hyprctl keyword scrolling:direction right' # Cycle windows; if floating bring to top bindd = ALT, tab, cycle next window, cyclenext diff --git a/config/hypr/configs/Laptops.conf b/config/hypr/configs/Laptops.conf index ec58fdd6..9ee2b2b2 100644 --- a/config/hypr/configs/Laptops.conf +++ b/config/hypr/configs/Laptops.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings # These configs are mostly for laptops. This is addemdum to Keybinds.conf diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf index 67680af4..a27a12b9 100644 --- a/config/hypr/configs/Startup_Apps.conf +++ b/config/hypr/configs/Startup_Apps.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Commands and Apps to be executed at launch (vendor defaults) $scriptsDir = $HOME/.config/hypr/scripts $UserScripts = $HOME/.config/hypr/UserScripts @@ -8,7 +13,7 @@ $livewallpaper="" $wallDIR = $HOME/Pictures/wallpapers # change path manually here if needed ### wallpaper stuff ### -exec-once = swww-daemon --format xrgb +exec-once = $scriptsDir/WallpaperDaemon.sh #exec-once = mpvpaper '*' -o "load-scripts=no no-audio --loop" $livewallpaper # wallpaper random #exec-once = $SwwwRandom $wallDIR # random wallpaper switcher every 30 minutes @@ -16,7 +21,7 @@ exec-once = swww-daemon --format xrgb ### 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 = $HOME/.config/hypr/scripts/Dropterminal.sh kitty & +exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh "kitty --class kitty-dropterm" & exec-once = $scriptsDir/Polkit.sh exec-once = nm-applet --indicator exec-once = nm-tray # For ubuntu @@ -24,7 +29,7 @@ exec-once = swaync #exec-once = ags #exec-once = blueman-applet #exec-once = rog-control-center -exec-once = $scriptsDir/PortalHyprlandUbuntu2604.sh +exec-once = $scriptsDir/PortalHyprlandUbuntu.sh exec-once = waybar exec-once = qs -c overview # Quickshell Overview exec-once = hypridle @@ -40,7 +45,7 @@ exec-once = wl-paste --type image --watch cliphist store # Here are list of features available but disabled by default # Persistent wallpaper -# exec-once = swww-daemon --format xrgb && swww img $wallDIR/mecha-nostalgia.png +# exec-once = sh -c '$HOME/.config/hypr/scripts/WallpaperDaemon.sh && (command -v awww >/dev/null 2>&1 && awww img "$wallDIR/mecha-nostalgia.png" || swww img "$wallDIR/mecha-nostalgia.png")' # Gnome polkit for NixOS #exec-once = $scriptsDir/Polkit-NixOS.sh diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf index d7892d17..3d8122be 100644 --- a/config/hypr/configs/SystemSettings.conf +++ b/config/hypr/configs/SystemSettings.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Default settings # This is where you put your own settings as this will not be touched during update # if the upgrade.sh is used. @@ -9,16 +14,42 @@ $scriptsDir = $HOME/.config/hypr/scripts dwindle { - pseudotile = true + pseudotile = false preserve_split = true - #smart_split = true + smart_resizing = true + use_active_for_splits = true + smart_split = false + default_split_ratio = 1.0 + split_bias = 0 + precise_mouse_move = false special_scale_factor = 0.8 } master { - new_status = master - new_on_top = 1 - mfact = 0.5 + new_status = slave + new_on_top = false + new_on_active = none + orientation = left + mfact = 0.55 + slave_count_for_center_master = 2 + center_master_fallback = left + smart_resizing = true + drop_at_cursor = true + always_keep_position = false +} + +scrolling { + # Default width of new windows (0.1 - 1.0) + column_width = 0.80 + # If only one window is open, should it span the whole screen? + fullscreen_on_one_column = true + # Direction: right, left, up, or down + direction = right + # Center the focused window automatically + follow_focus = true +} +monocle { + # I can't find any settings on the wiki } general { @@ -34,7 +65,6 @@ input { 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 @@ -63,20 +93,23 @@ input { } } - gestures { - gesture = 3, horizontal, workspace - workspace_swipe_distance = 500 + workspace_swipe_distance = 300 + workspace_swipe_touch = false 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 + workspace_swipe_create_new = true + workspace_swipe_direction_lock = true + workspace_swipe_forever = false + workspace_swipe_use_r = false + close_max_timeout = 100 - 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 + gesture = 3, horizontal, workspace + gesture = 3, 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 = 3, 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 = 4, up, dispatcher, exec, $scriptsDir/OverviewToggle.sh + gesture = 4, down, float } misc { @@ -126,4 +159,16 @@ cursor { enable_hyprcursor = true warp_on_change_workspace = 2 no_warps = true + no_break_fs_vrr = false + min_refresh_rate = 24 + hotspot_padding = 1 + inactive_timeout = 0 + default_monitor = + zoom_factor = 1.0 + zoom_rigid = false + zoom_detached_camera = true + hide_on_key_press = true + hide_on_touch = false + hide_on_tablet = false + use_cpu_buffer = false } diff --git a/config/hypr/configs/WindowRules-config-v3.conf b/config/hypr/configs/WindowRules-config-v3.conf index 8212e9bf..29d5c274 100644 --- a/config/hypr/configs/WindowRules-config-v3.conf +++ b/config/hypr/configs/WindowRules-config-v3.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Vendor defaults for window rules and layerrules # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more @@ -37,7 +42,7 @@ windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings # terminal tags -windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal +windowrule = match:class ^(ghostty|wezterm|Alacritty|kitty|kitty-dropterm)$, tag +terminal # email tags windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email @@ -116,6 +121,7 @@ windowrule = match:class ^([Qq]alculate-gtk)$, float on # float popups and dialogue windowrule = match:title ^(Authentication Required)$, float on, center on +windowrule = match:class ^(xfce-polkit|mate-polkit|polkit-mate-authentication-agent-1)$, match:title ^(Authentication required|Authentication Required)$, float on, center on, size (monitor_w*0.35) (monitor_h*0.35) windowrule = match:class (codium|codium-url-handler|VSCodium), match:title negative:(.*codium.*|.*VSCodium.*), float on windowrule = match:class ^(com.heroicgameslauncher.hgl)$, match:title negative:(Heroic Games Launcher), float on windowrule = match:class ^([Ss]team)$, match:title negative:^([Ss]team)$, float on @@ -166,6 +172,18 @@ layerrule = match:namespace notifications, blur on layerrule = match:namespace quickshell:overview, blur on layerrule = match:namespace quickshell:overview, ignore_alpha 0.5 +# +layerrule = blur on, match:namespace wallpaper +layerrule = animation slide, match:namespace rofi +layerrule = animation slide, match:namespace notifications + +# Optional Layer rules +# To Resolve blurred corners in rofi Add to User config +# SUPER SHIFT + E Edit User Window Rules +#layerrule = blur on, ignore_alpha 0, match:namespace rofi +#layerrule = blur on, match:namespace waybar + + windowrule { name = Picture-in-Picture match:title = ^[Pp]icture-in-[Pp]icture$ @@ -189,6 +207,40 @@ windowrule { size = (monitor_w*0.6) (monitor_h*0.6) } +# Named rule for Mainline Kernels +windowrule { + name = Mainline Kernels + match:class = ^(mainline-gtk)$ + match:title = ^(Mainline Kernels)$ + match:initial_class = ^(mainline-gtk)$ + match:initial_title = ^(Mainline Kernels)$ + float = on + center = on + size = (monitor_w*0.45) (monitor_h*0.55) +} + +# Named rule for Kwallet +windowrule { + name = Kwallet + match:class = ^(org.kde.kwalletmanager)$ + match:title = ^(Wallet Manager)$ + match:initial_class = ^(org.kde.kwalletmanager)$ + match:initial_title = ^(Wallet Manager)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} +# Named rule for NVIDIA Settings +windowrule { + name = NVIDIA Settings + match:class = ^(nvidia-settings)$ + match:title = ^(NVIDIA Settings)$ + match:initial_class = ^(nvidia-settings)$ + match:initial_title = ^(NVIDIA Settings)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} # Named rule for CachyOS Package Installer windowrule { name = CachyOS Package Installer @@ -326,7 +378,7 @@ windowrule { match:class = (org.gnome.Calculator|qalculate-gtk) float = on center = on - size = (monitor_w*0.25) (monitor_h*0.3) + size = (monitor_w*0.55) (monitor_h*0.45) } # Named rule for Thunar Dialogs @@ -347,5 +399,5 @@ windowrule { match:initial_title = ^(Bitwarden)$ float = on center = on - size = (monitor_w*0.6) (monitor_h*0.6) + size = (monitor_w*0.6) (monitor_h*0.6) } diff --git a/config/hypr/configs/WindowRules-pre-53.conf b/config/hypr/configs/WindowRules-pre-53.conf index 589a8acb..fc74f600 100644 --- a/config/hypr/configs/WindowRules-pre-53.conf +++ b/config/hypr/configs/WindowRules-pre-53.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Vendor defaults for window rules and layerrules # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more diff --git a/config/hypr/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf index 8212e9bf..29d5c274 100644 --- a/config/hypr/configs/WindowRules.conf +++ b/config/hypr/configs/WindowRules.conf @@ -1,4 +1,9 @@ -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Vendor defaults for window rules and layerrules # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more @@ -37,7 +42,7 @@ windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings # terminal tags -windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal +windowrule = match:class ^(ghostty|wezterm|Alacritty|kitty|kitty-dropterm)$, tag +terminal # email tags windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email @@ -116,6 +121,7 @@ windowrule = match:class ^([Qq]alculate-gtk)$, float on # float popups and dialogue windowrule = match:title ^(Authentication Required)$, float on, center on +windowrule = match:class ^(xfce-polkit|mate-polkit|polkit-mate-authentication-agent-1)$, match:title ^(Authentication required|Authentication Required)$, float on, center on, size (monitor_w*0.35) (monitor_h*0.35) windowrule = match:class (codium|codium-url-handler|VSCodium), match:title negative:(.*codium.*|.*VSCodium.*), float on windowrule = match:class ^(com.heroicgameslauncher.hgl)$, match:title negative:(Heroic Games Launcher), float on windowrule = match:class ^([Ss]team)$, match:title negative:^([Ss]team)$, float on @@ -166,6 +172,18 @@ layerrule = match:namespace notifications, blur on layerrule = match:namespace quickshell:overview, blur on layerrule = match:namespace quickshell:overview, ignore_alpha 0.5 +# +layerrule = blur on, match:namespace wallpaper +layerrule = animation slide, match:namespace rofi +layerrule = animation slide, match:namespace notifications + +# Optional Layer rules +# To Resolve blurred corners in rofi Add to User config +# SUPER SHIFT + E Edit User Window Rules +#layerrule = blur on, ignore_alpha 0, match:namespace rofi +#layerrule = blur on, match:namespace waybar + + windowrule { name = Picture-in-Picture match:title = ^[Pp]icture-in-[Pp]icture$ @@ -189,6 +207,40 @@ windowrule { size = (monitor_w*0.6) (monitor_h*0.6) } +# Named rule for Mainline Kernels +windowrule { + name = Mainline Kernels + match:class = ^(mainline-gtk)$ + match:title = ^(Mainline Kernels)$ + match:initial_class = ^(mainline-gtk)$ + match:initial_title = ^(Mainline Kernels)$ + float = on + center = on + size = (monitor_w*0.45) (monitor_h*0.55) +} + +# Named rule for Kwallet +windowrule { + name = Kwallet + match:class = ^(org.kde.kwalletmanager)$ + match:title = ^(Wallet Manager)$ + match:initial_class = ^(org.kde.kwalletmanager)$ + match:initial_title = ^(Wallet Manager)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} +# Named rule for NVIDIA Settings +windowrule { + name = NVIDIA Settings + match:class = ^(nvidia-settings)$ + match:title = ^(NVIDIA Settings)$ + match:initial_class = ^(nvidia-settings)$ + match:initial_title = ^(NVIDIA Settings)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} # Named rule for CachyOS Package Installer windowrule { name = CachyOS Package Installer @@ -326,7 +378,7 @@ windowrule { match:class = (org.gnome.Calculator|qalculate-gtk) float = on center = on - size = (monitor_w*0.25) (monitor_h*0.3) + size = (monitor_w*0.55) (monitor_h*0.45) } # Named rule for Thunar Dialogs @@ -347,5 +399,5 @@ windowrule { match:initial_title = ^(Bitwarden)$ float = on center = on - size = (monitor_w*0.6) (monitor_h*0.6) + size = (monitor_w*0.6) (monitor_h*0.6) } diff --git a/config/hypr/initial-boot.sh b/config/hypr/initial-boot.sh index c68560ab..8ccda640 100755 --- a/config/hypr/initial-boot.sh +++ b/config/hypr/initial-boot.sh @@ -17,7 +17,14 @@ gtk_theme="Flat-Remix-GTK-Blue-Dark" icon_theme="Flat-Remix-Blue-Dark" cursor_theme="Bibata-Modern-Ice" -swww="swww img" +if command -v awww >/dev/null 2>&1; then + WWW="awww" + DAEMON="awww-daemon" +else + WWW="swww" + DAEMON="swww-daemon" +fi +swww="$WWW img" effect="--transition-bezier .43,1.19,1,.4 --transition-fps 30 --transition-type grow --transition-pos 0.925,0.977 --transition-duration 2" # Check if a marker file exists. @@ -26,7 +33,7 @@ if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then # Initialize wallust and wallpaper if [ -f "$wallpaper" ]; then wallust run -s $wallpaper > /dev/null - swww query || swww-daemon && $swww $wallpaper $effect + $WWW query || $DAEMON && $swww $wallpaper $effect "$scriptsDir/WallustSwww.sh" > /dev/null 2>&1 & fi diff --git a/config/hypr/scripts/AirplaneMode.sh b/config/hypr/scripts/AirplaneMode.sh index ba692f98..21aa04a8 100755 --- a/config/hypr/scripts/AirplaneMode.sh +++ b/config/hypr/scripts/AirplaneMode.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Airplane Mode. Turning on or off all wifi using rfkill. notif="$HOME/.config/swaync/images/ja.png" diff --git a/config/hypr/scripts/Animations.sh b/config/hypr/scripts/Animations.sh index ff3a6e45..5fb77750 100755 --- a/config/hypr/scripts/Animations.sh +++ b/config/hypr/scripts/Animations.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # For applying Animations from different users # Check if rofi is already running diff --git a/config/hypr/scripts/Battery.sh b/config/hypr/scripts/Battery.sh index 2baed6ca..c42a4dac 100755 --- a/config/hypr/scripts/Battery.sh +++ b/config/hypr/scripts/Battery.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash - +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== for i in {0..3}; do if [ -f /sys/class/power_supply/BAT$i/capacity ]; then battery_level=$(cat /sys/class/power_supply/BAT$i/status) diff --git a/config/hypr/scripts/Brightness.sh b/config/hypr/scripts/Brightness.sh index e0091417..bf0f4bf1 100755 --- a/config/hypr/scripts/Brightness.sh +++ b/config/hypr/scripts/Brightness.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script for Monitor backlights (if supported) using brightnessctl iDIR="$HOME/.config/swaync/icons" diff --git a/config/hypr/scripts/BrightnessKbd.sh b/config/hypr/scripts/BrightnessKbd.sh index f9015fe0..5bd09a78 100755 --- a/config/hypr/scripts/BrightnessKbd.sh +++ b/config/hypr/scripts/BrightnessKbd.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script for keyboard backlights (if supported) using brightnessctl iDIR="$HOME/.config/swaync/icons" diff --git a/config/hypr/scripts/ChangeBlur.sh b/config/hypr/scripts/ChangeBlur.sh index 084af2cb..10b5914e 100755 --- a/config/hypr/scripts/ChangeBlur.sh +++ b/config/hypr/scripts/ChangeBlur.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script for changing blurs on the fly notif="$HOME/.config/swaync/images" diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh index 499fa1e2..f52d783f 100755 --- a/config/hypr/scripts/ChangeLayout.sh +++ b/config/hypr/scripts/ChangeLayout.sh @@ -1,39 +1,112 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## -# for changing Hyprland Layouts (Master or Dwindle) on the fly +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# for changing Hyprland Layouts (master, dwindle, scrolling, monocle) on the fly notif="$HOME/.config/swaync/images/ja.png" -LAYOUT=$(hyprctl -j getoption general:layout | jq '.str' | sed 's/"//g') +layouts=(master dwindle scrolling monocle) -# Reverse layout value to reuse toggle logic. So layouts don't get swapped initially. -if [ "$1" = "init" ]; then - if [ "$LAYOUT" = "master" ]; then - LAYOUT="dwindle" - else - LAYOUT="master" - fi -fi +get_layout() { + hyprctl -j getoption general:layout | jq -r '.str' +} -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 - 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 +next_layout() { + local current="$1" + local i + for i in "${!layouts[@]}"; do + if [[ "${layouts[i]}" == "$current" ]]; then + echo "${layouts[((i + 1) % ${#layouts[@]})]}" + return + fi + done + echo "${layouts[0]}" +} + +set_layout() { + local target="$1" + + hyprctl keyword general:layout "$target" + hyprctl keyword unbind SUPER,j + hyprctl keyword unbind SUPER,k + hyprctl keyword unbind SUPER,left + hyprctl keyword unbind SUPER,right + hyprctl keyword unbind SUPER,up + hyprctl keyword unbind SUPER,down 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" - ;; -*) ;; + hyprctl keyword unbind SUPER_SHIFT,M + + case "$target" in + "dwindle") + hyprctl keyword bind SUPER,j,cyclenext + hyprctl keyword bind SUPER,k,cyclenext,prev + hyprctl keyword bind SUPER,left,cyclenext,prev + hyprctl keyword bind SUPER,up,cyclenext,prev + hyprctl keyword bind SUPER,right,cyclenext + hyprctl keyword bind SUPER,down,cyclenext + hyprctl keyword bind SUPER,O,layoutmsg,togglesplit + notify-send -e -u low -i "$notif" " Dwindle Layout" + ;; + "scrolling") + hyprctl keyword bind SUPER,j,cyclenext + hyprctl keyword bind SUPER,k,cyclenext,prev + hyprctl keyword bind SUPER,left,cyclenext,prev + hyprctl keyword bind SUPER,up,cyclenext,prev + hyprctl keyword bind SUPER,right,cyclenext + hyprctl keyword bind SUPER,down,cyclenext + notify-send -e -u low -i "$notif" " Scrolling Layout" + ;; + "monocle") + hyprctl keyword bind SUPER,j,layoutmsg,cyclenext + hyprctl keyword bind SUPER,k,layoutmsg,cycleprev + hyprctl keyword bind SUPER,left,layoutmsg,cycleprev + hyprctl keyword bind SUPER,up,layoutmsg,cycleprev + hyprctl keyword bind SUPER,right,layoutmsg,cyclenext + hyprctl keyword bind SUPER,down,layoutmsg,cyclenext + hyprctl keyword bind SUPER_SHIFT,M,layoutmsg,swapnext + notify-send -e -u low -i "$notif" " Monocle Layout" + ;; + "master") + hyprctl keyword bind SUPER,j,layoutmsg,cyclenext + hyprctl keyword bind SUPER,k,layoutmsg,cycleprev + hyprctl keyword bind SUPER,left,movefocus,l + hyprctl keyword bind SUPER,right,movefocus,r + hyprctl keyword bind SUPER,up,movefocus,u + hyprctl keyword bind SUPER,down,movefocus,d + notify-send -e -u low -i "$notif" " Master Layout" + ;; + *) + hyprctl keyword bind SUPER,j,layoutmsg,cyclenext + hyprctl keyword bind SUPER,k,layoutmsg,cycleprev + hyprctl keyword bind SUPER,left,movefocus,l + hyprctl keyword bind SUPER,right,movefocus,r + hyprctl keyword bind SUPER,up,movefocus,u + hyprctl keyword bind SUPER,down,movefocus,d + echo "Unknown layout: $target" >&2 + return 1 + ;; + esac +} +current="$(get_layout)" +arg="${1:-toggle}" + +case "$arg" in +init) + set_layout "$current" + ;; +toggle|next) + set_layout "$(next_layout "$current")" + ;; +master|dwindle|scrolling|monocle) + set_layout "$arg" + ;; +*) + echo "Usage: $(basename "$0") [toggle|next|init|master|dwindle|scrolling|monocle]" >&2 + exit 1 + ;; esac diff --git a/config/hypr/scripts/ClipManager.sh b/config/hypr/scripts/ClipManager.sh index d08fd8f4..e3fbd066 100755 --- a/config/hypr/scripts/ClipManager.sh +++ b/config/hypr/scripts/ClipManager.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Clipboard Manager. This script uses cliphist, rofi, and wl-copy. # Variables diff --git a/config/hypr/scripts/DarkLight.sh b/config/hypr/scripts/DarkLight.sh index 62bad62b..5b1cc3e7 100755 --- a/config/hypr/scripts/DarkLight.sh +++ b/config/hypr/scripts/DarkLight.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -## /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # For Dark and Light switching # Note: Scripts are looking for keywords Light or Dark except for wallpapers as the are in a separate directories @@ -12,6 +17,8 @@ hypr_config_path="$HOME/.config/hypr" swaync_style="$HOME/.config/swaync/style.css" ags_style="$HOME/.config/ags/user/style.css" SCRIPTSDIR="$HOME/.config/hypr/scripts" +# shellcheck source=/dev/null +. "$SCRIPTSDIR/WallpaperCmd.sh" notif="$HOME/.config/swaync/images/bell.png" wallust_rofi="$HOME/.config/wallust/templates/colors-rofi.rasi" @@ -31,11 +38,11 @@ for pid in waybar rofi swaync ags swaybg; do done -# Initialize swww if needed -swww query || swww-daemon --format xrgb +# Initialize wallpaper daemon if needed +"$WWW_CMD" query || "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" # Set swww options -swww="swww img" +swww="$WWW_CMD img" effect="--transition-bezier .43,1.19,1,.4 --transition-fps 60 --transition-type grow --transition-pos 0.925,0.977 --transition-duration 2" # Determine current theme mode diff --git a/config/hypr/scripts/Distro_update.sh b/config/hypr/scripts/Distro_update.sh index b4b8e90c..b9bcae71 100755 --- a/config/hypr/scripts/Distro_update.sh +++ b/config/hypr/scripts/Distro_update.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Simple bash script to check and will try to update your system # Local Paths diff --git a/config/hypr/scripts/Dropterminal.sh b/config/hypr/scripts/Dropterminal.sh index 2a9eb5b1..81c0f157 100755 --- a/config/hypr/scripts/Dropterminal.sh +++ b/config/hypr/scripts/Dropterminal.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # # Made and brought to by Kiran George # /* -- ✨ https://github.com/SherLock707 ✨ -- */ ## @@ -12,7 +17,13 @@ DEBUG=false SPECIAL_WS="special:scratchpad" +SPECIAL_NAME="${SPECIAL_WS#special:}" ADDR_FILE="/tmp/dropdown_terminal_addr" +STATE_FILE="/tmp/dropdown_terminal_state" +LOCK_FILE="/tmp/dropdown_terminal_lock" +LAST_TOGGLE_FILE="/tmp/dropdown_terminal_last_toggle" +MIN_TOGGLE_INTERVAL_MS=250 +DROPDOWN_KITTY_CLASS="kitty-dropterm" # Dropdown size and position configuration (percentages) WIDTH_PERCENT=65 # Width as percentage of screen width @@ -31,12 +42,63 @@ if [ "$1" = "-d" ]; then fi TERMINAL_CMD="$1" +if [[ "$TERMINAL_CMD" == kitty* ]] && [[ "$TERMINAL_CMD" != *"--class"* ]] && [[ "$TERMINAL_CMD" != *"--name"* ]] && [[ "$TERMINAL_CMD" != *"--app-id"* ]]; then + TERMINAL_CMD="$TERMINAL_CMD --class $DROPDOWN_KITTY_CLASS" +fi + +# Ensure only one instance runs at a time (prevents overlapping animations) +exec 9>"$LOCK_FILE" +flock -n 9 || exit 0 + +# Debounce rapid toggles +now_ms="" +if date +%s%3N >/dev/null 2>&1; then + now_ms=$(date +%s%3N) +else + now_ms=$(( $(date +%s) * 1000 )) +fi +if [ -f "$LAST_TOGGLE_FILE" ]; then + last_ms=$(cat "$LAST_TOGGLE_FILE" 2>/dev/null || echo 0) + if [ -n "$last_ms" ] && [ "$last_ms" -ge 0 ] 2>/dev/null; then + delta_ms=$((now_ms - last_ms)) + if [ "$delta_ms" -lt "$MIN_TOGGLE_INTERVAL_MS" ] 2>/dev/null; then + if [ "$DEBUG" = true ]; then + echo "Toggle debounced (${delta_ms}ms < ${MIN_TOGGLE_INTERVAL_MS}ms)" >&2 + fi + exit 0 + fi + fi +fi +echo "$now_ms" >"$LAST_TOGGLE_FILE" # Debug echo function debug_echo() { if [ "$DEBUG" = true ]; then - echo "$@" + echo "$@" >&2 + fi +} + +# Resolve terminal address, recovering by class if needed +resolve_terminal_address() { + local addr + addr=$(get_terminal_address) + if [ -n "$addr" ] && window_exists "$addr"; then + echo "$addr" + return 0 + fi + + local recovered + recovered=$(find_terminal_by_class) + if [ -n "$recovered" ] && [ "$recovered" != "null" ]; then + local mon_name + mon_name=$(get_monitor_info | awk '{print $6}') + echo "$recovered $mon_name" >"$ADDR_FILE" + echo "$recovered" + return 0 fi + + rm -f "$ADDR_FILE" + return 1 } # Validate input @@ -62,6 +124,28 @@ get_window_geometry() { hyprctl clients -j | jq -r --arg ADDR "$addr" '.[] | select(.address == $ADDR) | "\(.at[0]) \(.at[1]) \(.size[0]) \(.size[1])"' } +# Function to check if window is currently hidden off-screen +window_is_hidden() { + local addr="$1" + local y + y=$(hyprctl clients -j 2>/dev/null | jq -r --arg ADDR "$addr" '.[] | select(.address == $ADDR) | .at[1]' 2>/dev/null) + if [[ "$y" =~ ^-?[0-9]+$ ]] && [ "$y" -lt 0 ]; then + return 0 + fi + return 1 +} + +# State helpers +get_hidden_state() { + if [ -f "$STATE_FILE" ]; then + cat "$STATE_FILE" 2>/dev/null + fi +} + +set_hidden_state() { + echo "$1" >"$STATE_FILE" +} + # Function to animate window slide down (show) animate_slide_down() { local addr="$1" @@ -121,7 +205,30 @@ animate_slide_up() { # Function to get monitor info including scale and name of focused monitor get_monitor_info() { - local monitor_data=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | "\(.x) \(.y) \(.width) \(.height) \(.scale) \(.name)"') + local monitor_data + monitor_data=$(hyprctl monitors -j 2>/dev/null | jq -er 'map(select(.focused == true)) | .[0] | "\(.x) \(.y) \(.width) \(.height) \(.scale) \(.name)"' 2>/dev/null) || monitor_data="" + if [ -z "$monitor_data" ]; then + # Fallback for older Hyprland without -j support + monitor_data=$(hyprctl monitors 2>/dev/null | awk ' + /^Monitor / {name=$2; sub(/\(.*/, "", name); x=y=w=h=scale=""; focused="no"} + / at / { + # e.g. "1920x1080@74.97300 at 0x0" + split($1, res, "x"); w=res[1]; split(res[2], tmp, "@"); h=tmp[1] + split($4, pos, "x"); x=pos[1]; y=pos[2] + } + /scale:/ {scale=$2} + /focused:/ {focused=$2} + /^$/ { + if (focused=="yes" && x!="" && y!="" && w!="" && h!="" && scale!="" && name!="") { + print x, y, w, h, scale, name; exit + } + } + END { + if (focused=="yes" && x!="" && y!="" && w!="" && h!="" && scale!="" && name!="") { + print x, y, w, h, scale, name + } + }') + fi if [ -z "$monitor_data" ] || [[ "$monitor_data" =~ ^null ]]; then debug_echo "Error: Could not get focused monitor information" return 1 @@ -129,6 +236,7 @@ get_monitor_info() { echo "$monitor_data" } + # Function to calculate dropdown position with proper scaling and centering calculate_dropdown_position() { local monitor_info=$(get_monitor_info) @@ -148,6 +256,13 @@ calculate_dropdown_position() { debug_echo "Monitor info: x=$mon_x, y=$mon_y, width=$mon_width, height=$mon_height, scale=$mon_scale" + # Validate numeric fields + if ! [[ "$mon_x" =~ ^-?[0-9]+$ && "$mon_y" =~ ^-?[0-9]+$ && "$mon_width" =~ ^[0-9]+$ && "$mon_height" =~ ^[0-9]+$ ]]; then + debug_echo "Invalid monitor info format, using fallback values" + echo "100 100 800 600 fallback-monitor" + return 1 + fi + # Validate scale value and provide fallback if [ -z "$mon_scale" ] || [ "$mon_scale" = "null" ] || [ "$mon_scale" = "0" ]; then debug_echo "Invalid scale value, using 1.0 as fallback" @@ -207,6 +322,12 @@ get_terminal_address() { fi } +# Try to find an existing dropdown terminal by class (kitty only) +find_terminal_by_class() { + hyprctl clients -j 2>/dev/null | jq -r --arg CLASS "$DROPDOWN_KITTY_CLASS" \ + '.[] | select(.class == $CLASS) | .address' | head -1 +} + # Function to get stored monitor name get_terminal_monitor() { if [ -f "$ADDR_FILE" ] && [ -s "$ADDR_FILE" ]; then @@ -218,22 +339,48 @@ get_terminal_monitor() { terminal_exists() { local addr=$(get_terminal_address) if [ -n "$addr" ]; then - hyprctl clients -j | jq -e --arg ADDR "$addr" 'any(.[]; .address == $ADDR)' >/dev/null 2>&1 + hyprctl clients -j 2>/dev/null | jq -e --arg ADDR "$addr" 'any(.[]; .address == $ADDR)' >/dev/null 2>&1 else return 1 fi } -# Function to check if terminal is in special workspace -terminal_in_special() { - local addr=$(get_terminal_address) +# Function to check if a window address exists +window_exists() { + local addr="$1" + if [ -n "$addr" ]; then + hyprctl clients -j 2>/dev/null | jq -e --arg ADDR "$addr" 'any(.[]; .address == $ADDR)' >/dev/null 2>&1 + else + return 1 + fi +} + + +# Function to check if window is pinned +window_is_pinned() { + local addr="$1" if [ -n "$addr" ]; then - hyprctl clients -j | jq -e --arg ADDR "$addr" 'any(.[]; .address == $ADDR and .workspace.name == "special:scratchpad")' >/dev/null 2>&1 + hyprctl clients -j 2>/dev/null | jq -e --arg ADDR "$addr" '.[] | select(.address == $ADDR) | .pinned == true' >/dev/null 2>&1 else return 1 fi } +# Ensure pin state without toggling unexpectedly +ensure_pinned() { + local addr="$1" + if ! window_is_pinned "$addr"; then + hyprctl dispatch pin "address:$addr" >/dev/null 2>&1 + fi +} + +ensure_unpinned() { + local addr="$1" + if window_is_pinned "$addr"; then + hyprctl dispatch pin "address:$addr" >/dev/null 2>&1 + fi +} + # Function to spawn terminal and capture its address spawn_terminal() { debug_echo "Creating new dropdown terminal with command: $TERMINAL_CMD" @@ -288,12 +435,13 @@ spawn_terminal() { # Small delay to ensure it's properly in special workspace sleep 0.2 - - # Now bring it back with the same animation as subsequent shows - # Use movetoworkspacesilent to avoid affecting workspace history + # Move to current workspace but start hidden off-screen hyprctl dispatch movetoworkspacesilent "$CURRENT_WS,address:$new_addr" - hyprctl dispatch pin "address:$new_addr" - animate_slide_down "$new_addr" "$target_x" "$target_y" "$width" "$height" + ensure_pinned "$new_addr" + hyprctl dispatch resizewindowpixel "exact $width $height,address:$new_addr" >/dev/null 2>&1 + local off_y=$((target_y - height - 200)) + hyprctl dispatch movewindowpixel "exact $target_x $off_y,address:$new_addr" >/dev/null 2>&1 + set_hidden_state "hidden" return 0 fi @@ -303,8 +451,9 @@ spawn_terminal() { } # Main logic -if terminal_exists; then - TERMINAL_ADDR=$(get_terminal_address) +TERMINAL_ADDR=$(resolve_terminal_address) + +if [ -n "$TERMINAL_ADDR" ]; then debug_echo "Found existing terminal: $TERMINAL_ADDR" focused_monitor=$(get_monitor_info | awk '{print $6}') dropdown_monitor=$(get_terminal_monitor) @@ -324,8 +473,9 @@ if terminal_exists; then echo "$TERMINAL_ADDR $monitor_name" >"$ADDR_FILE" fi - if terminal_in_special; then - debug_echo "Bringing terminal from scratchpad with slide down animation" + hidden_state=$(get_hidden_state) + if [ "$hidden_state" = "hidden" ] || [ -z "$hidden_state" ] || window_is_hidden "$TERMINAL_ADDR"; then + debug_echo "Bringing terminal from hidden position with slide down animation" # Calculate target position pos_info=$(calculate_dropdown_position) @@ -334,17 +484,16 @@ if terminal_exists; then width=$(echo $pos_info | cut -d' ' -f3) height=$(echo $pos_info | cut -d' ' -f4) - # Use movetoworkspacesilent to avoid affecting workspace history - hyprctl dispatch movetoworkspacesilent "$CURRENT_WS,address:$TERMINAL_ADDR" - hyprctl dispatch pin "address:$TERMINAL_ADDR" + ensure_pinned "$TERMINAL_ADDR" # Set size and animate slide down hyprctl dispatch resizewindowpixel "exact $width $height,address:$TERMINAL_ADDR" animate_slide_down "$TERMINAL_ADDR" "$target_x" "$target_y" "$width" "$height" hyprctl dispatch focuswindow "address:$TERMINAL_ADDR" + set_hidden_state "shown" else - debug_echo "Hiding terminal to scratchpad with slide up animation" + debug_echo "Hiding terminal off-screen with slide up animation" # Get current geometry for animation geometry=$(get_window_geometry "$TERMINAL_ADDR") @@ -359,14 +508,16 @@ if terminal_exists; then # Animate slide up first animate_slide_up "$TERMINAL_ADDR" "$curr_x" "$curr_y" "$curr_width" "$curr_height" - # Small delay then move to special workspace and unpin - sleep 0.1 - hyprctl dispatch pin "address:$TERMINAL_ADDR" # Unpin (toggle) - hyprctl dispatch movetoworkspacesilent "$SPECIAL_WS,address:$TERMINAL_ADDR" + # Move off-screen after animation + off_y=$((curr_y - curr_height - 200)) + hyprctl dispatch movewindowpixel "exact $curr_x $off_y,address:$TERMINAL_ADDR" >/dev/null 2>&1 + ensure_unpinned "$TERMINAL_ADDR" + set_hidden_state "hidden" else - debug_echo "Could not get window geometry, moving to scratchpad without animation" - hyprctl dispatch pin "address:$TERMINAL_ADDR" - hyprctl dispatch movetoworkspacesilent "$SPECIAL_WS,address:$TERMINAL_ADDR" + debug_echo "Could not get window geometry, moving off-screen without animation" + hyprctl dispatch movewindowpixel "exact 0 -1000,address:$TERMINAL_ADDR" >/dev/null 2>&1 + ensure_unpinned "$TERMINAL_ADDR" + set_hidden_state "hidden" fi fi else diff --git a/config/hypr/scripts/ExternalBrightness.sh b/config/hypr/scripts/ExternalBrightness.sh new file mode 100755 index 00000000..29c1b238 --- /dev/null +++ b/config/hypr/scripts/ExternalBrightness.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# External monitor brightness via ddcutil + +set -u + +step=10 +vcp_code=10 + +usage() { + cat <<'EOF' +Usage: ExternalBrightness.sh [--get|--inc|--dec|--set N] [--display N] +Env: + DDCUTIL_DISPLAY Optional display number passed to ddcutil --display + DDCUTIL_OPTS Extra options passed to ddcutil (e.g. "--sleep-multiplier 0.2") +EOF +} + +ddcutil_cmd() { + local display_arg=() + local display="${DDCUTIL_DISPLAY:-}" + if [[ -n "${display}" ]]; then + display_arg+=(--display "${display}") + fi + ddcutil ${DDCUTIL_OPTS:-} "${display_arg[@]}" "$@" +} + +get_brightness() { + # Example output: "VCP code 0x10 (Brightness): current value = 50, max value = 100" + local line + if ! line="$(ddcutil_cmd getvcp "${vcp_code}" 2>/dev/null | tail -n 1)"; then + return 1 + fi + local current max + current="$(printf "%s" "${line}" | sed -n 's/.*current value = \([0-9]\+\).*/\1/p')" + max="$(printf "%s" "${line}" | sed -n 's/.*max value = \([0-9]\+\).*/\1/p')" + [[ -n "${current}" && -n "${max}" ]] || return 1 + printf "%s %s\n" "${current}" "${max}" +} + +set_brightness() { + local value="$1" + ddcutil_cmd setvcp "${vcp_code}" "${value}" >/dev/null 2>&1 +} + +json_output() { + local current max percent icon + if ! read -r current max < <(get_brightness); then + printf '{"text":" N/A","tooltip":"External brightness unavailable (load i2c-dev, allow i2c access)","class":"brightness-external-off"}\n' + return 0 + fi + percent=$(( current * 100 / max )) + if (( percent >= 80 )); then + icon="" + elif (( percent >= 60 )); then + icon="" + elif (( percent >= 40 )); then + icon="" + elif (( percent >= 20 )); then + icon="" + else + icon="" + fi + printf '{"text":"%s %s%%","tooltip":"External display brightness: %s%%","class":"brightness-external"}\n' "${icon}" "${percent}" "${percent}" +} + +case "${1:-}" in + --get|"") + json_output + ;; + --inc|--dec) + read -r current max < <(get_brightness) || exit 1 + delta=$step + [[ "$1" == "--dec" ]] && delta=$(( -step )) + new=$(( current + delta )) + (( new < 5 )) && new=5 + (( new > max )) && new="${max}" + set_brightness "${new}" + json_output + ;; + --set) + [[ -n "${2:-}" ]] || { usage; exit 1; } + set_brightness "${2}" + json_output + ;; + --display) + [[ -n "${2:-}" ]] || { usage; exit 1; } + DDCUTIL_DISPLAY="${2}" shift 2 + "${0}" "${@:-"--get"}" + ;; + -h|--help) + usage + ;; + *) + usage + exit 1 + ;; +esac diff --git a/config/hypr/scripts/Float-all-Windows.sh b/config/hypr/scripts/Float-all-Windows.sh new file mode 100755 index 00000000..e658cabb --- /dev/null +++ b/config/hypr/scripts/Float-all-Windows.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== + +ws=$(hyprctl activeworkspace -j | jq -r .id) +hyprctl clients -j | jq -r --arg ws "$ws" '.[] | select(.workspace.id == ($ws|tonumber)) | .address' | xargs -r -I {} hyprctl dispatch togglefloating address:{} diff --git a/config/hypr/scripts/GameMode.sh b/config/hypr/scripts/GameMode.sh index a28a27fb..9c5b8264 100755 --- a/config/hypr/scripts/GameMode.sh +++ b/config/hypr/scripts/GameMode.sh @@ -1,9 +1,16 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Game Mode. Turning off all animations notif="$HOME/.config/swaync/images/ja.png" SCRIPTSDIR="$HOME/.config/hypr/scripts" +# shellcheck source=/dev/null +. "$SCRIPTSDIR/WallpaperCmd.sh" HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}') @@ -17,13 +24,13 @@ if [ "$HYPRGAMEMODE" = 1 ] ; then keyword general:border_size 1;\ keyword decoration:rounding 0" - hyprctl keyword "windowrule opacity 1 override 1 override 1 override, ^(.*)$" - swww kill +\thyprctl keyword "windowrule opacity 1 override 1 override 1 override, ^(.*)$" + "$WWW_CMD" 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" & +\t"$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" && "$WWW_CMD" img "$HOME/.config/rofi/.current_wallpaper" & sleep 0.1 ${SCRIPTSDIR}/WallustSwww.sh sleep 0.5 diff --git a/config/hypr/scripts/Ghostty_themes.sh b/config/hypr/scripts/Ghostty_themes.sh new file mode 100755 index 00000000..a69f246e --- /dev/null +++ b/config/hypr/scripts/Ghostty_themes.sh @@ -0,0 +1,129 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# Ghostty theme selector + +config_file="$HOME/.config/ghostty/config" +iDIR="$HOME/.config/swaync/images" +rofi_theme_primary="$HOME/.config/rofi/config-ghostty-theme.rasi" +rofi_theme_fallback="$HOME/.config/rofi/config-edit.rasi" + +notify_user() { + local icon="$1" + local title="$2" + local body="$3" + if [[ -n "$icon" && -f "$icon" ]]; then + notify-send -u low -i "$icon" "$title" "$body" + else + notify-send -u low "$title" "$body" + fi +} + +if [[ ! -f "$config_file" ]]; then + notify_user "$iDIR/error.png" "Ghostty Theme" "Config not found: $config_file" + exit 1 +fi + +rofi_config_args=() +if [[ -f "$rofi_theme_primary" ]]; then + rofi_config_args=(-config "$rofi_theme_primary") +elif [[ -f "$rofi_theme_fallback" ]]; then + rofi_config_args=(-config "$rofi_theme_fallback") +fi + +current_theme=$( + awk -F'=' '/^[[:space:]]*theme[[:space:]]*=/ { + val=$2 + sub(/^[[:space:]]+/, "", val) + sub(/[[:space:]]+$/, "", val) + gsub(/^"|"$/, "", val) + print val + exit + }' "$config_file" +) + +mapfile -t available_theme_names < <( + awk -F'=' '/^[[:space:]]*#[[:space:]]*theme[[:space:]]*=/ { + val=$2 + sub(/^[[:space:]]+/, "", val) + sub(/[[:space:]]+$/, "", val) + gsub(/^"|"$/, "", val) + print val + }' "$config_file" +) + +if [[ ${#available_theme_names[@]} -eq 0 ]]; then + notify_user "$iDIR/error.png" "Ghostty Theme" "No commented themes found in $config_file" + exit 1 +fi + +menu_entries=() +if [[ -n "$current_theme" ]]; then + menu_entries+=("Current: $current_theme") +fi +for t in "${available_theme_names[@]}"; do + menu_entries+=("$t") +done + +choice=$( + printf "%s\n" "${menu_entries[@]}" | + rofi -i -dmenu -p "Ghostty Theme" "${rofi_config_args[@]}" -mesg "Select a theme to apply" +) + +[[ -z "$choice" ]] && exit 0 + +if [[ "$choice" == "Current: "* ]]; then + exit 0 +fi + +selected_theme="$choice" + +if [[ -n "$current_theme" && "$selected_theme" == "$current_theme" ]]; then + exit 0 +fi + +format_theme_value() { + if [[ "$1" =~ [[:space:]] ]]; then + printf "\"%s\"" "$1" + else + printf "%s" "$1" + fi +} + +selected_formatted=$(format_theme_value "$selected_theme") + +tmp_file=$(mktemp) +awk -v selected="$selected_theme" -v selected_formatted="$selected_formatted" ' +function trim(s) { sub(/^[[:space:]]+/, "", s); sub(/[[:space:]]+$/, "", s); return s } +function strip_quotes(s) { gsub(/^"|"$/, "", s); return s } +{ + line=$0 + if ($0 ~ /^[[:space:]]*theme[[:space:]]*=/) { + sub(/^[[:space:]]*theme[[:space:]]*=/, "#theme =", line) + print line + next + } + if ($0 ~ /^[[:space:]]*#[[:space:]]*theme[[:space:]]*=/) { + val=$0 + sub(/^[[:space:]]*#[[:space:]]*theme[[:space:]]*=[[:space:]]*/, "", val) + val=trim(val) + val=strip_quotes(val) + if (val == selected) { + print "theme = " selected_formatted + next + } + } + print $0 +}' "$config_file" > "$tmp_file" + +mv "$tmp_file" "$config_file" + +pkill -SIGUSR2 ghostty >/dev/null 2>&1 || true + +notify_user "$iDIR/ja.png" "Ghostty Theme Applied" "$selected_theme" + +exit 0 diff --git a/config/hypr/scripts/Hypridle.sh b/config/hypr/scripts/Hypridle.sh index 4bf6a985..240fec3e 100755 --- a/config/hypr/scripts/Hypridle.sh +++ b/config/hypr/scripts/Hypridle.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # This is for custom version of waybar idle_inhibitor which activates / deactivates hypridle instead PROCESS="hypridle" diff --git a/config/hypr/scripts/Hyprsunset.sh b/config/hypr/scripts/Hyprsunset.sh index 4a2b52f4..52140728 100755 --- a/config/hypr/scripts/Hyprsunset.sh +++ b/config/hypr/scripts/Hyprsunset.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== set -euo pipefail # Hyprsunset toggle + Waybar status helper diff --git a/config/hypr/scripts/KeyBinds.sh b/config/hypr/scripts/KeyBinds.sh index 341f104f..69111047 100755 --- a/config/hypr/scripts/KeyBinds.sh +++ b/config/hypr/scripts/KeyBinds.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # searchable enabled keybinds using rofi (supports bindd descriptions) # kill yad to not interfere with this binds diff --git a/config/hypr/scripts/KeyHints.sh b/config/hypr/scripts/KeyHints.sh index 3916a925..f00837d3 100755 --- a/config/hypr/scripts/KeyHints.sh +++ b/config/hypr/scripts/KeyHints.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # GDK BACKEND. Change to either wayland or x11 if having issues BACKEND=wayland @@ -40,8 +45,8 @@ GDK_BACKEND=$BACKEND yad \ " ALT mouse scroll up/down " "Desktop Zoom" "Desktop Magnifier" \ " Alt V" "Clipboard Manager" "(cliphist)" \ " W" "Choose wallpaper" "(Wallpaper Menu)" \ -" Shift W" "Choose wallpaper effects" "(imagemagick + swww)" \ -"CTRL ALT W" "Random wallpaper" "(via swww)" \ +" Shift W" "Choose wallpaper effects" "(imagemagick + awww)" \ +"CTRL ALT W" "Random wallpaper" "(via awww)" \ " CTRL ALT B" "Hide/UnHide Waybar" "waybar" \ " CTRL B" "Choose waybar styles" "(waybar styles)" \ " ALT B" "Choose waybar layout" "(waybar layout)" \ diff --git a/config/hypr/scripts/KeybindsLayoutInit.sh b/config/hypr/scripts/KeybindsLayoutInit.sh index 80bee9d6..f47197af 100755 --- a/config/hypr/scripts/KeybindsLayoutInit.sh +++ b/config/hypr/scripts/KeybindsLayoutInit.sh @@ -1,14 +1,19 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Initialize J/K keybinds so they always cycle windows globally (no layout-specific behavior) # This avoids double-actions when layouts change. set -euo pipefail # Always reset and bind SUPER+J/K the same way on startup -hyprctl keyword unbind SUPER,J || true -hyprctl keyword unbind SUPER,K || true +hyprctl keyword unbind SUPER,j || true +hyprctl keyword unbind SUPER,k || true -# Cycle windows globally: J = next, K = previous -hyprctl keyword bind SUPER,J,cyclenext -hyprctl keyword bind SUPER,K,cyclenext,prev +# Cycle windows globally +hyprctl keyword bind SUPER,j,layoutmsg,cyclenext +hyprctl keyword bind SUPER,k,layoutmsg,cycleprev diff --git a/config/hypr/scripts/KeyboardLayout.sh b/config/hypr/scripts/KeyboardLayout.sh index 926514dd..fe092e7f 100755 --- a/config/hypr/scripts/KeyboardLayout.sh +++ b/config/hypr/scripts/KeyboardLayout.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # This is for changing kb_layouts. Set kb_layouts in "$HOME/.config/hypr/UserConfigs/UserSettings.conf" notif_icon="$HOME/.config/swaync/images/ja.png" diff --git a/config/hypr/scripts/KillActiveProcess.sh b/config/hypr/scripts/KillActiveProcess.sh index ff0628b2..66d6b009 100755 --- a/config/hypr/scripts/KillActiveProcess.sh +++ b/config/hypr/scripts/KillActiveProcess.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Copied from Discord post. Thanks to @Zorg diff --git a/config/hypr/scripts/Kitty_themes.sh b/config/hypr/scripts/Kitty_themes.sh index 8bc6e0f0..3183b20b 100755 --- a/config/hypr/scripts/Kitty_themes.sh +++ b/config/hypr/scripts/Kitty_themes.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Kitty Themes Source https://github.com/dexpota/kitty-themes # # Define directories and variables @@ -23,6 +28,8 @@ apply_kitty_theme_to_config() { fi local theme_file_path_to_apply if [ "$theme_name_to_apply" = "Set by wallpaper" ]; then + theme_file_path_to_apply="$kitty_themes_DiR/01-Wallust.conf" + elif [ "$theme_name_to_apply" = "Default no color" ]; then theme_file_path_to_apply="$kitty_themes_DiR/00-Default.conf" else theme_file_path_to_apply="$kitty_themes_DiR/$theme_name_to_apply.conf" @@ -80,7 +87,7 @@ fi original_kitty_config_content_backup=$(cat "$kitty_config") mapfile -t available_theme_names < <(find "$kitty_themes_DiR" -maxdepth 1 -name "*.conf" -type f -printf "%f\n" | sed 's/\.conf$//' | grep -v -E '^(00-Default|01-Wallust)$' | sort) -available_theme_names=("Set by wallpaper" "${available_theme_names[@]}") +available_theme_names=("Set by wallpaper" "Default no color" "${available_theme_names[@]}") if [ ${#available_theme_names[@]} -eq 0 ]; then notify_user "$iDIR/error.png" "No Kitty Themes" "No .conf files found in $kitty_themes_DiR." @@ -89,8 +96,10 @@ fi current_selection_index=0 current_active_theme_name=$(awk -F'include ./kitty-themes/|\\.conf' '/^[[:space:]]*include \\.\/kitty-themes\/.*\\.conf/{print $2; exit}' "$kitty_config") -if [ "$current_active_theme_name" = "00-Default" ]; then +if [ "$current_active_theme_name" = "01-Wallust" ]; then current_active_theme_name="Set by wallpaper" +elif [ "$current_active_theme_name" = "00-Default" ]; then + current_active_theme_name="Default no color" fi if [ -n "$current_active_theme_name" ]; then diff --git a/config/hypr/scripts/KooLsDotsUpdate.sh b/config/hypr/scripts/KooLsDotsUpdate.sh index 8ed50f27..887993a5 100755 --- a/config/hypr/scripts/KooLsDotsUpdate.sh +++ b/config/hypr/scripts/KooLsDotsUpdate.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # simple bash script to check if update is available by comparing local version and github version # Local Paths diff --git a/config/hypr/scripts/Kool_Quick_Settings.sh b/config/hypr/scripts/Kool_Quick_Settings.sh index 5081fe72..fcd04998 100755 --- a/config/hypr/scripts/Kool_Quick_Settings.sh +++ b/config/hypr/scripts/Kool_Quick_Settings.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Rofi menu for KooL Hyprland Quick Settings (SUPER SHIFT E) # Updated for UserConfigs/configs separation @@ -193,6 +198,7 @@ Edit System Default Settings --- UTILITIES --- Set SDDM Wallpaper Choose Kitty Terminal Theme +Choose Ghostty Terminal Theme Configure Monitors (nwg-displays) Configure Workspace Rules (nwg-displays) GTK Settings (nwg-look) @@ -230,6 +236,7 @@ main() { "Edit System Default Settings") file="$configs/SystemSettings.conf" ;; "Set SDDM Wallpaper") $scriptsDir/sddm_wallpaper.sh --normal ;; "Choose Kitty Terminal Theme") $scriptsDir/Kitty_themes.sh ;; + "Choose Ghostty Terminal Theme") $scriptsDir/Ghostty_themes.sh ;; "Configure Monitors (nwg-displays)") if ! command -v nwg-displays &>/dev/null; then notify-send -i "$iDIR/error.png" "E-R-R-O-R" "Install nwg-displays first" diff --git a/config/hypr/scripts/LockScreen.sh b/config/hypr/scripts/LockScreen.sh index 548a7652..a7b27ad9 100755 --- a/config/hypr/scripts/LockScreen.sh +++ b/config/hypr/scripts/LockScreen.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # For Hyprlock #pidof hyprlock || hyprlock -q diff --git a/config/hypr/scripts/MediaCtrl.sh b/config/hypr/scripts/MediaCtrl.sh index b49a967b..aeabcac9 100755 --- a/config/hypr/scripts/MediaCtrl.sh +++ b/config/hypr/scripts/MediaCtrl.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Playerctl music_icon="$HOME/.config/swaync/icons/music.png" diff --git a/config/hypr/scripts/MonitorProfiles.sh b/config/hypr/scripts/MonitorProfiles.sh index 62213490..78825986 100755 --- a/config/hypr/scripts/MonitorProfiles.sh +++ b/config/hypr/scripts/MonitorProfiles.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # For applying Pre-configured Monitor Profiles # Check if rofi is already running diff --git a/config/hypr/scripts/OverviewToggle.sh b/config/hypr/scripts/OverviewToggle.sh index 3fe9ba96..719788da 100755 --- a/config/hypr/scripts/OverviewToggle.sh +++ b/config/hypr/scripts/OverviewToggle.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Overview toggle wrapper - tries Quickshell first, falls back to AGS set -euo pipefail diff --git a/config/hypr/scripts/Polkit-NixOS.sh b/config/hypr/scripts/Polkit-NixOS.sh index 925deab5..c1e6e0a2 100755 --- a/config/hypr/scripts/Polkit-NixOS.sh +++ b/config/hypr/scripts/Polkit-NixOS.sh @@ -1,6 +1,26 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## -# For NixOS starting of polkit-gnome. Dec 2023, the settings stated in NixOS wiki does not work so have to manual start it +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# For NixOS starting of polkit agents. Prefer xfce4-polkit, fallback to polkit-gnome. + +# Find all xfce4-polkit executables in the Nix store +xfce_polkit_paths=$(find /nix/store -name 'xfce4-polkit' -type f 2>/dev/null) + +for xfce_polkit_path in $xfce_polkit_paths; do + # Extract the directory containing the executable + xfce_polkit_dir=$(dirname "$xfce_polkit_path") + + # Check if the executable is valid and exists + if [ -x "$xfce_polkit_dir/xfce4-polkit" ]; then + # Start the xfce4-polkit Authentication Agent + "$xfce_polkit_dir/xfce4-polkit" & + exit 0 + fi +done # Find all polkit-gnome executables in the Nix store polkit_gnome_paths=$(find /nix/store -name 'polkit-gnome-authentication-agent-1' -type f 2>/dev/null) @@ -18,4 +38,4 @@ for polkit_gnome_path in $polkit_gnome_paths; do done # If no valid executable is found, report an error -echo "No valid Polkit-GNOME Authentication Agent executable found."
\ No newline at end of file +echo "No valid polkit authentication agent executable found." diff --git a/config/hypr/scripts/Polkit.sh b/config/hypr/scripts/Polkit.sh index 9db94d89..768747ab 100755 --- a/config/hypr/scripts/Polkit.sh +++ b/config/hypr/scripts/Polkit.sh @@ -1,19 +1,47 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # This script starts the first available Polkit agent from a list of possible locations +# Avoid duplicate agents (common with UWSM/session autostart) +if pgrep -u "$UID" -f 'xfce-polkit|polkit-gnome-authentication-agent-1|polkit-kde-authentication-agent-1|polkit-mate-authentication-agent-1|mate-polkit|hyprpolkitagent' >/dev/null 2>&1; then + echo "Polkit agent already running. Skipping start." + exit 0 +fi + +# Ensure Qt apps default to Wayland in a Wayland session +if [ -n "${WAYLAND_DISPLAY:-}" ] && [ -z "${QT_QPA_PLATFORM:-}" ]; then + export QT_QPA_PLATFORM=wayland +fi -# List of potential Polkit agent file paths +# Avoid KDE polkit agent crashing if Kvantum QML module is missing +if [ -z "${QT_QUICK_CONTROLS_STYLE:-}" ]; then + export QT_QUICK_CONTROLS_STYLE=Basic +fi +if [ -z "${QT_STYLE_OVERRIDE:-}" ]; then + export QT_STYLE_OVERRIDE=Fusion +fi + +# List of potential Polkit agent file paths (preferred order) polkit=( + "/usr/bin/xfce-polkit" + "/usr/lib/xfce4/polkit-agent/xfce-polkit" + "/usr/libexec/xfce-polkit" "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" - "/usr/libexec/hyprpolkitagent" - "/usr/lib/hyprpolkitagent" - "/usr/lib/hyprpolkitagent/hyprpolkitagent" - "/usr/lib/polkit-kde-authentication-agent-1" "/usr/lib/polkit-gnome-authentication-agent-1" "/usr/libexec/polkit-gnome-authentication-agent-1" "/usr/libexec/polkit-mate-authentication-agent-1" - "/usr/lib/x86_64-linux-gnu/libexec/polkit-kde-authentication-agent-1" + "/usr/lib/polkit-mate/polkit-mate-authentication-agent-1" + "/usr/bin/polkit-mate-authentication-agent-1" "/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1" + "/usr/lib/polkit-kde-authentication-agent-1" + "/usr/libexec/polkit-kde-authentication-agent-1" + "/usr/libexec/hyprpolkitagent" + "/usr/lib/hyprpolkitagent" + "/usr/lib/hyprpolkitagent/hyprpolkitagent" ) executed=false diff --git a/config/hypr/scripts/PortalHyprland.sh b/config/hypr/scripts/PortalHyprland.sh index 79b1bb96..243ee2e8 100755 --- a/config/hypr/scripts/PortalHyprland.sh +++ b/config/hypr/scripts/PortalHyprland.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # For manually starting xdg-desktop-portal-hyprland set -euo pipefail diff --git a/config/hypr/scripts/PortalHyprlandUbuntu.sh b/config/hypr/scripts/PortalHyprlandUbuntu.sh new file mode 100755 index 00000000..86e1a6d3 --- /dev/null +++ b/config/hypr/scripts/PortalHyprlandUbuntu.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# Ubuntu-based workaround: start portals manually before waybar. + +set -euo pipefail + +if [[ -r /etc/os-release ]]; then + # shellcheck disable=SC1091 + . /etc/os-release + if [[ "${ID:-}" == "ubuntu" \ + || "${ID:-}" == "linuxmint" \ + || "${ID:-}" == "zorin" \ + || "${ID:-}" == "rhino" \ + || "${ID_LIKE:-}" == *ubuntu* ]]; then + if [[ -x "$HOME/.config/hypr/scripts/PortalHyprland.sh" ]]; then + "$HOME/.config/hypr/scripts/PortalHyprland.sh" + fi + fi +fi diff --git a/config/hypr/scripts/PortalHyprlandUbuntu2604.sh b/config/hypr/scripts/PortalHyprlandUbuntu2604.sh deleted file mode 100755 index 5cb3c01b..00000000 --- a/config/hypr/scripts/PortalHyprlandUbuntu2604.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## -# Ubuntu 26.04 workaround: start portals manually before waybar. - -set -euo pipefail - -if [[ -r /etc/os-release ]]; then - # shellcheck disable=SC1091 - . /etc/os-release - if [[ "${ID:-}" == "ubuntu" && "${VERSION_ID:-}" == "26.04" ]]; then - if [[ -x "$HOME/.config/hypr/scripts/PortalHyprland.sh" ]]; then - "$HOME/.config/hypr/scripts/PortalHyprland.sh" - fi - fi -fi diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh index 95248b35..03f55fa0 100755 --- a/config/hypr/scripts/Refresh.sh +++ b/config/hypr/scripts/Refresh.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Scripts for refreshing ags, waybar, rofi, swaync, wallust SCRIPTSDIR=$HOME/.config/hypr/scripts @@ -14,8 +19,8 @@ file_exists() { fi } -# Kill already running processes -_ps=(waybar rofi swaync ags) +# Kill already running processes (exclude waybar to avoid double reloads) +_ps=(rofi swaync ags) for _prs in "${_ps[@]}"; do if pidof "${_prs}" >/dev/null; then pkill "${_prs}" @@ -25,10 +30,6 @@ done # Clean up any Waybar-spawned cava instances (unique temp conf names) pkill -f 'waybar-cava\..*\.conf' 2>/dev/null || true -# added since wallust sometimes not applying -killall -SIGUSR2 waybar -# Added sleep for GameMode causing multiple waybar -sleep 0.1 # quit ags & relaunch ags #ags -q && ags & @@ -36,15 +37,22 @@ sleep 0.1 # quit quickshell & relaunch quickshell #pkill qs && qs & -# some process to kill -for pid in $(pidof waybar rofi swaync ags swaybg); do +# some process to kill (exclude waybar to avoid restart loops) +for pid in $(pidof rofi swaync ags swaybg); do kill -SIGUSR1 "$pid" sleep 0.1 done -#Restart waybar -sleep 0.1 -waybar & +# Reload or start waybar once +if pidof waybar >/dev/null; then + if command -v waybar-msg >/dev/null 2>&1; then + waybar-msg cmd reload >/dev/null 2>&1 || true + else + killall -SIGUSR2 waybar 2>/dev/null || true + fi +else + waybar & +fi # relaunch swaync sleep 0.3 diff --git a/config/hypr/scripts/RefreshNoWaybar.sh b/config/hypr/scripts/RefreshNoWaybar.sh index afbda1f2..f5d564ac 100755 --- a/config/hypr/scripts/RefreshNoWaybar.sh +++ b/config/hypr/scripts/RefreshNoWaybar.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Modified version of Refresh.sh but waybar wont refresh # Used by automatic wallpaper change @@ -31,9 +36,6 @@ done # quit quickshell & relaunch quickshell #pkill qs && qs & -# Wallust refresh (synchronous to ensure colors are ready) -${SCRIPTSDIR}/WallustSwww.sh -sleep 0.2 # reload swaync swaync-client --reload-config diff --git a/config/hypr/scripts/RofiEmoji.sh b/config/hypr/scripts/RofiEmoji.sh index a21c2374..539a03b6 100755 --- a/config/hypr/scripts/RofiEmoji.sh +++ b/config/hypr/scripts/RofiEmoji.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Variables rofi_theme="$HOME/.config/rofi/config-emoji.rasi" diff --git a/config/hypr/scripts/RofiSearch.sh b/config/hypr/scripts/RofiSearch.sh index d7dd5726..42b54d75 100755 --- a/config/hypr/scripts/RofiSearch.sh +++ b/config/hypr/scripts/RofiSearch.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # For Searching via web browsers # Define the path to the config file diff --git a/config/hypr/scripts/RofiThemeSelector-modified.sh b/config/hypr/scripts/RofiThemeSelector-modified.sh index de3ebf4a..535b7313 100755 --- a/config/hypr/scripts/RofiThemeSelector-modified.sh +++ b/config/hypr/scripts/RofiThemeSelector-modified.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # A modified version of Rofi-Theme-Selector, concentrating only on ~/.local and also, applying only 10 @themes in ~/.config/rofi/config.rasi # as opposed to continous adding of //@theme diff --git a/config/hypr/scripts/RofiThemeSelector.sh b/config/hypr/scripts/RofiThemeSelector.sh index 66327d09..db723b6f 100755 --- a/config/hypr/scripts/RofiThemeSelector.sh +++ b/config/hypr/scripts/RofiThemeSelector.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Rofi Themes - Script to preview and apply themes by live-reloading the config. # --- Configuration --- diff --git a/config/hypr/scripts/ScreenShot.sh b/config/hypr/scripts/ScreenShot.sh index b12c08f0..baad89a1 100755 --- a/config/hypr/scripts/ScreenShot.sh +++ b/config/hypr/scripts/ScreenShot.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Screenshots scripts # variables @@ -25,7 +30,7 @@ notify_cmd_NOT="notify-send -u low -i ${iDoR}/note.png " notify_view() { if [[ "$1" == "active" ]]; then if [[ -e "${active_window_path}" ]]; then - "${sDIR}/Sounds.sh" --screenshot + "${sDIR}/Sounds.sh" --screenshot >/dev/null 2>&1 & resp=$(timeout 5 ${notify_cmd_shot_win} " Screenshot of:" " ${active_window_class} Saved.") case "$resp" in action1) @@ -37,11 +42,11 @@ notify_view() { esac else ${notify_cmd_NOT} " Screenshot of:" " ${active_window_class} NOT Saved." - "${sDIR}/Sounds.sh" --error + "${sDIR}/Sounds.sh" --error >/dev/null 2>&1 & fi elif [[ "$1" == "swappy" ]]; then - "${sDIR}/Sounds.sh" --screenshot + "${sDIR}/Sounds.sh" --screenshot >/dev/null 2>&1 & resp=$(${notify_cmd_shot} " Screenshot:" " Captured by Swappy") case "$resp" in action1) @@ -55,7 +60,7 @@ notify_view() { else local check_file="${dir}/${file}" if [[ -e "$check_file" ]]; then - "${sDIR}/Sounds.sh" --screenshot + "${sDIR}/Sounds.sh" --screenshot >/dev/null 2>&1 & resp=$(timeout 5 ${notify_cmd_shot} " Screenshot" " Saved") case "$resp" in action1) @@ -67,7 +72,7 @@ notify_view() { esac else ${notify_cmd_NOT} " Screenshot" " NOT Saved" - "${sDIR}/Sounds.sh" --error + "${sDIR}/Sounds.sh" --error >/dev/null 2>&1 & fi fi } @@ -83,14 +88,12 @@ countdown() { # take shots shotnow() { cd ${dir} && grim - | tee "$file" | wl-copy - sleep 2 notify_view } shot5() { countdown '5' sleep 1 && cd ${dir} && grim - | tee "$file" | wl-copy - sleep 1 notify_view } @@ -125,7 +128,6 @@ shotactive() { active_window_path="${dir}/${active_window_file}" hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -g - "${active_window_path}" - sleep 1 notify_view "active" } @@ -156,10 +158,10 @@ elif [[ "$1" == "--area" ]]; then shotarea elif [[ "$1" == "--active" ]]; then shotactive -elif [[ "$1" == "--swappy" ]]; then +elif [[ "$1" == "--swappy" || "$1" == "--swapp" || "$1" == "--swap" ]]; then shotswappy else - echo -e "Available Options : --now --in5 --in10 --win --area --active --swappy" + echo -e "Available Options : --now --in5 --in10 --win --area --active --swappy (--swapp/--swap)" fi exit 0 diff --git a/config/hypr/scripts/Sounds.sh b/config/hypr/scripts/Sounds.sh index 7c0bf57c..3af4944f 100755 --- a/config/hypr/scripts/Sounds.sh +++ b/config/hypr/scripts/Sounds.sh @@ -1,10 +1,16 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # This script is used to play system sounds. # Script is used by Volume.Sh and ScreenShots.sh theme="freedesktop" # Set the theme for the system sounds. mute=false # Set to true to mute the system sounds. +directSoundDir="$HOME/.config/hypr/sounds" # Mute individual sounds here. muteScreenshots=false @@ -20,16 +26,19 @@ if [[ "$1" == "--screenshot" ]]; then if [[ "$muteScreenshots" = true ]]; then exit 0 fi + directSound="$directSoundDir/screenshot.ogg" soundoption="screen-capture.*" elif [[ "$1" == "--volume" ]]; then if [[ "$muteVolume" = true ]]; then exit 0 fi + directSound="$directSoundDir/volume.ogg" soundoption="audio-volume-change.*" elif [[ "$1" == "--error" ]]; then if [[ "$muteScreenshots" = true ]]; then exit 0 fi + directSound="$directSoundDir/error.ogg" soundoption="dialog-error.*" else echo -e "Available sounds: --screenshot, --volume, --error" @@ -57,6 +66,29 @@ fi iTheme=$(cat "$sDIR/index.theme" | grep -i "inherits" | cut -d "=" -f 2) iDIR="$sDIR/../$iTheme" +# Helper to play in the background (fast return). +play_sound() { + if command -v paplay >/dev/null 2>&1; then + paplay "$1" >/dev/null 2>&1 & + exit 0 + fi + if command -v pw-play >/dev/null 2>&1; then + pw-play "$1" >/dev/null 2>&1 & + exit 0 + fi + if command -v aplay >/dev/null 2>&1; then + aplay "$1" >/dev/null 2>&1 & + exit 0 + fi + echo "Error: No suitable audio player found. Install paplay (pulseaudio-utils) or PipeWire/ALSA tools." + exit 1 +} + +# If a direct sound file exists, play it immediately to avoid lookup delay. +if [[ -n "$directSound" && -f "$directSound" ]]; then + play_sound "$directSound" +fi + # Find the sound file and play it. sound_file=$(find -L $sDIR/stereo -name "$soundoption" -print -quit) if ! test -f "$sound_file"; then @@ -72,19 +104,5 @@ if ! test -f "$sound_file"; then fi fi fi - -# Play the sound: prefer PipeWire, then PulseAudio, then ALSA -if command -v pw-play >/dev/null 2>&1; then - pw-play "$sound_file" && exit 0 -fi - -if command -v paplay >/dev/null 2>&1; then - paplay "$sound_file" && exit 0 -fi - -if command -v aplay >/dev/null 2>&1; then - aplay "$sound_file" && exit 0 -fi - -echo "Error: No suitable audio player (pw-play/paplay/aplay) found." -exit 1 +# Play the sound (background for quick return). +play_sound "$sound_file" diff --git a/config/hypr/scripts/Tak0-Autodispatch.sh b/config/hypr/scripts/Tak0-Autodispatch.sh index 6ed7ec13..034a6402 100755 --- a/config/hypr/scripts/Tak0-Autodispatch.sh +++ b/config/hypr/scripts/Tak0-Autodispatch.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash - +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # ───────────────────────────────────────────────────────────────────────────── # Tak0-Autodispatch.sh # ───────────────────────────────────────────────────────────────────────────── diff --git a/config/hypr/scripts/Tak0-Per-Window-Switch.sh b/config/hypr/scripts/Tak0-Per-Window-Switch.sh index 3ba2c7af..04baebe0 100755 --- a/config/hypr/scripts/Tak0-Per-Window-Switch.sh +++ b/config/hypr/scripts/Tak0-Per-Window-Switch.sh @@ -1,3 +1,9 @@ +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== ################################################################## # # # # diff --git a/config/hypr/scripts/ThemeChanger.sh b/config/hypr/scripts/ThemeChanger.sh index 19ee3298..b41738f6 100755 --- a/config/hypr/scripts/ThemeChanger.sh +++ b/config/hypr/scripts/ThemeChanger.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== set -euo pipefail # SPDX-FileCopyrightText: 2025-present Ahum Maitra theahummaitra@gmail.com diff --git a/config/hypr/scripts/Toggle-Active-Window-Audio.sh b/config/hypr/scripts/Toggle-Active-Window-Audio.sh index 4d9bcd33..f32ded0e 100755 --- a/config/hypr/scripts/Toggle-Active-Window-Audio.sh +++ b/config/hypr/scripts/Toggle-Active-Window-Audio.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== set -euo pipefail XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" diff --git a/config/hypr/scripts/Toggle-weather-waybar-units.sh b/config/hypr/scripts/Toggle-weather-waybar-units.sh index 4007536c..abc089ff 100755 --- a/config/hypr/scripts/Toggle-weather-waybar-units.sh +++ b/config/hypr/scripts/Toggle-weather-waybar-units.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Toggle waybar-weather units between metric and imperial CONFIG_FILE="$HOME/.config/waybar-weather/config.toml" diff --git a/config/hypr/scripts/TouchPad.sh b/config/hypr/scripts/TouchPad.sh index 56506382..1042a652 100755 --- a/config/hypr/scripts/TouchPad.sh +++ b/config/hypr/scripts/TouchPad.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # For disabling touchpad. # Edit the Touchpad_Device on ~/.config/hypr/UserConfigs/Laptops.conf according to your system # use hyprctl devices to get your system touchpad device name diff --git a/config/hypr/scripts/UptimeNixOS.sh b/config/hypr/scripts/UptimeNixOS.sh index 654ae2c8..5c3085b1 100755 --- a/config/hypr/scripts/UptimeNixOS.sh +++ b/config/hypr/scripts/UptimeNixOS.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script parses /proc/uptime to get the system uptime # and prints it in a human-readable format # This is a workaround for system where `uptime` command is taken from coreutils diff --git a/config/hypr/scripts/UserConfigsSwitcher.sh b/config/hypr/scripts/UserConfigsSwitcher.sh index ac44b4bc..7d9968a6 100755 --- a/config/hypr/scripts/UserConfigsSwitcher.sh +++ b/config/hypr/scripts/UserConfigsSwitcher.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script to manage UserConfigs and UserConfigsBak HYPR_CONFIG_DIR="$HOME/.config/hypr" diff --git a/config/hypr/scripts/Volume.sh b/config/hypr/scripts/Volume.sh index 41e474d0..dec7837c 100755 --- a/config/hypr/scripts/Volume.sh +++ b/config/hypr/scripts/Volume.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Scripts for volume controls for audio and mic iDIR="$HOME/.config/swaync/icons" diff --git a/config/hypr/scripts/WallpaperCmd.sh b/config/hypr/scripts/WallpaperCmd.sh new file mode 100755 index 00000000..0191ee14 --- /dev/null +++ b/config/hypr/scripts/WallpaperCmd.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# Wallpaper command selector (awww preferred, swww fallback) + +if command -v awww >/dev/null 2>&1; then + WWW_CMD="awww" + WWW_DAEMON="awww-daemon" + WWW_CACHE_DIR="$HOME/.cache/awww" + WWW_DAEMON_ARGS=() + WWW_MIGRATION_MARKER="$WWW_CACHE_DIR/.cache_cleared" +else + WWW_CMD="swww" + WWW_DAEMON="swww-daemon" + WWW_CACHE_DIR="$HOME/.cache/swww" + WWW_DAEMON_ARGS=(--format xrgb) +fi +# One-time cache clear when migrating from swww to awww +if [ "$WWW_CMD" = "awww" ]; then + mkdir -p "$WWW_CACHE_DIR" + if [ ! -f "$WWW_MIGRATION_MARKER" ]; then + awww clear-cache >/dev/null 2>&1 || true + touch "$WWW_MIGRATION_MARKER" + fi +fi + +export WWW_CMD WWW_DAEMON WWW_CACHE_DIR WWW_DAEMON_ARGS WWW_MIGRATION_MARKER diff --git a/config/hypr/scripts/WallpaperDaemon.sh b/config/hypr/scripts/WallpaperDaemon.sh new file mode 100755 index 00000000..fc7f71c0 --- /dev/null +++ b/config/hypr/scripts/WallpaperDaemon.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# Start wallpaper daemon, preferring awww with swww fallback + +SCRIPTSDIR="$HOME/.config/hypr/scripts" +# shellcheck source=/dev/null +. "$SCRIPTSDIR/WallpaperCmd.sh" + +if command -v "$WWW_DAEMON" >/dev/null 2>&1 && command -v "$WWW_CMD" >/dev/null 2>&1; then + "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" & +fi + +# Give the daemon a moment to become ready +for _ in {1..20}; do + "$WWW_CMD" query >/dev/null 2>&1 && break + sleep 0.1 +done + +wallpaper_link="$HOME/.config/rofi/.current_wallpaper" +wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" +wallpaper_path="" + +# Prefer the symlink target if it's valid +if [ -L "$wallpaper_link" ]; then + resolved="$(readlink -f "$wallpaper_link")" + if [ -n "$resolved" ] && [ -f "$resolved" ]; then + wallpaper_path="$resolved" + fi +fi + +# Fall back to link file or copied current wallpaper +if [ -z "$wallpaper_path" ] && [ -f "$wallpaper_link" ]; then + wallpaper_path="$wallpaper_link" +fi +if [ -z "$wallpaper_path" ] && [ -f "$wallpaper_current" ]; then + wallpaper_path="$wallpaper_current" +fi + +# Last resort: use cached swww/awww wallpaper paths +if [ -z "$wallpaper_path" ]; then + for cache_dir in "$HOME/.cache/awww" "$HOME/.cache/swww"; do + [ -d "$cache_dir" ] || continue + for cache_file in "$cache_dir"/*; do + [ -f "$cache_file" ] || continue + candidate="$(awk 'NF && $0 !~ /^filter/ {print; exit}' "$cache_file")" + if [ -n "$candidate" ] && [ -f "$candidate" ]; then + wallpaper_path="$candidate" + break + fi + done + [ -n "$wallpaper_path" ] && break + done +fi + +if [ -n "$wallpaper_path" ] && [ -f "$wallpaper_path" ]; then + if ! "$WWW_CMD" img "$wallpaper_path" >/dev/null 2>&1; then + # Retry once after a short delay + sleep 0.3 + "$WWW_CMD" img "$wallpaper_path" >/dev/null 2>&1 & + fi +fi diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index 1f0f50c7..9df3ed61 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Wallust: derive colors from the current wallpaper and update templates # Usage: WallustSwww.sh [absolute_path_to_wallpaper] @@ -7,7 +12,15 @@ set -euo pipefail # Inputs and paths passed_path="${1:-}" -cache_dir="$HOME/.cache/swww/" +if command -v awww >/dev/null 2>&1; then + WWW="awww" + cache_dir="$HOME/.cache/awww/" + cache_dir_fallback="$HOME/.cache/swww/" +else + WWW="swww" + cache_dir="$HOME/.cache/swww/" + cache_dir_fallback="$HOME/.cache/awww/" +fi rofi_link="$HOME/.config/rofi/.current_wallpaper" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" read_cached_wallpaper() { @@ -19,7 +32,7 @@ read_cached_wallpaper() { read_wallpaper_from_query() { local monitor="$1" - swww query | awk -v mon="$monitor" ' + $WWW query | awk -v mon="$monitor" ' /^Monitor/ { cur=$2 gsub(":", "", cur) @@ -46,17 +59,21 @@ wallpaper_path="" if [[ -n "$passed_path" && -f "$passed_path" ]]; then wallpaper_path="$passed_path" else - # Try to read from swww cache for the focused monitor, with a short retry loop + # Try to read from awww/swww cache for the focused monitor, with a short retry loop current_monitor="$(get_focused_monitor)" cache_file="$cache_dir$current_monitor" + alt_cache_file="${cache_dir_fallback}${current_monitor}" - # Wait briefly for swww to write its cache after an image change + # Wait briefly for awww/swww to write its cache after an image change for i in {1..10}; do - if [[ -f "$cache_file" ]]; then + if [[ -f "$cache_file" || -f "$alt_cache_file" ]]; then break fi sleep 0.1 done + if [[ ! -f "$cache_file" && -f "$alt_cache_file" ]]; then + cache_file="$alt_cache_file" + fi if [[ -f "$cache_file" ]]; then # The first non-filter line is the original wallpaper path @@ -111,9 +128,28 @@ wallust run -s "$wallpaper_path" || true wallust_targets=( "$HOME/.config/waybar/wallust/colors-waybar.css" "$HOME/.config/rofi/wallust/colors-rofi.rasi" + "$HOME/.config/hypr/wallust/wallust-hyprland.conf" ) wait_for_templates "$start_ts" "${wallust_targets[@]}" || true +# Normalize Rofi selection colors to a brighter accent and readable foreground +rofi_colors="$HOME/.config/rofi/wallust/colors-rofi.rasi" +if [ -f "$rofi_colors" ]; then + accent_hex=$(sed -n 's/^\s*color13:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1) + [ -z "$accent_hex" ] && accent_hex=$(sed -n 's/^\s*color12:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1) + fg_hex=$(sed -n 's/^\s*foreground:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1) + if [ -n "$accent_hex" ]; then + sed -i -E "s|^(\s*selected-normal-background:\s*).*$|\1$accent_hex;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-active-background:\s*).*$|\1$accent_hex;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-urgent-background:\s*).*$|\1$accent_hex;|" "$rofi_colors" + fi + if [ -n "$fg_hex" ]; then + sed -i -E "s|^(\s*selected-normal-foreground:\s*).*$|\1$fg_hex;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-active-foreground:\s*).*$|\1$fg_hex;|" "$rofi_colors" + sed -i -E "s|^(\s*selected-urgent-foreground:\s*).*$|\1$fg_hex;|" "$rofi_colors" + fi +fi + # Run kitty-only wallust config to keep terminal palette separate run_wallust_with_config() { local cfg="$1" @@ -125,43 +161,42 @@ run_wallust_with_config() { } kitty_cfg="$HOME/.config/wallust/wallust-kitty.toml" -if [ -f "$kitty_cfg" ]; then - kitty_ts=$(date +%s) - run_wallust_with_config "$kitty_cfg" - wait_for_templates "$kitty_ts" "$HOME/.config/kitty/kitty-themes/01-Wallust.conf" || true -fi - -# Reload kitty colors when wallpaper-based theme is active -kitty_wallust_theme="$HOME/.config/kitty/kitty-themes/01-Wallust.conf" -if [ -s "$kitty_wallust_theme" ]; then - if command -v kitty >/dev/null 2>&1; then - kitty @ load-config >/dev/null 2>&1 || true - kitty @ set-colors --all --configured "$kitty_wallust_theme" >/dev/null 2>&1 || true +( + if [ -f "$kitty_cfg" ]; then + kitty_ts=$(date +%s) + run_wallust_with_config "$kitty_cfg" + wait_for_templates "$kitty_ts" "$HOME/.config/kitty/kitty-themes/01-Wallust.conf" || true fi - if pidof kitty >/dev/null 2>&1; then - for pid in $(pidof kitty); do - kill -SIGUSR1 "$pid" 2>/dev/null || true - done - fi -fi -# Normalize Ghostty palette syntax in case ':' was used by older files -if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then - sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$HOME/.config/ghostty/wallust.conf" 2>/dev/null || true -fi + # Reload kitty colors when wallpaper-based theme is active + kitty_wallust_theme="$HOME/.config/kitty/kitty-themes/01-Wallust.conf" + if [ -s "$kitty_wallust_theme" ]; then + if command -v kitty >/dev/null 2>&1; then + kitty @ load-config >/dev/null 2>&1 || true + kitty @ set-colors --all --configured "$kitty_wallust_theme" >/dev/null 2>&1 || true + fi + if pidof kitty >/dev/null 2>&1; then + for pid in $(pidof kitty); do + kill -SIGUSR1 "$pid" 2>/dev/null || true + done + fi + fi -# Light wait for Ghostty colors file to be present then signal Ghostty to reload (SIGUSR2) -for _ in 1 2 3; do - [ -s "$HOME/.config/ghostty/wallust.conf" ] && break - sleep 0.1 -done -if pidof ghostty >/dev/null; then - for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done -fi + # Normalize Ghostty palette syntax in case ':' was used by older files + if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then + sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$HOME/.config/ghostty/wallust.conf" 2>/dev/null || true + fi -# Prompt Waybar to reload colors -if command -v waybar-msg >/dev/null 2>&1; then - waybar-msg cmd reload >/dev/null 2>&1 || true -elif pidof waybar >/dev/null; then - killall -SIGUSR2 waybar 2>/dev/null || true -fi + # Light wait for Ghostty colors file to be present then signal Ghostty to reload (SIGUSR2) + for _ in 1 2 3; do + [ -s "$HOME/.config/ghostty/wallust.conf" ] && break + sleep 0.1 + done + if pidof ghostty >/dev/null; then + for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done + fi + # Reload Hyprland so new border colors from wallust-hyprland.conf take effect + if command -v hyprctl >/dev/null 2>&1; then + hyprctl reload >/dev/null 2>&1 || true + fi +) >/dev/null 2>&1 & diff --git a/config/hypr/scripts/WaybarCava.sh b/config/hypr/scripts/WaybarCava.sh index 98db60dd..2295f0ab 100755 --- a/config/hypr/scripts/WaybarCava.sh +++ b/config/hypr/scripts/WaybarCava.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # WaybarCava.sh — safer single-instance handling, cleanup, and robustness # Original concept by LinuxBeginnings; this variant focuses on lifecycle hardening. diff --git a/config/hypr/scripts/WaybarLayout.sh b/config/hypr/scripts/WaybarLayout.sh index 247ccf78..66d45a07 100755 --- a/config/hypr/scripts/WaybarLayout.sh +++ b/config/hypr/scripts/WaybarLayout.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script for waybar layout or configs IFS=$'\n\t' diff --git a/config/hypr/scripts/WaybarScripts.sh b/config/hypr/scripts/WaybarScripts.sh index 142b548d..afb55712 100755 --- a/config/hypr/scripts/WaybarScripts.sh +++ b/config/hypr/scripts/WaybarScripts.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # This file used on waybar modules sourcing defaults set in $HOME/.config/hypr/UserConfigs/01-UserDefaults.conf # Define the path to the config file diff --git a/config/hypr/scripts/WaybarStyles.sh b/config/hypr/scripts/WaybarStyles.sh index 2ed8bf26..611e0a12 100755 --- a/config/hypr/scripts/WaybarStyles.sh +++ b/config/hypr/scripts/WaybarStyles.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script for waybar styles IFS=$'\n\t' diff --git a/config/hypr/scripts/Wlogout.sh b/config/hypr/scripts/Wlogout.sh index e33222cc..973c5704 100755 --- a/config/hypr/scripts/Wlogout.sh +++ b/config/hypr/scripts/Wlogout.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # wlogout (Power, Screen Lock, Suspend, etc) # Set variables for parameters. First numbers corresponts to Monitor Resolution diff --git a/config/hypr/scripts/build-awww.sh b/config/hypr/scripts/build-awww.sh new file mode 100755 index 00000000..c59c34c0 --- /dev/null +++ b/config/hypr/scripts/build-awww.sh @@ -0,0 +1,209 @@ +#!/usr/bin/env bash +set -euo pipefail + +RED="\033[0;31m" +GREEN="\033[0;32m" +YELLOW="\033[1;33m" +BLUE="\033[0;34m" +NC="\033[0m" + +ICON_OK="✅" +ICON_WARN="⚠️" +ICON_ERR="❌" +ICON_INFO="ℹ️" + +fail() { + printf "${RED}${ICON_ERR} %s${NC}\n" "$1" >&2 + exit 1 +} + +info() { + printf "${BLUE}${ICON_INFO} %s${NC}\n" "$1" +} + +warn() { + printf "${YELLOW}${ICON_WARN} %s${NC}\n" "$1" +} + +ok() { + printf "${GREEN}${ICON_OK} %s${NC}\n" "$1" +} + +trap 'fail "Script failed at line $LINENO."' ERR + +if [[ ! -t 0 ]]; then + fail "This script requires an interactive terminal. Run it directly in a terminal (e.g. ./build-awww.sh)." +fi + +info "Starting awww installer..." + +if command -v awww >/dev/null 2>&1; then + ok "awww is already installed. Nothing to do." + exit 0 +fi + +if ! command -v git >/dev/null 2>&1; then + fail "git is required but not installed." +fi + +detect_distro() { + if [[ -r /etc/os-release ]]; then + # shellcheck disable=SC1091 + . /etc/os-release + echo "${ID:-}" + return + fi + echo "" +} + +prompt_confirm_distro() { + local detected="$1" + local choice="" + if [[ -n "$detected" ]]; then + printf "${BLUE}${ICON_INFO} Detected distro: %s${NC}\n" "$detected" >/dev/tty + printf "Confirm? (Y/y to confirm, N/n to choose, Q/q to quit): " >/dev/tty + read -r choice </dev/tty + case "$choice" in + [Yy]) echo "$detected"; return ;; + [Qq]) exit 0 ;; + [Nn]) ;; + *) warn "Invalid choice, continuing to manual selection." ;; + esac + fi + echo "Supported distros:" + echo " 1) debian" + echo " 2) ubuntu" + echo " 3) arch" + echo " 4) opensuse" + echo " 5) fedora" + echo " 6) gentoo" + printf "Select your distro (1-6) or Q/q to quit: " >/dev/tty + read -r choice </dev/tty + read -r choice + case "$choice" in + 1) echo "debian" ;; + 2) echo "ubuntu" ;; + 3) echo "arch" ;; + 4) echo "opensuse" ;; + 5) echo "fedora" ;; + 6) echo "gentoo" ;; + [Qq]) exit 0 ;; + *) fail "Invalid selection." ;; + esac +} + +distro="$(prompt_confirm_distro "$(detect_distro)")" + +install_deps_debian_ubuntu() { + local missing=() + for pkg in pkg-config liblz4-dev; do + dpkg -s "$pkg" >/dev/null 2>&1 || missing+=("$pkg") + done + if (( ${#missing[@]} )); then + info "Installing deps: ${missing[*]}" + sudo apt update + sudo apt install -y "${missing[@]}" + else + ok "All required deps already installed." + fi +} + +install_deps_fedora() { + local missing=() + for pkg in wayland-protocols lz4-devel wayland-devel; do + rpm -q "$pkg" >/dev/null 2>&1 || missing+=("$pkg") + done + if (( ${#missing[@]} )); then + info "Installing deps: ${missing[*]}" + sudo dnf install -y "${missing[@]}" + else + ok "All required deps already installed." + fi +} + +install_deps_opensuse() { + local missing=() + for pkg in pkg-config liblz4-devel; do + rpm -q "$pkg" >/dev/null 2>&1 || missing+=("$pkg") + done + if (( ${#missing[@]} )); then + info "Installing deps: ${missing[*]}" + sudo zypper install -y "${missing[@]}" + else + ok "All required deps already installed." + fi +} + +install_deps_arch() { + local missing=() + for pkg in pkgconf lz4 wayland-protocols; do + pacman -Qi "$pkg" >/dev/null 2>&1 || missing+=("$pkg") + done + if (( ${#missing[@]} )); then + info "Installing deps: ${missing[*]}" + sudo pacman -S --needed --noconfirm "${missing[@]}" + else + ok "All required deps already installed." + fi +} + +ensure_cargo() { + if command -v cargo >/dev/null 2>&1; then + ok "cargo is available." + return + fi + case "$distro" in + debian|ubuntu|fedora|opensuse) + info "Installing Rust toolchain via rustup..." + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + # shellcheck disable=SC1091 + source "$HOME/.cargo/env" + ;; + arch) + info "Installing Rust toolchain..." + sudo pacman -S --needed --noconfirm rust + ;; + gentoo) + ;; + *) + fail "Unknown distro for cargo install." + ;; + esac + command -v cargo >/dev/null 2>&1 || fail "cargo is still not available." +} + +case "$distro" in + debian) install_deps_debian_ubuntu ;; + ubuntu) install_deps_debian_ubuntu ;; + fedora) install_deps_fedora ;; + opensuse) install_deps_opensuse ;; + arch) install_deps_arch ;; + gentoo) + info "Installing awww via Portage..." + sudo emerge gui-apps/awww + ok "awww installed successfully." + exit 0 + ;; + *) fail "Unsupported distro: $distro" ;; +esac + +ensure_cargo + +info "Cloning or updating awww..." +cd "$HOME" +if [[ -d awww/.git ]]; then + git -C awww pull --rebase +else + git clone https://codeberg.org/LGFae/awww.git +fi + +cd "$HOME/awww" +info "Building awww..." +cargo build --release + +info "Installing binaries..." +sudo install -vDm755 target/release/awww -t /usr/bin/ +sudo install -vDm755 target/release/awww-daemon -t /usr/bin/ +sudo install -vDm644 completions/_awww -t /usr/share/zsh/site-functions/ + +ok "awww installed successfully." diff --git a/config/hypr/scripts/disable.cpu.turbo.sh b/config/hypr/scripts/disable.cpu.turbo.sh new file mode 100755 index 00000000..dafee76b --- /dev/null +++ b/config/hypr/scripts/disable.cpu.turbo.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +set -euo pipefail + +require_root() { + if [[ ${EUID} -ne 0 ]]; then + exec sudo -- "$0" "$@" + fi +} + +write_sysfs() { + local path="$1" + local value="$2" + if [[ -w "$path" ]]; then + printf '%s' "$value" >"$path" + return 0 + fi + return 1 +} + +require_root "$@" + +changed=0 + +# Intel P-State turbo control +if [[ -e /sys/devices/system/cpu/intel_pstate/no_turbo ]]; then + if write_sysfs /sys/devices/system/cpu/intel_pstate/no_turbo 1; then + changed=1 + fi +fi + +# Generic cpufreq boost control (AMD/Intel) +if [[ -e /sys/devices/system/cpu/cpufreq/boost ]]; then + if write_sysfs /sys/devices/system/cpu/cpufreq/boost 0; then + changed=1 + fi +fi + +# Prefer a quieter governor if available +for gov in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do + if [[ -w "$gov" ]]; then + current=$(cat "$gov") + if [[ "$current" != "powersave" ]] && grep -q powersave "${gov%/*}/scaling_available_governors"; then + printf '%s' powersave >"$gov" + changed=1 + fi + fi +done + +# Lower energy/performance preference if supported +for epp in /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference; do + if [[ -w "$epp" ]]; then + printf '%s' power >"$epp" 2>/dev/null || true + changed=1 + fi +done + +if [[ $changed -eq 1 ]]; then + echo "CPU turbo/boost disabled and power-saving preferences applied." + exit 0 +fi + +echo "No writable turbo/boost controls found. Check kernel driver support." +exit 1 diff --git a/config/hypr/scripts/fastfetch-wrapper.sh b/config/hypr/scripts/fastfetch-wrapper.sh new file mode 100755 index 00000000..ad5f7873 --- /dev/null +++ b/config/hypr/scripts/fastfetch-wrapper.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# 1. Get the specific ID and the "ID_LIKE" family +source /etc/os-release +SPECIFIC_ID=$ID +FAMILY_ID=$ID_LIKE + +# 2. Define your asset directory +ASSET_DIR="$HOME/.config/fastfetch/images" + +# 3. Selection Logic +if [ -f "$ASSET_DIR/$SPECIFIC_ID.png" ]; then + # Use exact match if available (e.g., soplos.png) + SELECTED_LOGO="$ASSET_DIR/$SPECIFIC_ID.png" +elif [ -n "$FAMILY_ID" ] && [ -f "$ASSET_DIR/${FAMILY_ID%% *}.png" ]; then + # Fallback to family (e.g., debian.png) - takes the first word of ID_LIKE + SELECTED_LOGO="$ASSET_DIR/${FAMILY_ID%% *}.png" +else + # Let fastfetch handle it natively if no custom image found + fastfetch + exit 0 +fi + +fastfetch --kitty "$SELECTED_LOGO" diff --git a/config/hypr/scripts/hyprshot.sh b/config/hypr/scripts/hyprshot.sh index 0fb976fa..0e97d15b 100755 --- a/config/hypr/scripts/hyprshot.sh +++ b/config/hypr/scripts/hyprshot.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash - +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== set -e function Help() { diff --git a/config/hypr/scripts/install-uv.sh b/config/hypr/scripts/install-uv.sh index 3582a78e..da4b2d86 100755 --- a/config/hypr/scripts/install-uv.sh +++ b/config/hypr/scripts/install-uv.sh @@ -1,2 +1,8 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== curl -LsSf https://astral.sh/uv/install.sh | sh diff --git a/config/hypr/scripts/keybinds_parser.py b/config/hypr/scripts/keybinds_parser.py index d12e3854..5b75d81c 100755 --- a/config/hypr/scripts/keybinds_parser.py +++ b/config/hypr/scripts/keybinds_parser.py @@ -1,4 +1,10 @@ #!/usr/bin/env python3 +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== import sys import re import os diff --git a/config/hypr/scripts/rofi-emacs-keybinds b/config/hypr/scripts/rofi-emacs-keybinds new file mode 100755 index 00000000..bee1a54d --- /dev/null +++ b/config/hypr/scripts/rofi-emacs-keybinds @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -u +set -o pipefail + +ROFI_CONFIG="${HOME}/.config/rofi/config-emacs-keybinds.rasi" +CACHE_FILE="${HOME}/.cache/rofi-emacs-keybinds.txt" + +if [[ ! -s "${CACHE_FILE}" ]]; then + notify-send "Rofi Emacs Keybinds" "Keybind cache missing. In Emacs, run: M-x rofi-emacs-keybinds-refresh" + exit 1 +fi + +rofi -dmenu -i -p "Emacs Keybinds" -config "${ROFI_CONFIG}" < "${CACHE_FILE}" diff --git a/config/hypr/scripts/rofi-ssh-menu.sh b/config/hypr/scripts/rofi-ssh-menu.sh new file mode 100755 index 00000000..d1640c66 --- /dev/null +++ b/config/hypr/scripts/rofi-ssh-menu.sh @@ -0,0 +1,117 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# Rofi SSH menu - list SSH hosts from ~/.ssh/config and connect. + +set -euo pipefail + +SSH_CONFIG="${HOME}/.ssh/config" +ROFI_CONFIG="${HOME}/.config/rofi/config.rasi" +MSG='Select a host to connect via SSH' + +notify() { + if command -v notify-send >/dev/null 2>&1; then + notify-send -u low "Rofi SSH" "$1" + else + printf '%s\n' "$1" >&2 + fi +} + +if [[ ! -f "${SSH_CONFIG}" ]]; then + notify "SSH config not found: ${SSH_CONFIG}" + exit 1 +fi + +# Build list: host|user|hostname +host_entries="$( + awk ' + function is_wildcard(h) { return (h ~ /[*?]/ || h ~ /^!/); } + function remember_hosts(list, i, n, h) { + delete current + n = split(list, parts, /[ \t]+/) + for (i = 1; i <= n; i++) { + h = parts[i] + if (h == "") continue + if (is_wildcard(h)) continue + current[h] = 1 + if (!(h in seen)) { + seen[h] = 1 + order[++count] = h + } + } + } + { + sub(/[ \t]*#.*/, "", $0) + if ($0 ~ /^[ \t]*$/) next + if ($1 == "Host") { + $1 = "" + sub(/^[ \t]+/, "", $0) + remember_hosts($0) + next + } + if ($1 == "HostName") { + for (h in current) hostname[h] = $2 + next + } + if ($1 == "User") { + for (h in current) user[h] = $2 + next + } + } + END { + for (i = 1; i <= count; i++) { + h = order[i] + print h "|" (h in user ? user[h] : "") "|" (h in hostname ? hostname[h] : "") + } + } + ' "${SSH_CONFIG}" +)" + +if [[ -z "${host_entries}" ]]; then + notify "No SSH hosts found in ${SSH_CONFIG}" + exit 1 +fi + +menu_entries="$( + while IFS='|' read -r host user hostname; do + [[ -n "${host}" ]] || continue + [[ -n "${user}" ]] || user="${USER}" + [[ -n "${hostname}" ]] || hostname="${host}" + printf '%s | %s@%s\n' "${host}" "${user}" "${hostname}" + done <<< "${host_entries}" +)" + +# Close any existing rofi before launching +if pgrep -x "rofi" >/dev/null 2>&1; then + pkill rofi +fi + +selection="$(printf '%s\n' "${menu_entries}" | rofi -dmenu -i -p "SSH" -mesg "${MSG}" -config "${ROFI_CONFIG}")" + +if [[ -z "${selection}" ]]; then + exit 0 +fi + +selected_host="${selection%% | *}" +if [[ -z "${selected_host}" ]]; then + exit 0 +fi + +if command -v kitty >/dev/null 2>&1; then + exec kitty --title "SSH ${selected_host}" sh -lc "ssh ${selected_host}" +fi + +if command -v ghostty >/dev/null 2>&1; then + exec ghostty -e sh -lc "ssh ${selected_host}" +fi + +if command -v alacritty >/dev/null 2>&1; then + exec alacritty -e sh -lc "ssh ${selected_host}" +fi + +notify "No supported terminal found (kitty, ghostty, alacritty). Unable to start SSH session." +exit 1 diff --git a/config/hypr/scripts/sddm_wallpaper.sh b/config/hypr/scripts/sddm_wallpaper.sh index 26f6c613..deee938c 100755 --- a/config/hypr/scripts/sddm_wallpaper.sh +++ b/config/hypr/scripts/sddm_wallpaper.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # SDDM Wallpaper and Wallust Colors Setter # for the upcoming changes on the simple_sddm_theme diff --git a/config/hypr/scripts/set-default-thunar-terminal.sh b/config/hypr/scripts/set-default-thunar-terminal.sh new file mode 100755 index 00000000..fd50eb6c --- /dev/null +++ b/config/hypr/scripts/set-default-thunar-terminal.sh @@ -0,0 +1,148 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# +setup_default_terminal() { + echo "Setting kitty as the default terminal for Thunar and CLI apps..." + + # 1. Configure XFCE/Exo (Thunar's primary helper) + # This handles "Open Terminal Here" and "Open with [CLI App]" + HELPER_DIR="$HOME/.config/xfce4" + mkdir -p "$HELPER_DIR" + KITTY_PATH="$(command -v kitty 2>/dev/null || true)" + if [ -z "$KITTY_PATH" ]; then + echo "Warning: kitty not found in PATH. Thunar may report no terminal available." + fi + # Prefer exo-preferred-applications when available (XFCE/Thunar) + if command -v exo-preferred-applications >/dev/null 2>&1; then + exo-preferred-applications --set TerminalEmulator kitty >/dev/null 2>&1 || true + fi + + # Ensure helpers.rc exists and has a [Default] section + if [ ! -f "$HELPER_DIR/helpers.rc" ]; then + printf "[Default]\n" >"$HELPER_DIR/helpers.rc" + elif ! grep -q '^\[Default\]$' "$HELPER_DIR/helpers.rc"; then + printf "[Default]\n%s" "$(cat "$HELPER_DIR/helpers.rc")" >"$HELPER_DIR/helpers.rc" + fi + + # Update TerminalEmulator entry in [Default] section + if grep -q '^TerminalEmulator=' "$HELPER_DIR/helpers.rc"; then + sed -i 's|^TerminalEmulator=.*|TerminalEmulator=kitty|' "$HELPER_DIR/helpers.rc" + else + sed -i '/^\[Default\]$/a TerminalEmulator=kitty' "$HELPER_DIR/helpers.rc" + fi + # Set a full path if available (GUI PATH can differ) + if [ -n "$KITTY_PATH" ]; then + if grep -q '^TerminalEmulatorPath=' "$HELPER_DIR/helpers.rc"; then + sed -i "s|^TerminalEmulatorPath=.*|TerminalEmulatorPath=$KITTY_PATH|" "$HELPER_DIR/helpers.rc" + else + sed -i "/^\[Default\]$/a TerminalEmulatorPath=$KITTY_PATH" "$HELPER_DIR/helpers.rc" + fi + fi + + # 2. Create a User-Level "xterm" Shim + # Many older .desktop files and scripts have 'xterm' hardcoded. + # By placing this in ~/.local/bin, we intercept those calls. + BIN_DIR="$HOME/.local/bin" + mkdir -p "$BIN_DIR" + if ! printf "%s" "$PATH" | tr ':' '\n' | grep -qx "$BIN_DIR"; then + echo "Warning: $BIN_DIR is not in PATH for this session. GUI apps may still use /usr/bin/xterm." + fi + + cat <<EOF >"$BIN_DIR/xterm" +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# +# Shim to redirect xterm calls to kitty +# Resolves Open with (vim/neovim/etc) opening in xterm +args=() +pass_through=() +while [ \$# -gt 0 ]; do + case "\$1" in + -e) + shift + if [ \$# -gt 0 ]; then + pass_through+=("\$@") + fi + break + ;; + -T|-title|-geometry|-bg|-fg|-fs|-fa|-fn) + # Skip common xterm-only flags and their values + shift + [ \$# -gt 0 ] && shift + ;; + -class|-name) + shift + [ \$# -gt 0 ] && shift + ;; + -hold|-ls|-sb|-sk|-sr|-s) + # Ignore boolean flags that kitty doesn't understand + shift + ;; + *) + args+=("\$1") + shift + ;; + esac +done + +if [ \${#pass_through[@]} -gt 0 ]; then + exec kitty "\${args[@]}" -- "\${pass_through[@]}" +else + exec kitty "\${args[@]}" +fi +EOF + chmod +x "$BIN_DIR/xterm" + + # 3. Update GLib/GIO Default Terminal (for GNOME-based backends) + # Some distros use gsettings to define the terminal schema. + if command -v gsettings >/dev/null 2>&1; then + gsettings set org.gnome.desktop.default-applications.terminal exec 'kitty' 2>/dev/null || true + fi + + # 4. Refresh Mime Database + # Ensures Thunar sees the changes to terminal handling immediately. + if command -v update-desktop-database >/dev/null 2>&1; then + update-desktop-database ~/.local/share/applications 2>/dev/null || true + fi + + # 5. Hide Kitty URL Handler from "Open With" + # Prevents Kitty URL handler from showing up for text files. + USER_APP_DIR="$HOME/.local/share/applications" + mkdir -p "$USER_APP_DIR" + KITTY_URL_HANDLER="" + for dir in $XDG_DATA_DIRS /usr/local/share /usr/share; do + [ -z "$dir" ] && continue + if [ -f "$dir/applications/kitty-url-handler.desktop" ]; then + KITTY_URL_HANDLER="$dir/applications/kitty-url-handler.desktop" + break + fi + done + + if [ -n "$KITTY_URL_HANDLER" ]; then + cp "$KITTY_URL_HANDLER" "$USER_APP_DIR/kitty-url-handler.desktop" + if grep -q '^NoDisplay=' "$USER_APP_DIR/kitty-url-handler.desktop"; then + sed -i 's|^NoDisplay=.*|NoDisplay=true|' "$USER_APP_DIR/kitty-url-handler.desktop" + else + printf "\nNoDisplay=true\n" >>"$USER_APP_DIR/kitty-url-handler.desktop" + fi + if grep -q '^Hidden=' "$USER_APP_DIR/kitty-url-handler.desktop"; then + sed -i 's|^Hidden=.*|Hidden=true|' "$USER_APP_DIR/kitty-url-handler.desktop" + else + printf "Hidden=true\n" >>"$USER_APP_DIR/kitty-url-handler.desktop" + fi + fi + + echo "Default terminal set to kitty successfully." +} + +setup_default_terminal diff --git a/config/hypr/scripts/update_WindowRules.sh b/config/hypr/scripts/update_WindowRules.sh index 8b4262ba..c8d236c4 100755 --- a/config/hypr/scripts/update_WindowRules.sh +++ b/config/hypr/scripts/update_WindowRules.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== # Script to update WindowRules config if Hyprland version is >= 0.53 CONFIGS_DIR="$HOME/.config/hypr/configs" diff --git a/config/hypr/v2.3.21 b/config/hypr/v2.3.22 index 51de9972..51de9972 100644 --- a/config/hypr/v2.3.21 +++ b/config/hypr/v2.3.22 diff --git a/config/kitty/kitty-themes/00-Default.conf b/config/kitty/kitty-themes/00-Default.conf index 640a8d68..1405d594 100644 --- a/config/kitty/kitty-themes/00-Default.conf +++ b/config/kitty/kitty-themes/00-Default.conf @@ -1,4 +1,3 @@ # /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # # This is just created to remove all the themes -include ./01-Wallust.conf diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf index 4757ed7e..a9571d59 100644 --- a/config/kitty/kitty.conf +++ b/config/kitty/kitty.conf @@ -1,9 +1,9 @@ # /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # # you can choose themes from $HOME/.config/kitty/kitty-themes/ -include ./kitty-themes/00-Default.conf +include ./kitty-themes/01-Wallust.conf -font_family FantasqueSansM Nerd Font Mono Bold +font_family FantasqueSansM Nerd Font Mono font_size 16.0 bold_font auto italic_font auto diff --git a/config/rofi/config-emacs-keybinds.rasi b/config/rofi/config-emacs-keybinds.rasi new file mode 100644 index 00000000..cb198d43 --- /dev/null +++ b/config/rofi/config-emacs-keybinds.rasi @@ -0,0 +1,41 @@ +/* ---- Emacs Keybinds (rofi) ---- */ +@import "~/.config/rofi/config.rasi" + +mainbox { + children: + [ "inputbar", "message", "listview" ]; +} + +entry { + expand: true; + placeholder: " ⌨️ Search Emacs Keybinds"; +} + +listview { + columns: 2; + lines: 10; + fixed-height: false; + scrollbar: true; + spacing: 6px; + cycle: true; +} + +window { + width: 90%; + height: inherit; +} + +element { + orientation: horizontal; +} + +element-icon { + size: 0%; +} + +element-text { + horizontal-align: 0.0; + vertical-align: 0.5; + margin: 0px; + padding: 0px; +} diff --git a/config/rofi/config-ghostty-theme.rasi b/config/rofi/config-ghostty-theme.rasi new file mode 100644 index 00000000..8d317b00 --- /dev/null +++ b/config/rofi/config-ghostty-theme.rasi @@ -0,0 +1,74 @@ +/* ================================================== */ +/* KoolDots (2026) */ +/* Project URL: https://github.com/LinuxBeginnings */ +/* License: GNU GPLv3 */ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* ================================================== */ + +/* Ghostty Theme Selector */ + +@import "~/.config/rofi/config.rasi" + +/* ---- Configuration ---- */ +configuration { + modi: "drun"; +} + +/* ---- Window ---- */ +window { + width: inherit; + height: inherit; + border-radius: 15px; +} + +mainbox { + children: [ "inputbar" , "listview" ]; +} + +/* ---- Listbox ---- */ +listbox { + border-radius: 12px; +} + +/* ---- Inputbar ---- */ +inputbar { + padding: 14px; + border-radius: 10px; +} + +entry { + expand: true; + placeholder: " 👻 Choose Ghostty theme: Enter to Apply"; +} + +/* ---- Listview ---- */ +listview { + columns: 3; + lines: 4; + spacing: 4px; + border-radius: 10px; + cycle: true; +} + +/* ---- Element ---- */ +element { + orientation: horizontal; +} + +/* ---- Message ---- */ +message { + border-radius: 10px; +} + +textbox { + padding: 15px; +} + +/* ---- Element ---- */ +element-icon { + size: 0%; +} +element-text { + horizontal-align: 0.0; + margin: 5px 30px 5px 30px; +} diff --git a/config/rofi/dwm-config-horiz.rasi b/config/rofi/dwm-config-horiz.rasi new file mode 100644 index 00000000..e93bcc5e --- /dev/null +++ b/config/rofi/dwm-config-horiz.rasi @@ -0,0 +1,19 @@ +configuration { + modi: "drun"; + font: "JetBrainsMono Nerd Font 10"; + show-icons: false; + terminal: "kitty"; + drun-display-format: "{name}"; + display-drun: " "; + timeout { + action: "kb-cancel"; + delay: 0; + } + filebrowser { + directories-first: true; + sorting-method: "name"; + } + } + +@theme "~/.config/rofi/dwm-dmenu-horiz.rasi" + diff --git a/config/rofi/dwm-config-vert.rasi b/config/rofi/dwm-config-vert.rasi new file mode 100644 index 00000000..6e3e735e --- /dev/null +++ b/config/rofi/dwm-config-vert.rasi @@ -0,0 +1,25 @@ +configuration { + modi: "drun"; + font: "JetBrainsMono Nerd Font 10"; + show-icons: false; + terminal: "kitty"; + drun-display-format: "{name}"; + display-drun: " "; + timeout { + action: "kb-cancel"; + delay: 0; + } + filebrowser { + directories-first: true; + sorting-method: "name"; + } + } + +@theme "~/.config/rofi/dwm-dmenu-vert.rasi" + +listview { + columns: 1; + lines: 12; + fixed-height: true; + layout: vertical; +} diff --git a/config/rofi/dwm-dmenu-horiz.rasi b/config/rofi/dwm-dmenu-horiz.rasi new file mode 100644 index 00000000..8a433d93 --- /dev/null +++ b/config/rofi/dwm-dmenu-horiz.rasi @@ -0,0 +1,50 @@ +* { + background-color: #282828; + border-color: #458588; + text-color: #ebdbb2; + height: 24px; + font: "JetBrainsMono Nerd Font 10"; + prompt-font: "JetBrainsMono Nerd Font 10""; + prompt-background: #458588; + prompt-foreground: #282828; + prompt-padding: 2px 6px; + selected-normal-background: #458588; + selected-normal-foreground: #ebdbb2; +} +#window { + anchor: north; + location: north; + width: 100%; + padding: 0px; + children: [ horibox ]; +} +#horibox { + orientation: horizontal; + children: [ prompt, entry, listview ]; +} +#prompt { + padding: @prompt-padding; + background-color: @prompt-background; + text-color: @prompt-foreground; + font: @prompt-font; +} +#listview { + layout: horizontal; + lines: 100; +} +#entry { + padding: 2px; + expand: false; + width: 10em; +} +#element { + padding: 2px 8px; +} +#element selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +element-text { + background-color: inherit; + text-color: inherit; +} diff --git a/config/rofi/dwm-dmenu-vert.rasi b/config/rofi/dwm-dmenu-vert.rasi new file mode 100644 index 00000000..a88bdaf5 --- /dev/null +++ b/config/rofi/dwm-dmenu-vert.rasi @@ -0,0 +1,54 @@ +* { + background-color: #282828; + border-color: #458588; + text-color: #ebdbb2; + font: "JetBrainsMono Nerd Font 10"; + prompt-font: "JetBrainsMono Nerd Font 10"; + prompt-background: #458588; + prompt-foreground: #282828; + prompt-padding: 2px 6px; + selected-normal-background: #458588; + selected-normal-foreground: #ebdbb2; +} +#window { + anchor: north; + location: north; + width: 35%; + padding: 0px; + children: [ mainbox ]; +} +#mainbox { + orientation: vertical; + children: [ inputbar, listview ]; +} +#inputbar { + children: [ prompt, entry ]; +} +#prompt { + padding: @prompt-padding; + background-color: @prompt-background; + text-color: @prompt-foreground; + font: @prompt-font; +} +#listview { + layout: vertical; + columns: 1; + lines: 12; + fixed-height: false; +} +#entry { + padding: 2px; + expand: false; + width: 10em; +} +#element { + padding: 2px 8px; +} +#element selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +element-text { + background-color: inherit; + text-color: inherit; +} diff --git a/config/rofi/themes/KooL_TokyoNight.rasi b/config/rofi/themes/KooL_TokyoNight.rasi new file mode 100644 index 00000000..330fa716 --- /dev/null +++ b/config/rofi/themes/KooL_TokyoNight.rasi @@ -0,0 +1,135 @@ +/* + * Tokyonight colorscheme (big icons) for rofi + * User: w8ste + */ + + +// define colors etc. +* { + bg: #24283b; + hv: #9274ca; + primary: #444b6a; // TokyoNight bright black + ug: #0B2447; + font: "Monospace 11"; + background-color: @bg; + //dark: @bg; + border: 0px; + kl: #7aa2f7; + black: #000000; + + transparent: rgba(46,52,64,0); +} + +// defines different aspects of the window +window { + width: 700; + /*since line wont work with height, i comment it out + if you rather control the size via height + just comment it out */ + //height: 500; + + orientation: horizontal; + location: center; + anchor: center; + transparency: "screenshot"; + border-color: @transparent; + border: 0px; + border-radius: 6px; + spacing: 0; + children: [ mainbox ]; +} + +mainbox { + spacing: 0; + children: [ inputbar, message, listview ]; +} + +inputbar { + color: @kl; + padding: 11px; + border: 3px 3px 2px 3px; + border-color: @primary; + border-radius: 6px 6px 0px 0px; +} + +message { + padding: 0; + border-color: @primary; + border: 0px 1px 1px 1px; +} + +entry, prompt, case-indicator { + font: inherit; + text-color: inherit; +} + +entry { + cursor: pointer; +} + +prompt { + margin: 0px 5px 0px 0px; +} + +listview { + layout: vertical; + //spacing: 5px; + padding: 8px; + lines: 7; + columns: 2; + border: 0px 3px 3px 3px; + border-radius: 0px 0px 6px 6px; + border-color: @primary; + dynamic: false; +} + +element { + padding: 2px; + vertical-align: 1; + text-color: @kl; + font: inherit; +} + +element-text { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; +} + +element selected.normal { + text-color: @black; + background-color: @hv; +} +element normal.active { + background-color: @hv; + text-color: @black; +} + +element-icon { + background-color: inherit; + text-color: inherit; + size: 2.5em; +} + +element normal.urgent { + background-color: @primary; +} +element selected.active { + background-color: @hv; + text-color: @bg; +} + +button { + padding: 6px; + color: @primary; + horizontal-align: 0.5; + + border: 2px 0px 2px 2px; + border-radius: 4px 0px 0px 4px; + border-color: @primary; +} + +button selected { + border: 2px 0px 2px 2px; + border-color: @primary; +} diff --git a/config/rofi/themes/KooL_dwm.rasi b/config/rofi/themes/KooL_dwm.rasi new file mode 100644 index 00000000..6c6d2b7e --- /dev/null +++ b/config/rofi/themes/KooL_dwm.rasi @@ -0,0 +1,86 @@ +configuration { + modi: "drun"; + font: "JetBrainsMono Nerd Font 10"; + show-icons: true; + terminal: "alacritty"; + icon-theme: "Papirus-Dark"; + drun-display-format: "{name}"; + display-drun: ""; + timeout { + action: "kb-cancel"; + delay: 0; + } + filebrowser { + directories-first: true; + sorting-method: "name"; + } +} + +@theme "/dev/null" + +* { + bg: #232933; + fg: #d8dee9; + selected: #2d3543; + accent: #4d6a8e; + background-color: @bg; + + color: @fg; + border: 0; + border-color: @bg; + margin: 0; + padding: 0; + spacing: 0; + highlight: none; +} + +window { + width: 700px; +} + +element { + padding: 6 5 7 5; + text-color: @fg; +} + +element-text { + vertical-align: 0.5; + padding: 5px; +} + +element selected { + background-color: @selected; +} + +element-text selected { + background-color: @selected; +} + +element-icon selected { + background-color: @selected; +} + +element-icon { + size: 30; +} + +inputbar { + children: [prompt, entry]; +} + +prompt { + text-color: @bg; + background-color: @accent; + padding: 12 12 12 12; +} + +entry { + text-color: @bg; + padding: 12 5 12 0; +} + +listview { + background-color: @bg; + columns: 3; + lines: 6; +} diff --git a/config/systemd/user/hyprpolkitagent.service.d/override.conf b/config/systemd/user/hyprpolkitagent.service.d/override.conf new file mode 100644 index 00000000..04840d90 --- /dev/null +++ b/config/systemd/user/hyprpolkitagent.service.d/override.conf @@ -0,0 +1,7 @@ +[Unit] +After= +After=dbus.service +PartOf= + +[Install] +WantedBy=default.target diff --git a/config/waybar/ModulesCustom b/config/waybar/ModulesCustom index 8887fa1c..3abb96d4 100644 --- a/config/waybar/ModulesCustom +++ b/config/waybar/ModulesCustom @@ -78,6 +78,17 @@ "tooltip-format": "Left Click: Quick Tips\nRight Click: Keybinds", }, +// External monitor brightness (ddcutil) +"custom/brightness_external": { + "format": "{}", + "return-type": "json", + "interval": 2, + "exec": "$HOME/.config/hypr/scripts/ExternalBrightness.sh --get", + "on-scroll-up": "$HOME/.config/hypr/scripts/ExternalBrightness.sh --inc", + "on-scroll-down": "$HOME/.config/hypr/scripts/ExternalBrightness.sh --dec", + "tooltip": true +}, + "custom/dot_update": { "format": " ", "on-click": "$HOME/.config/hypr/scripts/KooLsDotsUpdate.sh", diff --git a/config/waybar/ModulesWorkspaces b/config/waybar/ModulesWorkspaces index 683fcfb5..c9497b74 100644 --- a/config/waybar/ModulesWorkspaces +++ b/config/waybar/ModulesWorkspaces @@ -180,7 +180,7 @@ }, "format": "{icon} {windows}", "format-window-separator": " ", - "window-rewrite-default": " ", + "window-rewrite-default": " <span foreground='#ff0000'>✘</span> ", "window-rewrite": { "title<.*amazon.*>": " ", "title<.*reddit.*>": " ", @@ -198,10 +198,11 @@ "class<kitty-dropterm>": " ", "class<com.mitchellh.ghostty>": " ", "class<org.wezfurlong.wezterm>": " ", + "class<play.mii.Boxxy>": " ", "class<Warp|warp|dev.warp.Warp|warp-terminal>": " ", - "class<[Tt]hunderbird|[Tt]hunderbird-esr>": " ", - "class<eu.betterbird.Betterbird>": " ", + "class<[Tt]hunderbird|[Tt]hunderbird-esr>": " ", + "class<org.mozilla.Thunderbird|eu.betterbird.Betterbird>": " ", "title<.*gmail.*>": " ", "class<[Tt]elegram-desktop|org.telegram.desktop|io.github.tdesktop_x64.TDesktop>": " ", @@ -217,6 +218,7 @@ "title<.*ChatGPT.*>": " ", "title<.*deepseek.*>": " ", "title<.*qwen.*>": " ", + "title<.*Gemini.*>": " ", "class<subl>": " ", "class<slack>": " ", @@ -238,11 +240,16 @@ "class<virtualbox manager>": "💽 ", "title<virtualbox>": "💽 ", "class<remmina|org.remmina.Remmina>": "🖥️ ", + "class<mainline-gtk>": " ", "class<VSCode|code|code-url-handler|code-oss|codium|codium-url-handler|VSCodium>": " ", + "class<[Aa]ntigravity>": " ", + "title<.*[Aa]ntigravity.*>": " ", "class<dev.zed.Zed>": "", "class<codeblocks>": " ", "title<.*github.*>": " ", + "class<com-jetpackduba-gitnuro-MainKt>": " ", + "title<.*Gitnuro.*>": " ", "class<mousepad>": " ", "class<libreoffice-writer>": " ", "class<libreoffice-startcenter>": " ", @@ -253,6 +260,7 @@ "title<.*figma.*>": " ", "title<.*jira.*>": " ", "class<jetbrains-idea>": " ", + "class<emacs|Emacs>": " ", "class<obs|com.obsproject.Studio>": " ", @@ -261,7 +269,7 @@ "class<nwg-displays>": " ", "class<[Pp]avucontrol|org.pulseaudio.pavucontrol>": " ", "class<steam>": " ", - "class<thunar|nemo>": " ", + "class<thunar|nemo|org.gnome.Nautilus>": " ", "class<Gparted>":"", "class<gimp>": " ", "class<emulator>": "📱 ", @@ -269,6 +277,7 @@ "class<org.pipewire.Helvum>": "", "class<localsend>":"", "class<PrusaSlicer|UltiMaker-Cura|OrcaSlicer>": "", + "class<nvidia-settings>": " ", "class<io.github.kolunmi.Bazaar>": " ", "title<^Bazaar$>": " ", @@ -294,4 +303,4 @@ "title<^qs-wlogout$>": " ", } }, -}
\ No newline at end of file +} diff --git a/config/waybar/configs/TOP-ddubs-simple-bar b/config/waybar/configs/TOP-ddubs-simple-bar index 1b459c19..be5f136e 100644 --- a/config/waybar/configs/TOP-ddubs-simple-bar +++ b/config/waybar/configs/TOP-ddubs-simple-bar @@ -47,7 +47,10 @@ "tray", "custom/separator#blank", "custom/weather2", - "group/laptop", + "cpu", + "memory", + "temperature", + "battery", "group/status", "custom/separator#blank", ], diff --git a/config/waybar/style/Dark-Latte-Wallust-combined-v2.css b/config/waybar/style/Dark-Latte-Wallust-combined-v2.css index e707c26b..12a573e2 100644 --- a/config/waybar/style/Dark-Latte-Wallust-combined-v2.css +++ b/config/waybar/style/Dark-Latte-Wallust-combined-v2.css @@ -53,12 +53,12 @@ tooltip { border-bottom: 2px solid @border-color; font-weight: bold; font-style: normal; - opacity: 0.8; + opacity: 1; } #taskbar button, #workspaces button { - color: @foreground; + color: @color15; box-shadow: none; text-shadow: none; border-radius: 30px; @@ -169,7 +169,7 @@ tooltip { #custom-weather.showyIcyDay, #custom-weather.snowyIcyNight, #custom-weather.sunnyDay { - color: @foreground; + color: @color15; padding-right: 6px; padding-left: 6px;; } @@ -262,7 +262,7 @@ tooltip { } #clock { - color: @foreground; + color: @color15; border-radius: 15px; } diff --git a/config/waybar/style/Dark-Latte-Wallust-combined.css b/config/waybar/style/Dark-Latte-Wallust-combined.css index bbe23b8b..9ffad565 100644 --- a/config/waybar/style/Dark-Latte-Wallust-combined.css +++ b/config/waybar/style/Dark-Latte-Wallust-combined.css @@ -67,13 +67,13 @@ tooltip { border:2px solid @border-color; font-weight: bold; font-style: normal; - opacity:0.8; + opacity: 1; color:#FFFFFF; } #taskbar button, #workspaces button { - color: #6E6A86; + color: @color15; box-shadow: none; text-shadow: none; border-radius: 30px; diff --git a/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css b/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css index e593b9fd..a7eb725c 100644 --- a/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css +++ b/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css @@ -119,7 +119,7 @@ tooltip { border-radius: 25px; padding: 0px 10px 0px 10px; margin: 5px; - opacity:0.8; + opacity: 1; border:2px solid @border-color; } @@ -212,7 +212,7 @@ tooltip { #workspaces button { border-radius: 15px; border:0px; - color: @color13; + color: @color15; padding-left: 2px; padding-right: 2px; animation: gradient_f 20s ease-in infinite; diff --git a/config/waybar/style/Wallust-Bordered-Chroma-Simple.css b/config/waybar/style/Wallust-Bordered-Chroma-Simple.css index 3e277f6c..c0b97f06 100644 --- a/config/waybar/style/Wallust-Bordered-Chroma-Simple.css +++ b/config/waybar/style/Wallust-Bordered-Chroma-Simple.css @@ -12,6 +12,14 @@ min-height: 0; } +/* Make group buttons themselves use readable text */ +#group-audio, +#group-mobo_drawer { + background: @background; + color: @color15; + border: 2px solid @color13; +} + window#waybar { background-color: transparent; color: @foreground; @@ -27,12 +35,12 @@ window#waybar.empty #window { } tooltip { - background-color: @color12; + background-color: @background; color: @foreground; border-radius: 10px; border-width: 1.5px; border-style: solid; - border-color: @color9; + border-color: @color13; transition: 0.3s; opacity: 0.9; } @@ -102,6 +110,8 @@ tooltip { #tray, #window, #wireplumber, +#group-mobo_drawer, +#group-audio, #custom-backlight, #custom-nightlight, #custom-browser, @@ -149,6 +159,7 @@ tooltip { border: 2px solid @color13; } + #cpu { border: 2px solid @color5; color: @foreground; @@ -177,14 +188,14 @@ tooltip { } #custom-power { - color: red; + color: @color13; padding-left: 10px; padding-right: 2px; - border: 2px solid red; + border: 2px solid @color13; } #backlight { - color: #f9e2af; + color: @color14; padding-right: 5px; } @@ -213,29 +224,35 @@ tooltip { } #clock { - color: #fab387; + color: @color13; +} + +#clock:hover { + color: @color13; + background: @background; + border: 2px solid @color13; } #bluetooth { - color: #b4befe; + color: @color12; margin-right: 10px } #pulseaudio.microphone, #pulseaudio { background-color: @color12; - color: #89b4fa; + color: @color15; border: 2px solid @color13; } #pulseaudio.muted { - color: #f38ba8; + color: @color13; padding-right: 20px; } #battery { - color: #a6e3a1; + color: @color10; margin-right: 5px; padding-right: 15px; border: 2px solid @color14; @@ -249,22 +266,22 @@ tooltip { } #battery.good { - color: #ffd57a; + color: @color14; border: 2px solid @color15; } #battery.warning { - color: #fab387; + color: @color13; border-left: 0px; border: 2px solid @color12; } #battery.charging { - color: #a6e3a1; + color: @color10; } #battery.critical { - color: #f38ba8; + color: @color13; border-left: 0px; border: 2px solid @color8; } @@ -287,7 +304,7 @@ tooltip { } #custom-weather { - color: #8eacf3; + color: @color12; border-right: 0px; margin-left: 0px; margin-right: 5px; @@ -315,3 +332,29 @@ tooltip { min-height: 10px; border-radius: 5px; } + +/* Ensure group drawer modules match base style (avoid bright per-module colors) */ +#group-audio #pulseaudio, +#group-audio #pulseaudio.microphone, +#group-mobo_drawer #temperature, +#group-mobo_drawer #cpu, +#group-mobo_drawer #power-profiles-daemon, +#group-mobo_drawer #memory, +#group-mobo_drawer #disk { + background-color: @background; + color: @color15; + border: 2px solid @color13; +} + +/* Global overrides for this style (match other widgets: dark bg + light text) */ +#pulseaudio, +#pulseaudio.microphone, +#cpu, +#memory, +#disk, +#temperature, +#power-profiles-daemon { + background-color: @background; + color: @color15; + border: 2px solid @color13; +} diff --git a/config/waybar/style/Wallust-Box-type.css b/config/waybar/style/Wallust-Box-type.css index 6bd2a5de..7f1d3ad2 100644 --- a/config/waybar/style/Wallust-Box-type.css +++ b/config/waybar/style/Wallust-Box-type.css @@ -51,8 +51,8 @@ window#waybar.empty #window { #taskbar button.active, #workspaces button.active { - color: @color15; - background-color: @background; + color: @background; + background-color: @color13; padding-left: 4px; padding-right: 8px; animation: gradient_f 20s ease-in infinite; @@ -61,8 +61,8 @@ window#waybar.empty #window { #taskbar button.focused, #workspaces button.focused { - color: @color15; - background-color: @background; + color: @background; + background-color: @color13; } #workspaces button.urgent { @@ -72,7 +72,8 @@ window#waybar.empty #window { #taskbar button:hover, #workspaces button:hover { - color: @color15; + color: @background; + background-color: @color13; padding-left: 2px; padding-right: 8px; animation: gradient_f 20s ease-in infinite; diff --git a/config/waybar/style/Wallust-Chroma-Edge.css b/config/waybar/style/Wallust-Chroma-Edge.css index 82125870..4a17d473 100644 --- a/config/waybar/style/Wallust-Chroma-Edge.css +++ b/config/waybar/style/Wallust-Chroma-Edge.css @@ -50,7 +50,7 @@ tooltip label{ #taskbar button, #workspaces button { background-color: transparent; - color: grey; + color: @color15; box-shadow: none; text-shadow: none; padding: 0px; @@ -63,7 +63,8 @@ tooltip label{ #workspaces button.active { background-color: transparent; - color: #D3D3D3; +\tcolor: @color15; + padding-left: 8px; padding-right: 8px; animation: gradient_f 20s ease-in infinite; @@ -143,7 +144,7 @@ tooltip label{ #custom-weather.showyIcyDay, #custom-weather.snowyIcyNight, #custom-weather.sunnyDay { - color: #e5e5e5; +\tcolor: @color15; /* color: #bf616a; */ border-radius: 12px; background-color: rgba(50, 50, 50, 0.1); diff --git a/config/waybar/style/Wallust-Chroma-Fusion.css b/config/waybar/style/Wallust-Chroma-Fusion.css index 4399f125..7113c6f4 100644 --- a/config/waybar/style/Wallust-Chroma-Fusion.css +++ b/config/waybar/style/Wallust-Chroma-Fusion.css @@ -119,7 +119,7 @@ tooltip { background-color: @background-module; border-radius: 25px; margin: 5px 5px 5px 5px; - opacity:0.8; + opacity: 1; padding-top: 4px; padding-bottom: 4px; padding-right: 6px; @@ -214,7 +214,7 @@ tooltip { margin: 1px 1px; border-radius: 15px; border:0px; - color: @color13; + color: @color15; padding-left: 2px; padding-right: 2px; animation: gradient_f 20s ease-in infinite; diff --git a/config/waybar/style/Wallust-ML4W-modern-mixed.css b/config/waybar/style/Wallust-ML4W-modern-mixed.css index d627b576..f8ef2630 100644 --- a/config/waybar/style/Wallust-ML4W-modern-mixed.css +++ b/config/waybar/style/Wallust-ML4W-modern-mixed.css @@ -8,10 +8,10 @@ @define-color workspacesbackground1 @color12; @define-color workspacesbackground2 @background; @define-color bordercolor @color11; -@define-color textcolor1 @foreground; -@define-color textcolor2 @background; -@define-color textcolor3 @foreground; -@define-color iconcolor @foreground; +@define-color textcolor1 @color15; +@define-color textcolor2 @color7; +@define-color textcolor3 @color15; +@define-color iconcolor @color15; * { font-family: "JetBrainsMono Nerd Font"; @@ -42,7 +42,7 @@ border-bottom: 0px solid @foreground; border: 0px; font-weight: bold; font-style: normal; - opacity: 0.8; + opacity: 1; color: @textcolor1; } @@ -54,7 +54,7 @@ border-bottom: 0px solid @foreground; color: @textcolor1; background-color: @workspacesbackground2; transition: all 0.1s linear; - opacity: 0.4; + opacity: 1; } #taskbar button.active, @@ -93,7 +93,7 @@ tooltip label { border-radius: 5px 5px 5px 5px; color:white; font-weight:normal; - opacity:0.8; + opacity: 1; } window#waybar.empty #window { diff --git a/config/waybar/style/Wallust-ML4W-modern.css b/config/waybar/style/Wallust-ML4W-modern.css index 7c0e9c61..0ab8165c 100644 --- a/config/waybar/style/Wallust-ML4W-modern.css +++ b/config/waybar/style/Wallust-ML4W-modern.css @@ -8,10 +8,10 @@ @define-color workspacesbackground1 @color0; @define-color workspacesbackground2 @color12; @define-color bordercolor @color13; -@define-color textcolor1 @foreground; -@define-color textcolor2 @foreground; -@define-color textcolor3 @foreground; -@define-color iconcolor @foreground; +@define-color textcolor1 @color15; +@define-color textcolor2 @color7; +@define-color textcolor3 @color15; +@define-color iconcolor @color15; * { font-family: "JetBrainsMono Nerd Font"; |
