Compare commits

..

16 commits

Author SHA1 Message Date
Petar Kapriš
0231e0718c Remove pomodoro related files
Currently using Solanum, so these are no longer necessary
2026-05-13 21:33:24 +02:00
Petar Kapriš
d68c5d0d0a Add ytdl options to https 2026-05-13 21:33:24 +02:00
Petar Kapriš
aa58c91206 Disable workspace_back_and_forth in hypr 2026-05-13 21:33:24 +02:00
Petar Kapriš
d1aa48acd7 Change browser in mimeapps to librewolf 2026-05-13 21:33:24 +02:00
Petar Kapriš
68bc595c8b hypr: accept all JaKooLit updates 2026-05-13 21:22:17 +02:00
Petar Kapriš
a6e1cf7ed0 wlogout: accept JaKooLit update 2026-05-13 20:59:35 +02:00
Petar Kapriš
952cb17005 waybar: waybar-weather, accept JaKooLit update 2026-05-13 20:58:03 +02:00
Petar Kapriš
7528fc1ef3 waybar: accept JaKooLit updates 2026-05-13 20:55:52 +02:00
Petar Kapriš
5c46f2e62a wallust: accept JaKooLit update 2026-05-13 20:44:46 +02:00
Petar Kapriš
fd205b3db5 swaync: accept JaKooLit updates 2026-05-13 20:43:12 +02:00
Petar Kapriš
61667e4f40 swappy: accept JaKooLit update 2026-05-13 20:42:25 +02:00
Petar Kapriš
4f1915f817 rofi: accept JaKooLit updates 2026-05-13 20:41:13 +02:00
Petar Kapriš
27ae3143be quickshell: accept JaKooLit update 2026-05-13 20:40:04 +02:00
Petar Kapriš
7c2af82416 fastfetch: accept JaKooLit updates 2026-05-13 20:35:42 +02:00
Petar Kapriš
3bb54dcb8b cava: accept jakoolit update 2026-05-13 07:22:00 +02:00
Petar Kapriš
2ef49ad89a btop: accept hyprland dots updates 2026-05-13 07:21:01 +02:00
345 changed files with 11574 additions and 2729 deletions

View file

@ -1,23 +1,18 @@
#? Config file for btop v.1.4.7 #? Config file for btop v. 1.2.13
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "Default" color_theme = "$HOME/.config/btop/themes/catppuccin_macchiato.theme"
#* If the theme set background should be shown, set to False if you want terminal background transparency. #* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = true theme_background = False
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = true truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not. #* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. #* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = false force_tty = False
#* Option to disable presets. Either the default preset, custom presets, or all presets.
#* "Off" All presets are enabled.
#* "Default" preset is disabled.#* "Custom" presets are disabled.#* "All" presets are disabled.
disable_presets = "Off"
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. #* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. #* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
@ -27,16 +22,10 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. #* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. #* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = false vim_keys = False
#* Disable all mouse events.
disable_mouse = false
#* Rounded corners on boxes, is ignored if TTY mode is ON. #* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = true rounded_corners = True
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
terminal_sync = true
#* Default symbols to use for graph creation, "braille", "block" or "tty". #* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts. #* "braille" offers the highest resolution but might not be included in all fonts.
@ -48,9 +37,6 @@ graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default" graph_symbol_cpu = "default"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default" graph_symbol_mem = "default"
@ -60,89 +46,74 @@ graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default" graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. #* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
shown_boxes = "cpu mem net proc" shown_boxes = "proc cpu mem net"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. #* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000 update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy" proc_sorting = "cpu direct"
#* Reverse sorting order, True or False. #* Reverse sorting order, True or False.
proc_reversed = false proc_reversed = False
#* Show processes as a tree. #* Show processes as a tree.
proc_tree = false proc_tree = False
#* Use the cpu graph colors in the process list. #* Use the cpu graph colors in the process list.
proc_colors = true proc_colors = True
#* Use a darkening gradient in the process list. #* Use a darkening gradient in the process list.
proc_gradient = true proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. #* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = false proc_per_core = False
#* Show process memory as bytes instead of percent. #* Show process memory as bytes instead of percent.
proc_mem_bytes = true proc_mem_bytes = True
#* Show cpu graph for each process. #* Show cpu graph for each process.
proc_cpu_graphs = true proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) #* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = false proc_info_smaps = False
#* Show proc box on left side of screen instead of right. #* Show proc box on left side of screen instead of right.
proc_left = false proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). #* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = false proc_filter_kernel = False
#* Should the process list follow the selected process when detailed view is open.
proc_follow_detailed = true
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = false
#* Should cpu and memory usage display be preserved for dead processes when paused.
keep_dead_proc_usage = false
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. #* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu. #* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto" cpu_graph_upper = "total"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. #* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu. #* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "Auto" cpu_graph_lower = "total"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted. #* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = true cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph. #* Set to True to completely disable the lower CPU graph.
cpu_single_graph = false cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top. #* Show cpu box at bottom of screen instead of top.
cpu_bottom = false cpu_bottom = False
#* Shows the system uptime in the CPU box. #* Shows the system uptime in the CPU box.
show_uptime = true show_uptime = True
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
show_cpu_watts = true
#* Show cpu temperature. #* Show cpu temperature.
check_temp = true check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. #* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto" cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. #* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = true show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. #* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. #* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
@ -154,133 +125,88 @@ cpu_core_map = ""
temp_scale = "celsius" temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. #* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = false base_10_sizes = True
#* Show CPU frequency. #* Show CPU frequency.
show_cpu_freq = true show_cpu_freq = True
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
freq_mode = "first"
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. #* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime #* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X" clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. #* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = true background_update = True
#* Custom cpu model name, empty string to disable. #* Custom cpu model name, empty string to disable.
custom_cpu_name = "" custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". #* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" #* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
disks_filter = "" disks_filter = ""
#* Show graphs instead of meters for memory values. #* Show graphs instead of meters for memory values.
mem_graphs = true mem_graphs = True
#* Show mem box below net box instead of above. #* Show mem box below net box instead of above.
mem_below_net = false mem_below_net = False
#* Count ZFS ARC in cached and available memory. #* Count ZFS ARC in cached and available memory.
zfs_arc_cached = true zfs_arc_cached = True
#* If swap memory should be shown in memory box. #* If swap memory should be shown in memory box.
show_swap = true show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. #* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = true swap_disk = True
#* If mem box should be split to also show disks info. #* If mem box should be split to also show disks info.
show_disks = true show_disks = False
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = true only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical. #* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = true use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) #* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = false zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users. #* Set to true to show available disk space for privileged users.
disk_free_priv = false disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. #* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = true show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds. #* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = false io_mode = False
#* Set to True to show combined read/write io graphs in io mode. #* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = false io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". #* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1". #* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = "" io_graph_speeds = ""
#* Swap the positions of the upload and download speed graphs. When true, upload will be on top.
swap_upload_download = false
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. #* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100 net_download = 100
net_upload = 100 net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. #* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = true net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale. #* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = true net_sync = True
#* Starts with the Network Interface specified here. #* Starts with the Network Interface specified here.
net_iface = "" net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present. #* Show battery stats in top right if battery is present.
show_battery = true show_battery = False
#* Which battery to use if multiple are present. "Auto" for auto detection. #* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto" selected_battery = "Auto"
#* Show power stats of battery next to charge indicator. #* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
show_battery_watts = true
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING" log_level = "WARNING"
#* Automatically save current settings to config file on exit.
save_config_on_exit = true
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = true
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = true
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = true
#* Set which GPU vendors to show. Available values are "nvidia amd intel apple"
shown_gpus = "nvidia amd intel apple"
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""

View file

@ -1,4 +1,4 @@
# /* ----------- 💫 https://github.com/JaKooLit 💫 -------- */ # # /* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */ #
## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting. ## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.

View file

@ -0,0 +1,86 @@
/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 2
},
"type": "small"
},
"display": {
"separator": " -> "
},
"modules": [
"break",
{
"type": "title",
"keyWidth": 10,
"format": " {6}{7}{8}"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "kernel",
"key": " ",
"keyColor": "yellow"
},
{
"keyColor": "blue",
"key": " ",
"text": "echo Jakoolit: v${DOTS_VERSION}",
"type": "command"
},
{
"type": "wm",
"key": " ",
"keyColor": "magenta"
},
{
"type": "shell",
"key": " ",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": " ",
"keyColor": "blue"
},
/*
{
"type": "packages",
"key": "󰏖 ",
"keyColor": "yellow"
},
*/
{
"type": "memory",
"key": "󰍛 ",
"keyColor": "magenta",
// format: used / total
"format": "{1} / {2}"
},
{
"type": "uptime",
"key": "󰔛 ",
"keyColor": "green"
},
{
"type": "command",
"key": "󱦟 ",
"keyColor": "magenta",
"text": "echo $(( ($(date +%s) - $(stat -c %W /)) / 86400 )) days"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "custom",
"format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m "
},
"break"
]
}

View file

@ -1,86 +1,66 @@
/* ----------- 💫 https://github.com/JaKooLit 💫 -------- */ /**
*
*
*
*
*/
{ {
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": { "logo": {
// "type": "auto",
// x."source": "~/.config/fastfetch/logo.png",
// "height": 10,
"padding": { "padding": {
"top": 2 "top": 3,
"right": 2
}, },
"type": "small" "type": "small"
}, },
"display": { "display": {
"separator": " -> " "separator": " "
}, },
"modules": [ "modules": [
"break",
"break",
"break",
"break", "break",
{ {
"type": "title", "type": "os",
"keyWidth": 10, "key": " ",
"format": " {6}{7}{8}" "keyColor": "31"
},
{
"type": "custom",
"format": " ─────────────────────────── "
}, },
{ {
"type": "kernel", "type": "kernel",
"key": " ", "key": " ",
"keyColor": "yellow" "keyColor": "32"
}, },
{ {
"keyColor": "blue", "type": "shell",
"key": " ", "key": " ",
"text": "echo Jakoolit: v${DOTS_VERSION}", "keyColor": "34"
"type": "command" },
{
"type": "terminal",
"key": " ",
"keyColor": "35"
}, },
{ {
"type": "wm", "type": "wm",
"key": " ", "key": " ",
"keyColor": "magenta" "keyColor": "36"
},
{
"type": "shell",
"key": " ",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": " ",
"keyColor": "blue"
},
/*
{
"type": "packages",
"key": "󰏖 ",
"keyColor": "yellow"
},
*/
{
"type": "memory",
"key": "󰍛 ",
"keyColor": "magenta",
// format: used / total
"format": "{1} / {2}"
}, },
{ {
"type": "uptime", "type": "uptime",
"key": "󰔛 ", "key": " ",
"keyColor": "green" "keyColor": "31"
}, },
{ {
"type": "command", "type": "command",
"key": "󱦟 ", "key": " ",
"keyColor": "magenta", "keyColor": "36",
"text": "echo $(( ($(date +%s) - $(stat -c %W /)) / 86400 )) days" "shell": "/bin/bash",
}, "text": "echo \"KoolDots: v$DOTS_VERSION\""
{ },
"type": "custom", "break"
"format": " ─────────────────────────── "
},
{
"type": "custom",
"format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m "
},
"break"
] ]
} }

View file

@ -30,7 +30,7 @@
"type": "command", "type": "command",
"key": " ", "key": " ",
"keyColor": "blue", "keyColor": "blue",
"text": "echo JaKooLit Version: ${DOTS_VERSION}" "text": "echo LinuxBeginnings Version: ${DOTS_VERSION}"
}, },
{ {
"type": "wm", "type": "wm",

View file

@ -1,4 +1,4 @@
/* ----------- 💫 https://github.com/JaKooLit 💫 -------- */ /* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */
{ {
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
@ -30,7 +30,7 @@
{ {
"type": "command", "type": "command",
"key": " ├  ", "key": " ├  ",
"format": "echo JaKooLit Version: ${DOTS_VERSION}", "format": "echo LinuxBeginnings Version: ${DOTS_VERSION}",
"keyColor": "31" "keyColor": "31"
}, },
{ {

View file

@ -1,132 +1,131 @@
/* ----------- 💫 https://github.com/JaKooLit 💫 -------- */
{ {
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": { "logo": {
"padding": { // "type": "kitty",
"top": 1 // "source": "~/.config/fastfetch/ubuntu.png",
} // "height": 10,
}, // "width": 20,
"display": { "type": "small",
"separator": " 󰑃 " "padding": {
}, "top": 3,
"modules": [ "left": 1
"break", }
{
"type": "os",
"key": " DISTRO",
"keyColor": "yellow"
}, },
"modules": [
{ "break",
"type": "kernel", {
"key": "│ ├", "type": "custom",
"keyColor": "yellow" "format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐"
}, },
{ {
"type": "command", "type": "host",
"key": "│ ├", "key": " PC",
"text": "echo JaKooLit Version: ${DOTS_VERSION}", "keyColor": "green"
"keyColor": "yellow" },
}, {
{ "type": "cpu",
"type": "packages", "key": "│ ├",
"key": "│ ├󰏖", "keyColor": "green"
"keyColor": "yellow" },
}, {
{ "type": "gpu",
"type": "shell", "key": "│ ├󰍛",
"key": "│ └", "keyColor": "green"
"keyColor": "yellow" },
}, {
{ "type": "memory",
"type": "wm", "key": "│ ├󰍛",
"key": " DE/WM", "keyColor": "green"
"keyColor": "blue" },
}, {
{ "type": "disk",
"type": "wmtheme", "key": "└ └",
"key": "│ ├󰉼", "keyColor": "green"
"keyColor": "blue" },
}, {
{ "type": "custom",
"type": "icons", "format": "\u001b[90m└────────────────────────────────────────────────────┘"
"key": "│ ├󰀻", },
"keyColor": "blue" "break",
}, {
{ "type": "custom",
"type": "cursor", "format": "\u001b[90m┌──────────────────────Software──────────────────────┐"
"key": "│ ├", },
"keyColor": "blue" {
}, "type": "os",
{ "key": " OS",
"type": "terminalfont", "keyColor": "yellow"
"key": "│ ├", },
"keyColor": "blue" {
}, "type": "kernel",
{ "key": "│ ├",
"type": "terminal", "keyColor": "yellow"
"key": "│ └", },
"keyColor": "blue" {
}, "type": "bios",
{ "key": "│ ├",
"type": "host", "keyColor": "yellow"
"key": "󰌢 SYSTEM", },
"keyColor": "green" {
}, "type": "packages",
{ "key": "│ ├󰏖",
"type": "cpu", "keyColor": "yellow"
"key": "│ ├󰻠", },
"keyColor": "green" {
}, "type": "shell",
{ "key": "└ └",
"type": "gpu", "keyColor": "yellow"
"key": "│ ├󰻑", },
"format": "{2}", {
"keyColor": "green" "type": "wm",
}, "key": " WM",
{ "keyColor": "blue"
"type": "display", },
"key": "│ ├󰍹", {
"keyColor": "green", "type": "lm",
"compactType": "original-with-refresh-rate" "key": "│ ├",
}, "keyColor": "blue"
{ },
"type": "memory", {
"key": "│ ├󰾆", "type": "wmtheme",
"keyColor": "green" "key": "│ ├󰉼",
}, "keyColor": "blue"
{ },
"type": "swap", {
"key": "│ ├󰓡", "type": "terminal",
"keyColor": "green" "key": "└ └",
}, "keyColor": "blue"
{ },
"type": "uptime", {
"key": "│ ├󰅐", "type": "custom",
"keyColor": "green" "format": "\u001b[90m└────────────────────────────────────────────────────┘"
}, },
{ "break",
"type": "display", {
"key": "│ └󰍹", "type": "custom",
"keyColor": "green" "format": "\u001b[90m┌─────────────────Uptime / Age / DT──────────────────┐"
}, },
{ {
"type": "sound", "type": "command",
"key": " AUDIO", "key": " OS Age ",
"format": "{2}", "keyColor": "magenta",
"keyColor": "magenta" "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
}, },
{ {
"type": "player", "type": "uptime",
"key": "│ ├󰥠", "key": " Uptime ",
"keyColor": "magenta" "keyColor": "magenta"
}, },
{ {
"type": "media", "type": "command",
"key": "│ └󰝚", "key": " KoolDots Ver ",
"keyColor": "magenta" "text": "echo v${DOTS_VERSION}",
}, "keyColor": "magenta"
"break" },
{
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break"
] ]
} }

View file

@ -0,0 +1,132 @@
/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 1
}
},
"display": {
"separator": " 󰑃 "
},
"modules": [
"break",
{
"type": "os",
"key": " DISTRO",
"keyColor": "yellow"
},
{
"type": "kernel",
"key": "│ ├",
"keyColor": "yellow"
},
{
"type": "command",
"key": "│ ├",
"text": "echo LinuxBeginnings Version: ${DOTS_VERSION}",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "│ └",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " DE/WM",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "│ ├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue"
},
{
"type": "cursor",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "terminalfont",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "terminal",
"key": "│ └",
"keyColor": "blue"
},
{
"type": "host",
"key": "󰌢 SYSTEM",
"keyColor": "green"
},
{
"type": "cpu",
"key": "│ ├󰻠",
"keyColor": "green"
},
{
"type": "gpu",
"key": "│ ├󰻑",
"format": "{2}",
"keyColor": "green"
},
{
"type": "display",
"key": "│ ├󰍹",
"keyColor": "green",
"compactType": "original-with-refresh-rate"
},
{
"type": "memory",
"key": "│ ├󰾆",
"keyColor": "green"
},
{
"type": "swap",
"key": "│ ├󰓡",
"keyColor": "green"
},
{
"type": "uptime",
"key": "│ ├󰅐",
"keyColor": "green"
},
{
"type": "display",
"key": "│ └󰍹",
"keyColor": "green"
},
{
"type": "sound",
"key": " AUDIO",
"format": "{2}",
"keyColor": "magenta"
},
{
"type": "player",
"key": "│ ├󰥠",
"keyColor": "magenta"
},
{
"type": "media",
"key": "│ └󰝚",
"keyColor": "magenta"
},
"break"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

View file

@ -0,0 +1,150 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "kitty-direct",
"source": "$HOME/.config/fastfetch/images/Arch-Logo-2.png",
// "type": "small",
"width": 20,
"height": 10,
"padding": {
"top": 4,
"right": 4,
"left": 2,
},
},
"display": {
"separator": " ",
"color": {
"keys": "white",
},
"key": {
"width": 18,
},
"brightColor": false,
},
"modules": [
"break",
"break",
// Identity header
// {
// "type": "custom",
// "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
// },
// "break",
"break",
// System
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m",
},
{
"type": "os",
"key": " {icon} OS",
},
{
"type": "kernel",
"key": " {icon} Kernel",
},
{
"type": "command",
"key": " {icon} Hostname",
"text": "printf '%s@%s' \"$USER\" \"$(hostname)\"",
},
{
"type": "uptime",
"key": " {icon} Uptime",
},
{
"type": "packages",
"key": " {icon} Packages",
},
{
"type": "disk",
"key": " {icon} OS Age",
"folders": "/",
"format": "installed {create-time:10} ({days} days ago)",
},
"break",
// Hardware
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m",
},
{
"type": "host",
"key": " {icon} Machine",
"format": "{name}",
},
{
"type": "cpu",
"key": " {icon} CPU",
"showPeCoreCount": true,
},
{
"type": "gpu",
"key": " {icon} GPU",
},
{
"type": "memory",
"key": " {icon} RAM",
"percent": {
"type": 3,
"green": 40,
"yellow": 75,
},
},
{
"type": "disk",
"key": " {icon} Disk",
"format": "{size-used} / {size-total} ({size-percentage})",
},
"break",
// Desktop
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m",
},
{
"type": "wm",
"key": " {icon} WM",
},
{
"type": "command",
"key": "  KoolDots",
"text": "echo v${DOTS_VERSION}",
},
{
"type": "display",
"key": " {icon} Display",
"compactType": "original-with-refresh-rate",
},
{
"type": "shell",
"key": " {icon} Shell",
},
{
"type": "terminal",
"key": " {icon} Terminal",
},
{
"type": "editor",
"key": " {icon} Editor",
},
"break",
// Footer
// {
// black dark pink hot pink light pink white
// "type": "custom",
// "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
// },
"break",
],
}

View file

@ -0,0 +1,150 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "kitty-direct",
"source": "$HOME/.config/fastfetch/images/debian_swirl.png",
// "type": "small",
"width": 20,
"height": 10,
"padding": {
"top": 4,
"right": 4,
"left": 2,
},
},
"display": {
"separator": " ",
"color": {
"keys": "white",
},
"key": {
"width": 18,
},
"brightColor": false,
},
"modules": [
"break",
"break",
// Identity header
// {
// "type": "custom",
// "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
// },
// "break",
"break",
// System
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m",
},
{
"type": "os",
"key": " {icon} OS",
},
{
"type": "kernel",
"key": " {icon} Kernel",
},
{
"type": "command",
"key": " {icon} Hostname",
"text": "printf '%s@%s' \"$USER\" \"$(hostname)\"",
},
{
"type": "uptime",
"key": " {icon} Uptime",
},
{
"type": "packages",
"key": " {icon} Packages",
},
{
"type": "disk",
"key": " {icon} OS Age",
"folders": "/",
"format": "installed {create-time:10} ({days} days ago)",
},
"break",
// Hardware
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m",
},
{
"type": "host",
"key": " {icon} Machine",
"format": "{name}",
},
{
"type": "cpu",
"key": " {icon} CPU",
"showPeCoreCount": true,
},
{
"type": "gpu",
"key": " {icon} GPU",
},
{
"type": "memory",
"key": " {icon} RAM",
"percent": {
"type": 3,
"green": 40,
"yellow": 75,
},
},
{
"type": "disk",
"key": " {icon} Disk",
"format": "{size-used} / {size-total} ({size-percentage})",
},
"break",
// Desktop
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m",
},
{
"type": "wm",
"key": " {icon} WM",
},
{
"type": "command",
"key": "  KoolDots",
"text": "echo v${DOTS_VERSION}",
},
{
"type": "display",
"key": " {icon} Display",
"compactType": "original-with-refresh-rate",
},
{
"type": "shell",
"key": " {icon} Shell",
},
{
"type": "terminal",
"key": " {icon} Terminal",
},
{
"type": "editor",
"key": " {icon} Editor",
},
"break",
// Footer
// {
// black dark pink hot pink light pink white
// "type": "custom",
// "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
// },
"break",
],
}

View file

@ -0,0 +1,150 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "kitty-direct",
"source": "$HOME/.config/fastfetch/images/fedora.png",
// "type": "small",
"width": 20,
"height": 10,
"padding": {
"top": 4,
"right": 4,
"left": 2,
},
},
"display": {
"separator": " ",
"color": {
"keys": "white",
},
"key": {
"width": 18,
},
"brightColor": false,
},
"modules": [
"break",
"break",
// Identity header
// {
// "type": "custom",
// "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
// },
// "break",
"break",
// System
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m",
},
{
"type": "os",
"key": " {icon} OS",
},
{
"type": "kernel",
"key": " {icon} Kernel",
},
{
"type": "command",
"key": " {icon} Hostname",
"text": "printf '%s@%s' \"$USER\" \"$(hostname)\"",
},
{
"type": "uptime",
"key": " {icon} Uptime",
},
{
"type": "packages",
"key": " {icon} Packages",
},
{
"type": "disk",
"key": " {icon} OS Age",
"folders": "/",
"format": "installed {create-time:10} ({days} days ago)",
},
"break",
// Hardware
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m",
},
{
"type": "host",
"key": " {icon} Machine",
"format": "{name}",
},
{
"type": "cpu",
"key": " {icon} CPU",
"showPeCoreCount": true,
},
{
"type": "gpu",
"key": " {icon} GPU",
},
{
"type": "memory",
"key": " {icon} RAM",
"percent": {
"type": 3,
"green": 40,
"yellow": 75,
},
},
{
"type": "disk",
"key": " {icon} Disk",
"format": "{size-used} / {size-total} ({size-percentage})",
},
"break",
// Desktop
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m",
},
{
"type": "wm",
"key": " {icon} WM",
},
{
"type": "command",
"key": "  KoolDots",
"text": "echo v${DOTS_VERSION}",
},
{
"type": "display",
"key": " {icon} Display",
"compactType": "original-with-refresh-rate",
},
{
"type": "shell",
"key": " {icon} Shell",
},
{
"type": "terminal",
"key": " {icon} Terminal",
},
{
"type": "editor",
"key": " {icon} Editor",
},
"break",
// Footer
// {
// black dark pink hot pink light pink white
// "type": "custom",
// "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
// },
"break",
],
}

View file

@ -0,0 +1,150 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "kitty-direct",
"source": "$HOME/.config/fastfetch/images/gentoo1.png",
// "type": "small",
"width": 20,
"height": 10,
"padding": {
"top": 4,
"right": 4,
"left": 2
}
},
"display": {
"separator": " ",
"color": {
"keys": "white"
},
"key": {
"width": 18
},
"brightColor": false
},
"modules": [
"break",
"break",
// Identity header
// {
// "type": "custom",
// "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
// },
// "break",
"break",
// System
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m"
},
{
"type": "os",
"key": " {icon} OS"
},
{
"type": "kernel",
"key": " {icon} Kernel"
},
{
"type": "command",
"key": " {icon} Hostname",
"text": "printf '%s@%s' \"$USER\" \"$(hostname)\""
},
{
"type": "uptime",
"key": " {icon} Uptime"
},
{
"type": "packages",
"key": " {icon} Packages"
},
{
"type": "disk",
"key": " {icon} OS Age",
"folders": "/",
"format": "installed {create-time:10} ({days} days ago)"
},
"break",
// Hardware
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m"
},
{
"type": "host",
"key": " {icon} Machine",
"format": "{name}"
},
{
"type": "cpu",
"key": " {icon} CPU",
"showPeCoreCount": true
},
{
"type": "gpu",
"key": " {icon} GPU"
},
{
"type": "memory",
"key": " {icon} RAM",
"percent": {
"type": 3,
"green": 40,
"yellow": 75
}
},
{
"type": "disk",
"key": " {icon} Disk",
"format": "{size-used} / {size-total} ({size-percentage})"
},
"break",
// Desktop
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m"
},
{
"type": "wm",
"key": " {icon} WM"
},
{
"type": "command",
"key": "  KoolDots",
"text": "echo v${DOTS_VERSION}"
},
{
"type": "display",
"key": " {icon} Display",
"compactType": "original-with-refresh-rate"
},
{
"type": "shell",
"key": " {icon} Shell"
},
{
"type": "terminal",
"key": " {icon} Terminal"
},
{
"type": "editor",
"key": " {icon} Editor"
},
"break",
// Footer
// {
// black dark pink hot pink light pink white
// "type": "custom",
// "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
// },
"break"
]
}

View file

@ -0,0 +1,150 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "kitty-direct",
"source": "$HOME/.config/fastfetch/images/nixos.png",
// "type": "small",
"width": 20,
"height": 10,
"padding": {
"top": 4,
"right": 4,
"left": 2,
},
},
"display": {
"separator": " ",
"color": {
"keys": "white",
},
"key": {
"width": 18,
},
"brightColor": false,
},
"modules": [
"break",
"break",
// Identity header
// {
// "type": "custom",
// "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
// },
// "break",
"break",
// System
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m",
},
{
"type": "os",
"key": " {icon} OS",
},
{
"type": "kernel",
"key": " {icon} Kernel",
},
{
"type": "command",
"key": " {icon} Hostname",
"text": "printf '%s@%s' \"$USER\" \"$(hostname)\"",
},
{
"type": "uptime",
"key": " {icon} Uptime",
},
{
"type": "packages",
"key": " {icon} Packages",
},
{
"type": "disk",
"key": " {icon} OS Age",
"folders": "/",
"format": "installed {create-time:10} ({days} days ago)",
},
"break",
// Hardware
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m",
},
{
"type": "host",
"key": " {icon} Machine",
"format": "{name}",
},
{
"type": "cpu",
"key": " {icon} CPU",
"showPeCoreCount": true,
},
{
"type": "gpu",
"key": " {icon} GPU",
},
{
"type": "memory",
"key": " {icon} RAM",
"percent": {
"type": 3,
"green": 40,
"yellow": 75,
},
},
{
"type": "disk",
"key": " {icon} Disk",
"format": "{size-used} / {size-total} ({size-percentage})",
},
"break",
// Desktop
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m",
},
{
"type": "wm",
"key": " {icon} WM",
},
{
"type": "command",
"key": "  KoolDots",
"text": "echo v${DOTS_VERSION}",
},
{
"type": "display",
"key": " {icon} Display",
"compactType": "original-with-refresh-rate",
},
{
"type": "shell",
"key": " {icon} Shell",
},
{
"type": "terminal",
"key": " {icon} Terminal",
},
{
"type": "editor",
"key": " {icon} Editor",
},
"break",
// Footer
// {
// black dark pink hot pink light pink white
// "type": "custom",
// "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
// },
"break",
],
}

View file

@ -0,0 +1,150 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "kitty-direct",
"source": "$HOME/.config/fastfetch/images/ubuntu.png",
// "type": "small",
"width": 20,
"height": 10,
"padding": {
"top": 4,
"right": 4,
"left": 2
}
},
"display": {
"separator": " ",
"color": {
"keys": "white"
},
"key": {
"width": 18
},
"brightColor": false
},
"modules": [
"break",
"break",
// Identity header
// {
// "type": "custom",
// "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
// },
// "break",
"break",
// System
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m"
},
{
"type": "os",
"key": " {icon} OS"
},
{
"type": "kernel",
"key": " {icon} Kernel"
},
{
"type": "command",
"key": " {icon} Hostname",
"text": "printf '%s@%s' \"$USER\" \"$(hostname)\""
},
{
"type": "uptime",
"key": " {icon} Uptime"
},
{
"type": "packages",
"key": " {icon} Packages"
},
{
"type": "disk",
"key": " {icon} OS Age",
"folders": "/",
"format": "installed {create-time:10} ({days} days ago)"
},
"break",
// Hardware
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m"
},
{
"type": "host",
"key": " {icon} Machine",
"format": "{name}"
},
{
"type": "cpu",
"key": " {icon} CPU",
"showPeCoreCount": true
},
{
"type": "gpu",
"key": " {icon} GPU"
},
{
"type": "memory",
"key": " {icon} RAM",
"percent": {
"type": 3,
"green": 40,
"yellow": 75
}
},
{
"type": "disk",
"key": " {icon} Disk",
"format": "{size-used} / {size-total} ({size-percentage})"
},
"break",
// Desktop
{
"type": "custom",
"format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m"
},
{
"type": "wm",
"key": " {icon} WM"
},
{
"type": "command",
"key": "  KoolDots",
"text": "echo v${DOTS_VERSION}"
},
{
"type": "display",
"key": " {icon} Display",
"compactType": "original-with-refresh-rate"
},
{
"type": "shell",
"key": " {icon} Shell"
},
{
"type": "terminal",
"key": " {icon} Terminal"
},
{
"type": "editor",
"key": " {icon} Editor"
},
"break",
// Footer
// {
// black dark pink hot pink light pink white
// "type": "custom",
// "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
// },
"break"
]
}

View file

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # # /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# default Monitor config # default Monitor config
# Monitor Configuration # 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 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 # This is a file where you put your own default apps, default search Engine etc
@ -11,8 +16,8 @@
$edit=${EDITOR:-nano} $edit=${EDITOR:-nano}
# These two are for UserKeybinds.conf & Waybar Modules # These two are for UserKeybinds.conf & Waybar Modules
$term = foot # Terminal $term = kitty # Terminal
$files = nemo # File Manager $files = thunar # File Manager
# Default Search Engine for ROFI Search (SUPER S) # Default Search Engine for ROFI Search (SUPER S)
$Search_Engine = "https://www.google.com/search?q={}" $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/ # Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/
# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf # 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. # NOTE, THIS FILE IS BEING USED by disabling Laptop display monitor behaviour when closing lid.
# See notes on Laptops.conf # 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 # See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings
# These configs are mostly for laptops. This is addemdum to Keybinds.conf # 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 # 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 { animations {
enabled = yes 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 # Decoration Settings
# Hyprland Wiki Links # Hyprland Wiki Links
@ -37,13 +42,13 @@ decoration {
color_inactive = $color10 color_inactive = $color10
} }
blur { blur {
enabled = true enabled = true
size = 6 size = 6
passes = 2 passes = 3
ignore_opacity = true
new_optimizations = true new_optimizations = true
xray = true
ignore_opacity = true
special = true special = true
popups = 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 # 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 # 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 https://wiki.hyprland.org/Configuring/Keywords/ for more settings and variables
# See also Laptops.conf for laptops keybinds # See also Laptops.conf for laptops keybinds
# /* ---- ✴️ Variables ✴️ ---- */ #
$mainMod = SUPER $mainMod = SUPER
$scriptsDir = $HOME/.config/hypr/scripts $scriptsDir = $HOME/.config/hypr/scripts
$UserScripts = $HOME/.config/hypr/UserScripts $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 # User Settings
# This is where you put your own settings as this will not be touched during update # This is where you put your own settings as this will not be touched during update
# if the upgrade.sh is used. # if the upgrade.sh is used.
@ -44,3 +49,7 @@ input {
left_handed = 0 left_handed = 0
} }
} }
binds {
workspace_back_and_forth = false
}

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 # For window rules and layerrules
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# This file is used to add or overwrite window rules # This file is used to add or overwrite window rules
# This file will not be modified during dotfiles updates # 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 # NOTE: THIS IS NOT BEING SOURCED by hyprland
# It is only here as a guide if you want to do it manually # 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. # 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. # 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 #!/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) # RofiBeats - unified, dynamic UI (add, remove, manage, play)
mDIR="$HOME/Music/" mDIR="$HOME/Music/"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 */ # /* Calculator (using qalculate) and rofi */
# /* Submitted by: https://github.com/JosephArmas */ # /* Submitted by: https://github.com/JosephArmas */

View file

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

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 # 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 # 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 wallust_refresh=$HOME/.config/hypr/scripts/RefreshNoWaybar.sh
focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}') 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 if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then
echo "Usage: echo "Usage:
@ -17,7 +27,7 @@ if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then
exit 1 exit 1
fi 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_FPS=60
export SWWW_TRANSITION_TYPE=simple export SWWW_TRANSITION_TYPE=simple
@ -31,7 +41,7 @@ while true; do
done \ done \
| sort -n | cut -d':' -f2- \ | sort -n | cut -d':' -f2- \
| while read -r img; do | 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 # Regenerate colors from the exact image path to avoid cache races
$HOME/.config/hypr/scripts/WallustSwww.sh "$img" $HOME/.config/hypr/scripts/WallustSwww.sh "$img"
# Refresh UI components that depend on wallust output # Refresh UI components that depend on wallust output

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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) # Wallpaper Effects using ImageMagick (SUPER SHIFT W)
# Variables # Variables
@ -9,17 +14,26 @@ wallpaper_output="$HOME/.config/hypr/wallpaper_effects/.wallpaper_modified"
SCRIPTSDIR="$HOME/.config/hypr/scripts" SCRIPTSDIR="$HOME/.config/hypr/scripts"
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name') focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
rofi_theme="$HOME/.config/rofi/config-wallpaper-effect.rasi" 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 # Directory for swaync
iDIR="$HOME/.config/swaync/images" iDIR="$HOME/.config/swaync/images"
iDIRi="$HOME/.config/swaync/icons" iDIRi="$HOME/.config/swaync/icons"
# swww transition config # swww/awww transition config
FPS=60 FPS=60
TYPE="wipe" TYPE="wipe"
DURATION=2 DURATION=2
BEZIER=".43,1.19,1,.4" BEZIER=".43,1.19,1,.4"
SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" 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 # Define ImageMagick effects
declare -A effects=( declare -A effects=(
@ -45,7 +59,7 @@ declare -A effects=(
# Function to apply no effects # Function to apply no effects
no-effects() { no-effects() {
swww img -o "$focused_monitor" "$wallpaper_current" $SWWW_PARAMS && $WWW img -o "$focused_monitor" "$wallpaper_current" $SWWW_PARAMS &&
wait $! wait $!
wallust run "$wallpaper_current" -s && wallust run "$wallpaper_current" -s &&
wait $! wait $!
@ -83,7 +97,7 @@ main() {
done done
sleep 1 sleep 1
swww img -o "$focused_monitor" "$wallpaper_output" $SWWW_PARAMS & $WWW img -o "$focused_monitor" "$wallpaper_output" $SWWW_PARAMS &
sleep 2 sleep 2
@ -106,43 +120,3 @@ fi
main main
sleep 1 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 #!/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) # 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" SCRIPTSDIR="$HOME/.config/hypr/scripts"
# shellcheck source=/dev/null
. "$SCRIPTSDIR/WallpaperCmd.sh"
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name') 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[@]} ]} RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]}
# Transition config # Transition config (swww/awww)
FPS=30 FPS=30
TYPE="random" TYPE="random"
DURATION=1 DURATION=1
BEZIER=".43,1.19,1,.4" BEZIER=".43,1.19,1,.4"
SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" 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
"$WWW_CMD" img -o "$focused_monitor" "$RANDOMPICS" $SWWW_PARAMS
swww query || swww-daemon --format xrgb && swww img -o $focused_monitor ${RANDOMPICS} $SWWW_PARAMS
wait $! wait $!
"$SCRIPTSDIR/WallustSwww.sh" && "$SCRIPTSDIR/WallustSwww.sh" "$RANDOMPICS" &&
wait $! wait $!
sleep 2 sleep 2

View file

@ -1,23 +1,37 @@
#!/usr/bin/env bash #!/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) # This script for selecting wallpapers (SUPER W)
# WALLPAPERS PATH # WALLPAPERS PATH
terminal=kitty 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" SCRIPTSDIR="$HOME/.config/hypr/scripts"
# shellcheck source=/dev/null
. "$SCRIPTSDIR/WallpaperCmd.sh"
wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current"
wallpaper_link="$HOME/.config/rofi/.current_wallpaper"
# Directory for swaync # Directory for swaync
iDIR="$HOME/.config/swaync/images" iDIR="$HOME/.config/swaync/images"
iDIRi="$HOME/.config/swaync/icons" iDIRi="$HOME/.config/swaync/icons"
# swww transition config # swww/awww transition config
FPS=60 FPS=60
TYPE="any" TYPE="any"
DURATION=2 DURATION=2
BEZIER=".43,1.19,1,.4" BEZIER=".43,1.19,1,.4"
SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" 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 # Check if package bc exists
if ! command -v bc &>/dev/null; then if ! command -v bc &>/dev/null; then
@ -29,6 +43,9 @@ fi
rofi_theme="$HOME/.config/rofi/config-wallpaper.rasi" rofi_theme="$HOME/.config/rofi/config-wallpaper.rasi"
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name') 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 # Ensure focused_monitor is detected
if [[ -z "$focused_monitor" ]]; then if [[ -z "$focused_monitor" ]]; then
notify-send -i "$iDIR/error.png" "E-R-R-O-R" "Could not detect focused monitor" 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 existing wallpaper daemons for video
kill_wallpaper_for_video() { kill_wallpaper_for_video() {
swww kill 2>/dev/null "$WWW_CMD" kill 2>/dev/null
pkill mpvpaper 2>/dev/null pkill mpvpaper 2>/dev/null
pkill swaybg 2>/dev/null pkill swaybg 2>/dev/null
pkill hyprpaper 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) -iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" -o -iname "*.webm" \) -print0)
RANDOM_PIC="${PICS[$((RANDOM % ${#PICS[@]}))]}" 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_command="rofi -i -show -dmenu -config $rofi_theme -theme-str $rofi_override" 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() { menu() {
IFS=$'\n' sorted_options=($(sort <<<"${PICS[*]}")) 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 for pic_path in "${sorted_options[@]}"; do
pic_name=$(basename "$pic_path") pic_name=$(basename "$pic_path")
@ -98,49 +130,6 @@ menu() {
done 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() { modify_startup_config() {
local selected_file="$1" local selected_file="$1"
@ -149,6 +138,7 @@ modify_startup_config() {
# Check if it's a live wallpaper (video) # Check if it's a live wallpaper (video)
if [[ "$selected_file" =~ \.(mp4|mkv|mov|webm)$ ]]; then if [[ "$selected_file" =~ \.(mp4|mkv|mov|webm)$ ]]; then
# For video wallpapers: # 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*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" 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)." echo "Configured for live wallpaper (video)."
else else
# For image wallpapers: # 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*#\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" sed -i '/^\s*exec-once\s*=\s*mpvpaper\s*.*$/s/^/\#/' "$startup_config"
@ -173,12 +164,25 @@ apply_image_wallpaper() {
kill_wallpaper_for_image kill_wallpaper_for_image
if ! pgrep -x "swww-daemon" >/dev/null; then if ! pgrep -x "$WWW_DAEMON" >/dev/null; then
echo "Starting swww-daemon..." echo "Starting $WWW_DAEMON..."
swww-daemon --format xrgb & "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" &
fi 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) # Run additional scripts (pass the image path to avoid cache race conditions)
"$SCRIPTSDIR/WallustSwww.sh" "$image_path" "$SCRIPTSDIR/WallustSwww.sh" "$image_path"
@ -186,7 +190,6 @@ apply_image_wallpaper() {
"$SCRIPTSDIR/Refresh.sh" "$SCRIPTSDIR/Refresh.sh"
sleep 1 sleep 1
set_sddm_wallpaper
} }
apply_video_wallpaper() { apply_video_wallpaper() {
@ -208,22 +211,33 @@ main() {
choice=$(menu | $rofi_command) choice=$(menu | $rofi_command)
choice=$(echo "$choice" | xargs) choice=$(echo "$choice" | xargs)
RANDOM_PIC_NAME=$(echo "$RANDOM_PIC_NAME" | xargs) RANDOM_PIC_NAME=$(echo "$RANDOM_PIC_NAME" | xargs)
raw_choice="$choice"
choice="${choice#Random: }"
choice="${choice#Current: }"
if [[ -z "$choice" ]]; then if [[ -z "$choice" ]]; then
echo "No choice selected. Exiting." echo "No choice selected. Exiting."
exit 0 exit 0
fi fi
# Handle random selection correctly # Resolve selection directly when using Random/Current entries
if [[ "$choice" == "$RANDOM_PIC_NAME" ]]; then if [[ "$raw_choice" == Random:\ * ]]; then
choice=$(basename "$RANDOM_PIC") 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 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)
if [[ -z "$selected_file" ]]; then if [[ -z "$selected_file" ]]; then
echo "File not found. Selected choice: $choice" echo "File not found. Selected choice: $choice"
exit 1 exit 1

View file

@ -1,5 +1,10 @@
#!/usr/bin/env python3 #!/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. # Rewritten to use Open-Meteo APIs (worldwide, no API key) for robust weather data.
# Outputs Waybar-compatible JSON and a simple text cache. # Outputs Waybar-compatible JSON and a simple text cache.

View file

@ -1,17 +1,56 @@
#!/usr/bin/env bash #!/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 # weather info from wttr. https://github.com/chubin/wttr.in
# Remember to add city # 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
# 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
# if city is blank, use https://ipapi.co/json to get location from IP # Fallback: ipapi.co
if [ -z "$city" ]; then city=$(curl -fsS "https://ipapi.co/json" 2>/dev/null | grep -o '"city"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
city=$(curl -fsS https://ipapi.co/json | grep city | cut -f4 -d'"') 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 fi
# URL-encode city for safe use in URLs # URL-encode city for safe use in URLs
encoded_city="$city" encoded_city="$city"
if command -v python3 >/dev/null 2>&1; then if command -v python3 >/dev/null 2>&1; then

View file

@ -1,11 +1,40 @@
#!/usr/bin/env bash #!/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) # Weather entrypoint: prefer Python (OpenMeteo), fallback to legacy Bash (wttr.in)
SCRIPT_DIR="$(dirname "$0")" SCRIPT_DIR="$(dirname "$0")"
PY_SCRIPT="$SCRIPT_DIR/Weather.py" PY_SCRIPT="$SCRIPT_DIR/Weather.py"
BASH_FALLBACK="$SCRIPT_DIR/Weather.sh" 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() { run_fallback() {
if [ -f "$BASH_FALLBACK" ]; then if [ -f "$BASH_FALLBACK" ]; then
# Invoke via bash to avoid requiring +x and ensure consistent shell # Invoke via bash to avoid requiring +x and ensure consistent shell

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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) # Script for Oh my ZSH theme ( CTRL SHIFT O)
# preview of theme can be view here: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes # 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 { animations {
enabled = yes enabled = yes

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # # /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# #
# name "Me-2" # name "Me-2"
# credit https://github.com/mahaveergurjar # 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 # as per Hyprland wiki: hyprland-qt-support provides a QML style for hypr* qt6 apps
roundess = 2 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/ # Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/
# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf # Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf
# environment-variables # environment-variables
# Current Version of JakooLit Dotfiles: # Current Version of KoolDots:
env = DOTS_VERSION,2.3.18 env = DOTS_VERSION,2.3.23
### Toolkit Backend Variables ### ### Toolkit Backend Variables ###
env = GDK_BACKEND,wayland,x11,* env = GDK_BACKEND,wayland,x11,*
@ -24,8 +29,8 @@ env = XDG_SESSION_TYPE,wayland
### QT Variables ### ### QT Variables ###
env = QT_AUTO_SCREEN_SCALE_FACTOR,1 env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_QPA_PLATFORMTHEME,qt5ct
env = QT_QPA_PLATFORMTHEME,qt6ct env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_STYLE_OVERRIDE,kvantum
### hyprland-qt-support ### ### hyprland-qt-support ###
env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style 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 # Default Keybinds
# visit https://wiki.hyprland.org/Configuring/Binds/ for more info # visit https://wiki.hyprland.org/Configuring/Binds/ for more info
# /* ---- ✴️ Variables ✴️ ---- */ #
$mainMod = SUPER $mainMod = SUPER
$scriptsDir = $HOME/.config/hypr/scripts $scriptsDir = $HOME/.config/hypr/scripts
$UserConfigs = $HOME/.config/hypr/UserConfigs $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 # settings for User defaults apps - set your default terminal and file manager on this file
source= $UserConfigs/01-UserDefaults.conf source= $UserConfigs/01-UserDefaults.conf
#### STANDAR #### #### STANDARD ####
# Common shortcuts # Common shortcuts
#bindr = $mainMod, $mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window # Super Key to Launch rofi menu #bindr = $mainMod, $mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window # Super Key to Launch rofi menu
bindd = $mainMod, D, app launcher, exec, pkill rofi || true && rofi -show drun -modi drun,filebrowser,run,window bindd = $mainMod, 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, A, Quickshell overview, global, quickshell:overviewToggle # desktop overview (if installed)
bindd = $mainMod, Return, Open terminal, exec, $term bindd = $mainMod, Return, Open terminal, exec, $term
bindd = $mainMod, E, file manager, exec, $files bindd = $mainMod, E, file manager, exec, $files
bindd = $mainMod, C, SSH session manager, exec, $scriptsDir/rofi-ssh-menu.sh
# FEATURES / EXTRAS # 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, H, help / cheat sheet, exec, $scriptsDir/KeyHints.sh
bindd = $mainMod ALT, R, refresh bar and menus, exec, $scriptsDir/Refresh.sh bindd = $mainMod ALT, R, refresh bar and menus, exec, $scriptsDir/Refresh.sh
bindd = $mainMod ALT, E, emoji menu, exec, $scriptsDir/RofiEmoji.sh bindd = $mainMod 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 CTRL, S, window switcher, exec, rofi -show window
bindd = $mainMod ALT, O, toggle blur, exec, $scriptsDir/ChangeBlur.sh bindd = $mainMod ALT, O, toggle blur, exec, $scriptsDir/ChangeBlur.sh
bindd = $mainMod SHIFT, G, toggle game mode, exec, $scriptsDir/GameMode.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 ALT, V, clipboard manager, exec, $scriptsDir/ClipManager.sh
bindd = $mainMod CTRL, R, rofi theme selector, exec, $scriptsDir/RofiThemeSelector.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 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 SHIFT, F, fullscreen, fullscreen
bindd = $mainMod CTRL, F, maximize window, fullscreen, 1 bindd = $mainMod CTRL, F, maximize window, fullscreen, 1
bindd = $mainMod, SPACE, Float current window, togglefloating, 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 bindd = $mainMod SHIFT, Return, DropDown terminal, exec, $scriptsDir/Dropterminal.sh $term
# Desktop zooming or magnifier # 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, W, select wallpaper, exec, $UserScripts/WallpaperSelect.sh
bindd = $mainMod SHIFT, W, wallpaper effects, exec, $UserScripts/WallpaperEffects.sh bindd = $mainMod SHIFT, W, wallpaper effects, exec, $UserScripts/WallpaperEffects.sh
bindd = CTRL ALT, W, random wallpaper, exec, $UserScripts/WallpaperRandom.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, K, search keybinds, exec, $scriptsDir/KeyBinds.sh
bindd = $mainMod SHIFT, A, animations menu, exec, $scriptsDir/Animations.sh bindd = $mainMod SHIFT, A, animations menu, exec, $scriptsDir/Animations.sh
bindd = $mainMod SHIFT, O, change oh-my-zsh theme, exec, $UserScripts/ZshChangeTheme.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 # Master Layout
bindd = $mainMod CTRL, D, remove master, layoutmsg, removemaster bindd = $mainMod CTRL, D, remove master, layoutmsg, removemaster
bindd = $mainMod, I, add master, layoutmsg, addmaster bindd = $mainMod, I, add master, layoutmsg, addmaster
# NOTE: J/K bindings are set dynamically by scripts/KeybindsLayoutInit.sh and scripts/ChangeLayout.sh # j/k cycle windows globally
# (we intentionally do not bind them statically here to avoid conflicts across layouts) bindd = $mainMod, j, cycle next, layoutmsg, cyclenext
# bindd = $mainMod, J, cycle next, layoutmsg, cyclenext bindd = $mainMod, k, cycle previous, layoutmsg, cycleprev
# bindd = $mainMod, K, cycle previous, layoutmsg, cycleprev
bindd = $mainMod CTRL, Return, swap with master, layoutmsg, swapwithmaster bindd = $mainMod CTRL, Return, swap with master, layoutmsg, swapwithmaster
# Dwindle Layout # 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, bindd = $mainMod, P, toggle pseudo (dwindle), pseudo,
# Works on either layout (Master or Dwindle) # Works on either layout (Master or Dwindle)
bindd = $mainMod, M, set split ratio 0.3, exec, hyprctl dispatch splitratio 0.3 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 # Cycle windows; if floating bring to top
bindd = ALT, tab, cycle next window, cyclenext bindd = ALT, tab, cycle next window, cyclenext
@ -106,6 +135,8 @@ bindd = ALT, tab, bring active to top, bringactivetotop
# Special Keys / Hot Keys # Special Keys / Hot Keys
bindeld = , xf86audioraisevolume, volume up, exec, $scriptsDir/Volume.sh --inc bindeld = , xf86audioraisevolume, volume up, exec, $scriptsDir/Volume.sh --inc
bindeld = , xf86audiolowervolume, volume down, exec, $scriptsDir/Volume.sh --dec 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 = , xf86AudioMicMute, toggle mic mute, exec, $scriptsDir/Volume.sh --toggle-mic
bindld = , xf86audiomute, toggle mute, exec, $scriptsDir/Volume.sh --toggle bindld = , xf86audiomute, toggle mute, exec, $scriptsDir/Volume.sh --toggle
bindld = , xf86Sleep, sleep, exec, systemctl suspend 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 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 # 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, 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' #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 # See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings
# These configs are mostly for laptops. This is addemdum to Keybinds.conf # 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) # Commands and Apps to be executed at launch (vendor defaults)
$scriptsDir = $HOME/.config/hypr/scripts $scriptsDir = $HOME/.config/hypr/scripts
$UserScripts = $HOME/.config/hypr/UserScripts $UserScripts = $HOME/.config/hypr/UserScripts
$wallDIR=$HOME/Pictures/wallpapers
$lock = $scriptsDir/LockScreen.sh $lock = $scriptsDir/LockScreen.sh
$SwwwRandom = $UserScripts/WallpaperAutoChange.sh $SwwwRandom = $UserScripts/WallpaperAutoChange.sh
$livewallpaper="" $livewallpaper=""
$wallDIR = $HOME/Pictures/wallpapers # change path manually here if needed
### wallpaper stuff ### ### wallpaper stuff ###
exec-once = swww-daemon --format xrgb exec-once = $scriptsDir/WallpaperDaemon.sh
#exec-once = mpvpaper '*' -o "load-scripts=no no-audio --loop" $livewallpaper #exec-once = mpvpaper '*' -o "load-scripts=no no-audio --loop" $livewallpaper
# wallpaper random # wallpaper random
#exec-once = $SwwwRandom $wallDIR # random wallpaper switcher every 30 minutes #exec-once = $SwwwRandom $wallDIR # random wallpaper switcher every 30 minutes
### Startup ### ### Startup ###
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = $scriptsDir/KeybindsLayoutInit.sh exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh "kitty --class kitty-dropterm" &
# 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 = $scriptsDir/Polkit.sh exec-once = $scriptsDir/Polkit.sh
# starup apps
exec-once = nm-applet --indicator exec-once = nm-applet --indicator
exec-once = nm-tray # For ubuntu exec-once = nm-tray # For ubuntu
exec-once = swaync exec-once = swaync
#exec-once = ags #exec-once = ags
#exec-once = blueman-applet #exec-once = blueman-applet
#exec-once = rog-control-center #exec-once = rog-control-center
exec-once = $scriptsDir/PortalHyprlandUbuntu.sh
exec-once = waybar exec-once = waybar
exec-once = qs -c overview # Quickshell Overview exec-once = qs -c overview # Quickshell Overview
exec-once = hypridle
exec-once = $scriptsDir/Hyprsunset.sh init
# Clipboard manager # Clipboard manager
exec-once = wl-paste --type text --watch cliphist store exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store exec-once = wl-paste --type image --watch cliphist store
# Rainbow borders # Rainbow borders (disabled by default; use quick settings menu)
exec-once = $UserScripts/RainbowBorders.sh #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 # Here are list of features available but disabled by default
# Persistent wallpaper # 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 # Gnome polkit for NixOS
#exec-once = $scriptsDir/Polkit-NixOS.sh #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 # Default settings
# This is where you put your own settings as this will not be touched during update # This is where you put your own settings as this will not be touched during update
# if the upgrade.sh is used. # if the upgrade.sh is used.
@ -9,16 +14,41 @@
$scriptsDir = $HOME/.config/hypr/scripts $scriptsDir = $HOME/.config/hypr/scripts
dwindle { dwindle {
pseudotile = true preserve_split = true
preserve_split = true smart_resizing = true
#smart_split = 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 special_scale_factor = 0.8
} }
master { master {
new_status = master new_status = slave
new_on_top = 1 new_on_top = false
mfact = 0.5 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 { general {
@ -34,7 +64,6 @@ input {
kb_rules = kb_rules =
repeat_rate = 50 repeat_rate = 50
repeat_delay = 300 repeat_delay = 300
sensitivity = 0 #mouse sensitivity sensitivity = 0 #mouse sensitivity
#accel_profile = # flat or adaptive or blank or EMPTY means libinputs default mode #accel_profile = # flat or adaptive or blank or EMPTY means libinputs default mode
numlock_by_default = true numlock_by_default = true
@ -63,26 +92,28 @@ input {
} }
} }
gestures { gestures {
gesture = 3, horizontal, workspace workspace_swipe_distance = 300
workspace_swipe_distance = 500 workspace_swipe_touch = false
workspace_swipe_invert = true workspace_swipe_invert = true
workspace_swipe_min_speed_to_force = 30 workspace_swipe_min_speed_to_force = 30
workspace_swipe_cancel_ratio = 0.5 workspace_swipe_cancel_ratio = 0.5
workspace_swipe_create_new = true workspace_swipe_create_new = true
workspace_swipe_forever = true workspace_swipe_direction_lock = true
#workspace_swipe_use_r = true #uncomment if wanted a forever create a new workspace with swipe right 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 = 3, horizontal, workspace
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, 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, 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 { misc {
disable_hyprland_logo = true disable_hyprland_logo = true
disable_splash_rendering = true disable_splash_rendering = true
vfr = true
vrr = 2 vrr = 2
mouse_move_enables_dpms = true mouse_move_enables_dpms = true
enable_swallow = off enable_swallow = off
@ -93,6 +124,11 @@ misc {
enable_anr_dialog = true # Application not Responding (ANR) enable_anr_dialog = true # Application not Responding (ANR)
anr_missed_pings = 15 # ANR Threshold default 1 is too low anr_missed_pings = 15 # ANR Threshold default 1 is too low
allow_session_lock_restore = true # Prevent lockscreen crash when resume from suspend 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 { #opengl {
@ -121,4 +157,16 @@ cursor {
enable_hyprcursor = true enable_hyprcursor = true
warp_on_change_workspace = 2 warp_on_change_workspace = 2
no_warps = true 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 # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# NOTES: This is only for Hyprland > 0.52.1 # NOTES: This is only for Hyprland >= 0.53
# note: This should NOT be implemented on Debian and Ubuntu
# Vendor defaults for window rules and layerrules
# windowrule - tags - add apps under appropriate tag to use the same settings # 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 ^([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 ^([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 ^([Cc]hromium)$, tag +browser
windowrule = match:class ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$, 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 ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser
windowrule = match:class ^(zen-alpha|zen)$, 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 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 Quick Cheat Sheet)$, tag +KooL_Cheat
windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings
windowrule = match:class ^(nwg-displays|nwg-look)$, 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 ^(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 ^(codium|codium-url-handler|VSCodium)$, tag +projects
windowrule = match:class ^(VSCode|code|code-url-handler)$, 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 windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare
# IM tags
windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im
windowrule = match:class ^([Ff]erdium)$, tag +im windowrule = match:class ^([Ff]erdium)$, tag +im
windowrule = match:class ^([Ww]hatsapp-for-linux)$, tag +im windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, tag +im
windowrule = match:class ^(ZapZap|com.rtosta.zapzap)$, tag +im
windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im
windowrule = match:class ^(teams-for-linux)$, 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 ^(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:class ^([Ss]team)$, tag +gamestore
windowrule = match:title ^([Ll]utris)$, tag +gamestore windowrule = match:title ^([Ll]utris)$, tag +gamestore
windowrule = match:class ^(com.heroicgameslauncher.hgl)$, 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 ^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$, tag +file-manager
windowrule = match:class ^(app.drey.Warp)$, tag +file-manager windowrule = match:class ^(app.drey.Warp)$, tag +file-manager
# wallpaper tags
windowrule = match:class ^([Ww]aytrogen)$, tag +wallpaper windowrule = match:class ^([Ww]aytrogen)$, tag +wallpaper
# multimedia tags
windowrule = match:class ^([Aa]udacious)$, tag +multimedia windowrule = match:class ^([Aa]udacious)$, tag +multimedia
# multimedia-video tags
windowrule = match:class ^([Mm]pv|vlc)$, tag +multimedia_video windowrule = match:class ^([Mm]pv|vlc)$, tag +multimedia_video
# settings tags
windowrule = match:title ^(ROG Control)$, tag +settings windowrule = match:title ^(ROG Control)$, tag +settings
windowrule = match:class ^(wihotspot(-gui)?)$ # wifi hotspot, tag +settings windowrule = match:class ^(wihotspot(-gui)?)$, tag +settings
windowrule = match:class ^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer, tag +settings windowrule = match:class ^([Bb]aobab|org.gnome.[Bb]aobab)$, tag +settings
windowrule = match:class ^(gnome-disks|wihotspot(-gui)?)$, tag +settings windowrule = match:class ^(gnome-disks|wihotspot(-gui)?)$, tag +settings
windowrule = match:title (Kvantum Manager), 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 ^(nm-applet|nm-connection-editor|blueman-manager)$, tag +settings
windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, 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 (xdg-desktop-portal-gtk), tag +settings
windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings
windowrule = match:class ^([Rr]ofi)$, 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 # viewer tags
windowrule = match:class ^(evince)$ # document viewer, tag +viewer windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$, tag +viewer
windowrule = match:class ^(eog|org.gnome.Loupe)$ # image viewer, tag +viewer windowrule = match:class ^(evince)$, tag +viewer
windowrule = match:class ^(eog|org.gnome.Loupe)$, tag +viewer
windowrule = match:tag multimedia_video*, noblur # Some special override rules
windowrule = match:tag multimedia_video*, opacity 1.0 windowrule = match:tag multimedia, no_blur on
windowrule = match:tag multimedia, opacity 1.0
# POSITION
windowrule = match:tag KooL_Cheat*, center
windowrule = match:class ([Tt]hunar) title negative:(.*[Tt]hunar.*), center
windowrule = match:title ^(ROG Control)$, center
windowrule = match:tag KooL-Settings*, center
windowrule = match:title ^(Keybindings)$, center
windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center
windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center
windowrule = match:class ^([Ff]erdium)$, center
windowrule = match:title ^(Picture-in-Picture)$, move 72% 7%
#windowrule = move 72% 7%,title:^(Firefox)$
# windowrule to avoid idle for fullscreen apps
#windowrule = idleinhibit fullscreen, class:^(*)$
#windowrule = idleinhibit fullscreen, title:^(*)$
windowrule = match:fullscreen 1, idleinhibit fullscreen
# windowrule move to workspace
#windowrule = workspace 1, tag:email*
#windowrule = workspace 2, tag:browser*
#windowrule = workspace 3, class:^([Tt]hunar)$
#windowrule = workspace 3, tag:projects*
#windowrule = workspace 5, tag:gamestore*
#windowrule = workspace 7, tag:im*
#windowrule = workspace 8, tag:games*
# windowrule move to workspace (silent)
#windowrule = workspace 4 silent, tag:screenshare*
#windowrule = workspace 6 silent, class:^(virt-manager)$
#windowrule = workspace 6 silent, class:^(.virt-manager-wrapped)$
#windowrule = workspace 9 silent, tag:multimedia*
# FLOAT # FLOAT
windowrule = match:tag KooL_Cheat*, float windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher), float on
windowrule = match:tag wallpaper*, float windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float on
windowrule = match:tag settings*, float windowrule = match:class ^([Qq]alculate-gtk)$, float on
windowrule = match:tag viewer*, float
windowrule = match:tag KooL-Settings*, float
windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher)$, float
windowrule = match:class (org.gnome.Calculator) title (Calculator), float
windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float
windowrule = match:class ^([Qq]alculate-gtk)$, float
#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
windowrule = match:class ^([Ff]erdium)$, float
windowrule = match:title ^(Picture-in-Picture)$, float
#windowrule = float, title:^(Firefox)$
# windowrule - ######### float popups and dialogue ####### # float popups and dialogue
windowrule = match:title ^(Authentication Required)$, float windowrule = match:title ^(Authentication Required)$, float on, center on
windowrule = match:title ^(Authentication Required)$, center 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) title negative:(.*codium.*|.*VSCodium.*), float windowrule = match:class (codium|codium-url-handler|VSCodium), match:title negative:(.*codium.*|.*VSCodium.*), float on
windowrule = match:class ^(com.heroicgameslauncher.hgl)$ title negative:(Heroic Games Launcher), float windowrule = match:class ^(com.heroicgameslauncher.hgl)$, match:title negative:(Heroic Games Launcher), float on
windowrule = match:class ^([Ss]team)$ title negative:^([Ss]team)$, float windowrule = match:class ^([Ss]team)$, match:title negative:^([Ss]team)$, float on
windowrule = match:class ([Tt]hunar) title negative:(.*[Tt]hunar.*), float windowrule = match:title ^(Add Folder to Workspace)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on
windowrule = match:title ^(Add Folder to Workspace)$, float windowrule = match:title ^(Save As)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on
windowrule = match:title ^(Add Folder to Workspace)$, size 70% 60% windowrule = match:initial_title (Open Files), float on, size (monitor_w*0.7) (monitor_h*0.6)
windowrule = match:title ^(Add Folder to Workspace)$, center windowrule = match:title ^(SDDM Background)$, float on, center on, size (monitor_w*0.16) (monitor_h*0.12)
windowrule = match:title ^(Save As)$, float windowrule = match:class ^(yad)$, float on, center on, size (monitor_w*0.2) (monitor_h*0.2)
windowrule = match:title ^(Save As)$, size 70% 60% windowrule = match:class ^(hyprland-donate-screen)$, float on, center on
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
# SIZE # 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)$ # POSITION
#windowrule = size 25% 25%, title:^(Firefox)$ 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 to avoid idle for fullscreen apps
windowrule = match:title ^(Picture-in-Picture)$, pin windowrule = match:fullscreen true, idle_inhibit fullscreen
#windowrule = pin,title:^(Firefox)$ windowrule = idle_inhibit fullscreen, match:fullscreen 1
windowrule = idle_inhibit fullscreen, match:class .*
windowrule = idle_inhibit fullscreen, match:title .*
# windowrule - extras # OPACITY
windowrule = match:title ^(Picture-in-Picture)$, keepaspectratio 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 # 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 # This not gonna take the focus to the window that appears
windowrule = match:class ^(jetbrains-*), noinitialfocus # when hovering over some of the parts of the IntelliJ Products
windowrule = match:title ^(wind.*)$, noinitialfocus windowrule = match:class ^(jetbrains-.*)$, no_initial_focus on
windowrule = match:title ^(wind.*)$, no_initial_focus on
#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 # LAYER RULES
layerrule = blur, rofi layerrule = match:namespace rofi, blur on
layerrule = ignorezero, rofi layerrule = match:namespace notifications, blur on
layerrule = blur, notifications layerrule = match:namespace quickshell:overview, blur on
layerrule = ignorezero, notifications layerrule = match:namespace quickshell:overview, ignore_alpha 0.5
layerrule = blur, quickshell:overview
layerrule = ignorezero, quickshell:overview #
layerrule = ignorealpha 0.5, quickshell:overview 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 # Vendor defaults for window rules and layerrules
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # 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 # browser tags
windowrule = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$ windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser
windowrule = tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$ windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +browser
windowrule = tag +browser, class:^(chrome-.+-Default)$ # Chrome PWAs windowrule = match:class ^(chrome-.+-Default)$, tag +browser
windowrule = tag +browser, class:^([Cc]hromium)$ windowrule = match:class ^([Cc]hromium)$, tag +browser
windowrule = tag +browser, class:^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$ windowrule = match:class ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$, tag +browser
windowrule = tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$ windowrule = match:class ^([Bb]rave-browser(-beta|-dev|-unstable)?)$, tag +browser
windowrule = tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$ windowrule = match:class ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser
windowrule = tag +browser, class:^(zen-alpha|zen)$ windowrule = match:class ^(zen-alpha|zen)$, tag +browser
# notif tags # 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 # KooL settings tag
windowrule = tag +KooL_Cheat, title:^(KooL Quick Cheat Sheet)$ windowrule = match:title ^(KooL Quick Cheat Sheet)$, tag +KooL_Cheat
windowrule = tag +KooL_Settings, title:^(KooL Hyprland Settings)$ windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings
windowrule = tag +KooL-Settings, class:^(nwg-displays|nwg-look)$ windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings
# terminal tags # terminal tags
windowrule = tag +terminal, class:^(Alacritty|kitty|kitty-dropterm)$ windowrule = match:class ^(ghostty|wezterm|Alacritty|kitty|kitty-dropterm)$, tag +terminal
# email tags # email tags
windowrule = tag +email, class:^([Tt]hunderbird|org.gnome.Evolution)$ windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email
windowrule = tag +email, class:^(eu.betterbird.Betterbird)$ windowrule = match:class ^(eu.betterbird.Betterbird)$, tag +email
windowrule = match:class ^(org.gnome.Evolution)$, tag +email
# project tags # project tags
windowrule = tag +projects, class:^(codium|codium-url-handler|VSCodium)$ windowrule = match:class ^(codium|codium-url-handler|VSCodium)$, tag +projects
windowrule = tag +projects, class:^(VSCode|code|code-url-handler)$ windowrule = match:class ^(VSCode|code|code-url-handler)$, tag +projects
windowrule = tag +projects, class:^(jetbrains-.+)$ # JetBrains IDEs windowrule = match:class ^(jetbrains-.+)$, tag +projects
windowrule = match:class ^(dev.zed.Zed|antigravity)$, tag +projects
# screenshare tags # screenshare tags
windowrule = tag +screenshare, class:^(com.obsproject.Studio)$ windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare
# IM tags # IM tags
windowrule = tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$ windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im
windowrule = tag +im, class:^([Ff]erdium)$ windowrule = match:class ^([Ff]erdium)$, tag +im
windowrule = tag +im, class:^([Ww]hatsapp-for-linux)$ windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, tag +im
windowrule = tag +im, class:^(ZapZap|com.rtosta.zapzap)$ windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im
windowrule = tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$ windowrule = match:class ^(teams-for-linux)$, tag +im
windowrule = tag +im, class:^(teams-for-linux)$ windowrule = match:class ^(im.riot.Riot|Element)$, tag +im
windowrule = tag +im, class:^(im.riot.Riot|Element)$ # Element Matrix client
# game tags # game tags
windowrule = tag +games, class:^(gamescope)$ windowrule = match:class ^(gamescope)$, tag +games
windowrule = tag +games, class:^(steam_app_\d+)$ windowrule = match:class ^(steam_app_\\d+)$, tag +games
windowrule = match:xdg_tag ^(proton-game)$, tag +games
# gamestore tags # gamestore tags
windowrule = tag +gamestore, class:^([Ss]team)$ windowrule = match:class ^([Ss]team)$, tag +gamestore
windowrule = tag +gamestore, title:^([Ll]utris)$ windowrule = match:title ^([Ll]utris)$, tag +gamestore
windowrule = tag +gamestore, class:^(com.heroicgameslauncher.hgl)$ windowrule = match:class ^(com.heroicgameslauncher.hgl)$, tag +gamestore
# file-manager tags # file-manager tags
windowrule = tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$ windowrule = match:class ^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$, tag +file-manager
windowrule = tag +file-manager, class:^(app.drey.Warp)$ windowrule = match:class ^(app.drey.Warp)$, tag +file-manager
# wallpaper tags # wallpaper tags
windowrule = tag +wallpaper, class:^([Ww]aytrogen)$ windowrule = match:class ^([Ww]aytrogen)$, tag +wallpaper
# multimedia tags # multimedia tags
windowrule = tag +multimedia, class:^([Aa]udacious)$ windowrule = match:class ^([Aa]udacious)$, tag +multimedia
# multimedia-video tags # multimedia-video tags
windowrule = tag +multimedia_video, class:^([Mm]pv|vlc)$ windowrule = match:class ^([Mm]pv|vlc)$, tag +multimedia_video
# settings tags # settings tags
windowrule = tag +settings, title:^(ROG Control)$ windowrule = match:title ^(ROG Control)$, tag +settings
windowrule = tag +settings, class:^(wihotspot(-gui)?)$ # wifi hotspot windowrule = match:class ^(wihotspot(-gui)?)$, tag +settings
windowrule = tag +settings, class:^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer windowrule = match:class ^([Bb]aobab|org.gnome.[Bb]aobab)$, tag +settings
windowrule = tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$ windowrule = match:class ^(gnome-disks|wihotspot(-gui)?)$, tag +settings
windowrule = tag +settings, title:(Kvantum Manager) windowrule = match:title (Kvantum Manager), tag +settings
windowrule = tag +settings, class:^(file-roller|org.gnome.FileRoller)$ # archive manager windowrule = match:class ^(file-roller|org.gnome.FileRoller)$, tag +settings
windowrule = tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$ windowrule = match:class ^(nm-applet|nm-connection-editor|blueman-manager)$, tag +settings
windowrule = tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$ windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, tag +settings
windowrule = tag +settings, class:^(qt5ct|qt6ct|[Yy]ad)$ windowrule = match:class ^(qt5ct|qt6ct)$, tag +settings
windowrule = tag +settings, class:(xdg-desktop-portal-gtk) windowrule = match:class (xdg-desktop-portal-gtk), tag +settings
windowrule = tag +settings, class:^(org.kde.polkit-kde-authentication-agent-1)$ windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings
windowrule = tag +settings, class:^([Rr]ofi)$ windowrule = match:class ^([Rr]ofi)$, tag +settings
windowrule = match:class ^(btrfs-assistant)$, tag +settings
windowrule = match:class ^(timeshift-gtk)$, tag +settings
# viewer tags # viewer tags
windowrule = tag +viewer, class:^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$, tag +viewer
windowrule = tag +viewer, class:^(evince)$ # document viewer windowrule = match:class ^(evince)$, tag +viewer
windowrule = tag +viewer, class:^(eog|org.gnome.Loupe)$ # image viewer windowrule = match:class ^(eog|org.gnome.Loupe)$, tag +viewer
# Some special override rules # Some special override rules
windowrule = noblur, tag:multimedia_video* windowrule = match:tag multimedia, no_blur on
windowrule = opacity 1.0, tag:multimedia_video* 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 # FLOAT
windowrule = float, tag:KooL_Cheat* windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher), float on
windowrule = float, tag:wallpaper* windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float on
windowrule = float, tag:settings* windowrule = match:class ^([Qq]alculate-gtk)$, float on
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 ####### # float popups and dialogue
windowrule = float, title:^(Authentication Required)$ windowrule = match:title ^(Authentication Required)$, float on, center on
windowrule = center, title:^(Authentication Required)$ 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 = float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*) windowrule = match:class (codium|codium-url-handler|VSCodium), match:title negative:(.*codium.*|.*VSCodium.*), float on
windowrule = float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher) windowrule = match:class ^(com.heroicgameslauncher.hgl)$, match:title negative:(Heroic Games Launcher), float on
windowrule = float, class:^([Ss]team)$, title:negative:^([Ss]team)$ windowrule = match:class ^([Ss]team)$, match:title negative:^([Ss]team)$, float on
windowrule = float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*) 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 = float, title:^(Add Folder to Workspace)$ windowrule = match:initial_title (Open Files), float on, size (monitor_w*0.7) (monitor_h*0.6)
windowrule = size 70% 60%, title:^(Add Folder to Workspace)$ windowrule = match:title ^(SDDM Background)$, float on, center on, size (monitor_w*0.16) (monitor_h*0.12)
windowrule = center, title:^(Add Folder to Workspace)$ 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
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 # 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)$ # POSITION
#windowrule = size 25% 25%, title:^(Firefox)$ 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 to avoid idle for fullscreen apps
windowrule = pin, title:^(Picture-in-Picture)$ windowrule = match:fullscreen true, idle_inhibit fullscreen
#windowrule = pin,title:^(Firefox)$ windowrule = idle_inhibit fullscreen, match:fullscreen 1
windowrule = idle_inhibit fullscreen, match:class .*
windowrule = idle_inhibit fullscreen, match:title .*
# windowrule - extras # OPACITY
windowrule = keepaspectratio, title:^(Picture-in-Picture)$ 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 # BLUR & FULLSCREEN
windowrule = noblur, tag:games*
windowrule = fullscreen, tag:games*
# This not gonna take the focus to the window that appears
#This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products # when hovering over some of the parts of the IntelliJ Products
windowrule = noinitialfocus, class:^(jetbrains-*) windowrule = match:class ^(jetbrains-.*)$, no_initial_focus on
windowrule = noinitialfocus, title:^(wind.*)$ windowrule = match:title ^(wind.*)$, no_initial_focus on
#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 # LAYER RULES
layerrule = blur, rofi layerrule = match:namespace rofi, blur on
layerrule = ignorezero, rofi layerrule = match:namespace notifications, blur on
layerrule = blur, notifications layerrule = match:namespace quickshell:overview, blur on
layerrule = ignorezero, notifications layerrule = match:namespace quickshell:overview, ignore_alpha 0.5
layerrule = blur, quickshell:overview
layerrule = ignorezero, quickshell:overview
layerrule = ignorealpha 0.5, quickshell:overview
#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 # Hypridle
# Original config submitted by https://github.com/SherLock707 # 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 # Always refer to Hyprland wiki
# https://wiki.hyprland.org/ # https://wiki.hyprland.org/

View file

@ -1,4 +1,4 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # # /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# Hyprlock config for < 1080p monitor resolutions # Hyprlock config for < 1080p monitor resolutions
# Original config submitted by https://github.com/SherLock707 # 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 $Scripts = $HOME/.config/hypr/scripts
general { general {
grace = 1
fractional_scaling = 2 fractional_scaling = 2
immediate_render = true immediate_render = true
} }
@ -72,7 +71,7 @@ label {
# } # }
# Seconds-Time # Seconds-Time
#label { # label {
# monitor = # monitor =
## text = cmd[update:1000] echo "$(date +"%S")" ## text = cmd[update:1000] echo "$(date +"%S")"
# text = cmd[update:1000] echo "$(date +"%S %p")" #AM/PM # text = cmd[update:1000] echo "$(date +"%S %p")" #AM/PM
@ -82,10 +81,10 @@ label {
# position = 0, -350 # position = 0, -350
# halign = center # halign = center
# valign = top # valign = top
#} # }
# Put a picture of choice here. Default is the current wallpaper # Put a picture of choice here. Default is the current wallpaper
#image { # image {
# monitor = # monitor =
# path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current
# size = 160 # size = 160
@ -97,7 +96,7 @@ label {
# position = 0, 280 # position = 0, 280
# halign = center # halign = center
# valign = bottom # valign = bottom
} # }
# USER # USER
label { label {
@ -170,7 +169,7 @@ label {
# weather edit the scripts for locations # weather edit the scripts for locations
# weather scripts are located in ~/.config/hypr/UserScripts Weather.sh and/or Weather.py # 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 { label {
monitor = monitor =
text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache" 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 # Hyprlock config for => 2k monitor resolutions
# Original config submitted by https://github.com/SherLock707 # 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 $Scripts = $HOME/.config/hypr/scripts
general { general {
grace = 1
fractional_scaling = 2 fractional_scaling = 2
immediate_render = true immediate_render = true
} }
@ -85,7 +84,7 @@ label {
# } # }
# Put a picture of choice here. Default is the current wallpaper # Put a picture of choice here. Default is the current wallpaper
#image { # image {
# monitor = # monitor =
# #path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # #path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current
# size = 160 # size = 160
@ -97,7 +96,7 @@ label {
# position = 0, 400 # position = 0, 400
# halign = center # halign = center
# valign = bottom # valign = bottom
#} # }
# USER # USER
label { label {
@ -170,7 +169,7 @@ label {
# weather edit the scripts for locations # weather edit the scripts for locations
# weather scripts are located in ~/.config/hypr/UserScripts Weather.sh and/or Weather.py # 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 { label {
monitor = monitor =
text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache" text = cmd[update:3600000] [ -f "$HOME/.cache/.weather_cache" ] && cat "$HOME/.cache/.weather_cache"

View file

@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # # /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# A bash script designed to run only once dotfiles installed # 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 # 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" icon_theme="Flat-Remix-Blue-Dark"
cursor_theme="Bibata-Modern-Ice" 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" 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. # Check if a marker file exists.
@ -26,7 +33,7 @@ if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then
# Initialize wallust and wallpaper # Initialize wallust and wallpaper
if [ -f "$wallpaper" ]; then if [ -f "$wallpaper" ]; then
wallust run -s $wallpaper > /dev/null 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 & "$scriptsDir/WallustSwww.sh" > /dev/null 2>&1 &
fi fi
@ -49,9 +56,6 @@ if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then
# initiate kvantum theme # initiate kvantum theme
kvantummanager --set "$kvantum_theme" > /dev/null 2>&1 & 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 # waybar style
#if [ -L "$HOME/.config/waybar/config" ]; then #if [ -L "$HOME/.config/waybar/config" ]; then
## ln -sf "$waybar_style" "$HOME/.config/waybar/style.css" ## 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 # default Monitor config
# *********************************************************** # # *********************************************************** #
@ -36,7 +36,7 @@ monitor=,highres,auto,1
#monitor = HDMI-A-1, preferred,auto,1 #monitor = HDMI-A-1, preferred,auto,1
# QEMU-KVM, virtual box or vmware # QEMU-KVM, virtual box or vmware
#monitor = Virtual-1, 1920x1080@60,auto,1 monitor = Virtual-1, 1920x1080@60,auto,1
# to disable a monitor # to disable a monitor
#monitor=name,disable #monitor=name,disable

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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. # Airplane Mode. Turning on or off all wifi using rfkill.
notif="$HOME/.config/swaync/images/ja.png" notif="$HOME/.config/swaync/images/ja.png"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 # For applying Animations from different users
# Check if rofi is already running # Check if rofi is already running

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 for i in {0..3}; do
if [ -f /sys/class/power_supply/BAT$i/capacity ]; then if [ -f /sys/class/power_supply/BAT$i/capacity ]; then
battery_level=$(cat /sys/class/power_supply/BAT$i/status) battery_level=$(cat /sys/class/power_supply/BAT$i/status)

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 # Script for Monitor backlights (if supported) using brightnessctl
iDIR="$HOME/.config/swaync/icons" iDIR="$HOME/.config/swaync/icons"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 # Script for keyboard backlights (if supported) using brightnessctl
iDIR="$HOME/.config/swaync/icons" iDIR="$HOME/.config/swaync/icons"

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 # Script for changing blurs on the fly
notif="$HOME/.config/swaync/images" notif="$HOME/.config/swaync/images"

View file

@ -1,24 +1,110 @@
#!/usr/bin/env bash #!/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" 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 get_layout() {
"master") hyprctl -j getoption general:layout | jq -r '.str'
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
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
notify-send -e -u low -i "$notif" " Master Layout"
;;
*) ;;
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"
;;
"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 esac

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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. # Clipboard Manager. This script uses cliphist, rofi, and wl-copy.
# Variables # Variables

View file

@ -1,16 +1,24 @@
#!/usr/bin/env bash #!/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 # For Dark and Light switching
# Note: Scripts are looking for keywords Light or Dark except for wallpapers as the are in a separate directories # Note: Scripts are looking for keywords Light or Dark except for wallpapers as the are in a separate directories
# Paths # 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" dark_wallpapers="$wallpaper_base_path/Dark"
light_wallpapers="$wallpaper_base_path/Light" light_wallpapers="$wallpaper_base_path/Light"
hypr_config_path="$HOME/.config/hypr" hypr_config_path="$HOME/.config/hypr"
swaync_style="$HOME/.config/swaync/style.css" swaync_style="$HOME/.config/swaync/style.css"
ags_style="$HOME/.config/ags/user/style.css" ags_style="$HOME/.config/ags/user/style.css"
SCRIPTSDIR="$HOME/.config/hypr/scripts" SCRIPTSDIR="$HOME/.config/hypr/scripts"
# shellcheck source=/dev/null
. "$SCRIPTSDIR/WallpaperCmd.sh"
notif="$HOME/.config/swaync/images/bell.png" notif="$HOME/.config/swaync/images/bell.png"
wallust_rofi="$HOME/.config/wallust/templates/colors-rofi.rasi" 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" wallust_config="$HOME/.config/wallust/wallust.toml"
pallete_dark="dark16" pallete_dark="dark16"
pallete_light="light16" 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 # intial kill process
for pid in waybar rofi swaync ags swaybg; do for pid in waybar rofi swaync ags swaybg; do
@ -26,11 +38,11 @@ for pid in waybar rofi swaync ags swaybg; do
done done
# Initialize swww if needed # Initialize wallpaper daemon if needed
swww query || swww-daemon --format xrgb "$WWW_CMD" query || "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}"
# Set swww options # 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" 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 # Determine current theme mode
@ -43,6 +55,14 @@ else
# Logic for Light mode # Logic for Light mode
wallpaper_path="$light_wallpapers" wallpaper_path="$light_wallpapers"
fi 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 # Function to update theme mode for the next cycle
update_theme_mode() { update_theme_mode() {

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 # Simple bash script to check and will try to update your system
# Local Paths # Local Paths
@ -15,23 +20,23 @@ fi
if command -v paru &> /dev/null || command -v yay &> /dev/null; then if command -v paru &> /dev/null || command -v yay &> /dev/null; then
# Arch-based # Arch-based
if command -v paru &> /dev/null; then 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.' notify-send -i "$iDIR/ja.png" -u low 'Arch-based system' 'has been updated.'
else 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.' notify-send -i "$iDIR/ja.png" -u low 'Arch-based system' 'has been updated.'
fi fi
elif command -v dnf &> /dev/null; then elif command -v dnf &> /dev/null; then
# Fedora-based # 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.' notify-send -i "$iDIR/ja.png" -u low 'Fedora system' 'has been updated.'
elif command -v apt &> /dev/null; then elif command -v apt &> /dev/null; then
# Debian-based (Debian, Ubuntu, etc.) # 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.' notify-send -i "$iDIR/ja.png" -u low 'Debian/Ubuntu system' 'has been updated.'
elif command -v zypper &> /dev/null; then elif command -v zypper &> /dev/null; then
# openSUSE-based # 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.' notify-send -i "$iDIR/ja.png" -u low 'openSUSE system' 'has been updated.'
else else
# Unsupported distro # Unsupported distro

View file

@ -1,5 +1,10 @@
#!/usr/bin/env bash #!/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 # Made and brought to by Kiran George
# /* -- ✨ https://github.com/SherLock707 ✨ -- */ ## # /* -- ✨ https://github.com/SherLock707 ✨ -- */ ##
@ -12,7 +17,13 @@
DEBUG=false DEBUG=false
SPECIAL_WS="special:scratchpad" SPECIAL_WS="special:scratchpad"
SPECIAL_NAME="${SPECIAL_WS#special:}"
ADDR_FILE="/tmp/dropdown_terminal_addr" 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) # Dropdown size and position configuration (percentages)
WIDTH_PERCENT=65 # Width as percentage of screen width WIDTH_PERCENT=65 # Width as percentage of screen width
@ -31,14 +42,65 @@ if [ "$1" = "-d" ]; then
fi fi
TERMINAL_CMD="$1" 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 function
debug_echo() { debug_echo() {
if [ "$DEBUG" = true ]; then if [ "$DEBUG" = true ]; then
echo "$@" echo "$@" >&2
fi 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 # Validate input
if [ -z "$TERMINAL_CMD" ]; then if [ -z "$TERMINAL_CMD" ]; then
echo "Missing terminal command. Usage: $0 [-d] <terminal_command>" 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])"' 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) # Function to animate window slide down (show)
animate_slide_down() { animate_slide_down() {
local addr="$1" local addr="$1"
@ -121,7 +205,30 @@ animate_slide_up() {
# Function to get monitor info including scale and name of focused monitor # Function to get monitor info including scale and name of focused monitor
get_monitor_info() { 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 if [ -z "$monitor_data" ] || [[ "$monitor_data" =~ ^null ]]; then
debug_echo "Error: Could not get focused monitor information" debug_echo "Error: Could not get focused monitor information"
return 1 return 1
@ -129,6 +236,7 @@ get_monitor_info() {
echo "$monitor_data" echo "$monitor_data"
} }
# Function to calculate dropdown position with proper scaling and centering # Function to calculate dropdown position with proper scaling and centering
calculate_dropdown_position() { calculate_dropdown_position() {
local monitor_info=$(get_monitor_info) 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" 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 # Validate scale value and provide fallback
if [ -z "$mon_scale" ] || [ "$mon_scale" = "null" ] || [ "$mon_scale" = "0" ]; then if [ -z "$mon_scale" ] || [ "$mon_scale" = "null" ] || [ "$mon_scale" = "0" ]; then
debug_echo "Invalid scale value, using 1.0 as fallback" debug_echo "Invalid scale value, using 1.0 as fallback"
@ -207,6 +322,12 @@ get_terminal_address() {
fi 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 # Function to get stored monitor name
get_terminal_monitor() { get_terminal_monitor() {
if [ -f "$ADDR_FILE" ] && [ -s "$ADDR_FILE" ]; then if [ -f "$ADDR_FILE" ] && [ -s "$ADDR_FILE" ]; then
@ -218,22 +339,48 @@ get_terminal_monitor() {
terminal_exists() { terminal_exists() {
local addr=$(get_terminal_address) local addr=$(get_terminal_address)
if [ -n "$addr" ]; then 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 else
return 1 return 1
fi fi
} }
# Function to check if terminal is in special workspace # Function to check if a window address exists
terminal_in_special() { window_exists() {
local addr=$(get_terminal_address) local addr="$1"
if [ -n "$addr" ]; then 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 else
return 1 return 1
fi 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 # Function to spawn terminal and capture its address
spawn_terminal() { spawn_terminal() {
debug_echo "Creating new dropdown terminal with command: $TERMINAL_CMD" 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 # Small delay to ensure it's properly in special workspace
sleep 0.2 sleep 0.2
# Move to current workspace but start hidden off-screen
# Now bring it back with the same animation as subsequent shows
# Use movetoworkspacesilent to avoid affecting workspace history
hyprctl dispatch movetoworkspacesilent "$CURRENT_WS,address:$new_addr" hyprctl dispatch movetoworkspacesilent "$CURRENT_WS,address:$new_addr"
hyprctl dispatch pin "address:$new_addr" ensure_pinned "$new_addr"
animate_slide_down "$new_addr" "$target_x" "$target_y" "$width" "$height" 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 return 0
fi fi
@ -303,8 +451,9 @@ spawn_terminal() {
} }
# Main logic # Main logic
if terminal_exists; then TERMINAL_ADDR=$(resolve_terminal_address)
TERMINAL_ADDR=$(get_terminal_address)
if [ -n "$TERMINAL_ADDR" ]; then
debug_echo "Found existing terminal: $TERMINAL_ADDR" debug_echo "Found existing terminal: $TERMINAL_ADDR"
focused_monitor=$(get_monitor_info | awk '{print $6}') focused_monitor=$(get_monitor_info | awk '{print $6}')
dropdown_monitor=$(get_terminal_monitor) dropdown_monitor=$(get_terminal_monitor)
@ -324,8 +473,9 @@ if terminal_exists; then
echo "$TERMINAL_ADDR $monitor_name" >"$ADDR_FILE" echo "$TERMINAL_ADDR $monitor_name" >"$ADDR_FILE"
fi fi
if terminal_in_special; then hidden_state=$(get_hidden_state)
debug_echo "Bringing terminal from scratchpad with slide down animation" 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 # Calculate target position
pos_info=$(calculate_dropdown_position) pos_info=$(calculate_dropdown_position)
@ -334,17 +484,16 @@ if terminal_exists; then
width=$(echo $pos_info | cut -d' ' -f3) width=$(echo $pos_info | cut -d' ' -f3)
height=$(echo $pos_info | cut -d' ' -f4) height=$(echo $pos_info | cut -d' ' -f4)
# Use movetoworkspacesilent to avoid affecting workspace history ensure_pinned "$TERMINAL_ADDR"
hyprctl dispatch movetoworkspacesilent "$CURRENT_WS,address:$TERMINAL_ADDR"
hyprctl dispatch pin "address:$TERMINAL_ADDR"
# Set size and animate slide down # Set size and animate slide down
hyprctl dispatch resizewindowpixel "exact $width $height,address:$TERMINAL_ADDR" hyprctl dispatch resizewindowpixel "exact $width $height,address:$TERMINAL_ADDR"
animate_slide_down "$TERMINAL_ADDR" "$target_x" "$target_y" "$width" "$height" animate_slide_down "$TERMINAL_ADDR" "$target_x" "$target_y" "$width" "$height"
hyprctl dispatch focuswindow "address:$TERMINAL_ADDR" hyprctl dispatch focuswindow "address:$TERMINAL_ADDR"
set_hidden_state "shown"
else 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 # Get current geometry for animation
geometry=$(get_window_geometry "$TERMINAL_ADDR") geometry=$(get_window_geometry "$TERMINAL_ADDR")
@ -359,14 +508,16 @@ if terminal_exists; then
# Animate slide up first # Animate slide up first
animate_slide_up "$TERMINAL_ADDR" "$curr_x" "$curr_y" "$curr_width" "$curr_height" animate_slide_up "$TERMINAL_ADDR" "$curr_x" "$curr_y" "$curr_width" "$curr_height"
# Small delay then move to special workspace and unpin # Move off-screen after animation
sleep 0.1 off_y=$((curr_y - curr_height - 200))
hyprctl dispatch pin "address:$TERMINAL_ADDR" # Unpin (toggle) hyprctl dispatch movewindowpixel "exact $curr_x $off_y,address:$TERMINAL_ADDR" >/dev/null 2>&1
hyprctl dispatch movetoworkspacesilent "$SPECIAL_WS,address:$TERMINAL_ADDR" ensure_unpinned "$TERMINAL_ADDR"
set_hidden_state "hidden"
else else
debug_echo "Could not get window geometry, moving to scratchpad without animation" debug_echo "Could not get window geometry, moving off-screen without animation"
hyprctl dispatch pin "address:$TERMINAL_ADDR" hyprctl dispatch movewindowpixel "exact 0 -1000,address:$TERMINAL_ADDR" >/dev/null 2>&1
hyprctl dispatch movetoworkspacesilent "$SPECIAL_WS,address:$TERMINAL_ADDR" ensure_unpinned "$TERMINAL_ADDR"
set_hidden_state "hidden"
fi fi
fi fi
else 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 #!/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 # Game Mode. Turning off all animations
notif="$HOME/.config/swaync/images/ja.png" notif="$HOME/.config/swaync/images/ja.png"
SCRIPTSDIR="$HOME/.config/hypr/scripts" SCRIPTSDIR="$HOME/.config/hypr/scripts"
# shellcheck source=/dev/null
. "$SCRIPTSDIR/WallpaperCmd.sh"
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}') HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
@ -17,13 +24,13 @@ if [ "$HYPRGAMEMODE" = 1 ] ; then
keyword general:border_size 1;\ keyword general:border_size 1;\
keyword decoration:rounding 0" keyword decoration:rounding 0"
hyprctl keyword "windowrule opacity 1 override 1 override 1 override, ^(.*)$" \thyprctl keyword "windowrule opacity 1 override 1 override 1 override, ^(.*)$"
swww kill "$WWW_CMD" kill
notify-send -e -u low -i "$notif" " Gamemode:" " enabled" notify-send -e -u low -i "$notif" " Gamemode:" " enabled"
sleep 0.1 sleep 0.1
exit exit
else 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 sleep 0.1
${SCRIPTSDIR}/WallustSwww.sh ${SCRIPTSDIR}/WallustSwww.sh
sleep 0.5 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

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