diff options
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"; |
