pain and suffering

This commit is contained in:
tulg 2025-10-18 17:35:04 +03:00
commit 510db0f1d4
42 changed files with 2150 additions and 0 deletions

35
config/hypr/hypridle.conf Normal file
View file

@ -0,0 +1,35 @@
general {
lock_cmd = pidof hyprlock || hyprlock
# avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore.
}
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
}
listener {
timeout = 300 # 5min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}
listener {
timeout = 330 # 5.5min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
}
listener {
timeout = 1800 # 30min
on-timeout = systemctl suspend # suspend pc
}

354
config/hypr/hyprland.conf Normal file
View file

@ -0,0 +1,354 @@
# #######################################################################################
# AUTOGENERATED HYPR CONFIG.
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
# #######################################################################################
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
# autogenerated = 1 # remove this line to remove the warning
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor = eDP-1, 1920x1080@60.02000, 0x0, 1.00
monitor = Virtual-1, 1920x1080,0x0, 1
#monitor = DP-1, 1920x1080@60, 0x0, 1
#monitor = HDMI-A-1, 1920x1080@60.02000, 0x0, 1
#monitor
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
#exec-once = garuda-welcome
# Add networkmanager applet to tray in waybar
exec-once = nm-applet --indicator
# Set keyboard layout
#exec-once = .local/bin/garuda-locale.sh
exec-once = NetworkManager
# Set monitor values. For own values, please comment with #
#exec-once = .local/bin/mon.sh
exec-once = swww-daemon
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
numlock_by_default= true
follow_mouse = 1
touchpad {
#natural_scroll = true
tap-to-click = true
disable_while_typing = true
}
sensitivity = -0.5 # -1.0 - 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgb(D3869B)
col.inactive_border = rgba(595959aa)
layout = dwindle
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10
blur {
enabled = true
size = 5
passes = 1
}
# drop_shadow = true
# shadow_range = 4
# shadow_render_power = 3
# col.shadow = rgba(1a1a1aee)
}
animations {
enabled = true
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 2, default, popin 80%
animation = border, 1, 2, default
animation = fade, 1, 2, default
animation = workspaces, 1, 2, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
# new_is_master = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
}
misc {
disable_hyprland_logo = true
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/
# executing for more
#device:epic mouse V1 {
# sensitivity = -0.5
#}
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# Example windowrule v1
#windowrule = float, ^(kitty)$
#windowrule = float, ^(garuda-assistant)$
#windowrule = float, ^(garuda-boot-options)$
#windowrule = float, ^(garuda-boot-repair)$
#windowrule = float, ^(garuda-gamer)$
#windowrule = float, ^(garuda-network-assistant)$
#windowrule = float, ^(garuda-settings-manager)$
#windowrule = float, ^(garuda-welcome)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = ALT
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod SHIFT, R, exec, hyprctl reload
#bind = $mainMod, 36, exec, footclient
bind = $mainMod, E, exec, kitty
bind = $mainMod, C, killactive,
bind = $mainMod, M, exec, nwgbar
bind = $mainMod, G, exec, /home/tulg/.config/looking-glass-client -F -f /dev/kvmfr0 -m 58
bind = $mainMod SHIFT, O, togglefloating,
bind = $mainMod, D, exec, wofi --show drun --allow-images -W 300 -H 500 -l 4
bind = $mainMod SHIFT, D, exec, nwg-drawer -mb 10 -mr 10 -ml 10 -mt 10
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod SHIFT, P, togglesplit, # dwindle
# Mainmod + Function keys
bind = $mainMod, F1, exec, firedragon
bind = $mainMod, F2, exec, thunderbird
bind = $mainMod, F3, exec, thunar
bind = $mainMod, F4, exec, geany
bind = $mainMod, F5, exec, github-desktop
bind = $mainMod, F6, exec, gparted
bind = $mainMod, F7, exec, inkscape
bind = $mainMod, F8, exec, blender
bind = $mainMod, F9, exec, meld
bind = $mainMod, F10, exec, joplin-desktop
bind = $mainMod, F11, exec, snapper-tools
bind = $mainMod, F12, exec, galculator
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, H, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, L, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, K, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod, J, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move to workspace with focused container with ALT + SHIFT + [0-9]
bind = ALT SHIFT, 1, movetoworkspace, 1
bind = ALT SHIFT, 2, movetoworkspace, 2
bind = ALT SHIFT, 3, movetoworkspace, 3
bind = ALT SHIFT, 4, movetoworkspace, 4
bind = ALT SHIFT, 5, movetoworkspace, 5
bind = ALT SHIFT, 6, movetoworkspace, 6
bind = ALT SHIFT, 7, movetoworkspace, 7
bind = ALT SHIFT, 8, movetoworkspace, 8
bind = ALT SHIFT, 9, movetoworkspace, 9
bind = ALT SHIFT, 0, movetoworkspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# background
#exec-once = wpaperd
# status bar
exec-once = waybar
layerrule = blur , waybar
layerrule = ignorezero , waybar
# set volume (laptops only and may or may not work on PCs)
bind = ,122, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
bind = ,123, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
bind = ,121, exec, pactl set-sink-volume @DEFAULT_SINK@ 0%
# other bindings
#bind = $mainMod, E, exec, kitty
bind = $mainMod, F, fullscreen
bind = $mainMod, Q, exec, kitty lf
bind = ,232,exec,brightnessctl -c backlight set 5%-
bind = ,233,exec,brightnessctl -c backlight set +5%
#bind = $mainMod SHIFT,C, exec, killall -9 wpaperd && wpaperd
# Screenshots:
#
# Change to swappy https://github.com/jtheoof/swappy
# Old functions only commented out to make it easier for the user to change if necessary.
# Snip a selection and pipe to swappy
bind = ,Print, exec, grim -g "$(slurp)" - | swappy -f -
# Screenshot a window and pipe to swappy
bind = CTRL, Print, exec, .config/hypr/scripts/screenshot_window.sh
# Screenshot the current display and pipe to swappy
bind = SHIFT, Print, exec, .config/hypr/scripts/screenshot_display.sh
# https://github.com/hyprwm/contrib/blob/main/grimblast/grimblast.1.scd
# Print: All outputs
# SHIFT+Print: Select area
# $mainMod+Print: Current window
# $mainMod+Shfit+Print: Current output
#
# bind = ,Print, exec, grimblast save screen && notify-send Screenshot captured
# bind = SHIFT, Print, exec, grimblast save area && notify-send Selected\ area captured
# bind = $mainMod, Print, exec, grimblast save active && notify-send Active\ window captured
# bind = $mainMod SHIFT, Print, exec, grimblast output active && notify-send Output captured
# for resizing window
# will switch to a submap called resize
bind=$mainMod,R,submap,resize
# will start a submap called "resize"
submap=resize
# sets repeatable binds for resizing the active window
binde=,right,resizeactive,50 0
binde=,L,resizeactive,50 0
binde=,left,resizeactive,-50 0
binde=,H,resizeactive,-50 0
binde=,up,resizeactive,0 -50
binde=,K,resizeactive,0 -50
binde=,down,resizeactive,0 50
binde=,J,resizeactive,0 50
# use reset to go back to the global submap
bind=,escape,submap,reset
# will reset the submap, meaning end the current one and return to the global one
submap=reset
# to move window
bind = $mainMod SHIFT,up, movewindow, u
bind = $mainMod SHIFT,K, movewindow, u
bind = $mainMod SHIFT,down, movewindow, d
bind = $mainMod SHIFT,J, movewindow, d
bind = $mainMod SHIFT,left, movewindow, l
bind = $mainMod SHIFT,H, movewindow, l
bind = $mainMod SHIFT,right, movewindow, r
bind = $mainMod SHIFT,L, movewindow, r
# other blurings
blurls = wofi
blurls = thunar
blurls = gedit
blurls = gtk-layer-shell # for nwg-drawer
blurls = catfish
# window rules
#windowrule = opacity 0.85 override 0.85 override,^(thunar)$
#windowrule = opacity 0.85 override 0.85 override,^(gedit)$
#windowrule = opacity 0.85 override 0.85 override,^(catfish)$
#windowrule = stayfocused, ^(wofi)$
# window rules with evaluation
windowrulev2 = opacity 0.85 0.85,floating:1
exec-once = mako
exec-once =/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = foot --server
# experimental(might work might won't)
# pre executions (under development)
#exec-once=exec xrdb -load ~/.Xresources
# Clipboard Manager
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
bind = $mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
# video play paues bindings
bind=,172,exec,playerctl play-pause
bind=,171,exec,playerctl next
bind=,173,exec,playerctl previous
# Use gtk-settings
exec-once = apply-gsettings
exec-once = gsettings set org.gnome.desktop.interface cursor-theme BreezeX-RosePine-Linux
exec-once = gsettings set org.gnome.desktop.interface cursor-size 28
env = HYPRCURSOR_THEME,rose-pine-hyprcursor
env = HYPRCURSOR_SIZE,28
# Performance Tweaks (For less power consumption without sacrificing performance)
# See : https://wiki.hyprland.org/Configuring/Performance/
misc:vfr = true
# enable G-Hyprland
bind = $mainMod SHIFT, G, exec, footclient -e ~/.local/bin/bear/implement_gum.sh enable
# Install Garuda Hyprland
bind = $mainMod, I, exec, .local/bin/calamares.sh
# Let the user customize this hyprstart script by overriding stuff in $hyprstart
exec-once = .config/hypr/exec-hyprland

85
config/hypr/hyprlock.conf Normal file
View file

@ -0,0 +1,85 @@
# background
background {
monitor =
#path = screenshot
path = /usr/share/wallpapers/garuda-wallpapers/Garuda-TilliDie-cube-105.png
color = $background
blur_passes = 2
contrast = 1
brightness = 0.5
vibrancy = 0.2
vibrancy_darkness = 0.2
}
# general
general {
no_fade_in = true
no_fade_out = true
hide_cursor = false
grace = 0
disable_loading_bar = false
}
# animations
animations {
enabled = true
}
# input field
input-field {
monitor =
size = 250, 60
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.35 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(236, 240, 15, 1)
inner_color = rgba(240 , 204, 14, 1)
font_color = $foreground
fade_on_empty = false
rounding = -1
check_color = rgb(204, 136, 34)
placeholder_text = <i><span foreground="##000000">Input Password...</span></i>
hide_input = false
position = 0, -200
halign = center
valign = center
}
# date
label {
monitor =
text = cmd[update:1000] echo "$(date +"%A, %B %d")"
color = rgba(242, 243, 244, 0.75)
font_size = 22
font_family = JetBrains Mono
position = 0, 300
halign = center
valign = center
}
# time
label {
monitor =
text = cmd[update:1000] echo "$(date +"%-I:%M")"
color = rgba(242, 243, 244, 0.75)
font_size = 95
font_family = JetBrains Mono Extrabold
position = 0, 200
halign = center
valign = center
}
# things that can be played by user
Profile Picture
image {
monitor =
path = /usr/share/logos/Hyprland_logo.png
size = 200
border_size = 2
border_color = $foreground
position = 0, 0
halign = center
valign = center
}

19
config/hypr/hyprstart Executable file
View file

@ -0,0 +1,19 @@
#!/bin/sh
cd ~
# user preferred settings
#cursor size
export XCURSOR_SIZE=24
# text editor
export MICRO_TRUECOLOR=1
export EDITOR=/usr/bin/micro
#browser
export BROWSER=firefox
#terminal
export TERM=kitty
#mail
export MAIL=thunderbird
# check /usr/local/bin/hyprstart

View file

View file

@ -0,0 +1,11 @@
#!/bin/bash
a=$(pidof hypridle)
if [[ $a ]]
then
killall -9 hypridle
notify-send "idle inhibitor activated"
else
notify-send "idle inhibitor deactivated"
hypridle &> /dev/null
fi

View file

@ -0,0 +1,29 @@
#!/bin/sh
swaylock \
--screenshots \
--clock \
--hide-keyboard-layout \
--indicator \
--indicator-radius 100 \
--indicator-thickness 7 \
--effect-blur 7x5 \
--effect-vignette 0.5:0.5 \
--ring-color cba6f7 \
--ring-ver-color 89b4fa \
--ring-wrong-color f38ba8 \
--ring-clear-color a6e3a1 \
--key-hl-color 1e1e2e \
--bs-hl-color eba0ac \
--text-color 11111b \
--text-caps-lock-color 11111b \
--line-color 00000000 \
--line-ver-color 00000000 \
--line-wrong-color 00000000 \
--line-clear-color 00000000 \
--separator-color 00000000 \
--inside-color cba6f7 \
--inside-ver-color 89b4fa\
--inside-wrong-color f38ba8 \
--inside-clear-color a6e3a1 \
--grace 2 \
--fade-in 0.2

View file

@ -0,0 +1,6 @@
#!/bin/bash
# .config/hypr/scripts/screenshot_display.sh
# Screenshot the current display Shift+Print
output_id=$(hyprctl -j monitors | jq -r '.[] | select(.focused).name')
grim -o $output_id - | swappy -f -

View file

@ -0,0 +1,5 @@
#!/bin/bash
# .config/hypr/scripts/screenshot_window.sh
# Screenshot a window Ctrl+Print
grim -g "$(hyprctl -j activewindow | jq -r '.at + .size | "\(.[0]),\(.[1]) \(.[2])x\(.[3])"' | slurp)" - | swappy -f -

View file

View file

@ -0,0 +1,53 @@
## name: Rosé Pine Moon
## author: mvllow
## license: MIT
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine-moon.conf
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
foreground #e0def4
background #232136
selection_foreground #e0def4
selection_background #44415a
cursor #56526e
cursor_text_color #e0def4
url_color #c4a7e7
active_tab_foreground #e0def4
active_tab_background #393552
inactive_tab_foreground #6e6a86
inactive_tab_background #232136
# black
color0 #393552
color8 #6e6a86
# red
color1 #eb6f92
color9 #eb6f92
# green
color2 #3e8fb0
color10 #3e8fb0
# yellow
color3 #f6c177
color11 #f6c177
# blue
color4 #9ccfd8
color12 #9ccfd8
# magenta
color5 #c4a7e7
color13 #c4a7e7
# cyan
color6 #ea9a97
color14 #ea9a97
# white
color7 #e0def4
color15 #e0def4

View file

@ -0,0 +1,53 @@
## name: Rosé Pine Moon
## author: mvllow
## license: MIT
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine-moon.conf
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
foreground #e0def4
background #232136
selection_foreground #e0def4
selection_background #44415a
cursor #56526e
cursor_text_color #e0def4
url_color #c4a7e7
active_tab_foreground #e0def4
active_tab_background #393552
inactive_tab_foreground #6e6a86
inactive_tab_background #232136
# black
color0 #393552
color8 #6e6a86
# red
color1 #eb6f92
color9 #eb6f92
# green
color2 #3e8fb0
color10 #3e8fb0
# yellow
color3 #f6c177
color11 #f6c177
# blue
color4 #9ccfd8
color12 #9ccfd8
# magenta
color5 #c4a7e7
color13 #c4a7e7
# cyan
color6 #ea9a97
color14 #ea9a97
# white
color7 #e0def4
color15 #e0def4

8
config/kitty/kitty.conf Normal file
View file

@ -0,0 +1,8 @@
background_opacity 0.3
enable_audio_bell no
# BEGIN_KITTY_THEME
# Rosé Pine Moon
#include current-theme.conf
# END_KITTY_THEME

View file

@ -0,0 +1,2 @@
background_opacity 0.3
enable_audio_bell no

BIN
config/lf/lf.tar.gz Normal file

Binary file not shown.

3
config/lf/lf_kitty_clean Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty

13
config/lf/lf_kitty_preview Executable file
View file

@ -0,0 +1,13 @@
#!/usr/bin/env bash
file=$1
w=$2
h=$3
x=$4
y=$5
if [[ "$( file -Lb --mime-type "$file")" =~ ^image ]]; then
kitty +kitten icat --silent --stdin no --transfer-mode file --place "${w}x${h}@${x}x${y}" "$file" < /dev/null > /dev/tty
exit 1
fi
pistol "$file"

147
config/lf/lfrc Normal file
View file

@ -0,0 +1,147 @@
# interpreter for shell commands
set shell zsh
# set '-eu' options for shell commands
# These options are used to have safer shell commands. Option '-e' is used to
# exit on error and option '-u' is used to give error for unset variables.
# Option '-f' disables pathname expansion which can be useful when $f, $fs, and
# $fx variables contain names with '*' or '?' characters. However, this option
# is used selectively within individual commands as it can be limiting at
# times.
set shellopts '-eu'
# set internal field separator (IFS) to "\n" for shell commands
# This is useful to automatically split file names in $fs and $fx properly
# since default file separator used in these variables (i.e. 'filesep' option)
# is newline. You need to consider the values of these options and create your
# commands accordingly.
set ifs "\n"
# leave some space at the top and the bottom of the screen
set scrolloff 10
# Use the `dim` attribute instead of underline for the cursor in the preview pane
set cursorpreviewfmt "\033[7;2m"
# use enter for shell commands
map <enter> shell
# show the result of execution of previous commands
map ` !true
# execute current file (must be executable)
map x $$f
map X !$f
map D set hidden!
map d set hidden!
# dedicated keys for file opener actions
map o &mimeopen $f
map O $mimeopen --ask $f
cmd nano ${{
nano $f
}}
cmd open-with-cli $$@ nano
#cmd open-with-cli $$@ $fx
#map e push :open-with-cli<space> ## input application
map e nano
map w wp
map bw wpm
map br cd /run/media/tulg
map bp cd /run/media/tulg/backup1/pogland/wallpapers/
map c cd ~/.config/
map f wppp
cmd wp &{{
swww img $f # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
cmd wppp &{{
swayimg $f # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
cmd wpm &{{
mv $f /run/media/tulg/backup1/pogland/wallpapers # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
cmd drives &{{
cd /run/media/tulg # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
cmd on-cd &{{
# '&' commands run silently in background (which is what we want here),
# but are not connected to stdout.
printf "\033]0; $(pwd | sed "s|$HOME|~|")\007" > /dev/tty # To make sure our escape sequence still reaches stdout we pipe it to /dev/tty
}}
# also run at startup
on-cd
# define a custom 'open' command
# This command is called when current file is not a directory. You may want to
# use either file extensions and/or mime types here. Below uses an editor for
# text files and a file opener for the rest.
cmd open &{{
case $(file --mime-type -Lb $f) in
text/*) lf -remote "send $id nano \$fx";;
*) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;;
esac
}}
# mkdir command. See wiki if you want it to select created dir
map a :push %mkdir<space>
# define a custom 'rename' command without prompt for overwrite
# cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
# map r push :rename<space>
# make sure trash folder exists
# %mkdir -p ~/.trash
# move current file or selected files to trash folder
# (also see 'man mv' for backup/overwrite options)
cmd trash %set -f; mv $fx ~/.trash
# define a custom 'delete' command
# cmd delete ${{
# set -f
# printf "$fx\n"
# printf "delete?[y/n]"
# read ans
# [ "$ans" = "y" ] && rm -rf $fx
# }}
# use '<delete>' key for either 'trash' or 'delete' command
# map <delete> trash
# map <delete> delete
# extract the current file with the right command
# (xkcd link: https://xkcd.com/1168/)
cmd extract ${{
set -f
case $f in
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
*.tar.gz|*.tgz) tar xzvf $f;;
*.tar.xz|*.txz) tar xJvf $f;;
*.zip) unzip $f;;
*.rar) unrar x $f;;
*.7z) 7z x $f;;
esac
}}
# compress current file or selected files with tar and gunzip
cmd tar ${{
set -f
mkdir $1
cp -r $fx $1
tar czf $1.tar.gz $1
rm -rf $1
}}
# compress current file or selected files with zip
cmd zip ${{
set -f
mkdir $1
cp -r $fx $1
zip -r $1.zip $1
rm -rf $1
}}
set preview
set previewer ~/.config/lf/lf_kitty_preview
set cleaner ~/.config/lf/lf_kitty_clean

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 MiB

16
config/mako/config Normal file
View file

@ -0,0 +1,16 @@
anchor=top-right
font=fira sans 10
background-color=#232136
text-color=#D3869B
width=350
margin=0,20,20
padding=10
border-size=1
border-color=#232136
border-radius=5
default-timeout=10000
group-by=summary
icons=1
[grouped]
format=<b>%s</b>\n%b

176
config/waybar/config Normal file
View file

@ -0,0 +1,176 @@
{
"layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
"height": 40,
"width":1920,
"margin": "0 0 0 0",
"spacing":0,
// Choose the order of the modules
// Add according to your wishes: "custom/weather"
"modules-left": ["hyprland/workspaces", "hyprland/window"],
"modules-center": ["custom/network_traffic"],
"modules-right": ["backlight","temperature", "cpu", "memory", "battery", "pulseaudio", "network", "tray", "clock"],
// Modules configuration
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate",
"all-outputs": true,
"sort-by-number": true,
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10",
"focused": "",
"default": ""
},
"on-scroll-up": "hyprctl dispatch workspace e+1",
"on-scroll-down": "hyprctl dispatch workspace e-1",
},
"hyprland/window": {
"format": "{}",
"icon":false,
"icon-size" : 20
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
"icon-size": 20,
"spacing": 5
},
"clock": {
"tooltip-format": "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>",
"format": " {:%a %d %b  %I:%M %p}", //12 hour format
//"format": " {:%a %d %b  %H:%M}", //24 hour format
"format-alt": " {:%d/%m/%Y  %H:%M:%S}",
//"max-length": 200
"interval": 1,
"on-click": "~/.config/waybar/scripts/OCV",
},
"cpu": {
"format": "🖳{usage}%",
"on-click": "foot -e htop"
},
"memory": {
"format": "🖴 {: >3}%",
"on-click": "foot -e htop"
},
"temperature": {
"thermal-zone": 7, // Check with: # cat /sys/class/hwmon/hwmon*/temp1_input
"hwmon-path": "/sys/class/hwmon/hwmon7/temp1_input",
"critical-threshold": 80,
"format-critical": "{temperatureC}°C ",
"format": "{temperatureC}°C "
},
"backlight": {
// "device": "acpi_video1",
"format": "{icon} {percent: >3}%",
"format-icons": ["", ""],
"on-scroll-down": "brightnessctl -c backlight set 1%-",
"on-scroll-up": "brightnessctl -c backlight set +1%",
"on-click": "~/.config/waybar/scripts/backlight-hint.sh"
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity: >3}%",
"format-icons": ["", "", "", "", ""]
// "format-good": "", // An empty format will hide the module
// "format-full": "",
//"format-icons": ["", "", "", "", "", "", "", "", "", ""]
//"format": "&#x202b;{icon}&#x202c; {capacity}%",
//"format-icons": ["ﱉ","ﱊ","ﱌ","ﱍ","ﱋ"]
},
"network": {
//"interface": "wlp0s20f3", // (Optional) To force the use of this interface "format-wifi": " {essid}",
"format": "⚠Disabled",
"format-wifi": "",
"format-ethernet": "",
"format-linked": "{ifname} (No IP)",
"format-disconnected": "⚠Disabled",
"format-alt": "{ifname}: {ipaddr}/{cidr}",
"family": "ipv4",
"tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}",
"tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}",
//"min-length": 2,
//"max-length": 2,
"on-click": "nm-connection-editor"
},
"custom/updates": {
"format": "{} {icon}",
"return-type": "json",
"format-icons": {
"has-updates": "󱍷",
"updated": "󰂪",
"interval": 7200,
},
"exec-if": "which waybar-module-pacman-updates",
"exec": "waybar-module-pacman-updates",
"on-click": "foot -e update"
},
"custom/power": {
"format":"⏻",
"on-click": "nwgbar",
"tooltip": false,
},
"custom/keyboard-layout": {
"format": " Cheat", // Icon: keyboard
"on-click": "~/.config/waybar/scripts/keyhint.sh",
},
"custom/launcher": {
"format":" ",
"on-click": "exec nwg-drawer -c 7 -is 70 -spacing 23",
"tooltip": false,
},
"custom/network_traffic": {
"exec": "~/.config/waybar/scripts/network_traffic.sh",
"return-type": "json",
"format-ethernet": "{icon} {ifname} ⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", // optional
},
"pulseaudio": {
"scroll-step": 3, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
//"format-source": "{volume}% ",
//"format-source-muted": "",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol",
"on-click-right": "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
},
// https://github.com/chubin/wttr.in
"custom/weather": {
"exec": "curl 'https://wttr.in/Essen?format=2'",
"interval": 900,
"on-click": "yad --html --uri='https://wttr.in/Essen' --center --fixed --width=1000 --height=680 --timeout=60 --timeout-indicator=right"
},
}

BIN
config/waybar/launcher.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

9
config/waybar/scripts/OCV Executable file
View file

@ -0,0 +1,9 @@
#!/bin/bash
yad --width=400 --height=200 \
--center \
--fixed \
--title="Calendar" \
--no-buttons \
yad \
--calendar

View file

@ -0,0 +1,12 @@
#!/bin/bash
yad --width=100 --height=100 \
--center \
--fixed \
--title="Backlight" \
--no-buttons \
--timeout=10 \
--timeout-indicator=bottom \
yad \
--text="\nScroll your mouse wheel to change \n the backlight of the monitor." \

View file

@ -0,0 +1,7 @@
#!/bin/sh
sleep 20
hyprctl keyword windowrule "workspace unset,nmtui-colors"
hyprctl keyword windowrule "workspace unset,calamares"
hyprctl keyword windowrule "workspace unset,keyhint.sh"
hyprctl keyword windowrule "workspace unset,firedragon"

View file

@ -0,0 +1,37 @@
#!/bin/sh
# "Change keyboard layout in" "~/.config/hypr/hyprland.conf" " " \
yad --width=530 --height=640 \
--center \
--fixed \
--title="Garuda Hyprland Keybindings" \
--no-buttons \
--list \
--column=Key: \
--column=Description: \
--column=Command: \
--timeout=60 \
--timeout-indicator=right \
"ESC" "close this app" "" "=" "modkey" "(set mod Mod4)" \
"+Shift+g" "G-hyprland" "implement G-Hyprland" \
"+enter/+t" "Terminal" "(foot)" \
"" "Application Menu" "(wofi)" \
"+Shift+d" "Full Launcher" "(nwggrid)" \
"+o" "" "Open Broswer" \
"+n" "" "Open Files" \
"+q" "close focused app" "(kill)" \
"+v" "clipboard manager" "(cliphist)" \
"+r" "Resize windows" "(resize)" \
"Print" "screenshot" "(grimblast)" \
"Shift+Print" "screenshot region" "(grimblast)" \
"+Print" "screenshot window" "(grimblast)" \
"+Shift+e" "power-menu" "(wofi)" \
"+Shift+c" "Change wallpaper" "(wpaperd)" \
"+f" "Fullscreen" "Toggles to full screen" \
"+Shift+f" "fullscreenstate" "Behave full screen without full screen" \
"+m" "maximize" "Hides all the windows other then focused window" \
"+Shift+Spacebar" "Float" "Toggle windows to float" \
"+p" "Dwindle effect" "pseudo" \
"+Shift+p" "Dwindle effect" "toggle split" \
"+i" "Calamares" "Install Garuda Hyprland" \
"" "" " Window closed in 60 sec."\

View file

@ -0,0 +1,109 @@
#!/bin/bash
# network_traffic.sh [-tPOLLING_INTERVAL] [NETWORK_INTERFACE...]
getopts t: __ && shift
isecs=${OPTARG:-1}
ifaces=($@)
: ${rate_max:=1000000} # maximum transfer rate for {percent}, can be overridden setting the env var
# `snore` adapted from https://blog.dhampir.no/content/sleeping-without-a-subprocess-in-bash-and-how-to-sleep-forever
# without MacOS workaround, TODO: with _snore_fd initialized separatedly, also i dont touch IFS so dont bother with it
snore() {
local IFS
[[ -n "${_snore_fd:-}" ]] || { exec {_snore_fd}<> <(:); } 2>/dev/null
read ${1:+-t "$1"} -u $_snore_fd || :
}
human_readable() {
local hrunits=( B K M G T P )
local ndigits=${#1}
local idxunit=$(( (2 + ndigits) / 3 - 1))
local lentrim=$(( ndigits - (idxunit * 3 ) ))
echo ${1::$lentrim}${hrunits[$idxunit]}
}
exit_err() {
printf '{"text": "⚠ %s", "tooltip": "%s", "class": "error"}\n' "$@"
exit
}
if test ${#ifaces[@]} -gt 0; then
# sanity check the interface names
for iface in ${ifaces[@]}; do
test -h "/sys/class/net/${iface}" || exit_err "${iface}" "${iface} is not an existing network interface name"
done
else
# default to all interfaces except `lo`
ifaces=(/sys/class/net/*)
ifaces=(${ifaces[@]##*/})
ifaces=(${ifaces[@]^(eth|wlan|enp|wlp|eno)})
fi
# sanity check polling interval
if test ${isecs} -lt 1; then
exit_err "${isecs}" "${isecs} is not a valid polling interval"
fi
# NOTE: `snore` would take a decimal interval but bash arithmetic does not
#if test $(echo "${isecs} >= 0.2" |bc) -eq 0; then
# exit_err "${isecs}" "${isecs} is not a valid polling interval"
#fi
# NOTE: `/proc/net/dev` format is:
# interface:
# RX bytes packets errs drop fifo frame compressed multicast
# TX bytes packets errs drop fifo colls carrier compressed
# NOTE: array items are:
# 0=rx_bytes 1=rx_packets 2=rx_errs 3=rx_drop
# 4=tx_bytes 5=tx_packets 6=tx_errs 7=tx_drop
for iface in ${ifaces[@]} aggregate; do
declare -a traffic_prev_${iface} traffic_curr_${iface} traffic_delt_${iface}
declare -n traffic_prev=traffic_prev_${iface}
declare -n traffic_curr=traffic_curr_${iface}
declare -n traffic_delt=traffic_delt_${iface}
traffic_prev=( 0 0 0 0 0 0 0 0 )
traffic_curr=( 0 0 0 0 0 0 0 0 )
traffic_delt=( 0 0 0 0 0 0 0 0 )
done
# TODO: rearrange the loop, do not show bogus on first iteration
while snore ${isecs} ;do
tooltip=""
traffic_delt_aggregate=( 0 0 0 0 0 0 0 0 )
readarray -s2 proc_net_dev </proc/net/dev
while read -a data; do
iface=${data[0]%:}
test "${ifaces[*]}" = "${ifaces[*]//${iface}/}" && continue
declare -n traffic_prev=traffic_prev_${iface}
declare -n traffic_curr=traffic_curr_${iface}
declare -n traffic_delt=traffic_delt_${iface}
traffic_curr=(${data[@]:1:4} ${data[@]:9:4})
#FIXME: tooltip is delayed one iteration wrt main display (but why?)
#printf -v tooltip_hr_rx '%4s⇣' $(human_readable ${traffic_delt[0]})
#printf -v tooltip_hr_tx '%4s⇡' $(human_readable ${traffic_delt[4]})
#tooltip="${tooltip:+${tooltip}\r}${iface}\t${tooltip_hr_rx}\t${tooltip_hr_tx}"
for i in {0..7}; do
(( traffic_delt[i] = ( traffic_curr[i] - traffic_prev[i] ) / isecs ))
(( traffic_delt_aggregate[i] += traffic_delt[i] ))
done
traffic_prev=(${traffic_curr[@]})
done <<<"${proc_net_dev[@]}"
printf '{"text": "%4s⇣ %4s⇡", "tooltip": "%s", "percentage": %d}\n' \
$(human_readable ${traffic_delt_aggregate[0]}) \
$(human_readable ${traffic_delt_aggregate[4]}) \
"${tooltip}" \
$(( ( traffic_delt_aggregate[0] + traffic_delt_aggregate[4] ) / rate_max ))
#printf '{"text": "%5s⇣ %5s⇡", "alt": "%s", "tooltip": "%s", "class": "%s", "percentage": %d }\n' $(human_readable ${traffic_delt[0]}) $(human_readable ${traffic_delt[4]}) '_alt' '_tooltip' '_class' 0
done
# NOTE: in waybar config (do NOT use "interval"):
# "custom/network_traffic": {
# "exec": "~/.config/waybar/scripts/network_traffic.sh",
# "return-type": "json",
# "format": "Speed: {}", // optional
# },

187
config/waybar/style.css Normal file
View file

@ -0,0 +1,187 @@
/* =============================================================================
*
* Waybar configuration
*
* Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration
*
* =========================================================================== */
/* -----------------------------------------------------------------------------
* Keyframes
* -------------------------------------------------------------------------- */
/*
Polar Night
nord0 #2e3440
nord1 #3b4252
nord2 #434c5e
nord3 #4c566a
Snow Storm
nord4 #d8dee9
nord5 #e5e9f0
nord6 #eceff4
Frost
nord7 #8fbcbb
nord8 #88c0d0
nord9 #81a1c1
nord10 #5e81ac
Aurora
nord11 #bf616a
nord12 #d08770
nord13 #ebcb8b
nord14 #a3be8c
nord15 #b48ead
*/
/* -----------------------------------------------------------------------------
* Base styles
* -------------------------------------------------------------------------- */
/* Reset all styles */
* {
color:#a3be8c;
border: 0;
border-radius: 0;
padding: 0 0;
font-family:Symbols Nerd Font Mono;
font-size: 15px;
margin-right: 5px;
margin-left: 5px;
padding-bottom:2px;
}
window#waybar {
background:rgba (0, 0, 0, 0.5);
border-radius: 20px 20px 20px 20px;
color: #D3869B;
}
#workspaces button {
padding: 2px 0px;
border-bottom: 2px;
color: #D3869B;
border-color: #d8dee9;
border-style: solid;
margin-top:2px;
}
#workspaces button.active {
border-color: #D3869B;
}
#clock, #battery, #cpu, #memory,#idle_inhibitor, #temperature,#custom-keyboard-layout, #backlight, #network, #pulseaudio, #tray, #window,#custom-launcher,#custom-power,#custom-updates ,#custom-network_traffic,#custom-weather{
padding: 0 3px;
border-bottom: 2px;
border-style: solid;
}
/* -----------------------------------------------------------------------------
* Module styles
* -------------------------------------------------------------------------- */
#clock {
color:#a3be8c;
}
#backlight {
color: #ebcb8b;
}
#battery {
color: #d8dee9;
}
#battery.charging {
color: #81a1c1;
}
@keyframes blink {
to {
color: #4c566a;
background-color: #eceff4;
}
}
#battery.critical:not(.charging) {
background: #bf616a;
color: #eceff4;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#cpu {
color:#a3be8c ;
}
#memory {
color: #d3869b;
}
#network.disabled {
color:#bf616a;
}
#network{
color:#a3be8c;
}
#network.disconnected {
color: #bf616a;
}
#pulseaudio {
color: #b48ead;
}
#pulseaudio.muted {
color: #3b4252;
}
#temperature {
color: #8fbcbb;
}
#temperature.critical {
color: #bf616a;
}
#idle_inhibitor {
color: #ebcb8b;
}
#tray {
}
#custom-launcher{
font-size: 20px;
background-image: url('/home/tulg/.config/waybar/launcher.png');
background-position: center;
background-repeat: no-repeat;
background-size: contain;
border-style: hidden;
}
#custom-power{
border-style: hidden;
margin-top:2px;
}
#window{
border-style: hidden;
margin-top:1px;
color: #D3869B;
}
#custom-keyboard-layout{
color:#d08770;
}
#custom-network_traffic{
color:#d08770;
}

10
config/wofi/config Normal file
View file

@ -0,0 +1,10 @@
location=middle
show=drun
width=650
height=550
always_parse_args=true
show_all=true
print_command=true
layer=overlay
insensitive=true
prompt=

View file

@ -0,0 +1,8 @@
hide_search=true
hide_scroll=true
width=1
show=dmenu
lines=5
location=centre
x=870
y=455

51
config/wofi/style.css Normal file
View file

@ -0,0 +1,51 @@
window {
margin: 0px;
background-color: #232136;
border-radius: 0px;
font-family:Symbols Nerd Font Mono;
font-size: 10px;
}
#input {
margin: 3px;
border-radius: 0px;
border: none;
border-radius: 0px;;
color: #eb6f92;
background-color: #232136;
}
#inner-box {
margin: 3px;
border: none;
color: #232136;
border-radius: 0px;
}
#outer-box {
margin: 8px;
border: none;
background-color: #232136;
}
#scroll {
margin: 0px;
border: none;
}
#text {
margin: 5px;
border: none;
color: #e0def4;
}
#entry:selectd {
color: #232136;
border-radius: 0px;;
background-color: #232136;
}
#entry:selected * {
color: #232136;
border-radius: 0px;;
}

View file

@ -0,0 +1,17 @@
* {
--base: #faf4ed;
--surface: #fffaf3;
--overlay: #f2e9e1;
--muted: #9893a5;
--subtle: #797593;
--text: #575279;
--love: #b4637a;
--gold: #ea9d34;
--rose: #d7827e;
--pine: #286983;
--foam: #56949f;
--iris: #907aa9;
--highlightLow: #f4ede8;
--highlightMed: #dfdad9;
--highlightHigh: #cecacd;
}

View file

@ -0,0 +1,17 @@
* {
--base: #191724;
--surface: #1f1d2e;
--overlay: #26233a;
--muted: #6e6a86;
--subtle: #908caa;
--text: #e0def4;
--love: #eb6f92;
--gold: #f6c177;
--rose: #ebbcba;
--pine: #31748f;
--foam: #9ccfd8;
--iris: #c4a7e7;
--highlightLow: #21202e;
--highlightMed: #403d52;
--highlightHigh: #524f67;
}

View file

@ -0,0 +1,17 @@
* {
--base: #232136;
--surface: #2a273f;
--overlay: #393552;
--muted: #6e6a86;
--subtle: #908caa;
--text: #e0def4;
--love: #eb6f92;
--gold: #f6c177;
--rose: #ea9a97;
--pine: #3e8fb0;
--foam: #9ccfd8;
--iris: #c4a7e7;
--highlightLow: #2a283e;
--highlightMed: #44415a;
--highlightHigh: #56526e;
}

View file

@ -0,0 +1,71 @@
@import "rose-pine-moon.css";
:root {
--zen-colors-primary: var(--base) !important;
--zen-primary-color: var(--base) !important;
--zen-colors-secondary: var(--surface) !important;
--zen-colors-tertiary: var(--overlay) !important;
--zen-colors-border: var(--iris) !important;
--toolbarbutton-icon-fill: var(--iris) !important;
--lwt-text-color: var(--text) !important;
--toolbar-field-color: var(--text) !important;
--tab-selected-textcolor: var(--iris) !important;
--toolbar-field-focus-color: var(--text) !important;
--toolbar-color: var(--text) !important;
--newtab-text-primary-color: var(--text) !important;
--arrowpanel-color: var(--text) !important;
--arrowpanel-background: var(--overlay) !important;
--sidebar-text-color: var(--text) !important;
--lwt-sidebar-text-color: var(--text) !important;
--lwt-sidebar-background-color: var(--base) !important;
--toolbar-bgcolor: var(--base) !important;
--newtab-background-color: var(--overlay) !important;
--zen-themed-toolbar-bg: var(--base) !important;
--zen-main-browser-background: var(--base) !important;
}
#permissions-granted-icon {
color: #181825 !important;
}
.sidebar-placesTree {
background-color: var(--surface) !important;
}
#zen-workspaces-button {
background-color: var(--surface) !important;
}
#urlbar-background {
background-color: var(--surface) !important;
}
.tab-background[selected=""] {
background: var(--overlay) !important;
}
.content-shortcuts {
background-color: var(--surface) !important;
border-color: #89b4fa !important;
}
.urlbarView-url {
color: var(--iris) !important;
}
#zenEditBookmarkPanelFaviconContainer {
background: var(--base) !important;
}
toolbar .toolbarbutton-1 {
&:not([disabled]) {
&:is([open], [checked])
> :is(
.toolbarbutton-icon,
.toolbarbutton-text,
.toolbarbutton-badge-stack
) {
fill: var(--base);
}
}
}

View file

@ -0,0 +1,8 @@
/* Zen Mods - Generated by ZenMods.
* FILE GENERATED AT: Saturday, October 11, 2025 at 7:22:29 PM GMT+03:00
* DO NOT EDIT THIS FILE DIRECTLY!
* Your changes will be overwritten.
* Instead, go to the preferences and edit the mods there.
*/
/* End of Zen Mods */