hypr: accept all JaKooLit updates

This commit is contained in:
Petar Kapriš 2026-05-13 21:22:17 +02:00
parent a6e1cf7ed0
commit 68bc595c8b
137 changed files with 6281 additions and 1241 deletions

View file

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# default Monitor config
# Monitor Configuration

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# KoolDots (2026)
# Project URL: https://github.com/LinuxBeginnings
# License: GNU GPLv3
# SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
KooL's Hyprland-Dots

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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
@ -11,8 +16,8 @@
$edit=${EDITOR:-nano}
# These two are for UserKeybinds.conf & Waybar Modules
$term = foot # Terminal
$files = nemo # File Manager
$term = kitty # Terminal
$files = thunar # File Manager
# Default Search Engine for ROFI Search (SUPER S)
$Search_Engine = "https://www.google.com/search?q={}"

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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

View file

@ -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

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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

View file

@ -1,3 +1,8 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# KoolDots (2026)
# Project URL: https://github.com/LinuxBeginnings
# License: GNU GPLv3
# SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
animations {
enabled = yes

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# KoolDots (2026)
# Project URL: https://github.com/LinuxBeginnings
# License: GNU GPLv3
# SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
# Decoration Settings
# Hyprland Wiki Links
@ -37,13 +42,13 @@ decoration {
color_inactive = $color10
}
blur {
enabled = true
size = 6
passes = 2
ignore_opacity = true
passes = 3
new_optimizations = true
xray = true
ignore_opacity = true
special = true
popups = true
}

View file

@ -1,11 +1,15 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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.

View file

@ -1,6 +1,18 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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.

View file

@ -0,0 +1,237 @@
#!/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
# Animate Hyprland's active border with a rotating rainbow gradient while
# minimizing CPU usage on older systems by:
# - Using a modest update rate (default 1.0s) and larger angle steps
# - Avoiding subshell-heavy work inside the loop
# - Using Hyprland's command socket via socat when available
# - Quoting/validating inputs and suppressing noisy output
# - Preventing multiple concurrent instances
# - Optionally restoring the previous border value on exit
#
# Credits
# Initial source/idea by: DemiGoD
# Adaptation and optimization for low-CPU usage by: Hyprland-Dots maintainers
#
# Usage
# You can customize behavior via environment variables when launching:
# RB_INTERVAL Float seconds between updates (default: 1.0)
# RB_STEP_DEG Integer degrees per tick (default: 10)
# RB_START_DEG Integer starting angle (default: 0)
# RB_TARGET Hypr option to update (default: general:col.active_border)
# RB_COLORS Space-separated color list (default: 10-color rainbow below)
# RB_RESTORE If "1", attempt to restore previous value on exit (loop mode; default: 1)
# RB_LOCKFILE Path to a PID lock file (loop mode; default: /tmp/hypr-rainbowborders.lock)
# RB_TRANSPORT auto|socat|hyprctl (default: auto)
# - socat: send each command via Hyprland's command socket
# using socat (one short-lived connection per tick)
# - hyprctl: spawn hyprctl each tick
# - auto: prefer socat if possible, otherwise hyprctl
# RB_ONCE 1 to apply once and exit (no animation; default: 0)
#
# Example (slower animation):
# RB_INTERVAL=1.5 RB_STEP_DEG=12 ~/.config/hypr/UserScripts/RainbowBorders-low-cpu.sh &
#
# Notes
# - This focuses on the active border only. Animating inactive borders too
# will increase updates and CPU usage.
# - Higher RB_INTERVAL (e.g., 1.02.0s) and larger RB_STEP_DEG (1020)
# reduce per-second work substantially.
set -u
# Defaults (can be overridden by env vars)
RB_INTERVAL="${RB_INTERVAL:-1.0}"
RB_STEP_DEG="${RB_STEP_DEG:-10}"
RB_START_DEG="${RB_START_DEG:-0}"
RB_TARGET="${RB_TARGET:-general:col.active_border}"
RB_COLORS_DEFAULT="0xffff0000 0xffff8000 0xffffff00 0xff80ff00 0xff00ff00 0xff00ff80 0xff00ffff 0xff0080ff 0xff0000ff 0xff8000ff"
RB_COLORS="${RB_COLORS:-$RB_COLORS_DEFAULT}"
RB_RESTORE="${RB_RESTORE:-1}"
RB_LOCKFILE="${RB_LOCKFILE:-/tmp/hypr-rainbowborders.lock}"
RB_TRANSPORT="${RB_TRANSPORT:-auto}"
RB_ONCE="${RB_ONCE:-0}"
# ---------- helpers ----------
log() { printf '[RainbowBorders-low-cpu] %s\n' "$*" >&2; }
die() { log "ERROR: $*"; exit 1; }
usage() {
cat <<'EOF'
Usage: RainbowBorders-low-cpu.sh [options]
Options:
-h, --help Show this help and exit
--once, --run-once, -1
Apply the current gradient once and exit (no animation).
In this mode, RB_RESTORE is ignored (the color persists).
Environment overrides:
RB_INTERVAL Seconds between updates (default: 1.0)
RB_STEP_DEG Degrees per tick (default: 10)
RB_START_DEG Starting angle (default: 0)
RB_TARGET Hypr option to update (default: general:col.active_border)
RB_COLORS Space-separated colors (default: 10-color rainbow)
RB_RESTORE 1 to restore previous value on exit (loop mode only; default: 1)
RB_LOCKFILE PID lock path (loop mode only; default: /tmp/hypr-rainbowborders.lock)
RB_TRANSPORT auto|socat|hyprctl (default: auto)
RB_ONCE 1 for one-shot mode (same as --once)
Examples:
Animate (light CPU):
RB_INTERVAL=1.5 RB_STEP_DEG=12 ./RainbowBorders-low-cpu.sh &
Set a static rainbow once (no animation):
./RainbowBorders-low-cpu.sh --once
EOF
}
is_float() { [[ "$1" =~ ^[0-9]+(\.[0-9]+)?$|^\.[0-9]+$ ]]; }
is_int() { [[ "$1" =~ ^[0-9]+$ ]]; }
# ---------- parse CLI flags ----------
while (( $# )); do
case "$1" in
-h|--help) usage; exit 0 ;;
--once|--run-once|-1) RB_ONCE=1 ;;
*) log "Unknown option: $1"; usage; exit 2 ;;
esac
shift
done
# ---------- validation ----------
if ! is_float "$RB_INTERVAL"; then
log "WARN: RB_INTERVAL='$RB_INTERVAL' invalid; defaulting to 1.0"
RB_INTERVAL="1.0"
fi
if ! is_int "$RB_STEP_DEG"; then
log "WARN: RB_STEP_DEG='$RB_STEP_DEG' invalid; defaulting to 10"
RB_STEP_DEG="10"
fi
if ! is_int "$RB_START_DEG"; then
log "WARN: RB_START_DEG='$RB_START_DEG' invalid; defaulting to 0"
RB_START_DEG="0"
fi
# ---------- single-instance lock (PID file) ----------
cleanup_lock() { [[ -f "$RB_LOCKFILE" ]] && rm -f "$RB_LOCKFILE"; }
if [[ "$RB_ONCE" != "1" ]]; then
if [[ -f "$RB_LOCKFILE" ]]; then
oldpid="$(cat "$RB_LOCKFILE" 2>/dev/null || true)"
if [[ -n "${oldpid:-}" ]] && kill -0 "$oldpid" 2>/dev/null; then
log "Another instance is running (pid=$oldpid). Exiting."
exit 0
else
# Stale lock
rm -f "$RB_LOCKFILE" || true
fi
fi
printf '%d' "$$" >"$RB_LOCKFILE" 2>/dev/null || die "Cannot write lockfile $RB_LOCKFILE"
fi
# ---------- transport (socat vs hyprctl) ----------
RB_MODE=""
RB_SOCK=""
open_transport() {
local want="$RB_TRANSPORT"
local uid; uid=$(id -u 2>/dev/null || echo 0)
local base="${XDG_RUNTIME_DIR:-/run/user/$uid}"
local sig="${HYPRLAND_INSTANCE_SIGNATURE:-}"
if [[ -n "$sig" ]]; then
RB_SOCK="$base/hypr/$sig/.socket.sock"
fi
# Prefer socat if requested/allowed and socket is available
if [[ "$want" == "socat" || "$want" == "auto" ]]; then
if command -v socat >/dev/null 2>&1 && [[ -n "$RB_SOCK" && -S "$RB_SOCK" ]]; then
RB_MODE="socat"
return 0
elif [[ "$want" == "socat" ]]; then
die "RB_TRANSPORT=socat requested but 'socat' or Hyprland socket is unavailable"
fi
fi
# Fallback to hyprctl: require presence and connectivity
command -v hyprctl >/dev/null 2>&1 || die "hyprctl not found and socat transport unavailable"
if ! hyprctl monitors >/dev/null 2>&1; then
die "hyprctl cannot reach a running Hyprland instance"
fi
RB_MODE="hyprctl"
return 0
}
open_transport || exit 1
log "Using transport: $RB_MODE"
# ---------- optional restore of previous border value ----------
PREV_VALUE=""
if [[ "$RB_RESTORE" == "1" && "$RB_ONCE" != "1" ]]; then
if command -v hyprctl >/dev/null 2>&1; then
# hyprctl getoption <opt> prints various formats; try common keys
PREV_VALUE="$(hyprctl getoption "$RB_TARGET" 2>/dev/null \
| sed -n 's/^.*str:[[:space:]]\+//p; s/^.*string:[[:space:]]\+//p; s/^.*value:[[:space:]]\+//p' \
| tail -n1)"
fi
fi
restore_previous() {
if [[ "$RB_RESTORE" == "1" && -n "${PREV_VALUE:-}" ]]; then
if [[ "$RB_MODE" == "socat" ]]; then
printf 'keyword %s %s\n' "$RB_TARGET" "$PREV_VALUE" | socat - "UNIX-CONNECT:$RB_SOCK" >/dev/null 2>&1 || true
else
hyprctl keyword "$RB_TARGET" "$PREV_VALUE" >/dev/null 2>&1 || true
fi
fi
}
on_exit() {
restore_previous
cleanup_lock
}
# In loop mode, set traps for cleanup/restore
if [[ "$RB_ONCE" != "1" ]]; then
trap on_exit INT TERM EXIT
fi
# ---------- main logic ----------
angle=$(( RB_START_DEG % 360 ))
STEP=$(( RB_STEP_DEG % 360 ))
(( STEP == 0 )) && STEP=10
write_border() {
local a="$1"
if [[ "$RB_MODE" == "socat" ]]; then
printf 'keyword %s %s %sdeg\n' "$RB_TARGET" "$RB_COLORS" "$a" | socat - "UNIX-CONNECT:$RB_SOCK" >/dev/null 2>&1 || true
else
hyprctl keyword "$RB_TARGET" "$RB_COLORS ${a}deg" >/dev/null 2>&1 || true
fi
}
if [[ "$RB_ONCE" == "1" ]]; then
# Single write and exit; do not restore previous (intended to persist)
write_border "$angle" || log "WARN: one-shot write failed"
exit 0
fi
# Prime first write (avoid waiting one interval)
write_border "$angle" || log "WARN: initial write failed"
while :; do
# Advance angle and write; failures are non-fatal to keep CPU use minimal
angle=$(( (angle + STEP) % 360 ))
write_border "$angle"
sleep "$RB_INTERVAL"
done

View file

@ -0,0 +1,94 @@
#!/usr/bin/env bash
# ==================================================
# 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"
EFFECT_TYPE="gradient_flow"
WALLUST_COLORS_SOURCE="$HOME/.config/hypr/wallust/wallust-hyprland.conf"
WALLUST_COLORS=()
# ---------- LOAD WALLUST COLORS ----------
if [[ "$EFFECT_TYPE" == "wallust_random" || "$EFFECT_TYPE" == "gradient_flow" ]]; then
# Accept either hex (0xffRRGGBB) or rgb(r,g,b) and normalize to 0xffRRGGBB
mapfile -t WALLUST_COLORS < <(
grep -E '^\$color[0-9]+' "$WALLUST_COLORS_SOURCE" | awk '
function hex2(s){ return (length(s)==6 ? "0xff"s : ""); }
function rgb2(r,g,b){ return sprintf("0xff%02x%02x%02x", r, g, b); }
{
if (match($0, /0x([0-9a-fA-F]{8})/, m)) { print "0x" m[1]; next }
if (match($0, /#([0-9a-fA-F]{6})/, m)) { print hex2(m[1]); next }
if (match($0, /rgb\(([0-9]+),[ ]*([0-9]+),[ ]*([0-9]+)\)/, m)) {
print rgb2(m[1], m[2], m[3]); next
}
}'
)
if (( ${#WALLUST_COLORS[@]} == 0 )); then
# If wallust colors can't be loaded, fall back to random_hex
EFFECT_TYPE="rainbow"
fi
fi
# ---------- RANDOM WALLUST COLORS ----------
function wallust_random() {
echo "${WALLUST_COLORS[RANDOM % ${#WALLUST_COLORS[@]}]}"
}
# ---------- RAINBOW COLORS ----------
function random_hex() {
echo "0xff$(openssl rand -hex 3)"
}
# ---------- FLOW MODE ----------
BASE_COLOR="${WALLUST_COLORS[10]}"
GRAD1_COLOR="${WALLUST_COLORS[14]}"
GRAD2_COLOR="${WALLUST_COLORS[13]}"
GLOW_COLOR="${WALLUST_COLORS[15]}"
MAX_POS=10
GLOW_POS=0
function gradient_flow_color() {
local pos=$1
local d=$(( pos - GLOW_POS ))
# wrap distance (-9..9)
if (( d > MAX_POS/2 )); then d=$((d - MAX_POS)); fi
if (( d < -MAX_POS/2 )); then d=$((d + MAX_POS)); fi
case "${d#-}" in
0) echo "$GLOW_COLOR" ;;
1) echo "$GRAD1_COLOR" ;;
2) echo "$GRAD2_COLOR" ;;
*) echo "$BASE_COLOR" ;;
esac
if (( pos == MAX_POS - 1 )); then
GLOW_POS=$(( (GLOW_POS + 1) % MAX_POS ))
fi
}
# ---------- Main function ----------
function get_color() {
if [[ "$EFFECT_TYPE" == "wallust_random" && ${#WALLUST_COLORS[@]} -gt 0 ]]; then
wallust_random
elif [[ "$EFFECT_TYPE" == "gradient_flow" && ${#WALLUST_COLORS[@]} -ge 16 ]]; then
gradient_flow_color "$1"
else
random_hex
fi
}
# border effect for ACTIVE window
hyprctl keyword general:col.active_border $(get_color 0) $(get_color 1) $(get_color 2) $(get_color 3) $(get_color 4) $(get_color 5) $(get_color 6) $(get_color 7) $(get_color 8) $(get_color 9) 270deg
# border effect for INACTIVE windows
#hyprctl keyword general:col.inactive_border $(get_color 0) $(get_color 1) $(get_color 2) $(get_color 3) $(get_color 4) $(get_color 5) $(get_color 6) $(get_color 7) $(get_color 8) $(get_color 9) 270deg

View file

@ -1,14 +0,0 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# for rainbow borders animation
function random_hex() {
random_hex=("0xff$(openssl rand -hex 3)")
echo $random_hex
}
# rainbow colors only for active window
hyprctl keyword general:col.active_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg
# rainbow colors for inactive window (uncomment to take effect)
#hyprctl keyword general:col.inactive_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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/"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */
# ==================================================
# 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 */

View file

@ -1,5 +1,11 @@
#!/usr/bin/env bash
# USAGE / ІНСТРУКЦІЯ:
# ==================================================
# 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>
# Example:
@ -14,37 +20,17 @@
# Notes:
# - Script waits about ~9 seconds (30 iterations of 0.3 sec) for window to appear.
# - Uses hyprctl and jq, so these tools must be installed.
#
# USAGE / ІНСТРУКЦІЯ:
# 1) Запуск з терміналу:
# ./dispatch.sh <application_command> <target_workspace_number>
# Наприклад:
# ./dispatch.sh discord 2
#
# 2) Виклик з конфігурації Hyprland (у файлі hyprland.conf):
# exec-once = /path/to/dispatch.sh <application_command> <target_workspace_number>
#
# Логи зберігаються у файлі dispatch.log поруч зі скриптом.
# Якщо вікно не з'явилось або неправильно диспатчилось — інформація там.
#
# Примітки:
# - Скрипт чекає до ~9 секунд (30 ітерацій по 0.3 сек) поки вікно з'явиться.
# - Використовує hyprctl і jq, тому ці інструменти мають бути встановлені.
LOGFILE="$(dirname "$0")/dispatch.log"
# Log file path located next to the script.
# Файл логів розташований поруч зі скриптом.
APP=$1
# The application command or window class to launch or match.
# Команда для запуску аплікації або клас вікна для пошуку.
TARGET_WORKSPACE=$2
# The target workspace number where the window should be moved.
# Цільовий номер воркспейсу, куди потрібно перемістити вікно.
# Check if required arguments are provided.
# Перевірка наявності необхідних параметрів.
if [[ -z "$APP" || -z "$TARGET_WORKSPACE" ]]; then
echo "Usage: $0 <application_command> <target_workspace_number>" >>"$LOGFILE" 2>&1
exit 1
@ -52,24 +38,18 @@ fi
echo "Starting dispatch of '$APP' to workspace $TARGET_WORKSPACE at $(date)" >>"$LOGFILE"
# Starting the dispatch process and logging the event.
# Початок процесу диспатчу, запис у лог.
# Avoid early workspace focus issues by switching workspace first.
# Уникаємо проблем з раннім фокусом, спочатку переключаємо воркспейс.
hyprctl dispatch workspace "$TARGET_WORKSPACE" >>"$LOGFILE" 2>&1
sleep 0.4
# Launch the application in the background and disown it.
# Запускаємо аплікацію у фоновому режимі та відв’язуємо від терміналу.
$APP & disown
$APP &
disown
pid=$!
echo "Launched '$APP' with PID $pid" >>"$LOGFILE"
# Log the launched process ID.
# Лог процесу запуску з PID.
# Wait for the application window to appear (matching window class).
# Чекаємо появи вікна аплікації (за класом вікна).
for i in {1..30}; do
win=$(hyprctl clients -j | jq -r --arg APP "$APP" '
.[] | select(.class | test($APP;"i")) | .address' 2>>"$LOGFILE")
@ -77,7 +57,6 @@ for i in {1..30}; do
if [[ -n "$win" ]]; then
echo "Found window $win for app '$APP', moving to workspace $TARGET_WORKSPACE" >>"$LOGFILE"
# Move the window to the target workspace.
# Переміщаємо вікно на цільовий воркспейс.
hyprctl dispatch movetoworkspace "$TARGET_WORKSPACE,address:$win" >>"$LOGFILE" 2>&1
exit 0
fi
@ -86,5 +65,4 @@ done
echo "ERROR: Window for '$APP' was NOT found or dispatched properly to workspace $TARGET_WORKSPACE at $(date)" >>"$LOGFILE"
# Log error if window was not found or dispatched correctly.
# Запис помилки, якщо вікно не знайдено або неправильно диспатчено.
exit 1

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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:
@ -17,7 +27,7 @@ if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then
exit 1
fi
# Edit below to control the images transition
# Edit below to control the images transition (swww/awww)
export SWWW_TRANSITION_FPS=60
export SWWW_TRANSITION_TYPE=simple
@ -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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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/awww transition config
FPS=60
TYPE="wipe"
DURATION=2
BEZIER=".43,1.19,1,.4"
if [[ "$WWW" == "swww" || "$WWW" == "awww" ]]; 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
@ -106,43 +120,3 @@ fi
main
sleep 1
if [[ -n "$choice" ]]; then
# Resolve SDDM themes directory (standard and NixOS path)
sddm_themes_dir=""
if [ -d "/usr/share/sddm/themes" ]; then
sddm_themes_dir="/usr/share/sddm/themes"
elif [ -d "/run/current-system/sw/share/sddm/themes" ]; then
sddm_themes_dir="/run/current-system/sw/share/sddm/themes"
fi
if [ -n "$sddm_themes_dir" ]; then
sddm_simple="$sddm_themes_dir/simple_sddm_2"
# Only prompt if theme exists and its Backgrounds directory is writable
if [ -d "$sddm_simple" ] && [ -w "$sddm_simple/Backgrounds" ]; then
# Check if yad is running to avoid multiple yad notification
if pidof yad > /dev/null; then
killall yad
fi
if yad --info --text="Set current wallpaper as SDDM background?\n\nNOTE: This only applies to SIMPLE SDDM v2 Theme" \
--text-align=left \
--title="SDDM Background" \
--timeout=5 \
--timeout-indicator=right \
--button="yad-yes:0" \
--button="yad-no:1" \
; then
# Check if terminal exists
if ! command -v "$terminal" &>/dev/null; then
notify-send -i "$iDIR/ja.png" "Missing $terminal" "Install $terminal to enable setting of wallpaper background"
exit 1
fi
exec "$SCRIPTSDIR/sddm_wallpaper.sh" --effects
fi
fi
fi
fi

View file

@ -1,28 +1,42 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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)
wallDIR="$HOME/Pictures/wallpapers"
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')
PICS=($(find -L ${wallDIR} -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.pnm" -o -name "*.tga" -o -name "*.tiff" -o -name "*.webp" -o -name "*.bmp" -o -name "*.farbfeld" -o -name "*.gif" \)))
PICS=($(find -L "${wallDIR}" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.pnm" -o -name "*.tga" -o -name "*.tiff" -o -name "*.webp" -o -name "*.bmp" -o -name "*.farbfeld" -o -name "*.gif" \)))
RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]}
# Transition config
# Transition config (swww/awww)
FPS=30
TYPE="random"
DURATION=1
BEZIER=".43,1.19,1,.4"
if [[ "$WWW_CMD" == "swww" || "$WWW_CMD" == "awww" ]]; 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

View file

@ -1,23 +1,37 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */
# ==================================================
# 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
terminal=kitty
wallDIR="$HOME/Pictures/wallpapers"
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/awww transition config
FPS=60
TYPE="any"
DURATION=2
BEZIER=".43,1.19,1,.4"
if [[ "$WWW_CMD" == "swww" || "$WWW_CMD" == "awww" ]]; 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
@ -29,6 +43,9 @@ fi
rofi_theme="$HOME/.config/rofi/config-wallpaper.rasi"
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
per_monitor_wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current_${focused_monitor}"
per_monitor_wallpaper_link="$HOME/.config/rofi/.current_wallpaper_${focused_monitor}"
# Ensure focused_monitor is detected
if [[ -z "$focused_monitor" ]]; then
notify-send -i "$iDIR/error.png" "E-R-R-O-R" "Could not detect focused monitor"
@ -45,7 +62,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
@ -65,7 +82,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"
@ -74,7 +103,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")
@ -98,49 +130,6 @@ menu() {
done
}
# Offer SDDM Simple Wallpaper Option (only for non-video wallpapers)
set_sddm_wallpaper() {
sleep 1
# Resolve SDDM themes directory (standard and NixOS path)
local sddm_themes_dir=""
if [ -d "/usr/share/sddm/themes" ]; then
sddm_themes_dir="/usr/share/sddm/themes"
elif [ -d "/run/current-system/sw/share/sddm/themes" ]; then
sddm_themes_dir="/run/current-system/sw/share/sddm/themes"
fi
[ -z "$sddm_themes_dir" ] && return 0
local sddm_simple="$sddm_themes_dir/simple_sddm_2"
# Only prompt if theme exists and its Backgrounds directory is writable
if [ -d "$sddm_simple" ] && [ -w "$sddm_simple/Backgrounds" ]; then
# Check if yad is running to avoid multiple notifications
if pidof yad >/dev/null; then
killall yad
fi
if yad --info --text="Set current wallpaper as SDDM background?\n\nNOTE: This only applies to SIMPLE SDDM v2 Theme" \
--text-align=left \
--title="SDDM Background" \
--timeout=5 \
--timeout-indicator=right \
--button="yes:0" \
--button="no:1"; then
# Check if terminal exists
if ! command -v "$terminal" &>/dev/null; then
notify-send -i "$iDIR/error.png" "Missing $terminal" "Install $terminal to enable setting of wallpaper background"
exit 1
fi
exec "$SCRIPTSDIR/sddm_wallpaper.sh" --normal
fi
fi
}
modify_startup_config() {
local selected_file="$1"
@ -149,6 +138,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"
@ -159,6 +149,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"
@ -173,12 +164,25 @@ 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
# 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
swww img -o "$focused_monitor" "$image_path" $SWWW_PARAMS
# Persist per-monitor wallpaper selection
mkdir -p "$(dirname "$per_monitor_wallpaper_current")" "$(dirname "$per_monitor_wallpaper_link")"
ln -sf "$image_path" "$per_monitor_wallpaper_link" || true
cp -f "$image_path" "$per_monitor_wallpaper_current" || true
# Run additional scripts (pass the image path to avoid cache race conditions)
"$SCRIPTSDIR/WallustSwww.sh" "$image_path"
@ -186,7 +190,6 @@ apply_image_wallpaper() {
"$SCRIPTSDIR/Refresh.sh"
sleep 1
set_sddm_wallpaper
}
apply_video_wallpaper() {
@ -208,21 +211,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
# 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)
fi
if [[ -z "$selected_file" ]]; then
echo "File not found. Selected choice: $choice"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env python3
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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.

View file

@ -1,16 +1,55 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
city=""
# Get your current location with your IP adress
get_current_city() {
local city
# if city is blank, use https://ipapi.co/json to get location from IP
if [ -z "$city" ]; then
city=$(curl -fsS https://ipapi.co/json | grep city | cut -f4 -d'"')
# First try: ipinfo.io
local location_data=$(curl -fsS "https://ipinfo.io/json" 2>/dev/null)
if [ $? -eq 0 ] && [ -n "$location_data" ]; then
city=$(echo "$location_data" | grep -o '"city"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
if [ -n "$city" ]; then
echo "$city"
return 0
fi
fi
# Fallback: ipapi.co
city=$(curl -fsS "https://ipapi.co/json" 2>/dev/null | grep -o '"city"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
if [ -n "$city" ]; then
echo "$city"
return 0
fi
# Last resort: ipwho.is
city=$(curl -fsS "https://ipwho.is/" 2>/dev/null | grep -o '"city"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
if [ -n "$city" ]; then
echo "$city"
return 0
fi
# If all fail
echo "Unknown" >&2
return 1
}
city=$(get_current_city)
# If city is empty, that means the IP check failed, which means, we should use manual setting
if [ -z "$city" ] || [ "$city" = "Unknown" ]; then
# SET YOUR MANUAL CITY HERE
city=" " # ← Change this to your preferred city
echo "Using manual city: $city" >&2
fi
# URL-encode city for safe use in URLs
encoded_city="$city"

View file

@ -1,11 +1,40 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# KoolDots (2026)
# Project URL: https://github.com/LinuxBeginnings
# License: GNU GPLv3
# SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
# Weather entrypoint: prefer Python (OpenMeteo), fallback to legacy Bash (wttr.in)
SCRIPT_DIR="$(dirname "$0")"
PY_SCRIPT="$SCRIPT_DIR/Weather.py"
BASH_FALLBACK="$SCRIPT_DIR/Weather.sh"
# Function to check network connectivity
check_network() {
# Try multiple methods to check network
if ping -c1 -W1 8.8.8.8 >/dev/null 2>&1; then
return 0
fi
if ping -c1 -W1 1.1.1.1 >/dev/null 2>&1; then
return 0
fi
if curl -s --connect-timeout 2 "https://ipinfo.io" >/dev/null 2>&1; then
return 0
fi
return 1
}
# If no network, return offline status immediately
if ! check_network; then
echo '{"text":"󰖪", "alt":"Offline", "tooltip":"No network connection"}'
exit 0
fi
run_fallback() {
if [ -f "$BASH_FALLBACK" ]; then
# Invoke via bash to avoid requiring +x and ensure consistent shell

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
animations {
enabled = yes

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# old animations

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
animations {
enabled = no

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "End-4"
# credit https://github.com/end-4/dots-hyprland

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Vertical"
# credit https://github.com/prasanthrangan/hyprdots

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Default"
# credit https://github.com/prasanthrangan/hyprdots

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# # name "Minimal-1"
# credit https://github.com/prasanthrangan/hyprdots-

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# # name "Minimal-2"
# credit https://github.com/prasanthrangan/hyprdots

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Optimized"
# credit https://github.com/prasanthrangan/hyprdots

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Classic"
# credit https://github.com/mylinuxforwork/dotfiles

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Dynamic"
# credit https://github.com/mylinuxforwork/dotfiles

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Fast"
# credit https://github.com/mylinuxforwork/dotfiles

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "High"
# credit https://github.com/mylinuxforwork/dotfiles

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Moving"
# credit https://github.com/mylinuxforwork/dotfiles

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Standard"
# credit https://github.com/mylinuxforwork/dotfiles

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Me-1"
# credit https://github.com/mahaveergurjar

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
#
# name "Me-2"
# credit https://github.com/mahaveergurjar

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# as per Hyprland wiki: hyprland-qt-support provides a QML style for hypr* qt6 apps
roundess = 2

View file

@ -1,11 +1,16 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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.18
# Current Version of KoolDots:
env = DOTS_VERSION,2.3.23
### 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

View file

@ -1,8 +1,12 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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,8 +25,10 @@ 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
bindd = $mainMod, H, help / cheat sheet, exec, $scriptsDir/KeyHints.sh
bindd = $mainMod ALT, R, refresh bar and menus, exec, $scriptsDir/Refresh.sh
bindd = $mainMod ALT, E, emoji menu, exec, $scriptsDir/RofiEmoji.sh
@ -30,15 +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 = $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
@ -58,7 +68,7 @@ bindd = $mainMod SHIFT, M, online music, exec, $UserScripts/RofiBeats.sh
bindd = $mainMod, W, select wallpaper, exec, $UserScripts/WallpaperSelect.sh
bindd = $mainMod SHIFT, W, wallpaper effects, exec, $UserScripts/WallpaperEffects.sh
bindd = CTRL ALT, W, random wallpaper, exec, $UserScripts/WallpaperRandom.sh
bindd = $mainMod CTRL, O, toggle active window opacity, exec, hyprctl setprop active opaque toggle
bindd = $mainMod CTRL, O, toggle active window opacity, setprop, active opaque toggle
bindd = $mainMod SHIFT, K, search keybinds, exec, $scriptsDir/KeyBinds.sh
bindd = $mainMod SHIFT, A, animations menu, exec, $scriptsDir/Animations.sh
bindd = $mainMod SHIFT, O, change oh-my-zsh theme, exec, $UserScripts/ZshChangeTheme.sh
@ -85,19 +95,38 @@ 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)
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
@ -106,6 +135,8 @@ bindd = ALT, tab, bring active to top, bringactivetotop
# Special Keys / Hot Keys
bindeld = , xf86audioraisevolume, volume up, exec, $scriptsDir/Volume.sh --inc
bindeld = , xf86audiolowervolume, volume down, exec, $scriptsDir/Volume.sh --dec
bindeld = ALT, xf86audioraisevolume, volume up precise, exec, $scriptsDir/Volume.sh --inc-precise
bindeld = ALT, xf86audiolowervolume, volume down precise, exec, $scriptsDir/Volume.sh --dec-precise
bindld = , xf86AudioMicMute, toggle mic mute, exec, $scriptsDir/Volume.sh --toggle-mic
bindld = , xf86audiomute, toggle mute, exec, $scriptsDir/Volume.sh --toggle
bindld = , xf86Sleep, sleep, exec, systemctl suspend
@ -161,7 +192,7 @@ bindd = $mainMod CTRL, L, Move Right into group, moveintogroup, r # Move active
bindd = $mainMod CTRL, H, Move active out of group, moveoutofgroup # Move active window out of group
# Try to dynamically move in grouped window and when ungrouped
# Not working for me DW 11/26/25 PR: https://github.com/JaKooLit/Hyprland-Dots/pull/872
# Not working for me DW 11/26/25 PR: https://github.com/LinuxBeginnings/Hyprland-Dots/pull/872
#bindd = $mainMod, right, focus right, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[-1] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus r; else hyprctl dispatch changegroupactive f; fi'
#bindd = $mainMod, left, focus left, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[0] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus l; else hyprctl dispatch changegroupactive b; fi'

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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

View file

@ -1,60 +1,51 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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
$wallDIR=$HOME/Pictures/wallpapers
$lock = $scriptsDir/LockScreen.sh
$SwwwRandom = $UserScripts/WallpaperAutoChange.sh
$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
### Startup ###
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = $scriptsDir/KeybindsLayoutInit.sh
# Drop Down terminal
# See Bug#810 https://github.com/JaKooLit/Hyprland-Dots/issues/810#issuecomment-3351947644
exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh kitty &
# Polkit (Polkit Gnome / KDE)
exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh "kitty --class kitty-dropterm" &
exec-once = $scriptsDir/Polkit.sh
# starup apps
exec-once = nm-applet --indicator
exec-once = nm-tray # For ubuntu
exec-once = swaync
#exec-once = ags
#exec-once = blueman-applet
#exec-once = rog-control-center
exec-once = $scriptsDir/PortalHyprlandUbuntu.sh
exec-once = waybar
exec-once = qs -c overview # Quickshell Overview
exec-once = hypridle
exec-once = $scriptsDir/Hyprsunset.sh init
# Clipboard manager
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
# Rainbow borders
exec-once = $UserScripts/RainbowBorders.sh
# Rainbow borders (disabled by default; use quick settings menu)
#exec-once = $UserScripts/RainbowBorders.sh
# hypridle for hyprlock
exec-once = hypridle
# Resume Hyprsunset if state is "on" from previous session
exec-once = $scriptsDir/Hyprsunset.sh init
# Here are list of features available but disabled by default
# Persistent wallpaper
# exec-once = swww-daemon --format xrgb && swww img $HOME/Pictures/wallpapers/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

View file

@ -1,4 +1,9 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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,41 @@
$scriptsDir = $HOME/.config/hypr/scripts
dwindle {
pseudotile = true
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 +64,6 @@ input {
kb_rules =
repeat_rate = 50
repeat_delay = 300
sensitivity = 0 #mouse sensitivity
#accel_profile = # flat or adaptive or blank or EMPTY means libinputs default mode
numlock_by_default = true
@ -63,26 +92,28 @@ 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_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 {
disable_hyprland_logo = true
disable_splash_rendering = true
vfr = true
vrr = 2
mouse_move_enables_dpms = true
enable_swallow = off
@ -93,6 +124,11 @@ misc {
enable_anr_dialog = true # Application not Responding (ANR)
anr_missed_pings = 15 # ANR Threshold default 1 is too low
allow_session_lock_restore = true # Prevent lockscreen crash when resume from suspend
# This only works with HL v0.53+
on_focus_under_fullscreen = 1
# 0 - Default, no change
# 1 - New focused window takes over fullscreen (Windows-like Alt-Tab)
# 2 - New focused window stays behind the fullscreen one
}
#opengl {
@ -121,4 +157,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
}

View file

@ -1,204 +1,470 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# For window rules and layerrules
# ==================================================
# 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
# NOTES: This is only for Hyprland > 0.52.1
# note: This should NOT be implemented on Debian and Ubuntu
# Vendor defaults for window rules and layerrules
# NOTES: This is only for Hyprland >= 0.53
# windowrule - tags - add apps under appropriate tag to use the same settings
# Some samples on hwo to start apps on specific workspaces
# windowrule = match:tag email*, workspace 1
# windowrule = match:tag browser*, workspace 2
# windowrule = match:tag projects*, workspace 3
# windowrule = match:tag screenshare*, workspace 4 silent
# windowrule = match:tag gamestore*, workspace 5
# windowrule = match:class ^(virt-manager)$, workspace 6 silent
# windowrule = match:class ^(.virt-manager-wrapped)$, workspace 6 silent
# windowrule = match:tag im*, workspace 7
# windowrule = match:class obsidian, workspace 8
# windowrule = match:tag games*, workspace 8
# windowrule = match:tag multimedia*, workspace 9 silent
# TAGS - add apps under appropriate tag to use the same settings
# browser tags
windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser
windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +browser
windowrule = match:class ^(chrome-.+-Default)$ # Chrome PWAs, tag +browser
windowrule = match:class ^(chrome-.+-Default)$, tag +browser
windowrule = match:class ^([Cc]hromium)$, tag +browser
windowrule = match:class ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$, tag +browser
windowrule = match:class ^(Brave-browser(-beta|-dev|-unstable)?)$, tag +browser
windowrule = match:class ^([Bb]rave-browser(-beta|-dev|-unstable)?)$, tag +browser
windowrule = match:class ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser
windowrule = match:class ^(zen-alpha|zen)$, tag +browser
# notif tags
windowrule = match:class ^(swaync-control-center|swaync-notification-window|swaync-client|class)$, tag +notif
# KooL settings tag
windowrule = match:title ^(KooL Quick Cheat Sheet)$, tag +KooL_Cheat
windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings
windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings
windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal
# terminal tags
windowrule = match:class ^(ghostty|wezterm|Alacritty|kitty|kitty-dropterm)$, tag +terminal
windowrule = match:class ^([Tt]hunderbird|org.gnome.Evolution)$, tag +email
# email tags
windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email
windowrule = match:class ^(eu.betterbird.Betterbird)$, tag +email
windowrule = match:class ^(org.gnome.Evolution)$, tag +email
# project tags
windowrule = match:class ^(codium|codium-url-handler|VSCodium)$, tag +projects
windowrule = match:class ^(VSCode|code|code-url-handler)$, tag +projects
windowrule = match:class ^(jetbrains-.+)$ # JetBrains IDEs, tag +projects
windowrule = match:class ^(jetbrains-.+)$, tag +projects
windowrule = match:class ^(dev.zed.Zed|antigravity)$, tag +projects
# screenshare tags
windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare
# IM tags
windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im
windowrule = match:class ^([Ff]erdium)$, tag +im
windowrule = match:class ^([Ww]hatsapp-for-linux)$, tag +im
windowrule = match:class ^(ZapZap|com.rtosta.zapzap)$, tag +im
windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, tag +im
windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im
windowrule = match:class ^(teams-for-linux)$, tag +im
windowrule = match:class ^(im.riot.Riot|Element)$ # Element Matrix client, tag +im
windowrule = match:class ^(im.riot.Riot|Element)$, tag +im
# game tags
windowrule = match:class ^(gamescope)$, tag +games
windowrule = match:class ^(steam_app_\d+)$, tag +games
windowrule = match:class ^(steam_app_\\d+)$, tag +games
windowrule = match:xdg_tag ^(proton-game)$, tag +games
# gamestore tags
windowrule = match:class ^([Ss]team)$, tag +gamestore
windowrule = match:title ^([Ll]utris)$, tag +gamestore
windowrule = match:class ^(com.heroicgameslauncher.hgl)$, tag +gamestore
# file-manager tags
windowrule = match:class ^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$, tag +file-manager
windowrule = match:class ^(app.drey.Warp)$, tag +file-manager
# wallpaper tags
windowrule = match:class ^([Ww]aytrogen)$, tag +wallpaper
# multimedia tags
windowrule = match:class ^([Aa]udacious)$, tag +multimedia
# multimedia-video tags
windowrule = match:class ^([Mm]pv|vlc)$, tag +multimedia_video
# settings tags
windowrule = match:title ^(ROG Control)$, tag +settings
windowrule = match:class ^(wihotspot(-gui)?)$ # wifi hotspot, tag +settings
windowrule = match:class ^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer, tag +settings
windowrule = match:class ^(wihotspot(-gui)?)$, tag +settings
windowrule = match:class ^([Bb]aobab|org.gnome.[Bb]aobab)$, tag +settings
windowrule = match:class ^(gnome-disks|wihotspot(-gui)?)$, tag +settings
windowrule = match:title (Kvantum Manager), tag +settings
windowrule = match:class ^(file-roller|org.gnome.FileRoller)$ # archive manager, tag +settings
windowrule = match:class ^(file-roller|org.gnome.FileRoller)$, tag +settings
windowrule = match:class ^(nm-applet|nm-connection-editor|blueman-manager)$, tag +settings
windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, tag +settings
windowrule = match:class ^(qt5ct|qt6ct|[Yy]ad)$, tag +settings
windowrule = match:class ^(qt5ct|qt6ct)$, tag +settings
windowrule = match:class (xdg-desktop-portal-gtk), tag +settings
windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings
windowrule = match:class ^([Rr]ofi)$, tag +settings
windowrule = match:class ^(btrfs-assistant)$, tag +settings
windowrule = match:class ^(timeshift-gtk)$, tag +settings
windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor, tag +viewer
windowrule = match:class ^(evince)$ # document viewer, tag +viewer
windowrule = match:class ^(eog|org.gnome.Loupe)$ # image viewer, tag +viewer
# viewer tags
windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$, tag +viewer
windowrule = match:class ^(evince)$, tag +viewer
windowrule = match:class ^(eog|org.gnome.Loupe)$, tag +viewer
windowrule = match:tag multimedia_video*, noblur
windowrule = match:tag multimedia_video*, opacity 1.0
# POSITION
windowrule = match:tag KooL_Cheat*, center
windowrule = match:class ([Tt]hunar) title negative:(.*[Tt]hunar.*), center
windowrule = match:title ^(ROG Control)$, center
windowrule = match:tag KooL-Settings*, center
windowrule = match:title ^(Keybindings)$, center
windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center
windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center
windowrule = match:class ^([Ff]erdium)$, center
windowrule = match:title ^(Picture-in-Picture)$, move 72% 7%
#windowrule = move 72% 7%,title:^(Firefox)$
# windowrule to avoid idle for fullscreen apps
#windowrule = idleinhibit fullscreen, class:^(*)$
#windowrule = idleinhibit fullscreen, title:^(*)$
windowrule = match:fullscreen 1, idleinhibit fullscreen
# windowrule move to workspace
#windowrule = workspace 1, tag:email*
#windowrule = workspace 2, tag:browser*
#windowrule = workspace 3, class:^([Tt]hunar)$
#windowrule = workspace 3, tag:projects*
#windowrule = workspace 5, tag:gamestore*
#windowrule = workspace 7, tag:im*
#windowrule = workspace 8, tag:games*
# windowrule move to workspace (silent)
#windowrule = workspace 4 silent, tag:screenshare*
#windowrule = workspace 6 silent, class:^(virt-manager)$
#windowrule = workspace 6 silent, class:^(.virt-manager-wrapped)$
#windowrule = workspace 9 silent, tag:multimedia*
# Some special override rules
windowrule = match:tag multimedia, no_blur on
windowrule = match:tag multimedia, opacity 1.0
# FLOAT
windowrule = match:tag KooL_Cheat*, float
windowrule = match:tag wallpaper*, float
windowrule = match:tag settings*, float
windowrule = match:tag viewer*, float
windowrule = match:tag KooL-Settings*, float
windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher)$, float
windowrule = match:class (org.gnome.Calculator) title (Calculator), float
windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float
windowrule = match:class ^([Qq]alculate-gtk)$, float
#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
windowrule = match:class ^([Ff]erdium)$, float
windowrule = match:title ^(Picture-in-Picture)$, float
#windowrule = float, title:^(Firefox)$
windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher), float on
windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float on
windowrule = match:class ^([Qq]alculate-gtk)$, float on
# windowrule - ######### float popups and dialogue #######
windowrule = match:title ^(Authentication Required)$, float
windowrule = match:title ^(Authentication Required)$, center
windowrule = match:class (codium|codium-url-handler|VSCodium) title negative:(.*codium.*|.*VSCodium.*), float
windowrule = match:class ^(com.heroicgameslauncher.hgl)$ title negative:(Heroic Games Launcher), float
windowrule = match:class ^([Ss]team)$ title negative:^([Ss]team)$, float
windowrule = match:class ([Tt]hunar) title negative:(.*[Tt]hunar.*), float
windowrule = match:title ^(Add Folder to Workspace)$, float
windowrule = match:title ^(Add Folder to Workspace)$, size 70% 60%
windowrule = match:title ^(Add Folder to Workspace)$, center
windowrule = match:title ^(Save As)$, float
windowrule = match:title ^(Save As)$, size 70% 60%
windowrule = match:title ^(Save As)$, center
windowrule = match:initialTitle (Open Files), float
windowrule = match:initialTitle (Open Files), size 70% 60%
windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, float
windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, center
windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, size 16% 12%
# END of float popups and dialogue #######
# OPACITY
windowrule = match:tag browser*, opacity 0.99 0.8
windowrule = match:tag projects*, opacity 0.9 0.8
windowrule = match:tag im*, opacity 0.94 0.86
windowrule = match:tag multimedia*, opacity 0.94 0.86
windowrule = match:tag file-manager*, opacity 0.9 0.8
windowrule = match:tag terminal*, opacity 0.9 0.7
windowrule = match:tag settings*, opacity 0.8 0.7
windowrule = match:tag viewer*, opacity 0.82 0.75
windowrule = match:tag wallpaper*, opacity 0.9 0.7
windowrule = match:class ^(gedit|org.gnome.TextEditor|mousepad)$, opacity 0.8 0.7
windowrule = match:class ^(deluge)$, opacity 0.9 0.8
windowrule = match:class ^(seahorse)$ # gnome-keyring gui, opacity 0.9 0.8
windowrule = match:title ^(Picture-in-Picture)$, opacity 0.95 0.75
# 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
windowrule = match:title ^(Add Folder to Workspace)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on
windowrule = match:title ^(Save As)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on
windowrule = match:initial_title (Open Files), float on, size (monitor_w*0.7) (monitor_h*0.6)
windowrule = match:title ^(SDDM Background)$, float on, center on, size (monitor_w*0.16) (monitor_h*0.12)
windowrule = match:class ^(yad)$, float on, center on, size (monitor_w*0.2) (monitor_h*0.2)
windowrule = match:class ^(hyprland-donate-screen)$, float on, center on
# SIZE
windowrule = match:tag KooL_Cheat*, size 65% 90%
windowrule = match:tag wallpaper*, size 70% 70%
windowrule = match:tag settings*, size 70% 70%
windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, size 60% 70%
windowrule = match:class ^([Ff]erdium)$, size 60% 70%
#windowrule = size 25% 25%, title:^(Picture-in-Picture)$
#windowrule = size 25% 25%, title:^(Firefox)$
# POSITION
windowrule = match:title ^(ROG Control)$, center on
windowrule = match:title ^(Keybindings)$, center on
windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center on
windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center on
windowrule = match:class ^(nm-connection-editor)$, center on
windowrule = match:class ^(nm-applet)$, match:title ^(Wi-Fi Network Authentication Required)$, center on
# PINNING
windowrule = match:title ^(Picture-in-Picture)$, pin
#windowrule = pin,title:^(Firefox)$
# windowrule to avoid idle for fullscreen apps
windowrule = match:fullscreen true, idle_inhibit fullscreen
windowrule = idle_inhibit fullscreen, match:fullscreen 1
windowrule = idle_inhibit fullscreen, match:class .*
windowrule = idle_inhibit fullscreen, match:title .*
# windowrule - extras
windowrule = match:title ^(Picture-in-Picture)$, keepaspectratio
# OPACITY
windowrule = match:tag browser, opacity 0.99 0.8
windowrule = match:tag projects, opacity 0.9 0.8
windowrule = match:tag im, opacity 0.94 0.86
windowrule = match:tag multimedia, opacity 0.94 0.86
windowrule = match:tag file-manager, opacity 0.9 0.8
windowrule = match:tag terminal, opacity 0.9 0.7
windowrule = match:class ^(gedit|org.gnome.TextEditor|mousepad)$, opacity 0.8 0.7
windowrule = match:class ^(deluge)$, opacity 0.9 0.8
windowrule = match:class ^(seahorse)$, opacity 0.9 0.8
# BLUR & FULLSCREEN
windowrule = match:tag games*, noblur
windowrule = match:tag games*, fullscreen
#This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products
windowrule = match:class ^(jetbrains-*), noinitialfocus
windowrule = match:title ^(wind.*)$, noinitialfocus
#windowrule = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1
#windowrule = bordercolor rgb(282737) rgb(1E1D2D), floating:1
#windowrule = opacity 0.8 0.8, pinned:1
# This not gonna take the focus to the window that appears
# when hovering over some of the parts of the IntelliJ Products
windowrule = match:class ^(jetbrains-.*)$, no_initial_focus on
windowrule = match:title ^(wind.*)$, no_initial_focus on
# LAYER RULES
layerrule = blur, rofi
layerrule = ignorezero, rofi
layerrule = blur, notifications
layerrule = ignorezero, notifications
layerrule = blur, quickshell:overview
layerrule = ignorezero, quickshell:overview
layerrule = ignorealpha 0.5, quickshell:overview
layerrule = match:namespace rofi, blur on
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$
float = on
move = 72% 7%
opacity = 0.95 0.75
pin = on
keep_aspect_ratio = on
size = (monitor_w*0.3) (monitor_h*0.3)
}
# Named rule for CachyOS Kernel Manager
windowrule {
name = CachyOS Kernel Manager
match:class = ^(org.cachyos.KernelManager)$
match:title = ^(CachyOS Kernel Manager)$
match:initial_class = ^(org.cachyos.KernelManager)$
match:initial_title = ^(CachyOS Kernel Manager)$
float = on
center = on
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
match:class = ^(org.cachyos.cachyos-pi)$
match:title = ^(CachyOS Package Installer)$
match:initial_class = ^(org.cachyos.cachyos-pi)$
match:initial_title = ^(CachyOS Package Installer)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Shelly
windowrule {
name = Shelly
match:class = ^(com.shellyorg.shelly)$
match:title = ^(Shelly)$
match:initial_class = ^(com.shellyorg.shelly)$
match:initial_title = ^(Shelly)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for CachyOS Hello
windowrule {
name = CachyOS Hello
match:class = ^(CachyOSHello)$
match:title = ^(CachyOS Hello)$
match:initial_class = ^(CachyOSHello)$
match:initial_title = ^(CachyOS Hello)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Cache Cleaner - Octopi
windowrule {
name = Cache Cleaner - Octopi
match:class = ^(octopi-cachecleaner)$
match:title = ^(Cache Cleaner - Octopi)$
match:initial_class = ^(octopi-cachecleaner)$
match:initial_title = ^(Cache Cleaner - Octopi)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Octopi Package Manager
windowrule {
name = Octopi Package Manager
match:class = ^(octopi)$
match:title = ^(Octopi)$
match:initial_class = ^(octopi)$
match:initial_title = ^(Octopi)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Repository Editor - Octopi
windowrule {
name = Repository Editor - Octopi
match:class = ^(octopi-repoeditor)$
match:title = ^(Repository Editor - Octopi)$
match:initial_class = ^(octopi-repoeditor)$
match:initial_title = ^(Repository Editor - Octop)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for KooL Cheat (tag)
windowrule {
name = KooL Cheat (tag)
match:tag = KooL_Cheat
float = on
center = on
size = (monitor_w*0.65) (monitor_h*0.9)
}
# Named rule for Wallpaper (tag)
windowrule {
name = Wallpaper (tag)
match:tag = wallpaper
float = on
center = on
size = (monitor_w*0.7) (monitor_h*0.7)
opacity = 0.9 0.7
}
# Named rule for Settings (tag)
windowrule {
name = Settings (tag)
match:tag = settings
float = on
center = on
size = (monitor_w*0.7) (monitor_h*0.7)
opacity = 0.8 0.7
}
# Named rule for Viewer (tag)
windowrule {
name = Viewer (tag)
match:tag = viewer
float = on
center = on
opacity = 0.82 0.75
}
# Named rule for KooL Settings (tag)
windowrule {
name = KooL Settings (tag)
match:tag = KooL-Settings
float = on
center = on
}
# Named rule for Multimedia Video (tag)
windowrule {
name = Multimedia Video (tag)
match:tag = multimedia_video
no_blur = on
opacity = 1.0
}
# Named rule for Games (tag)
windowrule {
name = Games (tag)
match:tag = games
no_blur = on
fullscreen = 0
}
# Named rule for Ferdium
windowrule {
name = Ferdium
match:class = ^([Ff]erdium)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.7)
}
# Named rule for Calculators
windowrule {
name = Calculators
match:class = (org.gnome.Calculator|qalculate-gtk)
float = on
center = on
size = (monitor_w*0.55) (monitor_h*0.45)
}
# Named rule for Thunar Dialogs
windowrule {
name = Thunar Dialogs
match:class = ([Tt]hunar)
match:title = negative:(.*[Tt]hunar.*)
float = on
center = on
}
# Named rule for Bitwarden
windowrule {
name = Bitwarden
match:class = ^(Bitwarden)$
match:title = ^(Bitwarden)$
match:initial_class = ^(Bitwarden)$
match:initial_title = ^(Bitwarden)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for hyprpwcenter audio control panel
windowrule {
name = hyprland audio panel
match:class = ^(hyprpwcenter)$
match:initial_class = ^(hyprpwcenter)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Garida Assistant
windowrule {
name = Garuda Assistant
match:class = ^(garuda-assistant)$
match:title = ^(Garuda Assistant)$
match:initial_class = ^(garuda-assistant)$
match:initial_title = ^(Garuda Assistant)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for HyprMod HL config GUI
windowrule {
name = HyprMod GUI
match:class = ^(com.github.hyprmod)$
match:title = ^(HyprMod)$
match:initial_class = ^(com.github.hyprmod)$
match:initial_title = ^(HyprMod)$
float = on
center = on
size = (monitor_w*0.7) (monitor_h*0.75)
}
# Named rule for easy effects
windowrule {
name = EasyEffects
match:class = ^(com.github.wwmm.easyeffects)$
match:title = ^(Easy Effects)$
match:initial_class = ^(com.github.wwmm.easyeffects)$
match:initial_title = ^(Easy Effects)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.65)
}
# Named rule for Mousam weather GUI
windowrule {
name = Mousam Weather
match:class = ^(io.github.amit9838.mousam)$
match:title = ^(Mousam)$
match:initial_class = ^(io.github.amit9838.mousam)$
match:initial_title = ^(Mousam)$
float = on
center = on
size = (monitor_w*0.7) (monitor_h*0.75)
}
#layerrule = ignorealpha 0.5, tag:notif*
#layerrule = ignorezero, class:^([Rr]ofi)$
#layerrule = blur, class:^([Rr]ofi)$
#layerrule = unset,class:^([Rr]ofi)$
#layerrule = ignorezero, <rofi>
#layerrule = ignorezero, overview
#layerrule = blur, overview

View file

@ -0,0 +1,234 @@
# ==================================================
# 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
# NOTES: This is only for Hyprland > 0.48
# windowrule - tags - add apps under appropriate tag to use the same settings
# browser tags
windowrule = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$
windowrule = tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$
windowrule = tag +browser, class:^(chrome-.+-Default)$ # Chrome PWAs
windowrule = tag +browser, class:^([Cc]hromium)$
windowrule = tag +browser, class:^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$
windowrule = tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$
windowrule = tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$
windowrule = tag +browser, class:^(zen-alpha|zen)$
# notif tags
windowrule = tag +notif, class:^(swaync-control-center|swaync-notification-window|swaync-client|class)$
# KooL settings tag
windowrule = tag +KooL_Cheat, title:^(KooL Quick Cheat Sheet)$
windowrule = tag +KooL_Settings, title:^(KooL Hyprland Settings)$
windowrule = tag +KooL-Settings, class:^(nwg-displays|nwg-look)$
# terminal tags
windowrule = tag +terminal, class:^(Alacritty|kitty|kitty-dropterm)$
# email tags
windowrule = tag +email, class:^([Tt]hunderbird|org.gnome.Evolution)$
windowrule = tag +email, class:^(eu.betterbird.Betterbird)$
# project tags
windowrule = tag +projects, class:^(codium|codium-url-handler|VSCodium)$
windowrule = tag +projects, class:^(VSCode|code|code-url-handler)$
windowrule = tag +projects, class:^(jetbrains-.+)$ # JetBrains IDEs
# screenshare tags
windowrule = tag +screenshare, class:^(com.obsproject.Studio)$
# IM tags
windowrule = tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$
windowrule = tag +im, class:^([Ff]erdium)$
windowrule = tag +im, class:^([Ww]hatsapp-for-linux)$
windowrule = tag +im, class:^(ZapZap|com.rtosta.zapzap)$
windowrule = tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$
windowrule = tag +im, class:^(teams-for-linux)$
windowrule = tag +im, class:^(im.riot.Riot|Element)$ # Element Matrix client
# game tags
windowrule = tag +games, class:^(gamescope)$
windowrule = tag +games, class:^(steam_app_\d+)$
# gamestore tags
windowrule = tag +gamestore, class:^([Ss]team)$
windowrule = tag +gamestore, title:^([Ll]utris)$
windowrule = tag +gamestore, class:^(com.heroicgameslauncher.hgl)$
# file-manager tags
windowrule = tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$
windowrule = tag +file-manager, class:^(app.drey.Warp)$
# wallpaper tags
windowrule = tag +wallpaper, class:^([Ww]aytrogen)$
# multimedia tags
windowrule = tag +multimedia, class:^([Aa]udacious)$
# multimedia-video tags
windowrule = tag +multimedia_video, class:^([Mm]pv|vlc)$
# settings tags
windowrule = tag +settings, title:^(ROG Control)$
windowrule = tag +settings, class:^(wihotspot(-gui)?)$ # wifi hotspot
windowrule = tag +settings, class:^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer
windowrule = tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$
windowrule = tag +settings, title:(Kvantum Manager)
windowrule = tag +settings, class:^(file-roller|org.gnome.FileRoller)$ # archive manager
windowrule = tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$
windowrule = tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$
windowrule = tag +settings, class:^(qt5ct|qt6ct|[Yy]ad)$
windowrule = tag +settings, class:(xdg-desktop-portal-gtk)
windowrule = tag +settings, class:^(org.kde.polkit-kde-authentication-agent-1)$
windowrule = tag +settings, class:^([Rr]ofi)$
# viewer tags
windowrule = tag +viewer, class:^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor
windowrule = tag +viewer, class:^(evince)$ # document viewer
windowrule = tag +viewer, class:^(eog|org.gnome.Loupe)$ # image viewer
# Some special override rules
windowrule = noblur, tag:multimedia_video*
windowrule = opacity 1.0, tag:multimedia_video*
# POSITION
# windowrule = center,floating:1 # warning, it cause even the menu to float and center.
windowrule = center, tag:KooL_Cheat*
windowrule = center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)
windowrule = center, title:^(ROG Control)$
windowrule = center, tag:KooL-Settings*
windowrule = center, title:^(Keybindings)$
windowrule = center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$
windowrule = center, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
windowrule = center, class:^([Ff]erdium)$
windowrule = move 72% 7%,title:^(Picture-in-Picture)$
#windowrule = move 72% 7%,title:^(Firefox)$
# windowrule to avoid idle for fullscreen apps
#windowrule = idleinhibit fullscreen, class:^(*)$
#windowrule = idleinhibit fullscreen, title:^(*)$
windowrule = idleinhibit fullscreen, fullscreen:1
# windowrule move to workspace
#windowrule = workspace 1, tag:email*
#windowrule = workspace 2, tag:browser*
#windowrule = workspace 3, class:^([Tt]hunar)$
#windowrule = workspace 3, tag:projects*
#windowrule = workspace 5, tag:gamestore*
#windowrule = workspace 7, tag:im*
#windowrule = workspace 8, tag:games*
# windowrule move to workspace (silent)
#windowrule = workspace 4 silent, tag:screenshare*
#windowrule = workspace 6 silent, class:^(virt-manager)$
#windowrule = workspace 6 silent, class:^(.virt-manager-wrapped)$
#windowrule = workspace 9 silent, tag:multimedia*
#
# FLOAT
windowrule = float, tag:KooL_Cheat*
windowrule = float, tag:wallpaper*
windowrule = float, tag:settings*
windowrule = float, tag:viewer*
windowrule = float, tag:KooL-Settings*
windowrule = float, class:([Zz]oom|onedriver|onedriver-launcher)$
windowrule = float, class:(org.gnome.Calculator), title:(Calculator)
windowrule = float, class:^(mpv|com.github.rafostar.Clapper)$
windowrule = float, class:^([Qq]alculate-gtk)$
#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
windowrule = float, class:^([Ff]erdium)$
windowrule = float, title:^(Picture-in-Picture)$
#windowrule = float, title:^(Firefox)$
# windowrule - ######### float popups and dialogue #######
windowrule = float, title:^(Authentication Required)$
windowrule = center, title:^(Authentication Required)$
windowrule = float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)
windowrule = float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher)
windowrule = float, class:^([Ss]team)$, title:negative:^([Ss]team)$
windowrule = float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)
windowrule = float, title:^(Add Folder to Workspace)$
windowrule = size 70% 60%, title:^(Add Folder to Workspace)$
windowrule = center, title:^(Add Folder to Workspace)$
windowrule = float, title:^(Save As)$
windowrule = size 70% 60%, title:^(Save As)$
windowrule = center, title:^(Save As)$
windowrule = float, initialTitle:(Open Files)
windowrule = size 70% 60%, initialTitle:(Open Files)
windowrule = float, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
windowrule = center, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
windowrule = size 16% 12%, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
# END of float popups and dialogue #######
# OPACITY
windowrule = opacity 0.99 0.8, tag:browser*
windowrule = opacity 0.9 0.8, tag:projects*
windowrule = opacity 0.94 0.86, tag:im*
windowrule = opacity 0.94 0.86, tag:multimedia*
windowrule = opacity 0.9 0.8, tag:file-manager*
windowrule = opacity 0.9 0.7, tag:terminal*
windowrule = opacity 0.8 0.7, tag:settings*
windowrule = opacity 0.82 0.75, tag:viewer*
windowrule = opacity 0.9 0.7, tag:wallpaper*
windowrule = opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$
windowrule = opacity 0.9 0.8, class:^(deluge)$
windowrule = opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui
windowrule = opacity 0.95 0.75, title:^(Picture-in-Picture)$
# SIZE
windowrule = size 65% 90%, tag:KooL_Cheat*
windowrule = size 70% 70%, tag:wallpaper*
windowrule = size 70% 70%, tag:settings*
windowrule = size 60% 70%, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
windowrule = size 60% 70%, class:^([Ff]erdium)$
#windowrule = size 25% 25%, title:^(Picture-in-Picture)$
#windowrule = size 25% 25%, title:^(Firefox)$
# PINNING
windowrule = pin, title:^(Picture-in-Picture)$
#windowrule = pin,title:^(Firefox)$
# windowrule - extras
windowrule = keepaspectratio, title:^(Picture-in-Picture)$
# BLUR & FULLSCREEN
windowrule = noblur, tag:games*
windowrule = fullscreen, tag:games*
#This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products
windowrule = noinitialfocus, class:^(jetbrains-*)
windowrule = noinitialfocus, title:^(wind.*)$
#windowrule = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1
#windowrule = bordercolor rgb(282737) rgb(1E1D2D), floating:1
#windowrule = opacity 0.8 0.8, pinned:1
# LAYER RULES
layerrule = blur, rofi
layerrule = ignorezero, rofi
layerrule = blur, notifications
layerrule = ignorezero, notifications
layerrule = blur, quickshell:overview
layerrule = ignorezero, quickshell:overview
layerrule = ignorealpha 0.5, quickshell:overview
#layerrule = ignorealpha 0.5, tag:notif*
#layerrule = ignorezero, class:^([Rr]ofi)$
#layerrule = blur, class:^([Rr]ofi)$
#layerrule = unset,class:^([Rr]ofi)$
#layerrule = ignorezero, <rofi>
#layerrule = ignorezero, overview
#layerrule = blur, overview

View file

@ -1,231 +1,471 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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
# NOTES: This is only for Hyprland > 0.48
# NOTES: This is only for Hyprland >= 0.53
# note for ja: This should NOT be implemented on Debian and Ubuntu
# Some samples on hwo to start apps on specific workspaces
# windowrule = match:tag email*, workspace 1
# windowrule = match:tag browser*, workspace 2
# windowrule = match:tag projects*, workspace 3
# windowrule = match:tag screenshare*, workspace 4 silent
# windowrule = match:tag gamestore*, workspace 5
# windowrule = match:class ^(virt-manager)$, workspace 6 silent
# windowrule = match:class ^(.virt-manager-wrapped)$, workspace 6 silent
# windowrule = match:tag im*, workspace 7
# windowrule = match:class obsidian, workspace 8
# windowrule = match:tag games*, workspace 8
# windowrule = match:tag multimedia*, workspace 9 silent
# windowrule - tags - add apps under appropriate tag to use the same settings
# TAGS - add apps under appropriate tag to use the same settings
# browser tags
windowrule = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$
windowrule = tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$
windowrule = tag +browser, class:^(chrome-.+-Default)$ # Chrome PWAs
windowrule = tag +browser, class:^([Cc]hromium)$
windowrule = tag +browser, class:^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$
windowrule = tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$
windowrule = tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$
windowrule = tag +browser, class:^(zen-alpha|zen)$
windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser
windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +browser
windowrule = match:class ^(chrome-.+-Default)$, tag +browser
windowrule = match:class ^([Cc]hromium)$, tag +browser
windowrule = match:class ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$, tag +browser
windowrule = match:class ^([Bb]rave-browser(-beta|-dev|-unstable)?)$, tag +browser
windowrule = match:class ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser
windowrule = match:class ^(zen-alpha|zen)$, tag +browser
# notif tags
windowrule = tag +notif, class:^(swaync-control-center|swaync-notification-window|swaync-client|class)$
windowrule = match:class ^(swaync-control-center|swaync-notification-window|swaync-client|class)$, tag +notif
# KooL settings tag
windowrule = tag +KooL_Cheat, title:^(KooL Quick Cheat Sheet)$
windowrule = tag +KooL_Settings, title:^(KooL Hyprland Settings)$
windowrule = tag +KooL-Settings, class:^(nwg-displays|nwg-look)$
windowrule = match:title ^(KooL Quick Cheat Sheet)$, tag +KooL_Cheat
windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings
windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings
# terminal tags
windowrule = tag +terminal, class:^(Alacritty|kitty|kitty-dropterm)$
windowrule = match:class ^(ghostty|wezterm|Alacritty|kitty|kitty-dropterm)$, tag +terminal
# email tags
windowrule = tag +email, class:^([Tt]hunderbird|org.gnome.Evolution)$
windowrule = tag +email, class:^(eu.betterbird.Betterbird)$
windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email
windowrule = match:class ^(eu.betterbird.Betterbird)$, tag +email
windowrule = match:class ^(org.gnome.Evolution)$, tag +email
# project tags
windowrule = tag +projects, class:^(codium|codium-url-handler|VSCodium)$
windowrule = tag +projects, class:^(VSCode|code|code-url-handler)$
windowrule = tag +projects, class:^(jetbrains-.+)$ # JetBrains IDEs
windowrule = match:class ^(codium|codium-url-handler|VSCodium)$, tag +projects
windowrule = match:class ^(VSCode|code|code-url-handler)$, tag +projects
windowrule = match:class ^(jetbrains-.+)$, tag +projects
windowrule = match:class ^(dev.zed.Zed|antigravity)$, tag +projects
# screenshare tags
windowrule = tag +screenshare, class:^(com.obsproject.Studio)$
windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare
# IM tags
windowrule = tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$
windowrule = tag +im, class:^([Ff]erdium)$
windowrule = tag +im, class:^([Ww]hatsapp-for-linux)$
windowrule = tag +im, class:^(ZapZap|com.rtosta.zapzap)$
windowrule = tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$
windowrule = tag +im, class:^(teams-for-linux)$
windowrule = tag +im, class:^(im.riot.Riot|Element)$ # Element Matrix client
windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im
windowrule = match:class ^([Ff]erdium)$, tag +im
windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, tag +im
windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im
windowrule = match:class ^(teams-for-linux)$, tag +im
windowrule = match:class ^(im.riot.Riot|Element)$, tag +im
# game tags
windowrule = tag +games, class:^(gamescope)$
windowrule = tag +games, class:^(steam_app_\d+)$
windowrule = match:class ^(gamescope)$, tag +games
windowrule = match:class ^(steam_app_\\d+)$, tag +games
windowrule = match:xdg_tag ^(proton-game)$, tag +games
# gamestore tags
windowrule = tag +gamestore, class:^([Ss]team)$
windowrule = tag +gamestore, title:^([Ll]utris)$
windowrule = tag +gamestore, class:^(com.heroicgameslauncher.hgl)$
windowrule = match:class ^([Ss]team)$, tag +gamestore
windowrule = match:title ^([Ll]utris)$, tag +gamestore
windowrule = match:class ^(com.heroicgameslauncher.hgl)$, tag +gamestore
# file-manager tags
windowrule = tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$
windowrule = tag +file-manager, class:^(app.drey.Warp)$
windowrule = match:class ^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$, tag +file-manager
windowrule = match:class ^(app.drey.Warp)$, tag +file-manager
# wallpaper tags
windowrule = tag +wallpaper, class:^([Ww]aytrogen)$
windowrule = match:class ^([Ww]aytrogen)$, tag +wallpaper
# multimedia tags
windowrule = tag +multimedia, class:^([Aa]udacious)$
windowrule = match:class ^([Aa]udacious)$, tag +multimedia
# multimedia-video tags
windowrule = tag +multimedia_video, class:^([Mm]pv|vlc)$
windowrule = match:class ^([Mm]pv|vlc)$, tag +multimedia_video
# settings tags
windowrule = tag +settings, title:^(ROG Control)$
windowrule = tag +settings, class:^(wihotspot(-gui)?)$ # wifi hotspot
windowrule = tag +settings, class:^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer
windowrule = tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$
windowrule = tag +settings, title:(Kvantum Manager)
windowrule = tag +settings, class:^(file-roller|org.gnome.FileRoller)$ # archive manager
windowrule = tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$
windowrule = tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$
windowrule = tag +settings, class:^(qt5ct|qt6ct|[Yy]ad)$
windowrule = tag +settings, class:(xdg-desktop-portal-gtk)
windowrule = tag +settings, class:^(org.kde.polkit-kde-authentication-agent-1)$
windowrule = tag +settings, class:^([Rr]ofi)$
windowrule = match:title ^(ROG Control)$, tag +settings
windowrule = match:class ^(wihotspot(-gui)?)$, tag +settings
windowrule = match:class ^([Bb]aobab|org.gnome.[Bb]aobab)$, tag +settings
windowrule = match:class ^(gnome-disks|wihotspot(-gui)?)$, tag +settings
windowrule = match:title (Kvantum Manager), tag +settings
windowrule = match:class ^(file-roller|org.gnome.FileRoller)$, tag +settings
windowrule = match:class ^(nm-applet|nm-connection-editor|blueman-manager)$, tag +settings
windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, tag +settings
windowrule = match:class ^(qt5ct|qt6ct)$, tag +settings
windowrule = match:class (xdg-desktop-portal-gtk), tag +settings
windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings
windowrule = match:class ^([Rr]ofi)$, tag +settings
windowrule = match:class ^(btrfs-assistant)$, tag +settings
windowrule = match:class ^(timeshift-gtk)$, tag +settings
# viewer tags
windowrule = tag +viewer, class:^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor
windowrule = tag +viewer, class:^(evince)$ # document viewer
windowrule = tag +viewer, class:^(eog|org.gnome.Loupe)$ # image viewer
windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$, tag +viewer
windowrule = match:class ^(evince)$, tag +viewer
windowrule = match:class ^(eog|org.gnome.Loupe)$, tag +viewer
# Some special override rules
windowrule = noblur, tag:multimedia_video*
windowrule = opacity 1.0, tag:multimedia_video*
windowrule = match:tag multimedia, no_blur on
windowrule = match:tag multimedia, opacity 1.0
# POSITION
# windowrule = center,floating:1 # warning, it cause even the menu to float and center.
windowrule = center, tag:KooL_Cheat*
windowrule = center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)
windowrule = center, title:^(ROG Control)$
windowrule = center, tag:KooL-Settings*
windowrule = center, title:^(Keybindings)$
windowrule = center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$
windowrule = center, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
windowrule = center, class:^([Ff]erdium)$
windowrule = move 72% 7%,title:^(Picture-in-Picture)$
#windowrule = move 72% 7%,title:^(Firefox)$
# windowrule to avoid idle for fullscreen apps
#windowrule = idleinhibit fullscreen, class:^(*)$
#windowrule = idleinhibit fullscreen, title:^(*)$
windowrule = idleinhibit fullscreen, fullscreen:1
# windowrule move to workspace
#windowrule = workspace 1, tag:email*
#windowrule = workspace 2, tag:browser*
#windowrule = workspace 3, class:^([Tt]hunar)$
#windowrule = workspace 3, tag:projects*
#windowrule = workspace 5, tag:gamestore*
#windowrule = workspace 7, tag:im*
#windowrule = workspace 8, tag:games*
# windowrule move to workspace (silent)
#windowrule = workspace 4 silent, tag:screenshare*
#windowrule = workspace 6 silent, class:^(virt-manager)$
#windowrule = workspace 6 silent, class:^(.virt-manager-wrapped)$
#windowrule = workspace 9 silent, tag:multimedia*
#
# FLOAT
windowrule = float, tag:KooL_Cheat*
windowrule = float, tag:wallpaper*
windowrule = float, tag:settings*
windowrule = float, tag:viewer*
windowrule = float, tag:KooL-Settings*
windowrule = float, class:([Zz]oom|onedriver|onedriver-launcher)$
windowrule = float, class:(org.gnome.Calculator), title:(Calculator)
windowrule = float, class:^(mpv|com.github.rafostar.Clapper)$
windowrule = float, class:^([Qq]alculate-gtk)$
#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
windowrule = float, class:^([Ff]erdium)$
windowrule = float, title:^(Picture-in-Picture)$
#windowrule = float, title:^(Firefox)$
windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher), float on
windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float on
windowrule = match:class ^([Qq]alculate-gtk)$, float on
# windowrule - ######### float popups and dialogue #######
windowrule = float, title:^(Authentication Required)$
windowrule = center, title:^(Authentication Required)$
windowrule = float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)
windowrule = float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher)
windowrule = float, class:^([Ss]team)$, title:negative:^([Ss]team)$
windowrule = float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)
windowrule = float, title:^(Add Folder to Workspace)$
windowrule = size 70% 60%, title:^(Add Folder to Workspace)$
windowrule = center, title:^(Add Folder to Workspace)$
windowrule = float, title:^(Save As)$
windowrule = size 70% 60%, title:^(Save As)$
windowrule = center, title:^(Save As)$
windowrule = float, initialTitle:(Open Files)
windowrule = size 70% 60%, initialTitle:(Open Files)
windowrule = float, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
windowrule = center, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
windowrule = size 16% 12%, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
# END of float popups and dialogue #######
# OPACITY
windowrule = opacity 0.99 0.8, tag:browser*
windowrule = opacity 0.9 0.8, tag:projects*
windowrule = opacity 0.94 0.86, tag:im*
windowrule = opacity 0.94 0.86, tag:multimedia*
windowrule = opacity 0.9 0.8, tag:file-manager*
windowrule = opacity 0.9 0.7, tag:terminal*
windowrule = opacity 0.8 0.7, tag:settings*
windowrule = opacity 0.82 0.75, tag:viewer*
windowrule = opacity 0.9 0.7, tag:wallpaper*
windowrule = opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$
windowrule = opacity 0.9 0.8, class:^(deluge)$
windowrule = opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui
windowrule = opacity 0.95 0.75, title:^(Picture-in-Picture)$
# 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
windowrule = match:title ^(Add Folder to Workspace)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on
windowrule = match:title ^(Save As)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on
windowrule = match:initial_title (Open Files), float on, size (monitor_w*0.7) (monitor_h*0.6)
windowrule = match:title ^(SDDM Background)$, float on, center on, size (monitor_w*0.16) (monitor_h*0.12)
windowrule = match:class ^(yad)$, float on, center on, size (monitor_w*0.2) (monitor_h*0.2)
windowrule = match:class ^(hyprland-donate-screen)$, float on, center on
# SIZE
windowrule = size 65% 90%, tag:KooL_Cheat*
windowrule = size 70% 70%, tag:wallpaper*
windowrule = size 70% 70%, tag:settings*
windowrule = size 60% 70%, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
windowrule = size 60% 70%, class:^([Ff]erdium)$
#windowrule = size 25% 25%, title:^(Picture-in-Picture)$
#windowrule = size 25% 25%, title:^(Firefox)$
# POSITION
windowrule = match:title ^(ROG Control)$, center on
windowrule = match:title ^(Keybindings)$, center on
windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center on
windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center on
windowrule = match:class ^(nm-connection-editor)$, center on
windowrule = match:class ^(nm-applet)$, match:title ^(Wi-Fi Network Authentication Required)$, center on
# PINNING
windowrule = pin, title:^(Picture-in-Picture)$
#windowrule = pin,title:^(Firefox)$
# windowrule to avoid idle for fullscreen apps
windowrule = match:fullscreen true, idle_inhibit fullscreen
windowrule = idle_inhibit fullscreen, match:fullscreen 1
windowrule = idle_inhibit fullscreen, match:class .*
windowrule = idle_inhibit fullscreen, match:title .*
# windowrule - extras
windowrule = keepaspectratio, title:^(Picture-in-Picture)$
# OPACITY
windowrule = match:tag browser, opacity 0.99 0.8
windowrule = match:tag projects, opacity 0.9 0.8
windowrule = match:tag im, opacity 0.94 0.86
windowrule = match:tag multimedia, opacity 0.94 0.86
windowrule = match:tag file-manager, opacity 0.9 0.8
windowrule = match:tag terminal, opacity 0.9 0.7
windowrule = match:class ^(gedit|org.gnome.TextEditor|mousepad)$, opacity 0.8 0.7
windowrule = match:class ^(deluge)$, opacity 0.9 0.8
windowrule = match:class ^(seahorse)$, opacity 0.9 0.8
# BLUR & FULLSCREEN
windowrule = noblur, tag:games*
windowrule = fullscreen, tag:games*
#This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products
windowrule = noinitialfocus, class:^(jetbrains-*)
windowrule = noinitialfocus, title:^(wind.*)$
#windowrule = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1
#windowrule = bordercolor rgb(282737) rgb(1E1D2D), floating:1
#windowrule = opacity 0.8 0.8, pinned:1
# This not gonna take the focus to the window that appears
# when hovering over some of the parts of the IntelliJ Products
windowrule = match:class ^(jetbrains-.*)$, no_initial_focus on
windowrule = match:title ^(wind.*)$, no_initial_focus on
# LAYER RULES
layerrule = blur, rofi
layerrule = ignorezero, rofi
layerrule = blur, notifications
layerrule = ignorezero, notifications
layerrule = blur, quickshell:overview
layerrule = ignorezero, quickshell:overview
layerrule = ignorealpha 0.5, quickshell:overview
layerrule = match:namespace rofi, blur on
layerrule = match:namespace notifications, blur on
layerrule = match:namespace quickshell:overview, blur on
layerrule = match:namespace quickshell:overview, ignore_alpha 0.5
#layerrule = ignorealpha 0.5, tag:notif*
#
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$
float = on
move = 72% 7%
opacity = 0.95 0.75
pin = on
keep_aspect_ratio = on
size = (monitor_w*0.3) (monitor_h*0.3)
}
# Named rule for CachyOS Kernel Manager
windowrule {
name = CachyOS Kernel Manager
match:class = ^(org.cachyos.KernelManager)$
match:title = ^(CachyOS Kernel Manager)$
match:initial_class = ^(org.cachyos.KernelManager)$
match:initial_title = ^(CachyOS Kernel Manager)$
float = on
center = on
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
match:class = ^(org.cachyos.cachyos-pi)$
match:title = ^(CachyOS Package Installer)$
match:initial_class = ^(org.cachyos.cachyos-pi)$
match:initial_title = ^(CachyOS Package Installer)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Shelly
windowrule {
name = Shelly
match:class = ^(com.shellyorg.shelly)$
match:title = ^(Shelly)$
match:initial_class = ^(com.shellyorg.shelly)$
match:initial_title = ^(Shelly)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for CachyOS Hello
windowrule {
name = CachyOS Hello
match:class = ^(CachyOSHello)$
match:title = ^(CachyOS Hello)$
match:initial_class = ^(CachyOSHello)$
match:initial_title = ^(CachyOS Hello)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Cache Cleaner - Octopi
windowrule {
name = Cache Cleaner - Octopi
match:class = ^(octopi-cachecleaner)$
match:title = ^(Cache Cleaner - Octopi)$
match:initial_class = ^(octopi-cachecleaner)$
match:initial_title = ^(Cache Cleaner - Octopi)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Octopi Package Manager
windowrule {
name = Octopi Package Manager
match:class = ^(octopi)$
match:title = ^(Octopi)$
match:initial_class = ^(octopi)$
match:initial_title = ^(Octopi)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Repository Editor - Octopi
windowrule {
name = Repository Editor - Octopi
match:class = ^(octopi-repoeditor)$
match:title = ^(Repository Editor - Octopi)$
match:initial_class = ^(octopi-repoeditor)$
match:initial_title = ^(Repository Editor - Octop)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for KooL Cheat (tag)
windowrule {
name = KooL Cheat (tag)
match:tag = KooL_Cheat
float = on
center = on
size = (monitor_w*0.65) (monitor_h*0.9)
}
# Named rule for Wallpaper (tag)
windowrule {
name = Wallpaper (tag)
match:tag = wallpaper
float = on
center = on
size = (monitor_w*0.7) (monitor_h*0.7)
opacity = 0.9 0.7
}
# Named rule for Settings (tag)
windowrule {
name = Settings (tag)
match:tag = settings
float = on
center = on
size = (monitor_w*0.7) (monitor_h*0.7)
opacity = 0.8 0.7
}
# Named rule for Viewer (tag)
windowrule {
name = Viewer (tag)
match:tag = viewer
float = on
center = on
opacity = 0.82 0.75
}
# Named rule for KooL Settings (tag)
windowrule {
name = KooL Settings (tag)
match:tag = KooL-Settings
float = on
center = on
}
# Named rule for Multimedia Video (tag)
windowrule {
name = Multimedia Video (tag)
match:tag = multimedia_video
no_blur = on
opacity = 1.0
}
# Named rule for Games (tag)
windowrule {
name = Games (tag)
match:tag = games
no_blur = on
fullscreen = 0
}
# Named rule for Ferdium
windowrule {
name = Ferdium
match:class = ^([Ff]erdium)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.7)
}
# Named rule for Calculators
windowrule {
name = Calculators
match:class = (org.gnome.Calculator|qalculate-gtk)
float = on
center = on
size = (monitor_w*0.55) (monitor_h*0.45)
}
# Named rule for Thunar Dialogs
windowrule {
name = Thunar Dialogs
match:class = ([Tt]hunar)
match:title = negative:(.*[Tt]hunar.*)
float = on
center = on
}
# Named rule for Bitwarden
windowrule {
name = Bitwarden
match:class = ^(Bitwarden)$
match:title = ^(Bitwarden)$
match:initial_class = ^(Bitwarden)$
match:initial_title = ^(Bitwarden)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for hyprpwcenter audio control panel
windowrule {
name = hyprland audio panel
match:class = ^(hyprpwcenter)$
match:initial_class = ^(hyprpwcenter)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for Garida Assistant
windowrule {
name = Garuda Assistant
match:class = ^(garuda-assistant)$
match:title = ^(Garuda Assistant)$
match:initial_class = ^(garuda-assistant)$
match:initial_title = ^(Garuda Assistant)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.6)
}
# Named rule for HyprMod HL config GUI
windowrule {
name = HyprMod GUI
match:class = ^(com.github.hyprmod)$
match:title = ^(HyprMod)$
match:initial_class = ^(com.github.hyprmod)$
match:initial_title = ^(HyprMod)$
float = on
center = on
size = (monitor_w*0.7) (monitor_h*0.75)
}
# Named rule for easy effects
windowrule {
name = EasyEffects
match:class = ^(com.github.wwmm.easyeffects)$
match:title = ^(Easy Effects)$
match:initial_class = ^(com.github.wwmm.easyeffects)$
match:initial_title = ^(Easy Effects)$
float = on
center = on
size = (monitor_w*0.6) (monitor_h*0.65)
}
# Named rule for Mousam weather GUI
windowrule {
name = Mousam Weather
match:class = ^(io.github.amit9838.mousam)$
match:title = ^(Mousam)$
match:initial_class = ^(io.github.amit9838.mousam)$
match:initial_title = ^(Mousam)$
float = on
center = on
size = (monitor_w*0.7) (monitor_h*0.75)
}
#layerrule = ignorezero, class:^([Rr]ofi)$
#layerrule = blur, class:^([Rr]ofi)$
#layerrule = unset,class:^([Rr]ofi)$
#layerrule = ignorezero, <rofi>
#layerrule = ignorezero, overview
#layerrule = blur, overview

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# Hypridle
# Original config submitted by https://github.com/SherLock707

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# Always refer to Hyprland wiki
# https://wiki.hyprland.org/

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# Hyprlock config for < 1080p monitor resolutions
# Original config submitted by https://github.com/SherLock707
@ -7,7 +7,6 @@ source = $HOME/.config/hypr/wallust/wallust-hyprland.conf
$Scripts = $HOME/.config/hypr/scripts
general {
grace = 1
fractional_scaling = 2
immediate_render = true
}
@ -97,7 +96,7 @@ label {
# position = 0, 280
# halign = center
# valign = bottom
}
# }
# USER
label {
@ -170,7 +169,7 @@ label {
# weather edit the scripts for locations
# weather scripts are located in ~/.config/hypr/UserScripts Weather.sh and/or Weather.py
# see https://github.com/JaKooLit/Hyprland-Dots/wiki/TIPS#%EF%B8%8F-weather-app-related-for-waybar-and-hyprlock
# see https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/TIPS#%EF%B8%8F-weather-app-related-for-waybar-and-hyprlock
label {
monitor =
text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache"

View file

@ -0,0 +1,182 @@
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# Hyprlock config for => 2k monitor resolutions
# Original config submitted by https://github.com/SherLock707
# Sourcing colors generated by wallust
source = $HOME/.config/hypr/wallust/wallust-hyprland.conf
$Scripts = $HOME/.config/hypr/scripts
general {
fractional_scaling = 2
immediate_render = true
}
background {
monitor =
# NOTE: use only 1 path
#path = screenshot # screenshot of your desktop
#path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_modified # by wallpaper effects
path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # current wallpaper
color = rgb(0,0,0) # color will be rendered initially until path is available
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_size = 3
blur_passes = 2 # 0 disables blurring
noise = 0.0117
contrast = 1.3000 # Vibrant!!!
brightness = 0.8000
vibrancy = 0.2100
vibrancy_darkness = 0.0
}
# Date
label {
monitor =
text = cmd[update:18000000] echo "<b> "$(date +'%A, %-d %B')" </b>"
color = $color13
font_size = 64
font_family = Victor Mono Bold Italic
position = 0, -20
halign = center
valign = center
}
# Hour-Time (single horizontal time like 1080p variant)
label {
monitor =
# text = cmd[update:1000] echo "$(date +"%H:%M")" # 24h option
text = cmd[update:1000] echo "$(date +"%I:%M %p")" # AM/PM
#color = rgba(255, 185, 0, .8)
color = $color8
font_size = 173
font_family = JetBrainsMono Nerd Font ExtraBold
position = 0, -133
halign = center
valign = top
}
# Minute-Time (disabled; kept for reference)
# label {
# monitor =
# text = cmd[update:1000] echo "$(date +"%M")"
# #color = rgba(15, 10, 222, .8)
# color = $color12
# font_size = 240
# font_family = JetBrainsMono Nerd Font ExtraBold
# position = 0, -450
# halign = center
# valign = top
# }
# Seconds-Time (disabled; kept for reference)
# label {
# monitor =
# text = cmd[update:1000] echo "$(date +"%S")"
# # text = cmd[update:1000] echo "$(date +"%S %p")" #AM/PM
# color = $color11
# font_size = 50
# font_family = JetBrainsMono Nerd Font ExtraBold
# position = 0, -450
# halign = center
# valign = top
# }
# Put a picture of choice here. Default is the current wallpaper
# image {
# monitor =
# #path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current
# size = 160
# rounding = -1
# border_size = 0
# border_color = $color11
# rotate = 0
# reload_time = -1
# position = 0, 400
# halign = center
# valign = bottom
# }
# USER
label {
monitor =
text =  $USER
color = $color9
font_size = 48
font_family = Victor Mono Bold Oblique
position = 0, 300
halign = center
valign = bottom
}
# INPUT FIELD
input-field {
monitor =
size = 306, 93
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = $color8
inner_color = rgba(255, 255, 255, 0.1)
capslock_color = rgb(255,255,255)
font_color = $color13
fade_on_empty = false
font_family = Victor Mono Bold Oblique
placeholder_text = <i><span foreground="##ffffff99">🔒 Type Password</span></i>
hide_input = false
position = 0, 100
halign = center
valign = bottom
}
# Keyboard LAYOUT
label {
monitor =
text = $LAYOUT
color = $color8
font_size = 19
font_family = Victor Mono Bold Oblique
position = 0, 53
halign = center
valign = bottom
}
# uptime
label {
monitor =
text = cmd[update:60000] echo "<b> "$(uptime -p || $Scripts/UptimeNixOS.sh)" </b>"
color = $color8
font_size = 32
font_family = Victor Mono Bold Oblique
position = 0, 0
halign = right
valign = bottom
}
# battery information
label {
monitor =
text = cmd[update:1000] echo "<b> "$($Scripts/Battery.sh)" </b>"
color = $color8
font_size = 21
font_family = Victor Mono Bold Oblique
position = 0, 40
halign = right
valign = bottom
}
# weather edit the scripts for locations
# weather scripts are located in ~/.config/hypr/UserScripts Weather.sh and/or Weather.py
# see https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/TIPS#%EF%B8%8F-weather-app-related-for-waybar-and-hyprlock
label {
monitor =
text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache"
color = $color8
font_size = 19
font_family = Victor Mono Bold Oblique
position = 50, 0
halign = left
valign = bottom
}

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# Hyprlock config for => 2k monitor resolutions
# Original config submitted by https://github.com/SherLock707
@ -7,7 +7,6 @@ source = $HOME/.config/hypr/wallust/wallust-hyprland.conf
$Scripts = $HOME/.config/hypr/scripts
general {
grace = 1
fractional_scaling = 2
immediate_render = true
}
@ -170,7 +169,7 @@ label {
# weather edit the scripts for locations
# weather scripts are located in ~/.config/hypr/UserScripts Weather.sh and/or Weather.py
# see https://github.com/JaKooLit/Hyprland-Dots/wiki/TIPS#%EF%B8%8F-weather-app-related-for-waybar-and-hyprlock
# see https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/TIPS#%EF%B8%8F-weather-app-related-for-waybar-and-hyprlock
label {
monitor =
text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache"

View file

@ -1,5 +1,5 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# A bash script designed to run only once dotfiles installed
# THIS SCRIPT CAN BE DELETED ONCE SUCCESSFULLY BOOTED!! And also, edit ~/.config/hypr/configs/Settings.conf
@ -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
@ -49,9 +56,6 @@ if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then
# initiate kvantum theme
kvantummanager --set "$kvantum_theme" > /dev/null 2>&1 &
# initiate the kb_layout (for some reason) waybar cant launch it
"$scriptsDir/SwitchKeyboardLayout.sh" > /dev/null 2>&1 &
# waybar style
#if [ -L "$HOME/.config/waybar/config" ]; then
## ln -sf "$waybar_style" "$HOME/.config/waybar/style.css"

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# default Monitor config
# *********************************************************** #
@ -36,7 +36,7 @@ monitor=,highres,auto,1
#monitor = HDMI-A-1, preferred,auto,1
# QEMU-KVM, virtual box or vmware
#monitor = Virtual-1, 1920x1080@60,auto,1
monitor = Virtual-1, 1920x1080@60,auto,1
# to disable a monitor
#monitor=name,disable

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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

View file

@ -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)

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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"

View file

@ -1,24 +1,110 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# 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)
case $LAYOUT in
"master")
hyprctl keyword general:layout dwindle
# SUPER+J/K are global and managed by KeybindsLayoutInit.sh; only manage SUPER+O here
hyprctl keyword bind SUPER,O,togglesplit
get_layout() {
hyprctl -j getoption general:layout | jq -r '.str'
}
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
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"
;;
"dwindle")
hyprctl keyword general:layout master
# Drop togglesplit binding on SUPER+O when switching back to master
hyprctl keyword unbind SUPER,O
"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
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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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

View file

@ -1,16 +1,24 @@
#!/usr/bin/env bash
## /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
# Paths
wallpaper_base_path="$HOME/Pictures/wallpapers/Dynamic-Wallpapers"
PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
wallpaper_base_path="$PICTURES_DIR/wallpapers/Dynamic-Wallpapers"
dark_wallpapers="$wallpaper_base_path/Dark"
light_wallpapers="$wallpaper_base_path/Light"
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"
@ -19,6 +27,10 @@ kitty_conf="$HOME/.config/kitty/kitty.conf"
wallust_config="$HOME/.config/wallust/wallust.toml"
pallete_dark="dark16"
pallete_light="light16"
qt5ct_dark="$HOME/.config/qt5ct/colors/Catppuccin-Mocha.conf"
qt5ct_light="$HOME/.config/qt5ct/colors/Catppuccin-Latte.conf"
qt6ct_dark="$HOME/.config/qt6ct/colors/Catppuccin-Mocha.conf"
qt6ct_light="$HOME/.config/qt6ct/colors/Catppuccin-Latte.conf"
# intial kill process
for pid in waybar rofi swaync ags swaybg; do
@ -26,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
@ -43,6 +55,14 @@ else
# Logic for Light mode
wallpaper_path="$light_wallpapers"
fi
# Select Qt color scheme templates for the upcoming mode
if [ "$next_mode" = "Dark" ]; then
qt5ct_color_scheme="$qt5ct_dark"
qt6ct_color_scheme="$qt6ct_dark"
else
qt5ct_color_scheme="$qt5ct_light"
qt6ct_color_scheme="$qt6ct_light"
fi
# Function to update theme mode for the next cycle
update_theme_mode() {

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
@ -15,23 +20,23 @@ fi
if command -v paru &> /dev/null || command -v yay &> /dev/null; then
# Arch-based
if command -v paru &> /dev/null; then
kitty -T update paru -Syu
kitty -T update -e paru -Syu
notify-send -i "$iDIR/ja.png" -u low 'Arch-based system' 'has been updated.'
else
kitty -T update yay -Syu
kitty -T update -e yay -Syu
notify-send -i "$iDIR/ja.png" -u low 'Arch-based system' 'has been updated.'
fi
elif command -v dnf &> /dev/null; then
# Fedora-based
kitty -T update sudo dnf update --refresh -y
kitty -T update -e sudo dnf update --refresh -y
notify-send -i "$iDIR/ja.png" -u low 'Fedora system' 'has been updated.'
elif command -v apt &> /dev/null; then
# Debian-based (Debian, Ubuntu, etc.)
kitty -T update sudo apt update && sudo apt upgrade -y
kitty -T update -e bash -c "sudo apt update && sudo apt upgrade -y"
notify-send -i "$iDIR/ja.png" -u low 'Debian/Ubuntu system' 'has been updated.'
elif command -v zypper &> /dev/null; then
# openSUSE-based
kitty -T update sudo zypper dup -y
kitty -T update -e sudo zypper dup -y
notify-send -i "$iDIR/ja.png" -u low 'openSUSE system' 'has been updated.'
else
# Unsupported distro

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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,14 +42,65 @@ 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
if [ -z "$TERMINAL_CMD" ]; then
echo "Missing terminal command. Usage: $0 [-d] <terminal_command>"
@ -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 | 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" '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 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

View file

@ -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

View file

@ -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:{}

View file

@ -1,9 +1,16 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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

View file

@ -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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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"
@ -15,7 +20,8 @@ elif [[ "$1" == "toggle" ]]; then
if pgrep -x "$PROCESS" >/dev/null; then
pkill "$PROCESS"
else
"$PROCESS"
"$PROCESS" >/dev/null 2>&1 &
disown
fi
else
echo "Usage: $0 {status|toggle}"

View file

@ -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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
@ -21,135 +26,19 @@ msg='☣️ NOTE ☣️: Clicking with Mouse or Pressing ENTER will have NO func
files=("$keybinds_conf" "$user_keybinds_conf")
[[ -f "$laptop_conf" ]] && files+=("$laptop_conf")
# Parse binds/unbinds from files, detect overrides, and keep unique effective binds
declare -A binding_map # combo -> bind line (effective)
declare -A source_map # combo -> source file
declare -A user_bind_map # combo -> user bind line
declare -A unbound_user # combo -> 1 if explicitly unbound in user file
declare -A seen_any_bind # combo -> 1 if any bind seen (for iteration)
declare -A default_seen # combo -> 1 if default bind exists
declare -a missing_unbind_suggestions_arr
# Parse binds using the python script for speed
# The last argument must be the user config for override logic to work correctly
display_keybinds=$("$HOME/.config/hypr/scripts/keybinds_parser.py" "${files[@]}")
normalize_combo() { echo "$1" | sed -E 's/[[:space:]]//g'; }
extract_combo() {
# arg: a bind/unbind line; returns "mods,key" via echo
local s="$1"
s="$(echo "$s" | sed -E 's/[[:space:]]+#.*$//')"
if [[ "$s" =~ = ]]; then
local rhs="${s#*=}"
local mods="$(echo "$rhs" | awk -F',' '{gsub(/^[ \t]+|[ \t]+$/,"",$1); print $1}')"
local key="$(echo "$rhs" | awk -F',' '{gsub(/^[ \t]+|[ \t]+$/,"",$2); print $2}')"
echo "${mods},${key}"
fi
}
for file in "${files[@]}"; do
[[ ! -f "$file" ]] && continue
while IFS= read -r line; do
[[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue
if [[ "$line" =~ ^[[:space:]]*bind[a-z]*[[:space:]]*= ]]; then
combo_raw="$(extract_combo "$line")"
[[ -z "$combo_raw" ]] && continue
combo="$(normalize_combo "$combo_raw")"
seen_any_bind["$combo"]=1
if [[ "$file" != "$user_keybinds_conf" ]]; then
default_seen["$combo"]=1
fi
# prefer user bind, else first seen
if [[ -z "${source_map[$combo]}" ]]; then
binding_map["$combo"]="$line"
source_map["$combo"]="$file"
fi
if [[ "$file" == "$user_keybinds_conf" ]]; then
user_bind_map["$combo"]="$line"
binding_map["$combo"]="$line"
source_map["$combo"]="$file"
fi
elif [[ "$line" =~ ^[[:space:]]*unbind[[:space:]]*= ]]; then
combo_raw="$(extract_combo "$line")"
[[ -z "$combo_raw" ]] && continue
combo="$(normalize_combo "$combo_raw")"
if [[ "$file" == "$user_keybinds_conf" ]]; then
unbound_user["$combo"]=1
# Check for suggestions file created by python script
if [[ -f "/tmp/hypr_keybind_suggestions_file" ]]; then
suggestions_file=$(cat "/tmp/hypr_keybind_suggestions_file")
rm "/tmp/hypr_keybind_suggestions_file"
if [[ -n "$suggestions_file" && -f "$suggestions_file" ]]; then
count=$(wc -l < "$suggestions_file")
msg="$msg | Overrides missing unbind: $count (suggestions: $suggestions_file)"
fi
fi
done < "$file"
done
# Build raw_keybinds for display and collect missing unbind suggestions
raw_keybinds=""
for combo in "${!seen_any_bind[@]}"; do
eff_line="${binding_map[$combo]}"
src="${source_map[$combo]}"
[[ -z "$eff_line" ]] && continue
raw_keybinds+="$eff_line"$'\n'
# If user overrides a default but didn't unbind in user file, suggest unbind
if [[ "$src" == "$user_keybinds_conf" && -n "${default_seen[$combo]}" && -z "${unbound_user[$combo]}" ]]; then
suggest="$(echo "$eff_line" | sed -E 's/^[[:space:]]*bind[a-z]*/unbind/')"
missing_unbind_suggestions_arr+=("$suggest")
fi
done
# If there are missing unbinds, write suggestions to a temp file and note in message
if (( ${#missing_unbind_suggestions_arr[@]} > 0 )); then
suggestions_file="$(mktemp -t hypr-unbind-suggestions.XXXX.conf)"
printf '%s\n' "${missing_unbind_suggestions_arr[@]}" > "$suggestions_file"
msg="$msg | Overrides missing unbind: ${#missing_unbind_suggestions_arr[@]} (suggestions: $suggestions_file)"
fi
# check for any keybinds to display
if [[ -z "$raw_keybinds" ]]; then
echo "no keybinds found."
exit 1
fi
# transform into a readable list: MODS+KEY — DESCRIPTION (for bindd) or DISPATCHER [PARAMS] (for bind)
display_keybinds=$(echo "$raw_keybinds" | awk -F'=' '
function trim(s){ gsub(/^[ \t]+|[ \t]+$/,"",s); return s }
/^[[:space:]]*bind/ {
binder=$1; gsub(/[ \t]/, "", binder);
hasdesc = (index(binder, "d")>0);
rhs=$2; rhs=trim(rhs);
n=split(rhs, a, /[ \t]*,[ \t]*/);
mods=trim(a[1]); key=(n>=2?trim(a[2]):"");
desc=""; dispatcher=""; params="";
if (hasdesc) {
desc=(n>=3?trim(a[3]):"");
dispatcher=(n>=4?trim(a[4]):"");
start=5;
} else {
dispatcher=(n>=3?trim(a[3]):"");
start=4;
}
for(i=start;i<=n;i++){ if(length(a[i])){ p=trim(a[i]); if(p!="") params = (params?params", ":"") p } }
gsub(/\$mainMod/,"SUPER",mods);
gsub(/[ \t]+/,"+",mods);
combo = (mods && key) ? mods "+" key : (key?key:mods);
if (hasdesc && desc != "") {
print combo, " — ", desc;
} else {
if (dispatcher != "" && params != "")
print combo, " — ", dispatcher, " ", params;
else if (dispatcher != "")
print combo, " — ", dispatcher;
else
print combo;
}
}
')
# use rofi to display the keybinds
printf '%s\n' "$display_keybinds" | rofi -dmenu -i -config "$rofi_theme" -mesg "$msg"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
@ -21,26 +26,26 @@ GDK_BACKEND=$BACKEND yad \
--list \
--column=Key: \
--column=Description: \
--column=Command: \
--column=Comment: \
--timeout-indicator=bottom \
"ESC" "close this app" "" " = " "SUPER KEY (Windows Key Button)" "(SUPER KEY)" \
" SHIFT K" "Searchable Keybinds" "(Search all Keybinds via rofi)" \
" SHIFT E" "KooL Hyprland Settings Menu" "" \
"" "" "" \
" enter" "Terminal" "(kitty)" \
" SHIFT E" "KooL Hyprland Settings Menu" "WindowRules,themes,defaults, etc" \
" enter" "Terminal" "(Default:kitty)" \
" SHIFT enter" "DropDown Terminal" " Q to close" \
" B" "Launch Browser" "(Default browser)" \
" A" "Desktop Overview" "(AGS - if opted to install)" \
" A" "Desktop Overview" "Shows open apps in workspaces" \
" D" "Application Launcher" "(rofi-wayland)" \
" E" "Open File Manager" "(Thunar)" \
" S" "Google Search using rofi" "(rofi)" \
" T" "Global theme switcher" "(rofi)" \
" Q" "close active window" "(not kill)" \
" Shift Q " "kills an active window" "(kill)" \
" 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)" \
@ -57,7 +62,7 @@ GDK_BACKEND=$BACKEND yad \
"CTRL ALT Del" "Hyprland Exit" "(NOTE: Hyprland Will exit immediately)" \
" SHIFT F" "Fullscreen" "Toggles to full screen" \
" CTL F" "Fake Fullscreen" "Toggles to fake full screen" \
" ALT L" "Toggle Dwindle | Master Layout" "Hyprland Layout" \
" ALT L" "Toggle Dwindle|Floating|Monocle|Master layouts" "Hyprland Layouts" \
" SPACEBAR" "Toggle float" "single window" \
" ALT SPACEBAR" "Toggle all windows to float" "all windows" \
" ALT O" "Toggle Blur" "normal or less blur" \
@ -69,4 +74,4 @@ GDK_BACKEND=$BACKEND yad \
" ALT E" "Rofi Emoticons" "Emoticon" \
" H" "Launch this Quick Cheat Sheet" "" \
"" "" "" \
"More tips:" "https://github.com/JaKooLit/Hyprland-Dots/wiki" ""\
"More tips:" "https://github.com/LinuxBeginnings/Hyprland-Dots/wiki" ""

View file

@ -1,14 +1,19 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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"
@ -13,7 +18,6 @@ ignore_patterns=(
Name"
)
# Function to get keyboard names
get_keyboard_names() {
hyprctl devices -j | jq -r '.keyboards[].name'
@ -31,6 +35,7 @@ is_ignored() {
}
# Function to get current layout info
# Stores values in layout_mapping, variant_mapping and layout_index
get_current_layout_info() {
local found_kb=false
@ -39,15 +44,15 @@ get_current_layout_info() {
if ! is_ignored "$name"; then
found_kb=true
local layout_mapping_str=$(hyprctl devices -j |
jq -r ".keyboards[] | select(.name==\"$name\").layout")
jq -r --arg name "$name" '.keyboards[] | select(.name==$name).layout')
IFS="," read -r -a layout_mapping <<<"$layout_mapping_str"
local variant_mapping_str=$(hyprctl devices -j |
jq -r ".keyboards[] | select(.name==\"$name\").variant")
jq -r --arg name "$name" '.keyboards[] | select(.name==$name).variant')
IFS="," read -r -a variant_mapping <<<"$variant_mapping_str"
layout_index=$(hyprctl devices -j |
jq -r ".keyboards[] | select(.name==\"$name\").active_layout_index")
jq -r --arg name "$name" '.keyboards[] | select(.name==$name).active_layout_index')
break
fi
done <<< "$(get_keyboard_names)"
@ -89,8 +94,8 @@ if ! get_current_layout_info; then
exit 1
fi
current_layout=${layout_mapping[layout_index]}
current_variant=${variant_mapping[layout_index]}
current_layout=${layout_mapping[$layout_index]}
current_variant=${variant_mapping[$layout_index]}
if [[ "$1" == "status" ]]; then
echo "$current_layout${current_variant:+($current_variant)}"
@ -101,8 +106,8 @@ elif [[ "$1" == "switch" ]]; then
echo "Number of layouts: $layout_count"
next_index=$(( (layout_index + 1) % layout_count ))
new_layout="${layout_mapping[next_index]}"
new_variant="${variant_mapping[next_index]}"
new_layout="${layout_mapping[$next_index]}"
new_variant="${variant_mapping[$next_index]}"
echo "Next layout: $new_layout"
# Execute layout change and notify

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
@ -7,5 +12,10 @@
# Get id of an active window
active_pid=$(hyprctl activewindow | grep -o 'pid: [0-9]*' | cut -d' ' -f2)
if [[ -z "$active_pid" || ! "$active_pid" =~ ^[0-9]+$ ]]; then
notify-send -u low -i "$HOME/.config/swaync/images/error.png" "Kill Active Window" "No active window PID found."
exit 1
fi
# Close active window
kill $active_pid
kill "$active_pid"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */  #
# ==================================================
# 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
@ -16,14 +21,22 @@ notify_user() {
# Function to apply the selected kitty theme
apply_kitty_theme_to_config() {
local theme_name_to_apply="$1"
local apply_mode="${2:-preview}"
if [ -z "$theme_name_to_apply" ]; then
echo "Error: No theme name provided to apply_kitty_theme_to_config." >&2
return 1
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"
fi
local theme_file_path_to_apply="$kitty_themes_DiR/$theme_name_to_apply.conf"
if [ ! -f "$theme_file_path_to_apply" ]; then
notify_user "$iDIR/error.png" "Error" "Theme file not found: $theme_name_to_apply.conf"
notify_user "$iDIR/error.png" "Error" "Theme file not found: $(basename "$theme_file_path_to_apply")"
return 1
fi
@ -31,23 +44,31 @@ apply_kitty_theme_to_config() {
temp_kitty_config_file=$(mktemp)
cp "$kitty_config" "$temp_kitty_config_file"
local include_target
include_target="include ./kitty-themes/$(basename "$theme_file_path_to_apply")"
if grep -q -E '^[#[:space:]]*include\s+\./kitty-themes/.*\.conf' "$temp_kitty_config_file"; then
sed -i -E "s|^([#[:space:]]*include\s+\./kitty-themes/).*\.conf|include ./kitty-themes/$theme_name_to_apply.conf|g" "$temp_kitty_config_file"
sed -i -E "s|^([#[:space:]]*include\s+\./kitty-themes/).*\.conf|$include_target|g" "$temp_kitty_config_file"
else
if [ -s "$temp_kitty_config_file" ] && [ "$(tail -c1 "$temp_kitty_config_file")" != "" ]; then
echo >>"$temp_kitty_config_file"
fi
echo "include ./kitty-themes/$theme_name_to_apply.conf" >>"$temp_kitty_config_file"
echo "$include_target" >>"$temp_kitty_config_file"
fi
cp "$temp_kitty_config_file" "$kitty_config"
rm "$temp_kitty_config_file"
if pidof kitty >/dev/null 2>&1; then
if [ "$apply_mode" = "apply" ] && command -v kitty >/dev/null 2>&1; then
kitty @ load-config >/dev/null 2>&1
kitty @ set-colors --all --configured "$theme_file_path_to_apply" >/dev/null 2>&1
fi
for pid_kitty in $(pidof kitty); do
if [ -n "$pid_kitty" ]; then
kill -SIGUSR1 "$pid_kitty"
fi
done
fi
return 0
}
@ -65,7 +86,8 @@ 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$//' | sort)
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" "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."
@ -73,7 +95,12 @@ if [ ${#available_theme_names[@]} -eq 0 ]; then
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")
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" = "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
for i in "${!available_theme_names[@]}"; do
@ -85,14 +112,6 @@ if [ -n "$current_active_theme_name" ]; then
fi
while true; do
theme_to_preview_now="${available_theme_names[$current_selection_index]}"
if ! apply_kitty_theme_to_config "$theme_to_preview_now"; then
echo "$original_kitty_config_content_backup" >"$kitty_config"
for pid_kitty in $(pidof kitty); do if [ -n "$pid_kitty" ]; then kill -SIGUSR1 "$pid_kitty"; fi; done
notify_user "$iDIR/error.png" "Preview Error" "Failed to apply $theme_to_preview_now. Reverted."
exit 1
fi
rofi_input_list=""
for theme_name_in_list in "${available_theme_names[@]}"; do
@ -104,16 +123,24 @@ while true; do
rofi -dmenu -i \
-format 'i' \
-p "Kitty Theme" \
-mesg "Preview: ${theme_to_preview_now} | Enter: Preview | Ctrl+S: Apply & Exit | Esc: Cancel" \
-mesg "Enter: Preview | Ctrl+S: Apply & Exit | Esc: Cancel" \
-config "$rofi_theme_for_this_script" \
-selected-row "$current_selection_index" \
-kb-custom-1 "Control+s") # MODIFIED HERE: Changed to Control+s for custom action 1
-kb-custom-1 "Control+s")
rofi_exit_code=$?
if [ $rofi_exit_code -eq 0 ]; then
if [[ "$chosen_index_from_rofi" =~ ^[0-9]+$ ]] && [ "$chosen_index_from_rofi" -lt "${#available_theme_names[@]}" ]; then
current_selection_index="$chosen_index_from_rofi"
theme_to_preview_now="${available_theme_names[$current_selection_index]}"
if ! apply_kitty_theme_to_config "$theme_to_preview_now" "preview"; then
echo "$original_kitty_config_content_backup" >"$kitty_config"
for pid_kitty in $(pidof kitty); do if [ -n "$pid_kitty" ]; then kill -SIGUSR1 "$pid_kitty"; fi; done
notify_user "$iDIR/error.png" "Preview Error" "Failed to apply $theme_to_preview_now. Reverted."
exit 1
fi
continue
else
:
fi
@ -123,6 +150,7 @@ while true; do
for pid_kitty in $(pidof kitty); do if [ -n "$pid_kitty" ]; then kill -SIGUSR1 "$pid_kitty"; fi; done
break
elif [ $rofi_exit_code -eq 10 ]; then # This is the exit code for -kb-custom-1
apply_kitty_theme_to_config "$theme_to_preview_now" "apply"
notify_user "$iDIR/ja.png" "Kitty Theme Applied" "$theme_to_preview_now"
break
else

View file

@ -1,28 +1,39 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
local_dir="$HOME/.config/hypr"
iDIR="$HOME/.config/swaync/images/"
local_version=$(ls $local_dir/v* 2>/dev/null | sort -V | tail -n 1 | sed 's/.*v\(.*\)/\1/')
local_version=$(find "$local_dir" -maxdepth 1 -name 'v*' -printf '%f\n' 2>/dev/null | sort -V | tail -n 1 | sed 's/^v//')
KooL_Dots_DIR="$HOME/Hyprland-Dots"
# exit if cannot find local version
if [ -z "$local_version" ]; then
notify-send -i "$iDIR/error.png" "ERROR "!?!?!!"" "Unable to find KooL's dots version . exiting.... "
notify-send -i "$iDIR/error.png" 'ERROR !?!?!!' "Unable to find KooL's dots version. Exiting."
exit 1
fi
# GitHub URL - KooL's dots
branch="main"
github_url="https://github.com/JaKooLit/Hyprland-Dots/tree/$branch/config/hypr/"
github_url="https://github.com/LinuxBeginnings/Hyprland-Dots/tree/$branch/config/hypr/"
# Check for required tools (curl)
if ! command -v curl &> /dev/null; then
notify-send -i "$iDIR/error.png" "Need curl:" "curl not found. Please install curl."
exit 1
fi
# Fetch the version from GitHub URL - KooL's dots
github_version=$(curl -s $github_url | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+' | sort -V | tail -n 1 | sed 's/v//')
github_version=$(curl -fsSL -A "Mozilla/5.0" "$github_url" | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+' | sort -V | tail -n 1 | sed 's/v//')
# Cant find GitHub URL - KooL's dots version
if [ -z "$github_version" ]; then
notify-send -i "$iDIR/error.png" 'KooL Hyprland:' "Unable to determine GitHub version."
exit 1
fi
@ -39,13 +50,13 @@ else
case "$response" in
"action1")
if [ -d $KooL_Dots_DIR ]; then
if [ -d "$KooL_Dots_DIR" ]; then
if ! command -v kitty &> /dev/null; then
notify-send -i "$iDIR/error.png" "E-R-R-O-R" "Kitty terminal not found. Please install Kitty terminal."
exit 1
fi
kitty -e bash -c "
cd $KooL_Dots_DIR &&
cd \"$KooL_Dots_DIR\" &&
git stash &&
git pull &&
./copy.sh &&
@ -58,8 +69,8 @@ else
exit 1
fi
kitty -e bash -c "
git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots.git $KooL_Dots_DIR &&
cd $KooL_Dots_DIR &&
git clone --depth=1 https://github.com/LinuxBeginnings/Hyprland-Dots.git $KooL_Dots_DIR &&
cd \"$KooL_Dots_DIR\" &&
chmod +x copy.sh &&
./copy.sh &&
notify-send -u critical -i "$iDIR/ja.png" 'Update Completed:' 'Kindly log out and relogin to take effect'

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
@ -22,7 +27,154 @@ UserScripts="$HOME/.config/hypr/UserScripts"
# Function to show info notification
show_info() {
if [[ -f "$iDIR/info.png" ]]; then
notify-send -i "$iDIR/info.png" "Info" "$1"
else
notify-send "Info" "$1"
fi
}
# Function to toggle Rainbow Borders script availability and refresh UI components
toggle_rainbow_borders() {
local rainbow_script="$UserScripts/RainbowBorders.sh"
local disabled_sh_bak="${rainbow_script}.bak" # RainbowBorders.sh.bak
local disabled_bak_sh="$UserScripts/RainbowBorders.bak.sh" # RainbowBorders.bak.sh (created by copy.sh when disabled)
local refresh_script="$scriptsDir/Refresh.sh"
local status=""
# If both disabled variants exist, keep the newer one to avoid ambiguity
if [[ -f "$disabled_sh_bak" && -f "$disabled_bak_sh" ]]; then
if [[ "$disabled_sh_bak" -nt "$disabled_bak_sh" ]]; then
rm -f "$disabled_bak_sh"
else
rm -f "$disabled_sh_bak"
fi
fi
if [[ -f "$rainbow_script" ]]; then
# Currently enabled -> disable to canonical .sh.bak
if mv "$rainbow_script" "$disabled_sh_bak"; then
status="disabled"
if command -v hyprctl &>/dev/null; then
hyprctl reload >/dev/null 2>&1 || true
fi
fi
elif [[ -f "$disabled_sh_bak" ]]; then
# Disabled (.sh.bak) -> enable
if mv "$disabled_sh_bak" "$rainbow_script"; then
status="enabled"
fi
elif [[ -f "$disabled_bak_sh" ]]; then
# Disabled (.bak.sh) -> enable (normalize to .sh)
if mv "$disabled_bak_sh" "$rainbow_script"; then
status="enabled"
fi
else
show_info "RainbowBorders script not found in $UserScripts (checked .sh, .sh.bak, .bak.sh)."
return
fi
# Run refresh if available, otherwise apply borders directly
if [[ -x "$refresh_script" ]]; then
"$refresh_script" >/dev/null 2>&1 &
elif [[ "$current" != "disabled" && -x "$rainbow_script" ]]; then
"$rainbow_script" >/dev/null 2>&1 &
fi
if [[ -n "$status" ]]; then
show_info "Rainbow Borders ${status}."
fi
}
# Submenu to choose Rainbow Borders mode (disable, wallust_random, rainbow, gradient_flow)
rainbow_borders_menu() {
local rainbow_script="$UserScripts/RainbowBorders.sh"
local disabled_sh_bak="${rainbow_script}.bak"
local disabled_bak_sh="$UserScripts/RainbowBorders.bak.sh"
local refresh_script="$scriptsDir/Refresh.sh"
# Determine current mode/status (internal)
local current="disabled"
if [[ -f "$rainbow_script" ]]; then
current=$(grep -E '^EFFECT_TYPE=' "$rainbow_script" 2>/dev/null | sed -E 's/^EFFECT_TYPE="?([^"]*)"?/\1/')
[[ -z "$current" ]] && current="unknown"
fi
# Map internal mode to friendly display
local current_display="$current"
case "$current" in
wallust_random) current_display="Wallust Color" ;;
rainbow) current_display="Original Rainbow" ;;
gradient_flow) current_display="Gradient Flow" ;;
disabled) current_display="Disabled" ;;
esac
# Build options and prompt
local options="Disable Rainbow Borders\nWallust Color\nOriginal Rainbow\nGradient Flow"
local choice
choice=$(printf "%b" "$options" | rofi -i -dmenu -config "$rofi_theme" -mesg "Rainbow Borders: current = $current_display")
[[ -z "$choice" ]] && return
local previous="$current"
case "$choice" in
"Disable Rainbow Borders")
if [[ -f "$rainbow_script" ]]; then
mv "$rainbow_script" "$disabled_sh_bak"
fi
current="disabled"
if command -v hyprctl &>/dev/null; then
hyprctl reload >/dev/null 2>&1 || true
fi
;;
"Wallust Color"|"Original Rainbow"|"Gradient Flow")
local mode=""
case "$choice" in
"Wallust Color") mode="wallust_random" ;;
"Original Rainbow") mode="rainbow" ;;
"Gradient Flow") mode="gradient_flow" ;;
esac
# Ensure script is enabled
if [[ ! -f "$rainbow_script" ]]; then
if [[ -f "$disabled_sh_bak" ]]; then
mv "$disabled_sh_bak" "$rainbow_script"
elif [[ -f "$disabled_bak_sh" ]]; then
mv "$disabled_bak_sh" "$rainbow_script"
else
show_info "RainbowBorders script not found in $UserScripts."
return
fi
fi
# Update EFFECT_TYPE in place; insert if missing
if grep -q '^EFFECT_TYPE=' "$rainbow_script" 2>/dev/null; then
sed -i 's/^EFFECT_TYPE=.*/EFFECT_TYPE="'"$mode"'"/' "$rainbow_script"
else
if head -n1 "$rainbow_script" | grep -q '^#!'; then
sed -i '1a EFFECT_TYPE="'"$mode"'"' "$rainbow_script"
else
sed -i '1i EFFECT_TYPE="'"$mode"'"' "$rainbow_script"
fi
fi
# Set current to chosen mode
current="$mode"
;;
*)
return ;;
esac
# Run refresh if available
if [[ -x "$refresh_script" ]]; then
"$refresh_script" >/dev/null 2>&1 &
fi
# Apply mode immediately (in case refresh doesn't trigger it)
if [[ "$current" != "disabled" && -x "$rainbow_script" ]]; then
"$rainbow_script" >/dev/null 2>&1 &
fi
# No notifications; mode is shown in the menu
}
# Function to display the menu options without numbers
@ -44,7 +196,9 @@ Edit System Default Startup Apps
Edit System Default Window Rules
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)
@ -54,8 +208,10 @@ Choose Hyprland Animations
Choose Monitor Profiles
Choose Rofi Themes
Search for Keybinds
Toggle Waybar Weather units (C/F)
Toggle Game Mode
Switch Dark-Light Theme
Rainbow Borders Mode
EOF
}
@ -78,7 +234,9 @@ main() {
"Edit System Default Startup Apps") file="$configs/Startup_Apps.conf" ;;
"Edit System Default Window Rules") file="$configs/WindowRules.conf" ;;
"Edit System Default Settings") file="$configs/SystemSettings.conf" ;;
"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"
@ -113,8 +271,10 @@ main() {
"Choose Monitor Profiles") $scriptsDir/MonitorProfiles.sh ;;
"Choose Rofi Themes") $scriptsDir/RofiThemeSelector.sh ;;
"Search for Keybinds") $scriptsDir/KeyBinds.sh ;;
"Toggle Waybar Weather units (C/F)") $scriptsDir/Toggle-weather-waybar-units.sh ;;
"Toggle Game Mode") $scriptsDir/GameMode.sh ;;
"Switch Dark-Light Theme") $scriptsDir/DarkLight.sh ;;
"Rainbow Borders Mode") rainbow_borders_menu ;;
*) return ;; # Do nothing for invalid choices
esac

View file

@ -1,11 +1,16 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
# Ensure weather cache is up-to-date before locking (Waybar/lockscreen readers)
bash "$HOME/.config/hypr/UserScripts/WeatherWrap.sh" >/dev/null 2>&1
bash "$HOME/.config/hypr/UserScripts/WeatherWrap.sh" >/dev/null 2>&1 &
loginctl lock-session

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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

View file

@ -1,11 +1,16 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# ==================================================
# 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
# 1) Try Quickshell via IPC (works if QS is running and listening)
if pgrep -x quickshell >/dev/null 2>&1; then
if pgrep -x qs >/dev/null 2>&1; then
if qs ipc -c overview call overview toggle >/dev/null 2>&1; then
exit 0
fi

View file

@ -0,0 +1,521 @@
#!/usr/bin/env bash
# ==================================================
# KoolDots (2026)
# Project URL: https://github.com/LinuxBeginnings
# License: GNU GPLv3
# SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
# 💫 https://github.com/LinuxBeginnings 💫 #
# Polkit Diagnostic & Triage Script #
# Default values
OUTFILE="$HOME/Downloads/Polkit-diag.txt"
DRY_RUN=0
INSTALL_OVERRIDE=0
FORCE_OVERRIDE=0
# Systemd override details for hyprpolkitagent
OVERRIDE_DIR="$HOME/.config/systemd/user/hyprpolkitagent.service.d"
OVERRIDE_FILE="$OVERRIDE_DIR/override.conf"
OVERRIDE_CONTENT="[Unit]
After=
After=dbus.service graphical-session.target
PartOf=graphical-session.target
[Install]
WantedBy=graphical-session.target"
print_help() {
cat << EOF
Usage: $(basename "$0") [OPTIONS]
Gather diagnostic information for polkit issues and optionally apply a systemd override.
This script is modular and extensible for different Linux distributions.
Options:
-h, --help Show this help message and exit
-d, --dry-run Run without making changes (output to stdout instead of file)
--install-override Install the systemd override for hyprpolkitagent if not already present
--force-override Overwrite the existing systemd override for hyprpolkitagent
-o, --output FILE Specify custom output file (default: $HOME/Downloads/Polkit-diag.txt)
EOF
}
setup_output() {
if [[ $DRY_RUN -eq 1 ]]; then
echo "================================================="
echo " [Dry Run] Diagnostics will be printed to stdout."
echo "================================================="
exec 3>&1
else
local outdir
outdir=$(dirname "$OUTFILE")
# Check and create directory if it doesn't exist
if [[ ! -d "$outdir" ]]; then
echo "Directory $outdir does not exist. Creating..."
mkdir -p "$outdir"
fi
# Backup existing file
if [[ -f "$OUTFILE" ]]; then
local backup_file="${OUTFILE}.bak.$(date +%Y%m%d%H%M%S)"
echo "Existing output file found. Backing up to: $backup_file"
mv "$OUTFILE" "$backup_file"
fi
echo "Diagnostics will be saved to: $OUTFILE"
exec 3> "$OUTFILE"
fi
}
apply_override() {
if [[ $INSTALL_OVERRIDE -eq 1 ]]; then
local msg="\n=== Systemd Override for hyprpolkitagent ==="
[[ $DRY_RUN -eq 0 ]] && echo -e "$msg" >&3
echo -e "$msg"
local out
if systemctl --user is-enabled hyprpolkitagent.service >/dev/null 2>&1; then
msg="[STATUS] hyprpolkitagent.service is currently enabled."
else
msg="[STATUS] hyprpolkitagent.service is NOT enabled. You may need to enable it."
fi
[[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3
echo "$msg"
if [[ -f "$OVERRIDE_FILE" && $FORCE_OVERRIDE -eq 0 ]]; then
msg="[INFO] Override already exists at $OVERRIDE_FILE."
[[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg"
msg="[ACTION] Use --force-override to overwrite it."
[[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg"
else
if [[ -f "$OVERRIDE_FILE" && $FORCE_OVERRIDE -eq 1 ]]; then
msg="[CONFIRM] Force override requested. Overwriting existing override..."
[[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg"
fi
msg="[ACTION] Installing override to $OVERRIDE_FILE..."
[[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg"
if [[ $DRY_RUN -eq 0 ]]; then
# Capture dir creation
if out=$(mkdir -p "$OVERRIDE_DIR" 2>&1); then
msg=" [OK] Created/verified directory $OVERRIDE_DIR."
else
msg=" [ERROR] Failed to create directory $OVERRIDE_DIR.\n Details: $out"
fi
echo -e "$msg" >&3; echo -e "$msg"
# Capture file write
if out=$(echo "$OVERRIDE_CONTENT" > "$OVERRIDE_FILE" 2>&1); then
msg=" [OK] Successfully wrote override file."
else
msg=" [ERROR] Failed to write override file.\n Details: $out"
fi
echo -e "$msg" >&3; echo -e "$msg"
# Capture daemon-reload
if out=$(systemctl --user daemon-reload 2>&1); then
msg=" [OK] Systemd daemon reloaded."
else
msg=" [ERROR] Failed to reload systemd daemon.\n Details: $out"
fi
echo -e "$msg" >&3; echo -e "$msg"
# Capture restart
if systemctl --user is-active --quiet hyprpolkitagent.service; then
msg="[ACTION] Restarting hyprpolkitagent.service..."
[[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg"
if out=$(systemctl --user restart hyprpolkitagent.service 2>&1); then
msg=" [OK] Service restarted successfully."
else
msg=" [ERROR] Failed to restart service.\n Details: $out"
fi
echo -e "$msg" >&3; echo -e "$msg"
else
msg="[INFO] Service is not currently active, skipping restart step."
[[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg"
fi
else
msg="[Dry Run] Would create $OVERRIDE_FILE and reload systemd daemon."
echo "$msg"
fi
fi
fi
}
gather_general_info() {
echo -e "\n=======================================" >&3
echo -e " General System Information" >&3
echo -e "=======================================" >&3
echo "Date: $(date)" >&3
echo -e "\n--- Kernel ---" >&3
uname -a >&3
echo -e "\n--- OS Release ---" >&3
cat /etc/os-release >&3
echo -e "\n=======================================" >&3
echo -e " Polkit Service Status" >&3
echo -e "=======================================" >&3
echo -e "\n--- System Polkit Service ---" >&3
systemctl status polkit.service --no-pager >&3 2>&1 || true
echo -e "\n--- User Hyprpolkitagent Service ---" >&3
systemctl --user status hyprpolkitagent.service --no-pager >&3 2>&1 || true
echo -e "\n--- Running Polkit Processes ---" >&3
local polkit_procs
polkit_procs=$(ps aux | grep -i '[p]olkit')
if [[ -n "$polkit_procs" ]]; then
echo "$polkit_procs" >&3
# Check for conflicting agents
local kde_agent_running=0
local gnome_agent_running=0
local hypr_agent_running=0
if echo "$polkit_procs" | grep -q "polkit-kde-authentication-agent-1"; then
kde_agent_running=1
fi
if echo "$polkit_procs" | grep -q "polkit-gnome-authentication-agent-1"; then
gnome_agent_running=1
fi
if echo "$polkit_procs" | grep -q "hyprpolkitagent"; then
hypr_agent_running=1
fi
if [[ $hypr_agent_running -eq 1 && ($kde_agent_running -eq 1 || $gnome_agent_running -eq 1) ]]; then
echo -e "\n[!] CONFLICT DETECTED: Multiple polkit agents are running!" >&3
echo " Hyprpolkitagent is running alongside another desktop environment's agent." >&3
echo " Only ONE polkit agent can be registered at a time." >&3
if [[ $kde_agent_running -eq 1 ]]; then
echo " -> Found KDE polkit agent. You may need to disable it in Hyprland by adding 'NotShowIn=Hyprland;' to its autostart .desktop file." >&3
fi
if [[ $gnome_agent_running -eq 1 ]]; then
echo " -> Found GNOME polkit agent. You may need to disable it in Hyprland." >&3
fi
elif [[ $kde_agent_running -eq 1 && $hypr_agent_running -eq 0 ]]; then
echo -e "\n[!] WARNING: KDE polkit agent is running instead of hyprpolkitagent." >&3
echo " This can cause 'authentication agent already exists' errors if hyprpolkitagent tries to start later." >&3
fi
else
echo "No polkit processes found running." >&3
fi
echo -e "\n=======================================" >&3
echo -e " Recent Logs" >&3
echo -e "=======================================" >&3
echo -e "\n--- Journalctl (polkit.service) [Last 50 entries, warnings/errors] ---" >&3
journalctl -u polkit.service -n 50 --no-pager -p 4 >&3 2>&1 || echo "Could not fetch system polkit logs." >&3
echo -e "\n--- Journalctl (hyprpolkitagent.service) [Last 50 entries] ---" >&3
journalctl --user -u hyprpolkitagent.service -n 50 --no-pager >&3 2>&1 || echo "Could not fetch user hyprpolkitagent logs." >&3
}
# --- Modular Package Checking System ---
check_packages() {
local check_cmd="$1"
local install_msg="$2"
shift 2
local pkgs=("$@")
local missing_pkgs=()
for pkg in "${pkgs[@]}"; do
local out
if out=$(eval "$check_cmd \"$pkg\"" 2>/dev/null); then
# Print the first line of output as the installed info
echo "[INSTALLED] $(echo "$out" | head -n 1)" >&3
else
echo "[MISSING] $pkg" >&3
missing_pkgs+=("$pkg")
fi
done
if [[ ${#missing_pkgs[@]} -gt 0 ]]; then
echo -e "\nWARNING: The following packages are missing:" >&3
for mpkg in "${missing_pkgs[@]}"; do
echo " - $mpkg" >&3
done
echo "$install_msg ${missing_pkgs[*]}" >&3
return 1
fi
return 0
}
check_source_binaries() {
local bin_dir="$1"
shift
local bins=("$@")
local found_any=0
echo -e "\n--- Source Builds (${bin_dir}) ---" >&3
for bin in "${bins[@]}"; do
if [[ -x "${bin_dir}/${bin}" ]]; then
echo "[SOURCE] ${bin_dir}/${bin}" >&3
found_any=1
else
echo "[MISSING] ${bin_dir}/${bin}" >&3
fi
done
return $found_any
}
gather_arch_info() {
echo -e "\n=======================================" >&3
echo -e " Package Info (Arch Linux)" >&3
echo -e "=======================================" >&3
# Essential packages required for polkit & related UI
local pkgs=(
"qt5-declarative"
"qt5-quickcontrols2"
"qt6-declarative"
"hyprpolkitagent"
"polkit"
)
local aur_pkgs=(
"xfce-polkit"
)
local missing_any=0
echo -e "\n--- Official Repositories ---" >&3
check_packages "pacman -Q" "Install official packages by running: sudo pacman -S" "${pkgs[@]}" || missing_any=1
echo -e "\n--- AUR ---" >&3
check_packages "pacman -Q" "Install AUR packages by running: yay -S" "${aur_pkgs[@]}" || missing_any=1
if [[ $missing_any -eq 0 ]]; then
echo -e "\nSUCCESS: All expected packages are installed." >&3
fi
}
gather_ubuntu_info() {
echo -e "\n=======================================" >&3
echo -e " Package Info (Ubuntu/PPA)" >&3
echo -e "=======================================" >&3
# Essential packages required for polkit & related UI
local pkgs=(
"qml-module-qtqml"
"qml-module-qtquick2"
"qml-module-qtquick-controls"
"qml-module-qtquick-controls2"
"qml-module-qtquick-layouts"
"qml6-module-qtqml"
"qml6-module-qtquick"
"qml6-module-qtquick-controls"
"hyprpolkitagent"
"polkit"
)
local extra_pkgs=(
"xfce-polkit"
"polkit-kde-agent-1"
"mate-polkit"
)
local missing_any=0
echo -e "\n--- Official Repositories / PPA ---" >&3
check_packages "dpkg -s" "Install packages by running: sudo apt install" "${pkgs[@]}" || missing_any=1
echo -e "\n--- Extra/Alternative ---" >&3
check_packages "dpkg -s" "Install extra packages by running: sudo apt install" "${extra_pkgs[@]}" || missing_any=1
echo "[INFO] lxqt-polkit (optional) — large dependency set." >&3
if [[ $missing_any -eq 0 ]]; then
echo -e "\nSUCCESS: All expected packages are installed." >&3
fi
}
gather_debian_info() {
echo -e "\n=======================================" >&3
echo -e " Package Info (Debian/Ubuntu)" >&3
echo -e "=======================================" >&3
local source_bins=(
"hyprpolkitagent"
)
local source_found=0
if check_source_binaries "/usr/local/bin" "${source_bins[@]}"; then
source_found=1
fi
# Essential packages required for polkit & related UI
local pkgs=(
"qml-module-qtqml"
"qml-module-qtquick2"
"qml-module-qtquick-controls"
"qml-module-qtquick-controls2"
"qml-module-qtquick-layouts"
"qml6-module-qtqml"
"qml6-module-qtquick"
"qml6-module-qtquick-controls"
"polkit"
)
local extra_pkgs=(
"xfce4-polkit"
"lxqt-policykit"
"polkit-kde-agent-1"
"mate-polkit"
)
local missing_any=0
echo -e "\n--- Official Repositories ---" >&3
if [[ $source_found -eq 0 ]]; then
pkgs+=("hyprpolkitagent")
else
echo "[INFO] hyprpolkitagent found in /usr/local/bin (source build). Skipping dpkg check for it." >&3
fi
check_packages "dpkg -s" "Install packages by running: sudo apt install" "${pkgs[@]}" || missing_any=1
echo -e "\n--- Extra/Alternative ---" >&3
check_packages "dpkg -s" "Install extra packages by running: sudo apt install" "${extra_pkgs[@]}" || missing_any=1
if [[ $missing_any -eq 0 ]]; then
echo -e "\nSUCCESS: All expected packages are installed." >&3
fi
}
gather_fedora_info() {
echo -e "\n=======================================" >&3
echo -e " Package Info (Fedora)" >&3
echo -e "=======================================" >&3
# Essential packages required for polkit & related UI
local pkgs=(
"qt5-qtdeclarative"
"qt5-qtquickcontrols2"
"qt6-qtdeclarative"
"hyprpolkitagent"
"polkit"
)
local extra_pkgs=(
"xfce-polkit"
)
local missing_any=0
echo -e "\n--- Official Repositories ---" >&3
check_packages "rpm -q" "Install packages by running: sudo dnf install" "${pkgs[@]}" || missing_any=1
echo -e "\n--- Extra/Alternative ---" >&3
check_packages "rpm -q" "Install extra packages by running: sudo dnf install" "${extra_pkgs[@]}" || missing_any=1
if [[ $missing_any -eq 0 ]]; then
echo -e "\nSUCCESS: All expected packages are installed." >&3
fi
}
detect_os() {
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
else
OS="unknown"
fi
}
# ----------------------------------------------------------------------------
# Main Execution
# ----------------------------------------------------------------------------
# Parse arguments
while [[ "$#" -gt 0 ]]; do
case "$1" in
-h|--help)
print_help
exit 0
;;
-d|--dry-run)
DRY_RUN=1
;;
--install-override)
INSTALL_OVERRIDE=1
;;
--force-override)
FORCE_OVERRIDE=1
INSTALL_OVERRIDE=1
;;
-o|--output)
if [[ -n "$2" && "$2" != -* ]]; then
OUTFILE="$2"
shift
else
echo "Error: Argument for $1 is missing" >&2
exit 1
fi
;;
*)
echo "Unknown option: $1" >&2
print_help
exit 1
;;
esac
shift
done
setup_output
echo "Starting Polkit Diagnostic Script..." >&3
# Optional apply override logic
if [[ $INSTALL_OVERRIDE -eq 1 ]]; then
apply_override
fi
# Gather general info
gather_general_info
# Gather OS-specific package info
detect_os
case "$OS" in
arch|artix|manjaro|endeavouros|cachyos)
gather_arch_info
;;
debian)
gather_debian_info
;;
ubuntu|pop|linuxmint)
gather_ubuntu_info
;;
fedora)
gather_fedora_info
;;
opensuse*)
echo -e "\n=======================================" >&3
echo -e " Package Info ($OS)" >&3
echo -e "=======================================" >&3
echo "OpenSUSE package check is pending implementation." >&3
;;
nixos)
echo -e "\n=======================================" >&3
echo -e " Package Info ($OS)" >&3
echo -e "=======================================" >&3
echo "NixOS configuration check is pending implementation." >&3
;;
*)
echo -e "\n=======================================" >&3
echo -e " Package Info" >&3
echo -e "=======================================" >&3
echo "Unknown or unsupported OS: $OS. Skipping package checks." >&3
;;
esac
echo -e "\nDiagnostics completed at $(date)" >&3
if [[ $DRY_RUN -eq 0 ]]; then
echo "================================================="
echo " Diagnostic gathering complete!"
echo " Please review the output file: $OUTFILE"
echo "================================================="
fi

View file

@ -1,6 +1,26 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# 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."
echo "No valid polkit authentication agent executable found."

View file

@ -1,19 +1,55 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
# List of potential Polkit agent file paths
# 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
# 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
# Check if kvantum is specified globally but the QML module is missing
if [[ "${QT_STYLE_OVERRIDE:-}" == "kvantum" ]] || [[ "${QT_STYLE_OVERRIDE:-}" == "kvantum-dark" ]]; then
# Check common Qt5/Qt6 QML directories for the Kvantum module
if ! find /usr/lib /usr/lib64 /usr/share -type d -path "*/qml/*/kvantum" -print -quit 2>/dev/null | grep -q .; then
echo "Kvantum QML module not found. Overriding QT_STYLE_OVERRIDE for Polkit to prevent crash."
export QT_STYLE_OVERRIDE=Fusion
fi
elif [ -z "${QT_STYLE_OVERRIDE:-}" ]; then
export QT_STYLE_OVERRIDE=Fusion
fi
# List of potential Polkit agent file paths (preferred order)
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/bin/xfce-polkit"
"/usr/lib/xfce4/polkit-agent/xfce-polkit"
"/usr/libexec/xfce-polkit"
"/usr/lib/polkit-gnome/polkit-gnome-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"
)
executed=false

View file

@ -1,16 +1,45 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
sleep 1
killall xdg-desktop-portal-hyprland
killall xdg-desktop-portal-wlr
killall xdg-desktop-portal-gnome
killall xdg-desktop-portal
sleep 1
/usr/lib/xdg-desktop-portal-hyprland &
/usr/libexec/xdg-desktop-portal-hyprland &
sleep 2
/usr/lib/xdg-desktop-portal &
/usr/libexec/xdg-desktop-portal &
set -euo pipefail
kill_quietly() {
killall -q "$1" 2>/dev/null || true
}
start_portal_binary() {
local description="$1"
shift
for candidate in "$@"; do
if [[ -x "$candidate" ]]; then
"$candidate" &
return 0
fi
done
echo "Warning: no $description binary found (checked: $*)" >&2
return 1
}
sleep 1
kill_quietly xdg-desktop-portal-hyprland
kill_quietly xdg-desktop-portal-wlr
kill_quietly xdg-desktop-portal-gnome
kill_quietly xdg-desktop-portal
sleep 1
start_portal_binary "xdg-desktop-portal-hyprland" \
/usr/lib/xdg-desktop-portal-hyprland \
/usr/libexec/xdg-desktop-portal-hyprland
sleep 2
start_portal_binary "xdg-desktop-portal" \
/usr/lib/xdg-desktop-portal \
/usr/libexec/xdg-desktop-portal

View file

@ -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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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,18 +19,17 @@ 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}"
fi
done
# added since wallust sometimes not applying
killall -SIGUSR2 waybar
# Added sleep for GameMode causing multiple waybar
sleep 0.1
# Clean up any Waybar-spawned cava instances (unique temp conf names)
pkill -f 'waybar-cava\..*\.conf' 2>/dev/null || true
# quit ags & relaunch ags
#ags -q && ags &
@ -33,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
# 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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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"

View file

@ -1,9 +1,18 @@
#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# ==================================================
# 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
config_file=$HOME/.config/hypr/UserConfigs/01-UserDefaults.conf
if ! command -v jq >/dev/null 2>&1; then
notify-send -u low "Rofi Search" "jq is required for URL encoding. Please install jq."
exit 1
fi
# Check if the config file exists
if [[ ! -f "$config_file" ]]; then
@ -32,5 +41,12 @@ if pgrep -x "rofi" >/dev/null; then
pkill rofi
fi
# Open Rofi and pass the selected query to xdg-open for Google search
echo "" | rofi -dmenu -config "$rofi_theme" -mesg "$msg" | xargs -I{} xdg-open $Search_Engine
# Open Rofi and pass the selected query to xdg-open for the configured search engine
query=$(printf '' | rofi -dmenu -config "$rofi_theme" -mesg "$msg")
if [[ -z "$query" ]]; then
exit 0
fi
encoded_query=$(printf '%s' "$query" | jq -sRr @uri)
xdg-open "${Search_Engine}${encoded_query}" >/dev/null 2>&1 &

Some files were not shown because too many files have changed in this diff Show more