├── .gitignore
├── README.md
├── bg
├── CHIHIRO.webp
├── GDWP-777-HD-No-Logo.jpg
├── JapaneseTheme.jpg
├── calvin2.jpeg
├── car-2.png
├── cat_leaves.png
├── diner-lonely-road.jpg
├── horizon-2.jpg
├── horizon.jpg
├── isekai.jpg
├── koi.jpg
├── kurzgezagt.png
├── lowpoly-1671426268819-5698.jpg
├── mohamed-chahin-10.jpg
├── mohamed-chahin-ahlan-scene.jpg
├── mohamed-chahin-d1080.jpg
├── mohamed-chahin-final-ill.jpg
├── mohamed-chahin-mine-7.jpg
├── mohamed-chahin-mohamed-chahin-gf-1080.jpg
├── mohamed-chahin-ms-1080.jpg
├── mohamed-chahin-ps1-1080.jpg
├── profile-ai.png
├── profile.png
├── purple-horizon.jpg
├── railroad-horizon.png
├── river-city.jpg
├── sakura-gate.jpg
├── solar_system_mocha.png
├── village-gate.jpg
└── voxel-houses-monochrome.png
├── catppuccin-palette.txt
├── fuzzel
└── fuzzel.ini
├── hyprexpo.conf
├── hyprfocus.conf
├── hyprgrass.conf
├── hypridle.conf
├── hyprland.conf
├── hyprlock.conf
├── hyprpaper.conf
├── hyprspace.conf
├── hyprsplit.conf
├── hyprtasking.conf
├── kanata
├── lappy.kbd
└── silakka.kbd
├── kmonad
├── lappy.kbd
└── tkl.kbd
├── local.conf##class.amd
├── local.conf##default
├── mako
├── config
└── icons
│ ├── backup.png
│ ├── battery-quarter-solid.svg
│ ├── battery-status.png
│ ├── brightness-100.png
│ ├── brightness-20.png
│ ├── brightness-40.png
│ ├── brightness-60.png
│ ├── brightness-80.png
│ ├── dropper.png
│ ├── hyprland.png
│ ├── microphone-mute.png
│ ├── microphone.png
│ ├── mmulogo.jpg
│ ├── music.png
│ ├── palette.png
│ ├── picture.png
│ ├── timer.png
│ ├── uptime.png
│ ├── volume-high.png
│ ├── volume-low.png
│ ├── volume-mid.png
│ ├── volume-mute.png
│ └── vpn.png
├── mocha.conf
├── rofi
├── catppuccin-mocha.rasi
└── config.rasi
├── scripts
├── autohidebar.sh
├── bemenu_input
├── bemenu_rofi
├── blank.glsl
├── bluefilter.glsl
├── brightness
├── calvin
├── changeHyprpaper
├── changeLayout
├── changeWallpaper
├── checkUpdate
├── colorpicker
├── cputemp
├── cursorZoom.sh
├── cycle.sh
├── cycleSpecial.sh
├── flux.glsl
├── gamemode.sh
├── gd.sh
├── generateLockscreenWallpaper.sh
├── glassmorphismToggle
├── graceKills.sh
├── grimblast
├── gtkthemes
├── handleMonitorConnect.sh
├── import-gsettings
├── notifications
├── portal
├── powermenu
├── rofi-beats
├── screenshare.sh
├── screenshot
├── shellevents
├── shellevents_default.sh
├── startZellij
├── starth
├── starth-debug
├── startup
├── statusbar
├── submaps.sh
├── swallowToggle
├── try_swap_workspace
├── upt
├── volume
├── vpnCheck
├── weather.sh
├── wlogout.sh
└── wttr.py
├── split-monitor-workspaces.conf
├── virtualdesktops.conf
├── waybar
├── config
├── mocha.css
├── modules
└── style.css
├── wl-kbptr.conf
├── wlogout
├── icons
│ ├── lock-hover.png
│ ├── lock.png
│ ├── logout-hover.png
│ ├── logout.png
│ ├── power-hover.png
│ ├── power.png
│ ├── restart-hover.png
│ ├── restart.png
│ ├── sleep-hover.png
│ └── sleep.png
├── layout
└── style.css
└── xdph.conf
/.gitignore:
--------------------------------------------------------------------------------
1 | local.conf
2 | blurred.png
3 | cache.png
4 | square.png
5 | local.conf##class.nvidia
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
Hyprland on ArcoLinux
2 |
3 |
8 |
9 | ## 🌟 Preview
10 | 
11 |
12 | 
13 |
14 | 
15 |
16 | 
17 |
18 | ## Videos (old)
19 |
20 | - https://www.youtube.com/watch?v=Ojfbjth-c84
21 | - https://www.youtube.com/watch?v=MXOsmXXafS8
22 |
23 | ## Overview
24 |
25 | Hyprland is a dynamic tiling Wayland compositor based on wlroots that doesn't sacrifice on its looks.
26 |
27 | | Label | Application |
28 | | :--------------: | :-----------------: |
29 | | Operating System | Arch Linux |
30 | | Window Manager | Hyprland |
31 | | Status Bar | [hyprpanel](https://hyprpanel.com) |
32 | | Launcher | rofi-wayland |
33 | | Session Manager | wlogout |
34 | | Notifications | ags |
35 | | Terminal | Kitty |
36 | | Web Browser | [Zen](https://zen-browser.app) |
37 | | Fonts | Fira Sans Condensed |
38 | | | Symbols Nerd Font |
39 | | | [Pragmasevka Nerd Font](https://github.com/nawfalmrouyan/pragmasevka) |
40 |
41 | ## 🛠 Installation
42 |
43 | If you want to install this setup on ARCH Linux or on any other distro, follow the points below:
44 |
45 | 1. Install the following programs on your computer:
46 |
47 | - hyprland-git
48 | - hyprcursor-git
49 | - hypridle-git
50 | - hyprlock-git
51 | - xdg-desktop-hyprland-portal-git
52 | - hyprutils-git
53 | - hyprgraphics-git
54 | - hyprwayland-scanner-git
55 | - hyprland-protocols-git
56 | - hyprpicker-git
57 | - hyprland-qtutils-git
58 | - hyprpaper-git
59 | - aylurs-gtk-shell
60 | - hyprpanel (astal branch)
61 | - kitty
62 | - zen-browser-bin
63 | - grim
64 | - slurp
65 | - rofi-wayland
66 | - rofi-emoji-git
67 | - rofi-calc-git
68 | - rofi-pass
69 | - wtype
70 | - wl-clipboard
71 | - catppuccin-cursors-mocha
72 | - catppuccin-gtk-theme-mocha
73 | - noto-fonts
74 | - noto-fonts-cjk
75 | - ttf-nerd-fonts-symbols
76 | - ttf-nerd-fonts-symbols-mono
77 | - ttf-nerd-fonts-symbols-common
78 | - imagemagick
79 | - hyprsunset-git
80 | - brightnessctl
81 | - wlogout
82 | - playerctl
83 | - pamixer
84 | - libqalculate
85 | - clipse
86 | - uwsm
87 | - kanata-bin
88 | - libinput-gestures
89 | - polkit-gnome
90 | - wlr-xrandr
91 |
92 | 2. Clone the repo. Assuming you do not have Hyprland configured before, copy/move all the files in the repo to `~/.config/hypr`.
93 |
94 | ```bash
95 | git clone --depth=1 https://github.com/nawfalmrouyan/hyprland.git ~/.config/hypr
96 | ```
97 |
98 | 3. You can start Hyprland from TTY using the command below:
99 |
100 | ```sh
101 | uwsm start hyprland.desktop
102 | ```
103 |
104 | You can refer [here](https://wiki.hyprland.org/Useful-Utilities/Systemd-start/) for more info.
105 |
106 | If you start Hyprland using a Login Manager (eg. GDM, SDDM, etc), choose to start using `Hyprland (uwsm managed)`
107 |
108 | 4. Install Hyprland Plugins
109 |
110 | - [split-monitor-workspaces](https://github.com/Duckonaut/split-monitor-workspaces)
111 | - [hyprtasking](https://github.com/raybbian/hyprtasking)
112 |
113 | Refer [here](https://wiki.hyprland.org/Plugins/Using-Plugins/) on how to install plugins.
114 |
115 | ## Special thanks
116 |
117 | - https://github.com/hyprwm/Hyprland - For an amazing WM
118 | - https://github.com/eldermf/bspwm-hyprland - For the inspiration
119 | - https://github.com/Ruixi-rebirth/nixos-config - Pretty neofetch config
120 | - https://github.com/iamverysimp1e/dots - Glassmorphism effect
121 | - https://github.com/rxyhn/dotfiles
122 |
--------------------------------------------------------------------------------
/bg/CHIHIRO.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/CHIHIRO.webp
--------------------------------------------------------------------------------
/bg/GDWP-777-HD-No-Logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/GDWP-777-HD-No-Logo.jpg
--------------------------------------------------------------------------------
/bg/JapaneseTheme.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/JapaneseTheme.jpg
--------------------------------------------------------------------------------
/bg/calvin2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/calvin2.jpeg
--------------------------------------------------------------------------------
/bg/car-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/car-2.png
--------------------------------------------------------------------------------
/bg/cat_leaves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/cat_leaves.png
--------------------------------------------------------------------------------
/bg/diner-lonely-road.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/diner-lonely-road.jpg
--------------------------------------------------------------------------------
/bg/horizon-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/horizon-2.jpg
--------------------------------------------------------------------------------
/bg/horizon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/horizon.jpg
--------------------------------------------------------------------------------
/bg/isekai.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/isekai.jpg
--------------------------------------------------------------------------------
/bg/koi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/koi.jpg
--------------------------------------------------------------------------------
/bg/kurzgezagt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/kurzgezagt.png
--------------------------------------------------------------------------------
/bg/lowpoly-1671426268819-5698.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/lowpoly-1671426268819-5698.jpg
--------------------------------------------------------------------------------
/bg/mohamed-chahin-10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/mohamed-chahin-10.jpg
--------------------------------------------------------------------------------
/bg/mohamed-chahin-ahlan-scene.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/mohamed-chahin-ahlan-scene.jpg
--------------------------------------------------------------------------------
/bg/mohamed-chahin-d1080.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/mohamed-chahin-d1080.jpg
--------------------------------------------------------------------------------
/bg/mohamed-chahin-final-ill.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/mohamed-chahin-final-ill.jpg
--------------------------------------------------------------------------------
/bg/mohamed-chahin-mine-7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/mohamed-chahin-mine-7.jpg
--------------------------------------------------------------------------------
/bg/mohamed-chahin-mohamed-chahin-gf-1080.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/mohamed-chahin-mohamed-chahin-gf-1080.jpg
--------------------------------------------------------------------------------
/bg/mohamed-chahin-ms-1080.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/mohamed-chahin-ms-1080.jpg
--------------------------------------------------------------------------------
/bg/mohamed-chahin-ps1-1080.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/mohamed-chahin-ps1-1080.jpg
--------------------------------------------------------------------------------
/bg/profile-ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/profile-ai.png
--------------------------------------------------------------------------------
/bg/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/profile.png
--------------------------------------------------------------------------------
/bg/purple-horizon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/purple-horizon.jpg
--------------------------------------------------------------------------------
/bg/railroad-horizon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/railroad-horizon.png
--------------------------------------------------------------------------------
/bg/river-city.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/river-city.jpg
--------------------------------------------------------------------------------
/bg/sakura-gate.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/sakura-gate.jpg
--------------------------------------------------------------------------------
/bg/solar_system_mocha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/solar_system_mocha.png
--------------------------------------------------------------------------------
/bg/village-gate.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/village-gate.jpg
--------------------------------------------------------------------------------
/bg/voxel-houses-monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/bg/voxel-houses-monochrome.png
--------------------------------------------------------------------------------
/catppuccin-palette.txt:
--------------------------------------------------------------------------------
1 | Mocha:
2 |
3 | rosewater: #f5e0dc
4 | flamingo: #f2cdcd
5 | pink: #f5c2e7
6 | mauve: #cba6f7
7 | red: #f38ba8
8 | maroon: #eba0ac
9 | peach: #fab387
10 | yellow: #f9e2af
11 | green: #a6e3a1
12 | teal: #94e2d5
13 | sky: #89dceb
14 | sapphire: #74c7ec
15 | blue: #87b0f9
16 | lavender: #b4befe
17 |
18 | text: #c6d0f5
19 | subtext1: #b3bcdf
20 | subtext0: #a1a8c9
21 | overlay2: #8e95b3
22 | overlay1: #7b819d
23 | overlay0: #696d86
24 | surface2: #565970
25 | surface1: #43465a
26 | surface0: #313244
27 | base: #1e1e2e
28 | mantle: #181825
29 | crust: #11111b
30 |
--------------------------------------------------------------------------------
/fuzzel/fuzzel.ini:
--------------------------------------------------------------------------------
1 | font=Pragmasevka Nerd Font:size=10
2 | use-bold=yes
3 | dpi-aware=auto
4 | icon-theme=Adwaita-purple
5 | icons-enabled=yes
6 | terminal=uwsm app -- kitty -e
7 | launch-prefix=uwsm app --
8 | width=70
9 | exit-on-keyboard-focus-loss=no
10 | match-counter=yes
11 | show-actions=yes
12 | line-height=15
13 | letter-spacing=0.2
14 | inner-pad=15
15 | vertical-pad=15
16 | horizontal-pad=25
17 |
18 | [border]
19 | width=3
20 | radius=0
21 |
22 | [dmenu]
23 | mode=text # text|index
24 | exit-immediately-if-empty=no
25 |
26 | [colors]
27 | background=1e1e2eff
28 | text=cdd6f4ff
29 | prompt=bac2deff
30 | placeholder=7f849cff
31 | input=cdd6f4ff
32 | match=cba6f7ff
33 | selection=585b70ff
34 | selection-text=cdd6f4ff
35 | selection-match=cba6f7ff
36 | counter=7f849cff
37 | border=cba6f7ff
38 |
--------------------------------------------------------------------------------
/hyprexpo.conf:
--------------------------------------------------------------------------------
1 |
2 | bind = SUPER, grave, hyprexpo:expo, toggle # can be: toggle, off/disable or on/enable
3 |
4 | plugin {
5 | hyprexpo {
6 | columns = 3
7 | gap_size = 3
8 | bg_col = $surface1
9 | workspace_method = first 1 # [center/first] [workspace] e.g. first 1 or center m+1
10 |
11 | enable_gesture = true # laptop touchpad
12 | gesture_fingers = 4 # 3 or 4
13 | gesture_distance = 100 # how far is the "max"
14 | gesture_negative = 1 # positive = swipe down. Negative = swipe up.
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/hyprfocus.conf:
--------------------------------------------------------------------------------
1 | plugin {
2 | hyprfocus {
3 | enabled = yes
4 | animate_floating = yes
5 | animate_workspacechange = yes
6 | focus_animation = flash
7 | # Beziers for focus animations
8 | bezier = bezIn, 0.5,0.0,1.0,0.5
9 | bezier = bezOut, 0.0,0.5,0.5,1.0
10 | bezier = overshot, 0.05, 0.9, 0.1, 1.05
11 | bezier = smoothOut, 0.36, 0, 0.66, -0.56
12 | bezier = smoothIn, 0.25, 1, 0.5, 1
13 | bezier = realsmooth, 0.28,0.29,.69,1.08
14 | # Flash settings
15 | flash {
16 | flash_opacity = 0.80
17 | in_bezier = realsmooth
18 | in_speed = 0.5
19 | out_bezier = realsmooth
20 | out_speed = 3
21 | }
22 | # Shrink settings
23 | shrink {
24 | shrink_percentage = 0.95
25 | in_bezier = realsmooth
26 | in_speed = 1
27 | out_bezier = realsmooth
28 | out_speed = 2
29 | }
30 | }
31 | }
32 | # vim: set ft=hyprlang :
33 |
--------------------------------------------------------------------------------
/hyprgrass.conf:
--------------------------------------------------------------------------------
1 | plugin {
2 | touch_gestures {
3 | # swipe left from right edge
4 | # hyprgrass-bind = , edge:r:l, workspace, +1
5 | sensitivity = 50
6 | long_press_delay = 400
7 |
8 | # swipe up from bottom edge
9 | # hyprgrass-bind = , edge:d:u, exec, firefox
10 |
11 | # swipe down from left edge
12 | hyprgrass-bind = , edge:l:d, exec, pactl set-sink-volume @DEFAULT_SINK@ -4%
13 |
14 | # swipe down with 4 fingers
15 | # NOTE: swipe events only trigger for finger count of >= 3
16 | # hyprgrass-bind = , swipe:4:d, killactive
17 |
18 | # swipe diagonally left and down with 3 fingers
19 | # l (or r) must come before d and u
20 | # hyprgrass-bind = , swipe:3:ld, exec, foot
21 |
22 | # tap with 3 fingers
23 | # NOTE: tap events only trigger for finger count of >= 3
24 | # hyprgrass-bind = , tap:3, exec, foot
25 |
26 | # longpress can trigger mouse binds:
27 | hyprgrass-bindm = , longpress:3, movewindow
28 | # hyprgrass-bindm = , longpress:3, resizewindow
29 | }
30 | }
31 | # vim: set ft=hyprlang :
32 |
--------------------------------------------------------------------------------
/hypridle.conf:
--------------------------------------------------------------------------------
1 | general {
2 | lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
3 | before_sleep_cmd = loginctl lock-session # lock before suspend.
4 | after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
5 | }
6 |
7 | # listener {
8 | # timeout = 150 # 2.5min.
9 | # on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
10 | # on-resume = brightnessctl -r # monitor backlight restore.
11 | # }
12 |
13 | # turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
14 | # listener {
15 | # timeout = 150 # 2.5min.
16 | # on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
17 | # on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
18 | # }
19 |
20 | listener {
21 | timeout = 300 # 5min
22 | on-timeout = loginctl lock-session # lock screen when timeout has passed
23 | }
24 |
25 | listener {
26 | timeout = 420 # 7min
27 | on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
28 | on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
29 | }
30 |
31 | # listener {
32 | # timeout = 1800 # 30min
33 | # on-timeout = systemctl suspend # suspend pc
34 | # }
35 | # vim: set ft=hyprlang :
36 |
--------------------------------------------------------------------------------
/hyprland.conf:
--------------------------------------------------------------------------------
1 | # Variables
2 | $mainMod = SUPER
3 | $localBin = $HOME/.local/bin
4 | $scriptsDir = $confDir/scripts
5 | $confDir = $HOME/.config/hypr
6 | $term = kitty
7 | $term2 = ghostty
8 | $menu = anyrun
9 | $powermenu = $scriptsDir/powermenu
10 | $volume = $scriptsDir/volume
11 | $backlight = /bin/brightnessctl
12 | $screenshot = $scriptsDir/screenshot
13 | $lock = $scriptsDir/lockscreen
14 | $logout = $scriptsDir/wlogout.sh
15 | $colorpicker = $scriptsDir/colorpicker
16 | $rofi_beats = $scriptsDir/rofi-beats
17 | $files = nemo
18 | $browser = zen-browser
19 | $music = youtube-music
20 | $music2 = spotube
21 | $mail = /opt/outlook-for-linux/outlook-for-linux
22 |
23 | # monitor = DP-2, 1920x1080, 0x0, 1
24 | monitor = HDMI-A-1, 1920x1080, 0x0, 1
25 | monitor = eDP-1, 1920x1080, 1920x0, 1
26 | # monitor = , preferred, auto, 1
27 | workspace = 1, monitor:eDP-1, default:true
28 | workspace = 2, monitor:eDP-1, default:true
29 | workspace = 3, monitor:eDP-1, default:true
30 | workspace = 4, monitor:eDP-1, default:true
31 | workspace = 5, monitor:eDP-1, default:true
32 | workspace = 6, monitor:eDP-1, default:true
33 | workspace = 7, monitor:eDP-1, default:true
34 | workspace = 8, monitor:eDP-1, default:true
35 | workspace = 9, monitor:eDP-1, default:true
36 | workspace = 10, monitor:HDMI-A-1, default:true
37 | workspace = 11, monitor:HDMI-A-1, default:true
38 | workspace = 12, monitor:HDMI-A-1, default:true
39 | workspace = 13, monitor:HDMI-A-1, default:true
40 | workspace = 14, monitor:HDMI-A-1, default:true
41 | workspace = 15, monitor:HDMI-A-1, default:true
42 | workspace = 16, monitor:HDMI-A-1, default:true
43 | workspace = 17, monitor:HDMI-A-1, default:true
44 | workspace = 18, monitor:HDMI-A-1, default:true
45 | source = $confDir/mocha.conf
46 |
47 | input {
48 | kb_layout = us
49 | kb_variant = altgr-intl
50 | kb_options = compose:menu,level3:ralt_switch
51 |
52 | special_fallthrough = true
53 |
54 | follow_mouse = 1
55 | numlock_by_default = true
56 |
57 | touchpad {
58 | natural_scroll = true
59 | tap-to-click = true
60 | drag_lock = true
61 | disable_while_typing = true
62 | }
63 | }
64 |
65 | misc {
66 | disable_hyprland_logo = true
67 | disable_splash_rendering = true
68 | mouse_move_enables_dpms = true
69 | key_press_enables_dpms = true
70 | enable_swallow = true
71 | swallow_regex = kitty|com.mitchellh.ghostty
72 | swallow_exception_regex = ^(noswallow)$
73 | focus_on_activate = true
74 | allow_session_lock_restore = true
75 | vfr = true
76 | vrr = 3
77 | # exit_window_retains_fullscreen = true # monocle
78 | # new_window_takes_over_fullscreen = 1 # monocle
79 | font_family = Pragmasevka Nerd Font
80 | }
81 |
82 | cursor {
83 | hide_on_touch = true
84 | hide_on_key_press = true
85 | persistent_warps = true
86 | warp_on_change_workspace = 1
87 | warp_on_toggle_special = 1
88 | default_monitor = eDP-1
89 | }
90 |
91 | binds {
92 | workspace_back_and_forth = true
93 | allow_pin_fullscreen = true
94 | # workspace_center_on = 0
95 | movefocus_cycles_fullscreen = true
96 | movefocus_cycles_groupfirst = true
97 | }
98 |
99 | ecosystem {
100 | no_update_news = true
101 | no_donation_nag = true
102 | }
103 |
104 | debug {
105 | # error_position = 1
106 | disable_logs = true
107 | }
108 |
109 | general {
110 | gaps_in = 2
111 | gaps_out = 2
112 | border_size = 3
113 | resize_on_border = true
114 | col.active_border = $mauve $blue 45deg
115 | col.inactive_border = $overlay0
116 | gaps_workspaces = 5
117 |
118 | layout = master
119 | allow_tearing = false
120 |
121 | # resize_on_border = true
122 | # sensitivity = 0.5
123 | snap {
124 | enabled = true
125 | respect_gaps = true
126 | }
127 | }
128 |
129 | group {
130 | col.border_active = $mauve $blue 45deg
131 | col.border_inactive = $overlay0
132 | col.border_locked_inactive = $red
133 | col.border_locked_active = $peach
134 |
135 | groupbar {
136 | font_family = Pragmasevka Nerd Font
137 | font_size = 10
138 | gradients = true
139 | height = 15
140 | col.active = $base
141 | col.inactive = $overlay0
142 | col.locked_inactive = $red
143 | col.locked_active = $peach
144 | }
145 | }
146 |
147 | decoration {
148 | rounding = 0
149 | dim_special = 0.3
150 |
151 | blur {
152 | size = 3
153 | passes = 4
154 | noise = 0.0117
155 | contrast = 1.0
156 | brightness = 1.0
157 | new_optimizations = true
158 | ignore_opacity = true
159 | popups = true
160 | # special = true
161 | }
162 |
163 | active_opacity = 1.0
164 | # inactive_opacity = 0.9
165 | fullscreen_opacity = 1.0
166 |
167 | shadow {
168 | enabled = false
169 | range = 4
170 | render_power = 3
171 | color = rgba(1a1a1aee)
172 | }
173 |
174 | # dim_inactive = true
175 | dim_strength = 0.3
176 | dim_special = 0.3
177 | dim_around = 0.3
178 | }
179 |
180 | animations {
181 | enabled = true
182 | first_launch_animation = false
183 | workspace_wraparound = true
184 |
185 | # Beziers
186 | bezier = simple, 0.16, 1, 0.3, 1
187 | # bezier = tehtarik, 0.68, -0.55, 0.265, 1.55
188 | # bezier = overshot, 0.05, 0.9, 0.1, 1.1
189 | bezier = smoothOut, 0.36, 0, 0.66, -0.56
190 | bezier = smoothIn, 0.25, 1, 0.5, 1
191 | #
192 | # animation = windows, 1, 5, simple, slide
193 | # animation = windowsOut, 1, 4, simple, slide
194 | # animation = fade, 1, 10, simple
195 | animation = layersIn, 1, 3.5, smoothIn, fade
196 | animation = layersOut, 1, 3.5, smoothOut, fade
197 |
198 | bezier = linear, 0.0, 0.0, 1.0, 1.0
199 | bezier = myBezier, 0.05, 0.9, 0.1, 1.05
200 | bezier = overshot, 0.05, 0.9, 0.1, 1.1
201 | bezier = cubic, 0.54, 0.22, 0.07, 0.74
202 | bezier = overshotCircle, 0.175, 0.885, 0.32, 1.275
203 | bezier = md3_standard, 0.2, 0.0, 0, 1.0
204 | bezier = bounce, 1, 1.6, 0.1, 0.85
205 | bezier = decel, 0.05, 0.7, 0.1, 1
206 |
207 | animation = windowsIn, 1, 3, bounce, popin 23%
208 | animation = windowsOut, 1, 7, bounce, slide
209 | animation = windows, 1, 2, md3_standard, slide
210 | animation = border, 1, 10, overshot
211 | animation = borderangle, 1, 100, linear, loop
212 | animation = fade, 1, 1, default
213 | animation = workspaces, 1, 3, bounce, slidefade 20%
214 | animation = specialWorkspace, 1, 3, bounce, slidefadevert 20%
215 | animation = layers, 1, 3, bounce, fade
216 | # animation = workspaces, 1, 4, decel, slidefadevert
217 | }
218 |
219 | dwindle {
220 | pseudotile = true
221 | # preserve_split = true
222 | # smart_split = true
223 | special_scale_factor = 0.9
224 | # permanent_direction_override = true
225 | }
226 |
227 | master {
228 | new_status = slave
229 | mfact = 0.5
230 | special_scale_factor = 0.9
231 | allow_small_split = true
232 | new_on_active = after
233 | # inherit_fullscreen = true # monocle
234 | }
235 |
236 | gestures {
237 | workspace_swipe = true
238 | workspace_swipe_fingers = 4
239 | workspace_swipe_cancel_ratio = 0.15
240 | }
241 |
242 | layerrule = blur, logout_dialog
243 | layerrule = ignorezero, logout_dialog
244 | layerrule = ignorezero, rofi
245 | layerrule = dimaround, rofi
246 | # layerrule = ignorezero, fuzzel
247 | # layerrule = dimaround, fuzzel
248 |
249 | windowrule = float, class:(yad|nm-connection-editor|pavucontrol|Rofi|feh|Gimp|qt5ct)
250 | windowrule = tile, class:(jamesdsp)
251 | windowrule = float, title:^(Firefox — Sharing Indicator)$
252 | windowrule = workspace special:whatsapp silent, class:(whatsappweb-nativefier-d40211)
253 | windowrule = workspace special:whatsapp silent, class:(org.telegram.desktop)
254 | windowrule = workspace special:trash silent, class:^(YouTube Music)$
255 | windowrule = workspace special:trash silent, class:(spotube)
256 | windowrule = workspace 8, class:(workTerminal)
257 | windowrule = workspace 17, class:(workTerminal2)
258 | windowrule = workspace 1 silent, class:(outlook-for-linux)
259 | windowrule = workspace 1 silent, class:(eu.betterbird.Betterbird)
260 | windowrule = workspace 4 silent, class:(apachedirectorystudio)
261 | windowrule = move 1511 919, class:(showmethekey-gtk)
262 | windowrule = float, class:(showmethekey-gtk)
263 | windowrule = noborder, class:(showmethekey-gtk)
264 | windowrule = opacity 1.0 override 1.0 override, class:^(showmethekey-gtk)$
265 | windowrule = noblur, class:(showmethekey-gtk)
266 | windowrule = nofocus, class:(showmethekey-gtk)
267 | windowrule = noanim, class:(showmethekey-gtk)
268 | windowrule = noshadow, class:(showmethekey-gtk)
269 | windowrule = group, class:^(whatsappweb-nativefier-d40211)$
270 | windowrule = group, class:^(org.telegram.desktop)$
271 | windowrule = noscreenshare, class:^(whatsappweb-nativefier-d40211)$
272 | windowrule = noscreenshare, class:^(org.telegram.desktop)$
273 | windowrule = group, class:^(org.remmina.Remmina)$
274 | windowrule = group, class:^(spotube)$
275 | windowrule = group, class:^(YouTube Music)$
276 | windowrule = noscreenshare, class:^(spotube)$
277 | windowrule = noscreenshare, class:^(YouTube Music)$
278 | windowrule = group override barred, class:^(kitty)$
279 | windowrule = group override barred, class:^(zen-beta)$
280 | windowrule = tile, class:^(ONLYOFFICE)
281 | windowrule = center, , title:^(LibreOffice)$
282 |
283 | # wlogout rules
284 | windowrule = float, class:(wlogout)
285 | windowrule = move 0 0, class:(wlogout)
286 | windowrule = size 100% 100%, class:(wlogout)
287 | windowrule = noanim, class:(wlogout)
288 |
289 | windowrule = workspace 4, class:^(Apache Directory Studio)$
290 | windowrule = bordercolor $mauve $red, floating:1
291 | windowrule = bordercolor $lavender $mauve, fullscreen:1
292 | windowrule = opacity 0.8 0.8, pinned:1
293 | windowrule = workspace special:steam, class:^(steam)$, title:^(Sign in to Steam)$
294 | windowrule = workspace special:steam, class:^(steam)$, title:^(Steam)$
295 | windowrule = noscreenshare, class:^(steam)$, title:^(Steam)$
296 | windowrule = idleinhibit focus, class:^(teams-for-linux)$
297 | windowrule = float, class:^(zen-beta)$, title:^(Picture-in-Picture)$
298 | windowrule = maxsize 1000 1000, class:(zen-beta)
299 | windowrule = fullscreen, class:^(Torchlight2.bin.x86_64)$, title:^(Torchlight II v.1.25.5.4)$
300 | # windowrule = float, class:(YouTube Music)
301 | # windowrule = group barred,floating:1
302 |
303 | # https://github.com/shvedes/dotfiles/blob/9dbf2b3942083eec261a695e4c2430c694d343a1/src/.config/hypr/include/rules.conf#L137
304 | # GNOME polkit
305 | windowrule = dimaround, class:(polkit-gnome-authentication-agent-1)
306 | windowrule = noshadow, class:(polkit-gnome-authentication-agent-1)
307 |
308 | # File pickers and same stuff
309 | windowrule = float, title:(Open folder.*)
310 | windowrule = size 1345 720, title:(Open folder.*)
311 | windowrule = center, title:(Open folder.*)
312 |
313 | windowrule = float, class:(soffice)
314 | windowrule = size 1345 720, class:(soffice)
315 | windowrule = center, class:(soffice)
316 |
317 | windowrule = float, title:(Save Image)
318 | windowrule = size 1345 720, title:(Save Image)
319 | windowrule = center, title:(Save Image)
320 |
321 | windowrule = float, class:(xdg-desktop-portal-gtk)
322 | windowrule = size 1345 720, class:(xdg-desktop-portal-gtk)
323 | windowrule = center, class:(xdg-desktop-portal-gtk)
324 |
325 | # for outlook-for-linux picker
326 | windowrule = float, title:(blob.*)
327 | windowrule = size 1345 720, title:(blob.*)
328 | windowrule = center, title:(blob.*)
329 |
330 | # for xwaylandvideobridge
331 | windowrule = opacity 0.0 override 0.0 override, class:^(xwaylandvideobridge)$
332 | windowrule = noanim, class:^(xwaylandvideobridge)$
333 | windowrule = nofocus, class:^(xwaylandvideobridge)$
334 | windowrule = noinitialfocus, class:^(xwaylandvideobridge)$
335 |
336 | # for waybar yay update click, cava
337 | windowrule = animation slide, class:^(update)$, title:^(update)$
338 | windowrule = float, class:^(update)$, title:^(update)$
339 | windowrule = size 60% 50%, class:^(update)$, title:^(update)$
340 | windowrule = move 380 35, class:^(update)$, title:^(update)$
341 | # windowrule = pin, class:^(update)$, title:^(update)$
342 |
343 | # for ttyclock
344 | windowrule = float, class:^(clock)$, title:^(clock)$
345 | windowrule = size 33% 27%, class:^(clock)$, title:^(clock)$
346 | windowrule = center, class:^(clock)$, title:^(clock)$
347 |
348 | # for firefox textern
349 | # ["kitty", "--class", "kitty", "--title", "textern", "-e", "/home/opal/.local/bin/av", "+call cursor(%l,%c)"]
350 | windowrule = animation slide, class:^(kitty)$, title:^(textern)$
351 | windowrule = float, class:^(kitty)$, title:^(textern)$
352 | windowrule = size 60% 50%, class:^(kitty)$, title:^(textern)$
353 | windowrule = center, class:^(kitty)$, title:^(textern)$
354 |
355 | # for terminal scratchpad
356 | windowrule = animation slide, class:^(kitty)$, title:^(scratch)$
357 | windowrule = float, class:^(kitty)$, title:^(scratch)$
358 | windowrule = size 75% 65%, class:^(kitty)$, title:^(scratch)$
359 | windowrule = move 250 375, class:^(kitty)$, title:^(scratch)$
360 |
361 | # no focus markdown preview
362 | windowrule = nofocus, title:^(Peek preview)$
363 |
364 | # tearing
365 | # windowrule = immediate, title:^(Grim Dawn)
366 |
367 | bind = $mainMod, Return, exec, uwsm app -- $term -1 -e sesh connect work
368 | bind = $mainMod CTRL, Return, exec, uwsm app -- $term -1 --class=stuff -T stuff -e sesh connect stuff
369 | bind = $mainMod SHIFT, W, exec, [workspace special:whatsapp silent] uwsm app -- telegram-desktop
370 | bind = $mainMod CTRL, W, exec, [workspace 6 silent] uwsm app -- google-chrome-stable -enable-features=UseOzonePlatform -ozone-platform=wayland
371 | bind = $mainMod, Q, killactive,
372 | bind = $mainMod SHIFT, Q, exit,
373 | # bind = $mainMod, A, exec, [workspace 5 silent] uwsm app -- microsoft-edge-stable -enable-features=UseOzonePlatform -ozone-platform=wayland --profile-directory="Default"
374 | # bind = $mainMod, A, exec, [workspace 1 silent] uwsm app -- $mail --ozone-platform-hint=auto --enable-features=WebRTCPipeWireCapturer
375 | # bind = $mainMod, A, exec, [workspace 1 silent] uwsm app -- betterbird
376 | bind = $mainMod, A, exec, [workspace 1 silent] uwsm app -- /opt/outlook-for-linux/outlook-for-linux --ozone-platform-hint=auto --enable-features=WebRTCPipeWireCapturer
377 | # bind = $mainMod SHIFT, A, exec, [workspace 5 silent] uwsm app -- microsoft-edge-stable -enable-features=UseOzonePlatform -ozone-platform=wayland --profile-directory="Profile 3"
378 | # bind = $mainMod ALT, A, exec, [workspace 5 silent] uwsm app -- microsoft-edge-stable -enable-features=UseOzonePlatform -ozone-platform=wayland --profile-directory="Profile 5"
379 | bind = $mainMod, X, exec, [workspace 4 silent] uwsm app -- apachedirectorystudio
380 | bind = $mainMod, F, fullscreen
381 | bind = $mainMod, E, exec, uwsm app -- kitty -1 --class=yazi -e yazi
382 | bind = $mainMod SHIFT, E, exec, uwsm app -- $files
383 | bind = $mainMod, V, togglefloating,
384 | bind = $mainMod SHIFT, V, exec, hyprctl dispatch pseudo
385 | bind = $mainMod, C, exec, uwsm app -- rofi -show drun -run-command 'uwsm app -- {cmd}' -run-shell-command 'uwsm app -- $term -e {cmd}'
386 | # bind = $mainMod, C, exec, uwsm app -- fuzzel --config $confDir/fuzzel/fuzzel.ini
387 | bind = $mainMod SHIFT, J, layoutmsg, rollnext
388 | bind = $mainMod SHIFT, K, layoutmsg, rollprev
389 | bind = $mainMod, J, cyclenext
390 | bind = $mainMod, K, cyclenext, prev
391 | bind = $mainMod SHIFT, Return, layoutmsg, swapwithmaster
392 | bind = $mainMod, bracketright, layoutmsg, orientationnext
393 | bind = $mainMod, bracketleft, layoutmsg, orientationprev
394 | bind = $mainMod CTRL, comma, layoutmsg, focusmaster
395 | # bind = $mainMod, L, exec, $scriptsDir/changeLayout
396 | bind = $mainMod SHIFT, L, exec, uwsm app -- hyprlock
397 | bind = $mainMod, Escape, exec, uwsm app -- $logout
398 | # bind = $mainMod SHIFT, I, exec, uwsm app -- $colorpicker
399 | bindr = $mainMod, Y, exec, pkill rofi || uwsm app -- $rofi_beats
400 | bind = $mainMod, 0, exec, ROFI_PASS_CONFIG="$confDir/rofi-pass/config" uwsm app -- rofi-pass
401 | bind = ALT, Tab, exec, uwsm app -- rofi -c $confDir/rofi/config.rasi -show window
402 | bind = $mainMod, Tab, cyclenext,
403 | bind = $mainMod, Tab, bringactivetotop,
404 | # bind = $mainMod, P, exec, uwsm app -- rofi -c $confDir/rofi/config.rasi -show emoji
405 | bindr = $mainMod SHIFT, C, exec, pkill bemenu || uwsm app -- $scriptsDir/bemenu_input 6
406 | bind = $mainMod SHIFT, Y, exec, hyprctl dispatch pseudo
407 | bind = $mainMod, N, exec, $scriptsDir/cycle.sh next
408 | bind = $mainMod SHIFT, N, exec, $scriptsDir/cycleSpecial.sh next
409 | bind = ALT, Grave, exec, hyprctl dispatch focuscurrentorlast
410 | bind = $mainMod, D, exec, hyprctl dispatch movewindow d
411 | bind = $mainMod SHIFT, D, exec, hyprctl dispatch movewindow u
412 | bind = $mainMod, H, exec, uwsm app -- kitty +kitten panel -o background_opacity=0 --edge=background cava
413 | # bind = $mainMod SHIFT, H, exec, ps -ef | grep kitten | head -n 1 | awk '{print $2}' | xargs kill
414 |
415 | bind = $mainMod, B, exec, ags -i hyprpanel toggle bar-1; ags -i hyprpanel toggle bar-0
416 | # bind = $mainMod, B, exec, bemenu_rofi
417 | bind = $mainMod SHIFT, B, exec, $scriptsDir/gamemode.sh
418 |
419 | # Master layout specific
420 | bind = $mainMod, M, submap, masterlayout
421 | submap = masterlayout
422 | bind = , I, layoutmsg, addmaster
423 | bind = , I, submap, reset
424 | bind = , D, layoutmsg, removemaster
425 | bind = , D, submap, reset
426 | bind = , escape, submap, reset
427 | submap = reset
428 |
429 | # Night mode (blue filter)
430 | # bind = $mainMod, T, exec, hyprctl keyword decoration:screen_shader $scriptsDir/flux.glsl
431 | # bind = $mainMod SHIFT, T, exec, hyprctl keyword decoration:screen_shader "[[EMPTY]]"
432 |
433 | # bind = $mainMod, G, togglegroup
434 | bind = $mainMod, G, exec, if [ $(hyprctl activewindow | rg 'grouped:' | rg -v 'Window' | tr -dc ',' | wc -c) -gt '0' ]; then hyprctl dispatch lockactivegroup toggle; else hyprctl dispatch togglegroup; fi
435 | bind = $mainMod, Tab, changegroupactive
436 | bind = $mainMod CTRL, G, moveoutofgroup
437 | # bind = $mainMod ALT, G, lockgroups, toggle
438 | bind = $mainMod SHIFT, G, submap, group
439 | submap = group
440 | bind = , J, moveintogroup, d
441 | bind = , J, submap, reset
442 | bind = , K, moveintogroup, u
443 | bind = , K, submap, reset
444 | bind = , L, moveintogroup, r
445 | bind = , L, submap, reset
446 | bind = , H, moveintogroup, l
447 | bind = , H, submap, reset
448 | bind = , escape, submap, reset
449 | submap = reset
450 |
451 | # Screenshots
452 | bind = , Print, submap, screenshot
453 | submap = screenshot
454 | bind = , 1, exec, uwsm app -- $scriptsDir/grimblast -n copysave screen
455 | bind = , 1, submap, reset
456 | bind = , 2, exec, uwsm app -- $scriptsDir/grimblast -n copysave output
457 | bind = , 2, submap, reset
458 | bind = , 3, exec, uwsm app -- $scriptsDir/grimblast -n copysave active
459 | bind = , 3, submap, reset
460 | bind = , 4, exec, uwsm app -- $scriptsDir/grimblast -n copysave area
461 | bind = , 4, submap, reset
462 | bind = , escape, submap, reset
463 | submap = reset
464 | bind = SHIFT, Print, exec, uwsm app -- $scriptsDir/grimblast -n copy output
465 |
466 | # Special Keys
467 | bindl = , xf86audioraisevolume, exec, uwsm app -- $volume --inc
468 | bindl = , xf86audiolowervolume, exec, uwsm app -- $volume --dec
469 | bindl = , xf86audiomute, exec, uwsm app -- $volume --toggle
470 | bindl = , xf86monbrightnessup, exec, uwsm app -- $backlight s +5%
471 | bindl = , xf86monbrightnessdown, exec, uwsm app -- $backlight s 5%-
472 | bindl = , xf86audioplay, exec, uwsm app -- playerctl play-pause
473 | bindl = , xf86audionext, exec, uwsm app -- playerctl next
474 | bindl = , xf86audioprev, exec, uwsm app -- playerctl previous
475 |
476 | # Backlight control
477 | bind = $mainMod SHIFT, equal, submap, backlight
478 | submap = backlight
479 | bind = , equal, exec, $backlight s +5%
480 | bind = , minus, exec, $backlight s 5%-
481 | bind = , K, exec, uwsm $backlight s +5%
482 | bind = , J, exec, uwsm $backlight s 5%-
483 | bind = , up, exec, uwsm $backlight s +5%
484 | bind = , down, exec, uwsm $backlight s 5%-
485 | bind = , escape, submap, reset
486 | submap = reset
487 |
488 | # Volume control
489 | bind = $mainMod, equal, submap, volume
490 | submap = volume
491 | bind = , equal, exec, $volume --inc
492 | bind = , minus, exec, $volume --dec
493 | bind = , K, exec, $volume --inc
494 | bind = , J, exec, $volume --dec
495 | bind = , up, exec, $volume --inc
496 | bind = , down, exec, $volume --dec
497 | bind = , 0, exec, $volume --toggle
498 | bind = , 9, exec, $volume --toggle-mic
499 | bind = , escape, submap, reset
500 | submap = reset
501 |
502 | # Resize
503 | bind = $mainMod SHIFT, R, submap, resize
504 | submap = resize
505 | binde = , H, resizeactive,-50 0
506 | binde = , L, resizeactive,50 0
507 | binde = , K, resizeactive,0 -50
508 | binde = , J, resizeactive,0 50
509 | binde = , left, resizeactive,-50 0
510 | binde = , right, resizeactive,50 0
511 | binde = , up, resizeactive,0 -50
512 | binde = , down, resizeactive,0 50
513 | bind = , escape, submap, reset
514 | submap = reset
515 |
516 | # Move
517 | bind = $mainMod SHIFT, M, submap, move
518 | submap = move
519 | bind = , H, movewindow, l
520 | bind = , L, movewindow, r
521 | bind = , K, movewindow, u
522 | bind = , J, movewindow, d
523 | bind = , left, movewindow, l
524 | bind = , right, movewindow, r
525 | bind = , up, movewindow, u
526 | bind = , down, movewindow, d
527 | bind = , period, exec, hyprctl dispatch movewindow mon:0
528 | bind = , comma, exec, hyprctl dispatch movewindow mon:1
529 | bind = , escape, submap, reset
530 | submap = reset
531 |
532 | bind = $mainMod CTRL, H, movefocus, l
533 | bind = $mainMod CTRL, L, movefocus, r
534 | bind = $mainMod CTRL, K, movefocus, u
535 | bind = $mainMod CTRL, J, movefocus, d
536 |
537 | # Focus
538 | bind = $mainMod SHIFT, F, submap, focus
539 | submap = focus
540 | bind = , left, movefocus, l
541 | bind = , right, movefocus, r
542 | bind = , up, movefocus, u
543 | bind = , down, movefocus, d
544 | bind = , H, movefocus, l
545 | bind = , L, movefocus, r
546 | bind = , K, movefocus, u
547 | bind = , J, movefocus, d
548 | bind = , escape, submap, reset
549 | submap = reset
550 |
551 | # Preselection split ONLY IN DWINDLE mode
552 | # bind = $mainMod, S, submap, split
553 | # submap = split
554 | # bind = , J, exec, hyprctl dispatch layoutmsg "preselect d"
555 | # bind = , J, submap, reset
556 | # bind = , K, exec, hyprctl dispatch layoutmsg "preselect u"
557 | # bind = , K, submap, reset
558 | # bind = , L, exec, hyprctl dispatch layoutmsg "preselect r"
559 | # bind = , L, submap, reset
560 | # bind = , H, exec, hyprctl dispatch layoutmsg "preselect l"
561 | # bind = , H, submap, reset
562 | # bind = , escape, submap, reset
563 | # submap = reset
564 |
565 | # Bypass global keybinds to pass binds directly to application (eg: VMs)
566 | bind = $mainMod CTRL, Grave, submap, passthru
567 | submap = passthru
568 | bind = $mainMod, Escape, submap, reset
569 | submap = reset
570 |
571 | # Disable all keybinds
572 | bind = $mainMod SHIFT CTRL, Escape, submap, clean
573 | submap = clean
574 | bind = $mainMod, Escape, submap, reset
575 | submap = reset
576 |
577 | # Special workspace
578 | bind = $mainMod SHIFT, U, movetoworkspace, special:terminal
579 | bind = $mainMod, U, togglespecialworkspace, terminal
580 | bind = $mainMod SHIFT, Backspace, movetoworkspace, special:steam
581 | bind = $mainMod, Backspace, togglespecialworkspace, steam
582 | bind = $mainMod SHIFT, Delete, movetoworkspace, special:trash
583 | bind = $mainMod, Delete, togglespecialworkspace, trash
584 | bind = $mainMod SHIFT, O, movetoworkspace, special:whatsapp
585 | bind = $mainMod, O, togglespecialworkspace, whatsapp
586 | bind = ALT, Q, togglespecialworkspace, clipse
587 |
588 | # Switch workspaces with mainMod + [0-9]
589 | bind = $mainMod, 1, split-workspace, 1
590 | bind = $mainMod, 2, split-workspace, 2
591 | bind = $mainMod, 3, split-workspace, 3
592 | bind = $mainMod, 4, split-workspace, 4
593 | bind = $mainMod, 5, split-workspace, 5
594 | bind = $mainMod, 6, split-workspace, 6
595 | bind = $mainMod, 7, split-workspace, 7
596 | bind = $mainMod, 8, split-workspace, 8
597 | bind = $mainMod, 9, split-workspace, 9
598 | # bind = $mainMod, 0, split-workspace, 10
599 | # bind = $mainMod, Grave, split-workspace, empty # The key before '1' (backtick/tilde)
600 |
601 | # Move active window and follow to workspace
602 | bind = $mainMod CTRL, 1, split-movetoworkspace, 1
603 | bind = $mainMod CTRL, 2, split-movetoworkspace, 2
604 | bind = $mainMod CTRL, 3, split-movetoworkspace, 3
605 | bind = $mainMod CTRL, 4, split-movetoworkspace, 4
606 | bind = $mainMod CTRL, 5, split-movetoworkspace, 5
607 | bind = $mainMod CTRL, 6, split-movetoworkspace, 6
608 | bind = $mainMod CTRL, 7, split-movetoworkspace, 7
609 | bind = $mainMod CTRL, 8, split-movetoworkspace, 8
610 | bind = $mainMod CTRL, 9, split-movetoworkspace, 9
611 | # bind = $mainMod CTRL, 0, split-movetoworkspace, 10
612 | # bind = $mainMod CTRL, Grave, split-movetoworkspace, empty
613 | # bind = $mainMod CTRL, bracketleft, split-movetoworkspace, -1
614 | # bind = $mainMod CTRL, bracketright, split-movetoworkspace, +1
615 |
616 | # Move active window to a workspace with mainMod + SHIFT + [0-9]
617 | bind = $mainMod SHIFT, 1, split-movetoworkspacesilent, 1
618 | bind = $mainMod SHIFT, 2, split-movetoworkspacesilent, 2
619 | bind = $mainMod SHIFT, 3, split-movetoworkspacesilent, 3
620 | bind = $mainMod SHIFT, 4, split-movetoworkspacesilent, 4
621 | bind = $mainMod SHIFT, 5, split-movetoworkspacesilent, 5
622 | bind = $mainMod SHIFT, 6, split-movetoworkspacesilent, 6
623 | bind = $mainMod SHIFT, 7, split-movetoworkspacesilent, 7
624 | bind = $mainMod SHIFT, 8, split-movetoworkspacesilent, 8
625 | bind = $mainMod SHIFT, 9, split-movetoworkspacesilent, 9
626 | # bind = $mainMod SHIFT, 0, split-movetoworkspacesilent, 10
627 | # bind = $mainMod SHIFT, Grave, split-movetoworkspacesilent, empty
628 | # bind = $mainMod SHIFT, bracketleft, split-movetoworkspacesilent, -1
629 | # bind = $mainMod SHIFT, bracketright, split-movetoworkspacesilent, +1
630 |
631 | # Scroll through existing workspaces with mainMod + scroll
632 | bind = $mainMod, mouse_down, workspace, e+1
633 | bind = $mainMod, mouse_up, workspace, e-1
634 |
635 | # Move/resize windows with mainMod + LMB/RMB and dragging
636 | # mouse:272 = left
637 | # mouse:273 = right
638 | # mouse:274 = middle
639 | # mouse:275 = side
640 | # mouse:276 = extra
641 | bindm = $mainMod, mouse:272, movewindow
642 | bindm = $mainMod, mouse:273, resizewindow
643 | bind = $mainMod, mouse:274, togglefloating
644 | bindm = , mouse:275, movewindow
645 | bindm = , mouse:276, resizewindow
646 |
647 | # Zoom
648 | # bind = $mainMod, mouse_down, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | awk '/^float.*/ {print $2 + 0.5}')
649 | # bind = $mainMod, mouse_up, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor | awk '/^float.*/ {print $2 - 0.5}')
650 | # bind = $mainMod SHIFT, mouse_up, exec, hyprctl -q keyword cursor:zoom_factor 1
651 |
652 | # The second bind is redundant but I'm used to it in DWM
653 | bind = $mainMod SHIFT CTRL, comma, exec, hyprctl dispatch swapactiveworkspaces 1 0
654 | bind = $mainMod SHIFT CTRL, period, exec, hyprctl dispatch swapactiveworkspaces 0 1
655 | bind = $mainMod SHIFT CTRL, left, exec, hyprctl dispatch swapactiveworkspaces 1 0
656 | bind = $mainMod SHIFT CTRL, right, exec, hyprctl dispatch swapactiveworkspaces 0 1
657 |
658 | bind = $mainMod SHIFT, comma, exec, hyprctl dispatch split-changemonitor prev
659 | bind = $mainMod SHIFT, period, exec, hyprctl dispatch split-changemonitor next
660 | bind = $mainMod ALT, comma, exec, hyprctl dispatch split-changemonitorsilent prev
661 | bind = $mainMod ALT, period, exec, hyprctl dispatch split-changemonitorsilent next
662 | # focus monitor.
663 | bind = $mainMod, comma, focusmonitor, l
664 | # bind = $mainMod, bracketleft, workspace, e-1
665 | bind = $mainMod, period, focusmonitor, r
666 | # bind = $mainMod, bracketright, workspace, e+1
667 |
668 | # move
669 | # bind = SHIFTALT, comma, movecurrentworkspacetomonitor, l
670 | # bind = SHIFTALT, period, movecurrentworkspacetomonitor, r
671 |
672 | # grab rogue windows
673 | bind = SHIFTALT, slash, split-grabroguewindows
674 | # bind = $mainMod SHIFT CTRL, bracketright, split-swapactiveworkspaces, current +1
675 | # bind = $mainMod SHIFT CTRL, bracketleft, split-swapactiveworkspaces, current +1
676 |
677 | # plugin: xtra-dispatchers
678 | # bind = $mainMod, semicolon, plugin:xtd:throwunfocused, special:void
679 | # bind = $mainMod SHIFT, semicolon, plugin:xtd:bringallfrom, special:void
680 |
681 | bind = $mainMod, S, exec, hyprctl dispatch toggleswallow
682 |
683 | # laptop lid switch
684 | bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "eDP-1, 1920x1080, 1920x0, 1"
685 | bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "eDP-1, disable"
686 |
687 | ## Plugins
688 | # source = $confDir/hyprexpo.conf
689 | # source = $confDir/hyprsplit.conf
690 | source = $confDir/hyprtasking.conf
691 | # source = $confDir/hyprspace.conf
692 | # source = $confDir/hyprgrass.conf
693 | source = $confDir/split-monitor-workspaces.conf
694 | source = $confDir/wl-kbptr.conf
695 |
696 | ## Source local config (yadm)
697 | ## symlink creation is handled by yadm
698 | source = $confDir/local.conf
699 |
700 | exec-once = uwsm app -- hyprpm reload -n
701 | exec-once = uwsm app -- $scriptsDir/import-gsettings
702 | # exec-once = uwsm app -- /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
703 | exec-once = uwsm app -- clipse --listen
704 | # exec-once = [workspace special:junks silent] uwsm app -- xwaylandvideobridge
705 | exec-once = uwsm app -- hyprpanel
706 | exec-once = uwsm app -- kanata -c $confDir/kanata/lappy.kbd
707 | # GTK4 cursor size bug fix
708 | exec-once = dconf write /org/gnome/desktop/interface/cursor-size 24
709 | exec-once = hyprlock
710 |
711 | # smart gaps, no_border_when_only
712 | workspace = w[tv1] s[0], gapsout:0, gapsin:0
713 | workspace = w[tg1] s[0], gapsout:0, gapsin:0
714 | workspace = f[1] s[0], gapsout:0, gapsin:0
715 | windowrule = bordersize 0, floating:0, onworkspace:w[tv1] s[0]
716 | windowrule = rounding 0, floating:0, onworkspace:w[tv1] s[0]
717 | windowrule = bordersize 0, floating:0, onworkspace:w[tg1] s[0]
718 | windowrule = rounding 0, floating:0, onworkspace:w[tg1] s[0]
719 | windowrule = bordersize 0, floating:0, onworkspace:f[1] s[0]
720 | windowrule = rounding 0, floating:0, onworkspace:f[1] s[0]
721 |
722 | # workspace = previous_per_monitor
723 | workspace = special:terminal, on-created-empty:uwsm app -- $term -1 --title scratch -e sesh connect work
724 | # workspace = special:terminal, on-created-empty:uwsm app -- $term -1 --title scratch -e tt work
725 | workspace = special:trash, on-created-empty:uwsm app -- $music2
726 | workspace = special:whatsapp, on-created-empty:uwsm app -- $HOME/.config/WhatsAppWeb-linux-x64/WhatsAppWeb --ozone-platform-hint=auto --enable-features=WebRTCPipeWireCapturer
727 | workspace = special:steam, on-created-empty:uwsm app -- steam
728 | workspace = special:update, on-created-empty:uwsm app -- $term --class=update -T update -e yay -Syu
729 | workspace = special:clipse, on-created-empty:uwsm app -- $term --class=kitty -T textern -e clipse
730 | workspace = 6, on-created-empty:uwsm app -- remmina
731 | workspace = 7, on-created-empty:uwsm app -- teams-for-linux
732 | # workspace = 8, on-created-empty:uwsm app -- $term -1 --class=workTerminal -T noswallow -o background_opacity=1.0 -e sesh connect Project
733 | workspace = 8, on-created-empty:uwsm app -- ghostty --class=workTerminal --title=noswallow --background-opacity=1 -e sesh connect Project
734 | workspace = 17, on-created-empty:uwsm app -- $term -1 --class=workTerminal2 -T noswallow -o background_opacity=1.0 -e sesh connect Project
735 |
--------------------------------------------------------------------------------
/hyprlock.conf:
--------------------------------------------------------------------------------
1 | source = $HOME/.config/hypr/mocha.conf
2 |
3 | $accent = $mauve
4 | $accentAlpha = $mauveAlpha
5 | $font = Pragmasevka Bold
6 |
7 | # GENERAL
8 | general {
9 | disable_loading_bar = true
10 | hide_cursor = true
11 | }
12 |
13 | # BACKGROUND
14 | background {
15 | monitor =
16 | path = $HOME/.config/hypr/bg/cache.png
17 | blur_passes = 1
18 | color = $base
19 | }
20 |
21 | # LAYOUT
22 | label {
23 | monitor =
24 | text = Layout: $LAYOUT
25 | color = $text
26 | font_size = 15
27 | font_family = $font
28 | position = 30, -30
29 | halign = left
30 | valign = top
31 | }
32 |
33 | # TIME
34 | label {
35 | monitor =
36 | text = $TIME
37 | color = $text
38 | font_size = 90
39 | font_family = $font
40 | position = -30, 0
41 | halign = right
42 | valign = top
43 | }
44 |
45 | # DATE
46 | label {
47 | monitor =
48 | text = cmd[update:43200000] date +"%A, %d %B %Y"
49 | color = $text
50 | font_size = 25
51 | font_family = $font
52 | position = -30, -150
53 | halign = right
54 | valign = top
55 | }
56 |
57 | # FORTUNE
58 | label {
59 | monitor =
60 | text = cmd[update:3600000] fortune -s
61 | color = $text
62 | font_size = 17
63 | font_family = $font
64 | position = 0, -150
65 | halign = center
66 | valign = center
67 | }
68 |
69 | # USER AVATAR
70 | image {
71 | monitor =
72 | path = $HOME/.face
73 | size = 300
74 | border_color = $accent
75 | position = 0, 150
76 | halign = center
77 | valign = center
78 | }
79 |
80 | # INPUT FIELD
81 | input-field {
82 | monitor =
83 | size = 300, 50
84 | outline_thickness = 4
85 | dots_size = 0.2
86 | dots_spacing = 0.2
87 | dots_center = true
88 | outer_color = $accent
89 | inner_color = $surface0
90 | font_color = $text
91 | fade_on_empty = false
92 | placeholder_text = Logged in as $USER
93 | hide_input = false
94 | check_color = $accent
95 | fail_color = $red
96 | fail_text = $FAIL ($ATTEMPTS)
97 | capslock_color = $yellow
98 | position = 0, -47
99 | halign = center
100 | valign = center
101 | }
102 | # vim: set ft=hyprlang :
103 |
--------------------------------------------------------------------------------
/hyprpaper.conf:
--------------------------------------------------------------------------------
1 | preload = ~/.config/hypr/bg/cache.png
2 | wallpaper = ,~/.config/hypr/bg/cache.png
3 | ipc = true
4 | # vim: set ft=hyprlang :
5 |
--------------------------------------------------------------------------------
/hyprspace.conf:
--------------------------------------------------------------------------------
1 | plugin {
2 | overview {
3 | # affectStrut = false
4 | overrideGaps = false
5 | }
6 | }
7 |
8 | bind = $mainMod SHIFT, I, exec, hyprctl dispatch overview:toggle
9 |
--------------------------------------------------------------------------------
/hyprsplit.conf:
--------------------------------------------------------------------------------
1 | plugin {
2 | hyprsplit {
3 | num_workspaces = 9
4 | # persistent_workspaces = true
5 | }
6 | }
7 | # vim: set ft=hyprlang :
8 |
--------------------------------------------------------------------------------
/hyprtasking.conf:
--------------------------------------------------------------------------------
1 | bind = SUPER, grave, hyprtasking:toggle, cursor
2 | bind = SUPER, space, hyprtasking:toggle, all
3 |
4 | bind = SUPER, X, hyprtasking:killhovered
5 |
6 | # bind = SUPER, H, hyprtasking:move, left
7 | # bind = SUPER, J, hyprtasking:move, down
8 | # bind = SUPER, K, hyprtasking:move, up
9 | # bind = SUPER, L, hyprtasking:move, right
10 |
11 | plugin {
12 | hyprtasking {
13 | layout = grid
14 |
15 | bg_color = 0xff26233a
16 | gap_size = 20
17 | border_size = 3
18 | # exit_behavior = active interacted original hovered
19 |
20 | grid {
21 | rows = 3
22 | cols = 3
23 | }
24 | linear {
25 | height = 300
26 | scroll_speed = 1.1
27 | blur = 0
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/kanata/lappy.kbd:
--------------------------------------------------------------------------------
1 | (defcfg
2 | process-unmapped-keys yes
3 | log-layer-changes yes
4 | )
5 |
6 | (defvar
7 | tap-time 200
8 | hold-time 200
9 | )
10 |
11 | (defsrc
12 | esc home del
13 | grv 1 2 3 4 5 6 7 8 9 0 min eql bspc
14 | tab q w e r t y u i o p [ ] \
15 | caps a s d f g h j k l scln ' ret
16 | lsft z x c v b n m comm . / rsft
17 | lctl lalt spc ralt rctl
18 | )
19 |
20 | (deftemplate charmod (char mod)
21 | (switch
22 | ((key-timing 3 less-than 430)) $char break
23 | () (tap-hold-release-timeout 200 500 $char $mod $char) break
24 | )
25 | )
26 |
27 | (defalias
28 | game (layer-switch game)
29 | base (layer-switch base)
30 | cec (tap-hold-press $tap-time $hold-time esc lctl)
31 | rec (tap-hold-press $tap-time $hold-time ret lctl)
32 | hspc (tap-hold $tap-time $hold-time spc (layer-toggle vi))
33 | htab (tap-hold $tap-time $hold-time tab lmet)
34 | )
35 |
36 | (deflayer base
37 | esc home del
38 | grv 1 2 3 4 5 6 7 8 9 0 min eql bspc
39 | @htab q w e r t y u i o p [ ] \
40 | @cec
41 | (t! charmod a lalt)
42 | (t! charmod s lmet)
43 | (t! charmod d lsft)
44 | (t! charmod f lctl)
45 | g h
46 | (t! charmod j rctl)
47 | (t! charmod k rsft)
48 | (t! charmod l rmet)
49 | (t! charmod scln ralt)
50 | ' @rec
51 | lsft z x c v b n m comm . / rsft
52 | lctl lalt @hspc ralt rctl
53 | )
54 |
55 | (deflayer game
56 | esc @base del
57 | grv 1 2 3 4 5 6 7 8 9 0 min eql bspc
58 | tab q w e r t y u i o p [ ] \
59 | caps a s d f g h j k l scln ' ret
60 | lsft z x c v b n m comm . / rsft
61 | lctl lalt spc ralt @base
62 | )
63 |
64 | (deflayer vi
65 | M-esc @game M-del
66 | M-grv M-1 M-2 M-3 M-4 M-5 M-6 M-7 M-8 M-9 M-0 M-min M-eql M-bspc
67 | M-tab A-q M-w end M-S-r M-C-ret M-y M-u M-i M-o M-p M-[ M-] M-\
68 | caps home A-s M-S-d M-S-f M-S-g lft down up rght M-scln M-' M-ret
69 | M-lsft M-z M-x M-c C-S-d M-b M-n M-S-m M-comm M-. M-/ M-rsft
70 | M-lctl M-lalt - - @game
71 | )
72 |
--------------------------------------------------------------------------------
/kanata/silakka.kbd:
--------------------------------------------------------------------------------
1 | (defcfg
2 | process-unmapped-keys yes
3 | )
4 |
5 | (defvar
6 | tap-time 200
7 | hold-time 200
8 | )
9 |
10 | (defsrc
11 | a s d f j k l scln
12 | )
13 |
14 | (deftemplate charmod (char mod)
15 | (switch
16 | ((key-timing 3 less-than 430)) $char break
17 | () (tap-hold-release-timeout 200 500 $char $mod $char) break
18 | )
19 | )
20 |
21 | (deflayer base
22 | (t! charmod a lalt)
23 | (t! charmod s lmet)
24 | (t! charmod d lsft)
25 | (t! charmod f lctl)
26 | (t! charmod j rctl)
27 | (t! charmod k rsft)
28 | (t! charmod l rmet)
29 | (t! charmod scln ralt)
30 | )
31 |
--------------------------------------------------------------------------------
/kmonad/lappy.kbd:
--------------------------------------------------------------------------------
1 | (defcfg
2 | input (device-file "/dev/input/by-path/platform-i8042-serio-0-event-kbd")
3 | output (uinput-sink "KMonad output")
4 |
5 | fallthrough true
6 | allow-cmd true
7 | )
8 |
9 | (defsrc
10 | esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 ssrq slck pause
11 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc ins home pgup nlck kp/ kp* kp-
12 | tab q w e r t y u i o p [ ] \ del end pgdn kp7 kp8 kp9 kp+
13 | caps a s d f g h j k l ; ' ret kp4 kp5 kp6
14 | lsft z x c v b n m , . / rsft up kp1 kp2 kp3 kprt
15 | lctl lmet lalt spc ralt rctl left down rght kp0 kp.
16 | )
17 |
18 | (defalias
19 | ha (tap-next-release a lmet)
20 | hs (tap-next-release s lalt)
21 | hd (tap-next-release d lsft)
22 | hf (tap-next-release f lctl)
23 | hj (tap-next-release j rctl)
24 | hk (tap-next-release k rsft)
25 | hl (tap-next-release l ralt)
26 | h; (tap-next-release ; rmet)
27 | cec (tap-next-release esc lctl)
28 | mov (tap-next-release spc (layer-toggle vi))
29 | cext (layer-toggle extend)
30 | retc (tap-next-release ret rctl)
31 | rmcap (tap-next-release caps rmet)
32 | tabm (tap-next-release tab lmet)
33 | notifyGame (cmd-button "notify-send -u critical -t 7000 -i '/usr/share/icons/qualia/32x32/categories/preferences-desktop-keyboard-shortcuts.png' 'Keyboard Layer' 'GAMING'")
34 | notifyQwerty (cmd-button "notify-send -u critical -t 7000 -i '/usr/share/icons/qualia/32x32/categories/preferences-desktop-keyboard-shortcuts.png' 'Keyboard Layer' 'QWERTY'")
35 | gam (tap-macro @notifyGame (layer-switch game))
36 | def (tap-macro @notifyQwerty (layer-switch qwerty))
37 | edit (tap-macro C-x C-e)
38 | #pup (tap-next-release pgup lsft)
39 | #pdown (tap-next-release pgdn rsft)
40 | lhome (tap-next-release home lalt)
41 | rend (tap-next-release end ralt)
42 | tbar (tap-next-release (cmd-button "ags -t bar-0") rctl)
43 | )
44 |
45 | (deflayer qwerty
46 | esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prnt slck pause
47 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc ins home pgup nlck kp/ kp* kp-
48 | @tabm q w e r t y u i o p [ ] \ del end pgdn kp7 kp8 kp9 kp+
49 | @cec @ha @hs @hd @hf g h @hj @hk @hl @h; ' @retc kp4 kp5 kp6
50 | lsft z x c v b n m , . / rsft up kp1 kp2 kp3 kprt
51 | @cext lmet lalt @mov ralt @tbar left down right kp0 kp.
52 | )
53 |
54 | (deflayer vi
55 | M-esc _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
56 | M-grv M-1 M-2 M-3 M-4 M-5 M-6 M-7 M-8 M-9 M-0 M-- M-= M-bspc _ @gam _ _ _ _ _
57 | S-tab A-q M-w end M-S-r M-A-ret M-y M-u M-i M-o M-p M-[ M-] M-\\ M-del _ _ _ _ _ _
58 | caps home A-s M-S-d M-S-f M-S-g left down up right _ _ M-ret _ _ _
59 | M-lsft M-z @edit M-c C-S-d M-b M-n M-S-m M-, M-. M-/ M-rsft _ _ _ _ _
60 | M-lctl _ _ _ _ M-rctl _ _ _ _ _
61 | )
62 |
63 | (deflayer extend
64 | C-esc C-f1 C-f2 C-f3 C-f4 C-f5 C-f6 C-f7 C-f8 C-f9 C-f10 C-f11 C-f12 _ _ _
65 | C-grv C-1 C-2 C-3 C-4 C-5 C-6 C-7 C-8 C-9 C-0 C-\_ C-= C-bspc _ _ _ _ _ _ _
66 | C-tab C-q C-w C-e C-r C-t C-y C-u C-i C-o playpause C-[ C-] C-\\ _ _ _ _ _ _ _
67 | C-esc C-a C-s C-d C-f C-g previoussong vold volu nextsong C-; C-' C-ret _ _ _
68 | C-lsft C-z C-x C-c C-v C-b C-n mute C-, C-. C-/ C-rsft _ _ _ _ _
69 | _ C-lmet C-lalt C-spc C-ralt rctl _ _ _ _ _
70 | )
71 |
72 | (deflayer game
73 | esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prnt slck pause
74 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc ins @def pgup nlck kp/ kp* kp-
75 | tab q w e r t y u i o p [ ] \ del end pgdn kp7 kp8 kp9 kp+
76 | @cec a s d f g h j k l ; ' ret kp4 kp5 kp6
77 | lsft z x c v b n m , . / rsft up kp1 kp2 kp3 kprt
78 | lctl lmet lalt spc ralt rctl left down rght kp0 kp.
79 | )
80 |
81 | #| --------------------------------------------------------------------------
82 |
83 | KMonad: US ansi 100% template
84 |
85 | This file contains the `defsrc` configuration for a standard US-ansi 100%
86 | keyboard. Modelled on a standard DAS-keyboard 100%. Copy out the 'defsrc'
87 | layer to start your own keyboard configuration. Copy out the `deflayer`
88 | template to easily start a new layer with matching `transparent` buttons.
89 |
90 | (deflayer name
91 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
92 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
93 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
94 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
95 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
96 | _ _ _ _ _ _ _ _ _ _ _ _ _
97 | )
98 |
99 |
100 | (defsrc
101 | esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 ssrq slck pause
102 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc ins home pgup nlck kp/ kp* kp-
103 | tab q w e r t y u i o p [ ] \ del end pgdn kp7 kp8 kp9 kp+
104 | caps a s d f g h j k l ; ' ret kp4 kp5 kp6
105 | lsft z x c v b n m , . / rsft up kp1 kp2 kp3 kprt
106 | lctl lmet lalt spc ralt rmet cmp rctl left down rght kp0 kp.
107 | )
108 | -------------------------------------------------------------------------- |#
109 |
--------------------------------------------------------------------------------
/kmonad/tkl.kbd:
--------------------------------------------------------------------------------
1 | (defcfg
2 | input (device-file "/dev/input/by-id/usb-Milsky_87EC-XRGB_CA2018120002-event-kbd")
3 | output (uinput-sink "KMonad output")
4 |
5 | fallthrough true
6 | allow-cmd true
7 | )
8 |
9 | (defsrc
10 | esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prnt slck pause
11 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc ins home pgup
12 | tab q w e r t y u i o p [ ] \ del end pgdn
13 | caps a s d f g h j k l ; ' ret
14 | lsft z x c v b n m , . / rsft up
15 | lctl lmet lalt spc ralt cmp rctl left down right
16 | )
17 |
18 | (defalias
19 | cec (tap-next-release esc lctl)
20 | mov (tap-next-release spc (layer-toggle vi))
21 | cext (layer-toggle extend)
22 | retc (tap-next-release ret rctl)
23 | rmcap (tap-next-release caps rmet)
24 | tabm (tap-next-release tab lmet)
25 | notifyGame (cmd-button "notify-send -u critical -t 7000 -i '/usr/share/icons/qualia/32x32/categories/preferences-desktop-keyboard-shortcuts.png' 'Keyboard Layer' 'GAMING'")
26 | notifyQwerty (cmd-button "notify-send -u critical -t 7000 -i '/usr/share/icons/qualia/32x32/categories/preferences-desktop-keyboard-shortcuts.png' 'Keyboard Layer' 'QWERTY'")
27 | notifyNumpad (cmd-button "notify-send -u critical -t 7000 -i '/usr/share/icons/qualia/32x32/categories/preferences-desktop-keyboard-shortcuts.png' 'Keyboard Layer' 'NUMPAD'")
28 | gam (tap-macro @notifyGame (layer-switch game))
29 | def (tap-macro @notifyQwerty (layer-switch qwerty))
30 | kpad (tap-macro @notifyNumpad (layer-switch numpad))
31 | edit (tap-macro C-x C-e)
32 | lhome (tap-next-release home lalt)
33 | rend (tap-next-release end ralt)
34 | tbar (tap-next-release (cmd-button "killall -SIGUSR1 waybar") rctl)
35 | )
36 |
37 | (deflayer qwerty
38 | esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prnt slck pause
39 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc ins home pgup
40 | @tabm q w e r t y u i o p [ ] \ del end pgdn
41 | @cec a s d f g h j k l ; ' @retc
42 | lctrl z x c v b n m , . / rctrl up
43 | @cext lmet @lhome @mov @rend @rmcap @tbar left down right
44 | )
45 |
46 | (deflayer vi
47 | M-esc _ _ _ _ _ _ _ _ _ _ _ @kpad _ @gam _
48 | M-grv M-1 M-2 M-3 M-4 M-5 M-6 M-7 M-8 M-9 M-0 M-- M-= M-bspc _ _ _ _ _ _ _
49 | M-tab A-q M-w end M-S-r M-A-ret M-y M-u M-i M-o M-p M-[ M-] M-\\ M-del _ _ _ _ _ _
50 | caps home A-s M-S-d M-S-f M-S-g left down up right _ _ M-ret _ _ _
51 | M-lsft M-z @edit M-c C-S-d M-b M-n M-S-m M-, M-. _ _ _ _ _ _ _
52 | M-lctl _ _ _ _ _ _ _ _ _ _
53 | )
54 |
55 | (deflayer extend
56 | C-esc C-f1 C-f2 C-f3 C-f4 C-f5 C-f6 C-f7 C-f8 C-f9 C-f10 C-f11 C-f12 _ _ _
57 | C-grv C-1 C-2 C-3 C-4 C-5 C-6 C-7 C-8 C-9 C-0 C-\_ C-= C-bspc _ _ _
58 | C-tab C-q C-w C-e C-r C-t C-y C-u C-i C-o playpause C-[ C-] C-\\ _ _ _
59 | C-esc C-a C-s C-d C-f C-g previoussong vold volu nextsong C-; C-' C-ret
60 | C-lsft C-z C-x C-c C-v C-b C-n mute C-, C-. C-/ C-rsft _
61 | _ C-lmet C-lalt C-spc C-ralt C-rmet rctl _ _ _
62 | )
63 |
64 | (deflayer numpad
65 | _ _ _ _ _ _ _ _ _ _ _ _ @def 7 8 9
66 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ 4 5 6
67 | _ _ _ _ _ _ _ 4 5 6 _ _ _ 0 1 2 3
68 | _ _ _ _ _ _ _ 1 2 3 _ _ _
69 | _ _ _ _ _ _ _ _ _ _ _ _ _
70 | _ _ _ @mov _ _ _ _ _ _
71 | )
72 |
73 | (deflayer game
74 | esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prnt @def pause
75 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc ins home pgup
76 | tab q w e r t y u i o p [ ] \ del end pgdn
77 | caps a s d f g h j k l ; ' ret
78 | lsft z x c v b n m , . / rsft up
79 | lctl lmet lalt spc ralt rmet rctl left down rght
80 | )
81 |
82 | #| --------------------------------------------------------------------------
83 | KMonad: US ansi ten-key-less template
84 |
85 | This file contains the `defsrc` configuration for a standard US-ansi
86 | ten-key-less keyboard. Modelled on a standard DAS-keyboard 100% with the
87 | numpad removed. Copy out the 'defsrc' layer to start your own keyboard
88 | configuration. Copy out the `deflayer` template to easily start a new layer
89 | with matching `transparent` buttons.
90 |
91 | (deflayer name
92 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
93 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
94 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
95 | _ _ _ _ _ _ _ _ _ _ _ _ _
96 | _ _ _ _ _ _ _ _ _ _ _ _ _
97 | _ _ _ _ _ _ _ _ _ _
98 | )
99 |
100 |
101 | (defsrc
102 | esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prnt slck pause
103 | grv 1 2 3 4 5 6 7 8 9 0 - = bspc ins home pgup
104 | tab q w e r t y u i o p [ ] \ del end pgdn
105 | caps a s d f g h j k l ; ' ret
106 | lsft z x c v b n m , . / rsft up
107 | lctl lmet lalt spc ralt rmet rctl left down rght
108 | )
109 | -------------------------------------------------------------------------- |#
110 |
--------------------------------------------------------------------------------
/local.conf##class.amd:
--------------------------------------------------------------------------------
1 | bind = $mainMod, W, exec, $browser
2 |
3 | bindl = , xf86calculator, exec, rofi -show calc
4 | bindl = , xf86favourites, exec, remmina
5 | bindl = , xf86pickupphone, exec, hyprctl dispatch togglespecialworkspace whatsapp
6 | bindl = , xf86hangupphone, exec, hyprctl dispatch togglespecialworkspace trash
7 |
8 | workspace = 2, on-created-empty:$browser
9 | workspace = 11, on-created-empty:$browser
10 |
11 | # vim: set ft=hyprlang :
12 |
--------------------------------------------------------------------------------
/local.conf##default:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/local.conf##default
--------------------------------------------------------------------------------
/mako/config:
--------------------------------------------------------------------------------
1 | max-history=100
2 | sort=-time
3 |
4 | # BINDING OPTIONS
5 | on-button-left=dismiss
6 | on-button-middle=none
7 | on-button-right=dismiss-all
8 | on-touch=dismiss
9 | on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga
10 |
11 | # STYLE OPTIONS
12 | font=Pragmasevka
13 | width=300
14 | height=100
15 | margin=10
16 | padding=15
17 | border-size=2
18 | border-radius=5
19 | icons=1
20 | max-icon-size=48
21 | icon-location=left
22 | markup=1
23 | actions=1
24 | history=1
25 | text-alignment=left
26 | default-timeout=5000
27 | ignore-timeout=0
28 | max-visible=5
29 | layer=overlay
30 | anchor=bottom-right
31 |
32 | background-color=#1e1e2e
33 | text-color=#cdd6f4
34 | border-color=#89b4fa
35 | progress-color=over #313244
36 |
37 | # background-color=#1e1e2e
38 | # text-color=#d9e0ee
39 | # border-color=#313244
40 | # progress-color=over #89b4fa
41 |
42 | [urgency=low]
43 | border-color=#313244
44 | default-timeout=2000
45 |
46 | [urgency=normal]
47 | border-color=#313244
48 | default-timeout=5000
49 |
50 | [urgency=high]
51 | border-color=#f38ba8
52 | text-color=#f38ba8
53 | default-timeout=0
54 |
55 | [category=mpd]
56 | border-color=#f9e2af
57 | default-timeout=2000
58 | group-by=category
59 |
--------------------------------------------------------------------------------
/mako/icons/backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/backup.png
--------------------------------------------------------------------------------
/mako/icons/battery-quarter-solid.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/mako/icons/battery-status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/battery-status.png
--------------------------------------------------------------------------------
/mako/icons/brightness-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/brightness-100.png
--------------------------------------------------------------------------------
/mako/icons/brightness-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/brightness-20.png
--------------------------------------------------------------------------------
/mako/icons/brightness-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/brightness-40.png
--------------------------------------------------------------------------------
/mako/icons/brightness-60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/brightness-60.png
--------------------------------------------------------------------------------
/mako/icons/brightness-80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/brightness-80.png
--------------------------------------------------------------------------------
/mako/icons/dropper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/dropper.png
--------------------------------------------------------------------------------
/mako/icons/hyprland.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/hyprland.png
--------------------------------------------------------------------------------
/mako/icons/microphone-mute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/microphone-mute.png
--------------------------------------------------------------------------------
/mako/icons/microphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/microphone.png
--------------------------------------------------------------------------------
/mako/icons/mmulogo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/mmulogo.jpg
--------------------------------------------------------------------------------
/mako/icons/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/music.png
--------------------------------------------------------------------------------
/mako/icons/palette.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/palette.png
--------------------------------------------------------------------------------
/mako/icons/picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/picture.png
--------------------------------------------------------------------------------
/mako/icons/timer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/timer.png
--------------------------------------------------------------------------------
/mako/icons/uptime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/uptime.png
--------------------------------------------------------------------------------
/mako/icons/volume-high.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/volume-high.png
--------------------------------------------------------------------------------
/mako/icons/volume-low.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/volume-low.png
--------------------------------------------------------------------------------
/mako/icons/volume-mid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/volume-mid.png
--------------------------------------------------------------------------------
/mako/icons/volume-mute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/volume-mute.png
--------------------------------------------------------------------------------
/mako/icons/vpn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/mako/icons/vpn.png
--------------------------------------------------------------------------------
/mocha.conf:
--------------------------------------------------------------------------------
1 |
2 | $rosewater = rgb(f5e0dc)
3 | $rosewaterAlpha = f5e0dc
4 |
5 | $flamingo = rgb(f2cdcd)
6 | $flamingoAlpha = f2cdcd
7 |
8 | $pink = rgb(f5c2e7)
9 | $pinkAlpha = f5c2e7
10 |
11 | $mauve = rgb(cba6f7)
12 | $mauveAlpha = cba6f7
13 |
14 | $red = rgb(f38ba8)
15 | $redAlpha = f38ba8
16 |
17 | $maroon = rgb(eba0ac)
18 | $maroonAlpha = eba0ac
19 |
20 | $peach = rgb(fab387)
21 | $peachAlpha = fab387
22 |
23 | $yellow = rgb(f9e2af)
24 | $yellowAlpha = f9e2af
25 |
26 | $green = rgb(a6e3a1)
27 | $greenAlpha = a6e3a1
28 |
29 | $teal = rgb(94e2d5)
30 | $tealAlpha = 94e2d5
31 |
32 | $sky = rgb(89dceb)
33 | $skyAlpha = 89dceb
34 |
35 | $sapphire = rgb(74c7ec)
36 | $sapphireAlpha = 74c7ec
37 |
38 | $blue = rgb(89b4fa)
39 | $blueAlpha = 89b4fa
40 |
41 | $lavender = rgb(b4befe)
42 | $lavenderAlpha = b4befe
43 |
44 | $text = rgb(cdd6f4)
45 | $textAlpha = cdd6f4
46 |
47 | $subtext1 = rgb(bac2de)
48 | $subtext1Alpha = bac2de
49 |
50 | $subtext0 = rgb(a6adc8)
51 | $subtext0Alpha = a6adc8
52 |
53 | $overlay2 = rgb(9399b2)
54 | $overlay2Alpha = 9399b2
55 |
56 | $overlay1 = rgb(7f849c)
57 | $overlay1Alpha = 7f849c
58 |
59 | $overlay0 = rgb(6c7086)
60 | $overlay0Alpha = 6c7086
61 |
62 | $surface2 = rgb(585b70)
63 | $surface2Alpha = 585b70
64 |
65 | $surface1 = rgb(45475a)
66 | $surface1Alpha = 45475a
67 |
68 | $surface0 = rgb(313244)
69 | $surface0Alpha = 313244
70 |
71 | $base = rgb(1e1e2e)
72 | $baseAlpha = 1e1e2e
73 |
74 | $mantle = rgb(181825)
75 | $mantleAlpha = 181825
76 |
77 | $crust = rgb(11111b)
78 | $crustAlpha = 11111b
79 |
--------------------------------------------------------------------------------
/rofi/catppuccin-mocha.rasi:
--------------------------------------------------------------------------------
1 | * {
2 | bg-col: #1e1e2e;
3 | bg-col-light: #1e1e2e;
4 | //border-col: #1e1e2e;
5 | border-col: @blue;
6 | selected-col: #1e1e2e;
7 | blue: #89b4fa;
8 | fg-col: #cdd6f4;
9 | fg-col2: #f38ba8;
10 | grey: #6c7086;
11 |
12 | width: 800;
13 | font: "Pragmasevka Nerd Font 14";
14 | }
15 |
16 | element-text, element-icon , mode-switcher {
17 | background-color: inherit;
18 | text-color: inherit;
19 | }
20 |
21 | window {
22 | height: 500px;
23 | border: 3px;
24 | border-color: @border-col;
25 | background-color: @bg-col;
26 | border-radius: 5px;
27 | }
28 |
29 | mainbox {
30 | background-color: @bg-col;
31 | }
32 |
33 | inputbar {
34 | children: [prompt,entry];
35 | background-color: @bg-col;
36 | border-radius: 5px;
37 | padding: 2px;
38 | }
39 |
40 | prompt {
41 | background-color: @blue;
42 | padding: 6px;
43 | text-color: @bg-col;
44 | border-radius: 3px;
45 | border-color: @blue;
46 | margin: 20px 0px 0px 20px;
47 | }
48 |
49 | textbox-prompt-colon {
50 | expand: false;
51 | str: ":";
52 | }
53 |
54 | entry {
55 | padding: 6px;
56 | margin: 20px 0px 0px 10px;
57 | text-color: @fg-col;
58 | background-color: @bg-col;
59 | }
60 |
61 | listview {
62 | border: 0px 0px 0px;
63 | padding: 6px 0px 0px;
64 | margin: 6px 0px 0px 20px;
65 | columns: 1;
66 | lines: 5;
67 | background-color: @bg-col;
68 | }
69 |
70 | element {
71 | padding: 0px;
72 | background-color: @bg-col;
73 | text-color: @fg-col ;
74 | }
75 |
76 | element-icon {
77 | size: 25px;
78 | }
79 |
80 | element selected {
81 | background-color: @selected-col ;
82 | text-color: @fg-col2 ;
83 | }
84 |
85 | mode-switcher {
86 | spacing: 0;
87 | }
88 |
89 | button {
90 | padding: 10px;
91 | background-color: @bg-col-light;
92 | text-color: @grey;
93 | vertical-align: 0.5;
94 | horizontal-align: 0.5;
95 | }
96 |
97 | button selected {
98 | background-color: @bg-col;
99 | text-color: @blue;
100 | }
101 |
102 | message {
103 | background-color: @bg-col-light;
104 | margin: 2px;
105 | padding: 2px;
106 | border-radius: 5px;
107 | }
108 |
109 | textbox {
110 | padding: 6px;
111 | margin: 20px 0px 0px 20px;
112 | text-color: @blue;
113 | background-color: @bg-col-light;
114 | }
115 |
--------------------------------------------------------------------------------
/rofi/config.rasi:
--------------------------------------------------------------------------------
1 | configuration{
2 | modi: "run,drun,window,calc,emoji,ssh";
3 | modes: [run,drun,window,calc,combi,emoji,ssh];
4 | icon-theme: "Adwaita-purple";
5 | show-icons: true;
6 | terminal: "uwsm app -- kitty -e";
7 | drun-display-format: "{icon} {name}";
8 | location: 0;
9 | disable-history: false;
10 | hide-scrollbar: true;
11 | display-drun: " Apps ";
12 | display-run: " Run ";
13 | display-window: " Window";
14 | display-Network: " Network";
15 | sidebar-mode: true;
16 | }
17 |
18 | @theme "catppuccin-mocha"
19 |
20 |
--------------------------------------------------------------------------------
/scripts/autohidebar.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # delay start, wait for hyprpanel to load
4 | sleep 10
5 |
6 | # Initialize state variable
7 | bar_visible=$(hyprpanel iwv bar-0)
8 |
9 | while [ "$bar_visible" = true ]; do
10 | if [[ $(pidof gjs) ]] && [ "$bar_visible" = true ]; then
11 | ags -i hyprpanel toggle bar-0
12 | bar_visible=false
13 | fi
14 | done
15 |
16 | # Monitor cursor position
17 | while true; do
18 | # Get cursor position using hyprctl
19 | read Y < <(hyprctl cursorpos -j | sed -n '4p' | cut -d":" -f2)
20 |
21 | if [ "$Y" -le 5 ] && [ "$bar_visible" = false ]; then
22 | ags -i hyprpanel toggle bar-0
23 | bar_visible=true
24 | while [ "$Y" -le 35 ]; do
25 | sleep 0.5
26 | read Y < <(hyprctl cursorpos -j | sed -n '4p' | cut -d":" -f2)
27 | done
28 | elif [ "$Y" -gt 35 ] && [ "$bar_visible" = true ]; then
29 | ags -i hyprpanel toggle bar-0
30 | bar_visible=false
31 | fi
32 | sleep 0.5
33 | done
34 |
--------------------------------------------------------------------------------
/scripts/bemenu_input:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # If environmental variable `TERMINAL' is not set, then default terminal used: URxvt.
4 |
5 | DMENU_FONT1="Pragmasevka 15"
6 | export BEMENU_OPTS='--fb "#1e1e2e" --ff "#cdd6f4" --nb "#1e1e2e" --nf "#cdd6f4" --tb "#1e1e2e" --hb "#1e1e2e" --tf "#f38ba8" --hf "#f9e2af" --af "#cdd6f4" --ab "#1e1e2e"'
7 |
8 | # If "BROWSER" unset globally, set locally.
9 | [ -n "$BROWSER" ] || BROWSER="firefox -new-window"
10 | [ -n "$TERMINAL" ] || TERMINAL="kitty"
11 |
12 | case $1 in
13 |
14 | # Help
15 | -h)
16 | echo " 1: Do a dictionary search using bemenu."
17 | echo " 2: Search for a man page."
18 | echo " 3: Do a google search in firefox."
19 | echo " 4: Open a git repo stored in $HOME."
20 | echo " 5: Open a terminal is a directory. Similar to fuzzy finder through bemenu but for directory instead of files."
21 | echo " 6: Normal application launcher using bemenu. Runs basic bemenu-run command."
22 | echo " 7: Kill a process."
23 | echo " 8: Set a timer To turn off notifications (Focus mode)."
24 | echo " 9: Select WiFi network to connect."
25 | echo "10: Options to exit system. To use this option, run script as a sudo user."
26 | ;;
27 |
28 | # Search dictionary.
29 | 1)
30 | WORD=$(cat /usr/share/dict/words | bemenu -i -l 20 -p "Find meaning of:" --fn "$DMENU_FONT1")
31 | if [ -n "$WORD" ]; then
32 | $TERMINAL --name dropdown_dictionary -e sh -c "dict ${WORD} |less"
33 | fi
34 | ;;
35 |
36 | # Open terminal in a directory.
37 | 5)
38 | DIR="$(fd . $HOME --type d 2>/dev/null | sed s:/home/$USER:~: |
39 | bemenu -i -l 20 -p "Go to directory:" --fn "$DMENU_FONT1")"
40 |
41 | if [ "$DIR" = "~/" ]; then
42 | cd $HOME && $TERMINAL &
43 | else
44 | # Cut the '~/' part from the `DIR'.
45 | DIR="$(echo $DIR | cut -d '/' -f2-)"
46 |
47 | # If user selected any directory then open `$TERMINAL' in that directory.
48 | [ "$DIR" = "" ] || { cd $HOME/$DIR && $TERMINAL; } &
49 | fi
50 | ;;
51 |
52 | # Basic `bemenu-run' to launch applications/run commands.
53 | 6)
54 | bemenu-run -p "Run command:" --fn "$DMENU_FONT1"
55 | ;;
56 |
57 | # Search google or open a URL.
58 | 3)
59 | SEARCHURL='https://www.google.com/search?q='
60 | GOTOURL='https://'
61 | # QUERY=$(echo '' | bemenu -p "Search / Go to:" --fn "-xos4-terminus-medium-r-*-*-14-*")
62 | QUERY=$(echo '' | bemenu -p "Search / Go to:" --fn "$DMENU_FONT1")
63 | if [ -n "$QUERY" ]; then
64 | (echo $QUERY | grep ' ' >/dev/null && $BROWSER "${SEARCHURL}${QUERY}" && echo case 1) ||
65 | (echo $QUERY | grep '\.' >/dev/null && $BROWSER "${GOTOURL}${QUERY}" && echo case 2) ||
66 | ($BROWSER "${SEARCHURL}${QUERY}" && echo case 3)
67 | fi
68 | ;;
69 |
70 | # Open terminal in a git repo.
71 | 4)
72 | mkdir -p $HOME/.tmp
73 | [ -e $HOME/.tmp/gitfiles ] || find $HOME/ -regex .*/\.git$ -type d 2>/dev/null >$HOME/.tmp/gitfiles
74 | REPOS="$(cat $HOME/.tmp/gitfiles | xargs dirname | sed s:/home/$USER:~: | bemenu -i -l 20 -p 'Select git repo to open' --fn "$DMENU_FONT1")"
75 |
76 | # Cut the '~/' part from the `REPOS'.
77 | REPOS="$(echo $REPOS | cut -d '/' -f2-)"
78 |
79 | # If user selected any repo then open `$TERMINAL' in that repo.
80 | [ "$REPOS" = "" ] || { cd $HOME/$REPOS && $TERMINAL; } &
81 | ;;
82 |
83 | # Manual page.
84 | 2)
85 | # Store list of all available man pages in a file.
86 | apropos . | sort >/tmp/manlist.txt
87 |
88 | # In manlist.txt, entries are in the form
89 |
90 | # signal (7) - overview of signals
91 |
92 | # We need to modify this query in the form "7 signal" so that our query
93 | # can become `man 7 signal'. This will search 7th man page of signal
94 | # instead of default which is 2nd.
95 |
96 | WORD="$(cat /tmp/manlist.txt | bemenu -i -l 20 -p "Manual page for:" --fn "$DMENU_FONT1" | sed 's/\(.*\) (\([0-9]*\)).*/\2 \1/')"
97 | if [ -n "$WORD" ]; then
98 | echo "Showing result for \"man $WORD\""
99 | $TERMINAL --name dropdown_manual -e sh -c "man ${WORD} || figlet -c 'No manual entry for \"${WORD}\"' |less" >/dev/null
100 | # exec i3-msg [instance="dropdown_manual"] focus >/dev/null
101 | fi
102 | ;;
103 |
104 | # Kill a process listed in ps aux
105 | 7)
106 | # Substitute one or more blank spaces with a |.
107 | QUERY="$(ps aux | bemenu -i -l 20 -p 'Kill who?' | sed -E 's/ +/|/g')"
108 | if [ -n "$QUERY" ]; then
109 | # If owner is different, don't be evil.
110 | ME=$(whoami)
111 | echo $QUERY | grep -q "^$ME" || { notify-send "[!] Only processes owned by \"$ME\" can be killed." && return 1; }
112 | # echo $QUERY
113 | KILLPID="$(echo $QUERY | cut -d "|" -f 2)"
114 | KILLEDNAME="$(echo $QUERY | cut -d '|' -f11- | sed 's/|/ /g')"
115 | kill $KILLPID &&
116 | { echo Killed \"$KILLEDNAME\" && notify-send "Killed \"$KILLEDNAME\""; } ||
117 | { echo "Unable to kill process $KILLPID" && notify-send "Unable to kill process $KILLPID"; }
118 | fi
119 | ;;
120 |
121 | # Stop notifications for specified time in minutes.
122 | 8)
123 | TIMER=$(echo -n "" | bemenu -p 'Minutes to stop notifications:' --fn "$DMENU_FONT1")
124 | if [ -n "$TIMER" ]; then
125 | # Enter 0 to resume notifications.
126 | if [ 0 -eq $TIMER ]; then
127 | notify-send "DUNST_COMMAND_RESUME"
128 | notify-send "Notifications resumed."
129 | return 0
130 | fi
131 |
132 | notify-send -t 3500 "Turning on Focus mode for $TIMER minutes."
133 | sleep 4s
134 | notify-send "DUNST_COMMAND_PAUSE"
135 | sleep "$TIMER"m
136 | notify-send "DUNST_COMMAND_RESUME"
137 | notify-send "Focus mode turned off."
138 | fi
139 | ;;
140 | # Search for WiFi networks and connect to selected one.
141 | 9)
142 | notify-send -t 1500 "Searcing for WiFi networks.."
143 | WIFICURRENT="$(nmcli dev wifi | sed -n 's/^* *\([^ ]*\).*/\1/p')"
144 | echo "Current network is $WIFICURRENT"
145 |
146 | WIFISELECT=$(nmcli dev wifi | bemenu -i --fn "$DMENU_FONT1" -l 20 -p 'Select WiFi network to connect')
147 | if [ -n "$WIFISELECT" ]; then
148 | WIFIBSSID=$(echo $WIFISELECT | sed -n 's/^.*\([A-Fa-f0-9:]\{17\}\).*/\1/p')
149 |
150 | echo "Connecting to $WIFIBSSID"
151 |
152 | if [ "$WIFICURRENT" != "$WIFIBSSID" ]; then
153 | nmcli d wifi connect $WIFIBSSID
154 | else
155 | echo "Already connected to this network."
156 | fi
157 | fi
158 | ;;
159 |
160 | # Turn off system.
161 | 10)
162 | OPTION=$(printf "Lock\nHibernate\nPower off\nRestart\nLogout\n" | bemenu -i --fn "$DMENU_FONT1" -p 'Select option')
163 | echo $OPTION
164 | if [ -n "$OPTION" ]; then
165 | case $OPTION in
166 | "Logout")
167 | notify-send "Logging out now.."
168 | sleep 2s
169 | # pkill -9 bar.sh
170 | # pkill -9 dwm
171 | # pkill -u $USER
172 | ;;
173 | "Power off")
174 | notify-send "Force shutting down now.."
175 | sleep 2s
176 | systemctl poweroff
177 | ;;
178 | "Restart")
179 | notify-send "Force restarting now.."
180 | sleep 2s
181 | systemctl reboot
182 | ;;
183 | "Hibernate")
184 | notify-send -t 1500 "Hibernating now.."
185 | sleep 2s
186 | systemctl hibernate
187 | ;;
188 | "Lock")
189 | notify-send -t 1500 "Locking now.."
190 | sleep 2s
191 | betterlockscreen -l dim -- --time-str="%H:%M"
192 | ;;
193 | esac
194 | fi
195 | ;;
196 |
197 | *)
198 | echo " 1: Do a dictionary search using bemenu."
199 | echo " 2: Search for a man page."
200 | echo " 3: Do a google search in firefox."
201 | echo " 4: Open a git repo stored in $HOME."
202 | echo " 5: Open a terminal is a directory. Similar to fuzzy finder through bemenu but for directory instead of files."
203 | echo " 6: Normal application launcher using bemenu. Runs basic bemenu-run command."
204 | echo " 7: Kill a process."
205 | echo " 8: Set a timer To turn off notifications (Focus mode)."
206 | echo " 9: Select WiFi network to connect."
207 | echo "10: Options to exit system. To use this option, run script as a sudo user."
208 | ;;
209 |
210 | esac
211 |
--------------------------------------------------------------------------------
/scripts/bemenu_rofi:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ## Files
4 | # CONFIG="$HOME/.config/hypr/wofi/config"
5 | # STYLE="$HOME/.config/hypr/wofi/style.css"
6 | # COLORS="$HOME/.config/hypr/wofi/colors"
7 |
8 | ## Wofi Command
9 | rofi_command="rofi -dmenu -format d -i \
10 | --width=350 --height=380 \
11 | --cache-file=/dev/null \
12 | --hide-scroll --no-actions"
13 |
14 | menu() {
15 | printf " 1. Dictionary\n"
16 | printf " 2. Search Man Pages\n"
17 | printf " 3. Google Search\n"
18 | printf " 4. Open Git Repository\n"
19 | printf " 5. Terminal\n"
20 | printf " 6. Run...\n"
21 | printf " 7. Kill Process\n"
22 | printf " 8. Focus Mode\n"
23 | printf " 9. Wifi Connect\n"
24 | printf "10. Exit System\n"
25 | }
26 |
27 | main() {
28 | choice=$(menu | ${rofi_command})
29 | bemenu_input $choice
30 | }
31 |
32 | main
33 |
--------------------------------------------------------------------------------
/scripts/blank.glsl:
--------------------------------------------------------------------------------
1 | // blank shader
2 |
3 | precision mediump float;
4 | varying vec2 v_texcoord;
5 | uniform sampler2D tex;
6 |
7 | void main() {
8 | vec4 pixColor = texture2D(tex, v_texcoord);
9 | gl_FragColor = pixColor;
10 | }
11 |
--------------------------------------------------------------------------------
/scripts/bluefilter.glsl:
--------------------------------------------------------------------------------
1 | // from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
2 |
3 | precision mediump float;
4 | varying vec2 v_texcoord;
5 | uniform sampler2D tex;
6 |
7 | const float temperature = 4000.0;
8 |
9 | // function from https://www.shadertoy.com/view/4sc3D7
10 | // valid from 1000 to 40000 K (and additionally 0 for pure full white)
11 | vec3 colorTemperatureToRGB(const in float temperature) {
12 | // values from:
13 | // http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
14 | mat3 m = (temperature <= 6500.0)
15 | ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
16 | vec3(0.0, 1669.5803561666639, 2575.2827530017594),
17 | vec3(1.0, 1.3302673723350029, 1.8993753891711275))
18 | : mat3(vec3(1745.0425298314172, 1216.6168361476490,
19 | -8257.7997278925690),
20 | vec3(-2666.3474220535695, -2173.1012343082230,
21 | 2575.2827530017594),
22 | vec3(0.55995389139931482, 0.70381203140554553,
23 | 1.8993753891711275));
24 | return mix(
25 | clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) +
26 | m[2]),
27 | vec3(0.0), vec3(1.0)),
28 | vec3(1.0), smoothstep(1000.0, 0.0, temperature));
29 | }
30 |
31 | void main() {
32 | vec4 pixColor = texture2D(tex, v_texcoord);
33 |
34 | // RGB
35 | vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
36 |
37 | color = color * colorTemperatureToRGB(temperature);
38 |
39 | vec4 outCol = vec4(color, pixColor[3]);
40 |
41 | gl_FragColor = outCol;
42 | }
43 |
--------------------------------------------------------------------------------
/scripts/brightness:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ## Script To Manage Brightness For Archcraft (in Wayland).
4 |
5 | iDIR="$HOME/.config/hypr/mako/icons"
6 |
7 | # Get brightness
8 | get_backlight() {
9 | LIGHT=$(printf "%.0f\n" $(light -G))
10 | echo "${LIGHT}%"
11 | }
12 |
13 | # Get icons
14 | get_icon() {
15 | backlight="$(get_backlight)"
16 | current="${backlight%%%}"
17 | if [[ ("$current" -ge "0") && ("$current" -le "20") ]]; then
18 | icon="$iDIR/brightness-20.png"
19 | elif [[ ("$current" -ge "20") && ("$current" -le "40") ]]; then
20 | icon="$iDIR/brightness-40.png"
21 | elif [[ ("$current" -ge "40") && ("$current" -le "60") ]]; then
22 | icon="$iDIR/brightness-60.png"
23 | elif [[ ("$current" -ge "60") && ("$current" -le "80") ]]; then
24 | icon="$iDIR/brightness-80.png"
25 | elif [[ ("$current" -ge "80") && ("$current" -le "100") ]]; then
26 | icon="$iDIR/brightness-100.png"
27 | fi
28 | }
29 |
30 | # Notify
31 | notify_user() {
32 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Brightness : $(get_backlight)"
33 | }
34 |
35 | # Increase brightness
36 | inc_backlight() {
37 | # light -A 5 && get_icon && notify_user
38 | light -A 5
39 | }
40 |
41 | # Decrease brightness
42 | dec_backlight() {
43 | # light -U 5 && get_icon && notify_user
44 | light -U 5
45 | }
46 |
47 | # Execute accordingly
48 | if [[ "$1" == "--get" ]]; then
49 | get_backlight
50 | elif [[ "$1" == "--inc" ]]; then
51 | inc_backlight
52 | elif [[ "$1" == "--dec" ]]; then
53 | dec_backlight
54 | else
55 | get_backlight
56 | fi
57 |
--------------------------------------------------------------------------------
/scripts/calvin:
--------------------------------------------------------------------------------
1 | ignore-empty-password
2 | disable-caps-lock-text
3 | image=$HOME/.config/hypr/bg/calvin2.jpeg
4 | font=Calvin and Hobbes
5 |
6 | text-ver-color=00000000
7 | text-wrong-color=00000000
8 | text-clear-color=00000000
9 | inside-color=00000000
10 | inside-ver-color=00000000
11 | inside-wrong-color=00000000
12 | inside-clear-color=00000000
13 | inside-caps-lock-color=00000000
14 | ring-color=00000000
15 | ring-ver-color=00000000
16 | ring-wrong-color=00000000
17 | ring-clear-color=00000000
18 | line-color=00000000
19 | line-clear-color=00000000
20 | line-ver-color=00000000
21 | key-hl-color=00000000
22 | bs-hl-color=00000000
23 | caps-lock-bs-hl-color=00000000
24 | caps-lock-key-hl-color=00000000
25 | separator-color=00000000
26 |
27 | scaling=fill
28 | indicator
29 | clock
30 | timestr=%I:%M %p
31 | datestr=%A, %d %B
32 | indicator-x-position=400
33 | indicator-y-position=875
34 | indicator-radius=450
35 | font-size=200
36 | text-color=080808
37 |
--------------------------------------------------------------------------------
/scripts/changeHyprpaper:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | SCRIPTSDIR=$HOME/.config/hypr/scripts
4 | DIR=$HOME/.config/hypr/bg
5 | PICS=($(ls ${DIR}))
6 |
7 | if [ $# -eq 1 ]; then
8 | RANDOMPICS=$1
9 | else
10 | RANDOMPICS=${PICS[$RANDOM % ${#PICS[@]}]}
11 | fi
12 |
13 | hyprctl hyprpaper preload "${DIR}/${RANDOMPICS}"
14 | hyprctl hyprpaper wallpaper ",${DIR}/${RANDOMPICS}"
15 | notify-send -i ${DIR}/${RANDOMPICS} "Wallpaper Changed" ${RANDOMPICS}
16 | hyprctl hyprpaper unload unused
17 |
18 | $SCRIPTSDIR/generateLockscreenWallpaper.sh "${DIR}/${RANDOMPICS}"
19 |
--------------------------------------------------------------------------------
/scripts/changeLayout:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | LAYOUT=$(hyprctl -j getoption general:layout | jq '.str' | sed 's/"//g')
4 |
5 | case $LAYOUT in
6 | "master")
7 | hyprctl keyword general:layout dwindle
8 | # hyprctl keyword unbind SUPER,I
9 | # hyprctl keyword unbind SUPER,D
10 | hyprctl keyword unbind SUPERSHIFT,Return
11 | hyprctl keyword unbind SUPERSHIFT,period
12 | hyprctl keyword unbind SUPERSHIFT,comma
13 | hyprctl keyword unbind SUPERCTRL,Return
14 | hyprctl keyword bind SUPER,O,togglesplit
15 | # hyprctl keyword bind SUPER,P,pseudo
16 | # hyprctl keyword bind SUPERSHIFT,P,exec,hyprctl dispatch workspaceopt allpseudo
17 | notify-send -i "$HOME/.config/hypr/mako/icons/hyprland.png" "Layout" "Dwindle"
18 | ;;
19 | "dwindle")
20 | hyprctl keyword general:layout master
21 | hyprctl keyword unbind SUPERSHIFT,J
22 | hyprctl keyword unbind SUPERSHIFT,K
23 | hyprctl keyword bind SUPERSHIFT,J,layoutmsg,rollnext
24 | hyprctl keyword bind SUPERSHIFT,K,layoutmsg,rollprev
25 | # hyprctl keyword bind SUPER,I,layoutmsg,addmaster
26 | # hyprctl keyword bind SUPER,D,layoutmsg,removemaster
27 | hyprctl keyword bind SUPERSHIFT,Return,layoutmsg,swapwithmaster
28 | hyprctl keyword bind SUPERSHIFT,period,layoutmsg,orientationnext
29 | hyprctl keyword bind SUPERSHIFT,comma,layoutmsg,orientationprev
30 | hyprctl keyword bind SUPERCTRL,Return,layoutmsg,focusmaster
31 | notify-send -i "$HOME/.config/hypr/mako/icons/hyprland.png" "Layout" "Master"
32 | ;;
33 | *) ;;
34 |
35 | esac
36 |
--------------------------------------------------------------------------------
/scripts/changeWallpaper:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | DIR=$HOME/.config/hypr/bg
4 | PICS=($(ls ${DIR}))
5 |
6 | RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]}
7 |
8 | if [[ $(pidof swaybg) ]]; then
9 | pkill swaybg
10 | fi
11 |
12 | notify-send -i ${DIR}/${RANDOMPICS} "Wallpaper Changed" ${RANDOMPICS}
13 | swaybg -m fill -i ${DIR}/${RANDOMPICS}
14 |
--------------------------------------------------------------------------------
/scripts/checkUpdate:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | UPDATE=$(checkupdates | wc -l)
4 |
5 | if [ ${UPDATE} -lt 1 ]; then
6 | echo ""
7 | else
8 | echo " ${UPDATE}"
9 | fi
10 |
--------------------------------------------------------------------------------
/scripts/colorpicker:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | COLOR=$(hyprpicker)
4 |
5 | echo ${COLOR} | wl-copy -n
6 | notify-send "Color Picker" ${COLOR}
7 |
--------------------------------------------------------------------------------
/scripts/cputemp:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | sensors | awk '/Package/ {sub(/^\+/, "", $4); sub(/\.0/, "", $4);print $4}'
3 |
--------------------------------------------------------------------------------
/scripts/cursorZoom.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ $(hyprctl -j getoption misc:cursor_zoom_factor | jq '.float' | sed 's/\..*$//') == 1 ]; then
4 | $(hyprctl keyword misc:cursor_zoom_factor 2) &> /dev/null
5 | else
6 | $(hyprctl keyword misc:cursor_zoom_factor 1) &> /dev/null
7 | fi
8 |
--------------------------------------------------------------------------------
/scripts/cycle.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | mapfile -t ARR < <(
4 | hyprctl clients -j |
5 | jq -r '
6 | sort_by(.monitor,.workspace.id) |
7 | .[] |
8 | select(.workspace.name | startswith("special") | not) |
9 | select(.hidden==false) |
10 | [.address,"\(.class) \(.title)"] |
11 | @tsv'
12 | )
13 |
14 | size="${#ARR[@]}"
15 | if [ "$size" -le 1 ]; then
16 | exit 1 # skip everything if we have 0 or 1 windows
17 | fi
18 |
19 | case "$1" in
20 | menu)
21 | index=$(printf "%s\n" "${ARR[@]}" | cut -f2 | rofi -dmenu -format i)
22 | if [ -z "$index" ]; then
23 | exit 1
24 | fi
25 | ;;
26 | next)
27 | activeAddr=$(hyprctl activewindow -j | jq -r .address)
28 | # grep line number is 1 and not zero based, so we don't need to ++ for the next window index
29 | index=$(printf "%s\n" "${ARR[@]}" | cut -f1 | grep -n "$activeAddr" | cut -d: -f1)
30 | if [ "$index" -ge "$size" ]; then
31 | index=0
32 | fi
33 | ;;
34 | *)
35 | exit 1
36 | ;;
37 | esac
38 |
39 | addr=$(printf "%s" "${ARR[index]}" | cut -f1)
40 | hyprctl dispatch focuswindow address:"$addr"
41 |
--------------------------------------------------------------------------------
/scripts/cycleSpecial.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | mapfile -t ARR < <(
4 | hyprctl clients -j |
5 | jq -r '
6 | sort_by(.monitor,.workspace.id) |
7 | .[] |
8 | select(.workspace.name | startswith("special") ) |
9 | select(.hidden==false) |
10 | [.address,"\(.class) \(.title)"] |
11 | @tsv'
12 | )
13 |
14 | size="${#ARR[@]}"
15 | if [ "$size" -le 1 ]; then
16 | exit 1 # skip everything if we have 0 or 1 windows
17 | fi
18 |
19 | case "$1" in
20 | menu)
21 | index=$(printf "%s\n" "${ARR[@]}" | cut -f2 | rofi -dmenu -format i)
22 | if [ -z "$index" ]; then
23 | exit 1
24 | fi
25 | ;;
26 | next)
27 | activeAddr=$(hyprctl activewindow -j | jq -r .address)
28 | # grep line number is 1 and not zero based, so we don't need to ++ for the next window index
29 | index=$(printf "%s\n" "${ARR[@]}" | cut -f1 | grep -n "$activeAddr" | cut -d: -f1)
30 | if [ "$index" -ge "$size" ]; then
31 | index=0
32 | fi
33 | ;;
34 | *)
35 | exit 1
36 | ;;
37 | esac
38 |
39 | addr=$(printf "%s" "${ARR[index]}" | cut -f1)
40 | hyprctl dispatch focuswindow address:"$addr"
41 |
--------------------------------------------------------------------------------
/scripts/flux.glsl:
--------------------------------------------------------------------------------
1 | // vim: set ft=glsl:
2 | // blue light filter shader
3 | // values from https://reshade.me/forum/shader-discussion/3673-blue-light-filter-similar-to-f-lux
4 |
5 | precision mediump float;
6 | varying vec2 v_texcoord;
7 | uniform sampler2D tex;
8 |
9 | void main() {
10 |
11 | vec4 pixColor = texture2D(tex, v_texcoord);
12 |
13 | // green
14 | pixColor[1] *= 0.855;
15 |
16 | // blue
17 | pixColor[2] *= 0.725;
18 |
19 | gl_FragColor = pixColor;
20 | }
21 |
--------------------------------------------------------------------------------
/scripts/gamemode.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
3 | if [ "$HYPRGAMEMODE" = 1 ]; then
4 | hyprctl --batch "\
5 | keyword animations:enabled 0;\
6 | keyword decoration:drop_shadow 0;\
7 | keyword decoration:blur:enabled 0;\
8 | keyword general:gaps_in 0;\
9 | keyword general:gaps_out 0;\
10 | keyword general:border_size 0;\
11 | keyword decoration:rounding 0"
12 | notify-send -u low "Hyprland" "Game Mode ENABLED"
13 | else
14 | hyprctl reload
15 | notify-send -u low "Hyprland" "Game Mode DISABLED"
16 | fi
17 |
--------------------------------------------------------------------------------
/scripts/gd.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ~/.config/hypr/scripts/gamemode.sh
4 | steam steam://rungameid/219990
5 |
--------------------------------------------------------------------------------
/scripts/generateLockscreenWallpaper.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | CACHE=cache.png
4 | # BLURRED=blurred.png
5 | SQUARE=square.png
6 | PROFILE=profile.png
7 | DIR=$HOME/.config/hypr/bg
8 |
9 | #convert to PNG
10 | magick $1 $DIR/$CACHE
11 |
12 | # blur wallpaper
13 | # magick $DIR/$CACHE -blur "50x30" $DIR/$BLURRED
14 |
15 | # square wallpaper
16 | magick $DIR/$PROFILE -gravity center -extent 1:1 $DIR/$SQUARE
17 |
18 | # magick $DIR/$PROFILE \
19 | # \( -clone 0 -alpha extract -threshold 0 \) \
20 | # \( -clone 1 -blur 10x65000 -threshold 0 \) \
21 | # \( -clone 2 -fill grey -opaque grey \) \
22 | # \( -clone 3 -clone 0 -clone 1 -alpha off -compose over -composite \) \
23 | # -delete 0,1,3 +swap -alpha off -compose copy_opacity -composite \
24 | # $DIR/$SQUARE
25 |
--------------------------------------------------------------------------------
/scripts/glassmorphismToggle:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ENABLED=$(hyprctl -j getoption decoration:blur:enabled | jq ".int")
4 |
5 | if [ "${ENABLED}" == "1" ]; then
6 | hyprctl keyword decoration:blur:enabled false
7 | notify-send -i "$HOME/.config/hypr/mako/icons/hyprland.png" "Blur" "Normal"
8 | else
9 | hyprctl keyword decoration:blur:enabled true
10 | notify-send -i "$HOME/.config/hypr/mako/icons/hyprland.png" "Blur" "Glassy"
11 | fi
12 |
--------------------------------------------------------------------------------
/scripts/graceKills.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # Author: Suchith Sridhar
3 | # Website: https://suchicodes.com/
4 | #
5 | # This script is used to manage power based controls on Hyprland
6 | # These are operations like shutdown, lock, and logout.
7 | #
8 | # Before performing some of these operations we handle the closing of apps.
9 | # If there are apps that can't be closed without losing data, then the power operation
10 | # is cancelled and a notification about the cause of the cancellation is sent.
11 |
12 | function close_applications() {
13 | ZEN=$(hyprctl clients | grep "class: zen-alpha" | wc -l)
14 |
15 | if [ "$ZEN" -gt "1" ]; then
16 | notify-send "Grace Killing Processes" "Zen multiple windows open"
17 | exit 1
18 | fi
19 |
20 | sleep 2
21 |
22 | TMUX=$(tmux list-sessions 2>/dev/null | wc -l)
23 | if [ "$TMUX" -ne "0" ]; then
24 | notify-send "Grace Killing Processes" "Closing tmux sessions..."
25 | pkill -9 tmux
26 | fi
27 |
28 | ZELLIJ=$(zellij list-sessions 2>/dev/null | wc -l)
29 | if [ "$ZELLIJ" -ne "0" ]; then
30 | notify-send "Grace Killing Processes" "Closing zellij sessions..."
31 | pkill -9 zellij
32 | fi
33 |
34 | # close all client windows
35 | # required for graceful exit since many apps aren't good SIGNAL citizens
36 | HYPRCMDS=$(hyprctl -j clients | jq -j '.[] | "dispatch closewindow address:\(.address); "')
37 | hyprctl --batch "$HYPRCMDS" >>/tmp/hyprexitwithgrace.log 2>&1
38 |
39 | # notify-send "Grace Killing Processes" "Closing Applications..."
40 |
41 | sleep 2
42 |
43 | COUNT=$(hyprctl clients | grep "class:" | wc -l)
44 | if [ "$COUNT" -eq "0" ]; then
45 | # notify-send "Grace Killing Processes" "Closed Applications."
46 | return
47 | else
48 | notify-send "Grace Killing Processes" "Some apps didn't close. Not shutting down."
49 | exit 1
50 | fi
51 | }
52 |
53 | close_applications
54 |
55 | case $1 in
56 | logout)
57 | hyprctl dispatch exit
58 | ;;
59 | reboot)
60 | systemctl reboot
61 | ;;
62 | shutdown)
63 | systemctl poweroff
64 | ;;
65 | *) ;;
66 | esac
67 |
--------------------------------------------------------------------------------
/scripts/grimblast:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | ## Grimblast: a helper for screenshots within hyprland
3 | ## Requirements:
4 | ## - `grim`: screenshot utility for wayland
5 | ## - `slurp`: to select an area
6 | ## - `hyprctl`: to read properties of current window
7 | ## - `wl-copy`: clipboard utility
8 | ## - `jq`: json utility to parse hyprctl output
9 | ## - `notify-send`: to show notifications
10 | ## Those are needed to be installed, if unsure, run `grimblast check`
11 | ##
12 | ## See `man 1 grimblast` or `grimblast usage` for further details.
13 |
14 | ## Author: Misterio (https://github.com/misterio77)
15 |
16 | ## This tool is based on grimshot, with swaymsg commands replaced by their
17 | ## hyprctl equivalents.
18 | ## https://github.com/swaywm/sway/blob/master/contrib/grimshot
19 |
20 | getTargetDirectory() {
21 | # test -f "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs" && \
22 | # . "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs"
23 |
24 | # echo "${XDG_SCREENSHOTS_DIR:-${XDG_PICTURES_DIR:-$HOME}}"
25 | echo "$HOME/Pictures/Screenshots"
26 | }
27 |
28 | NOTIFY=no
29 | CURSOR=
30 |
31 | while [ $# -gt 0 ]; do
32 | key="$1"
33 |
34 | case $key in
35 | -n | --notify)
36 | NOTIFY=yes
37 | shift # past argument
38 | ;;
39 | -c | --cursor)
40 | CURSOR=yes
41 | shift # past argument
42 | ;;
43 | *) # unknown option
44 | break # done with parsing --flags
45 | ;;
46 | esac
47 | done
48 |
49 | ACTION=${1:-usage}
50 | SUBJECT=${2:-screen}
51 | FILE=${3:-$(getTargetDirectory)/$(date +%Y-%m-%d-%H-%M-%S).png}
52 |
53 | if [ "$ACTION" != "save" ] && [ "$ACTION" != "copy" ] && [ "$ACTION" != "copysave" ] && [ "$ACTION" != "check" ]; then
54 | echo "Usage:"
55 | echo " grimblast [--notify] [--cursor] (copy|save|copysave) [active|screen|output|area] [FILE|-]"
56 | echo " grimblast check"
57 | echo " grimblast usage"
58 | echo ""
59 | echo "Commands:"
60 | echo " copy: Copy the screenshot data into the clipboard."
61 | echo " save: Save the screenshot to a regular file or '-' to pipe to STDOUT."
62 | echo " copysave: Combine the previous 2 options."
63 | echo " check: Verify if required tools are installed and exit."
64 | echo " usage: Show this message and exit."
65 | echo ""
66 | echo "Targets:"
67 | echo " active: Currently active window."
68 | echo " screen: All visible outputs."
69 | echo " output: Currently active output."
70 | echo " area: Manually select a region or window."
71 | exit
72 | fi
73 |
74 | notify() {
75 | if [ "$FILE" = "" ]; then
76 | notify-send -t 3000 -a grimblast "$@"
77 | else
78 | notify-send -t 3000 -i "$FILE" -a grimblast "$@"
79 | fi
80 | }
81 | notifyOk() {
82 | [ "$NOTIFY" = "no" ] && return
83 |
84 | TITLE=${2:-"Screenshot"}
85 | MESSAGE=${1:-"OK"}
86 | REST=${@:3}
87 | notify "$TITLE" "$MESSAGE" "$REST"
88 | }
89 | notifyError() {
90 | if [ $NOTIFY = "yes" ]; then
91 | TITLE=${2:-"Screenshot"}
92 | MESSAGE=${1:-"Error taking screenshot with grim"}
93 | notify -u critical "$TITLE" "$MESSAGE"
94 | else
95 | echo "$1"
96 | fi
97 | }
98 |
99 | die() {
100 | MSG=${1:-Bye}
101 | notifyError "Error: $MSG"
102 | exit 2
103 | }
104 |
105 | check() {
106 | COMMAND=$1
107 | if command -v "$COMMAND" >/dev/null 2>&1; then
108 | RESULT="OK"
109 | else
110 | RESULT="NOT FOUND"
111 | fi
112 | echo " $COMMAND: $RESULT"
113 | }
114 |
115 | takeScreenshot() {
116 | FILE=$1
117 | GEOM=$2
118 | OUTPUT=$3
119 | if [ -n "$OUTPUT" ]; then
120 | grim ${CURSOR:+-c} -o "$OUTPUT" "$FILE" || die "Unable to invoke grim"
121 | elif [ -z "$GEOM" ]; then
122 | grim ${CURSOR:+-c} "$FILE" || die "Unable to invoke grim"
123 | else
124 | grim ${CURSOR:+-c} -g "$GEOM" "$FILE" || die "Unable to invoke grim"
125 | fi
126 | }
127 |
128 | if [ "$ACTION" = "check" ]; then
129 | echo "Checking if required tools are installed. If something is missing, install it to your system and make it available in PATH..."
130 | check grim
131 | check slurp
132 | check hyprctl
133 | check wl-copy
134 | check jq
135 | check notify-send
136 | exit
137 | elif [ "$SUBJECT" = "active" ]; then
138 | FOCUSED=$(hyprctl activewindow -j)
139 | GEOM=$(echo "$FOCUSED" | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')
140 | APP_ID=$(echo "$FOCUSED" | jq -r '.class')
141 | WHAT="$APP_ID window"
142 | elif [ "$SUBJECT" = "screen" ]; then
143 | GEOM=""
144 | WHAT="Screen"
145 | elif [ "$SUBJECT" = "output" ]; then
146 | GEOM=""
147 | OUTPUT=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)' | jq -r '.name')
148 | WHAT="$OUTPUT"
149 | elif [ "$SUBJECT" = "area" ]; then
150 | WORKSPACES="$(hyprctl monitors -j | jq -r 'map(.activeWorkspace.id)')"
151 | WINDOWS="$(hyprctl clients -j | jq -r --argjson workspaces "$WORKSPACES" 'map(select([.workspace.id] | inside($workspaces)))')"
152 | GEOM=$(echo "$WINDOWS" | jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | slurp)
153 | # Check if user exited slurp without selecting the area
154 | if [ -z "$GEOM" ]; then
155 | exit 1
156 | fi
157 | WHAT="Area"
158 | elif [ "$SUBJECT" = "window" ]; then
159 | die "Subject 'window' is now included in 'area'"
160 | else
161 | die "Unknown subject to take a screen shot from" "$SUBJECT"
162 | fi
163 |
164 | if [ "$ACTION" = "copy" ]; then
165 | takeScreenshot - "$GEOM" "$OUTPUT" | wl-copy --type image/png || die "Clipboard error"
166 | notifyOk "$WHAT copied to buffer"
167 | elif [ "$ACTION" = "save" ]; then
168 | if takeScreenshot "$FILE" "$GEOM" "$OUTPUT"; then
169 | TITLE="Screenshot of $SUBJECT"
170 | MESSAGE=$(basename "$FILE")
171 | notifyOk "$MESSAGE" "$TITLE" -i "$FILE"
172 | echo "$FILE"
173 | else
174 | notifyError "Error taking screenshot with grim"
175 | fi
176 | else
177 | if [ "$ACTION" = "copysave" ]; then
178 | takeScreenshot - "$GEOM" "$OUTPUT" | tee "$FILE" | wl-copy --type image/png || die "Clipboard error"
179 | satty -f "$FILE"
180 | notifyOk "$WHAT copied to buffer and saved to $FILE"
181 | echo "$FILE"
182 | else
183 | notifyError "Error taking screenshot with grim"
184 | fi
185 | fi
186 |
--------------------------------------------------------------------------------
/scripts/gtkthemes:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ## Set GTK Themes, Icons, Cursor and Fonts
4 |
5 | THEME='Catppuccin-Mocha-Standard-Mauve-Dark'
6 | # ICONS='Qualia-purple-dark'
7 | # FONT='Fira Sans Condensed 13'
8 | CURSOR='Catppuccin-Mauve-Cursors'
9 |
10 | SCHEMA='gsettings set org.gnome.desktop.interface'
11 |
12 | apply_themes() {
13 | ${SCHEMA} gtk-theme "$THEME"
14 | # ${SCHEMA} icon-theme "$ICONS"
15 | ${SCHEMA} cursor-theme "$CURSOR"
16 | # ${SCHEMA} font-name "$FONT"
17 | }
18 |
19 | apply_themes
20 |
--------------------------------------------------------------------------------
/scripts/handleMonitorConnect.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | function handle {
4 | if [[ ${1:0:12} == "monitoradded" ]]; then
5 | hyprctl dispatch moveworkspacetomonitor "1 1"
6 | hyprctl dispatch moveworkspacetomonitor "2 1"
7 | hyprctl dispatch moveworkspacetomonitor "3 1"
8 | hyprctl dispatch moveworkspacetomonitor "4 1"
9 | hyprctl dispatch moveworkspacetomonitor "5 1"
10 | fi
11 | }
12 |
13 | socat - UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | while read line; do handle $line; done
14 |
--------------------------------------------------------------------------------
/scripts/import-gsettings:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # usage: import-gsettings
4 | config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
5 | if [ ! -f "$config" ]; then exit 1; fi
6 |
7 | gnome_schema="org.gnome.desktop.interface"
8 | gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')"
9 | icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
10 | cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
11 | font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
12 | gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
13 | gsettings set "$gnome_schema" icon-theme "$icon_theme"
14 | gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
15 | gsettings set "$gnome_schema" font-name "$font_name"
16 | gsettings set "$gnome_schema" color-scheme "prefer-dark"
17 |
--------------------------------------------------------------------------------
/scripts/notifications:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | CONFIG="$HOME/.config/hypr/mako/config"
4 |
5 | if [[ ! $(pidof mako) ]]; then
6 | mako --config ${CONFIG}
7 | fi
8 |
--------------------------------------------------------------------------------
/scripts/portal:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sleep 2
4 | systemctl --user stop xdg-desktop-portal-gtk
5 | systemctl --user stop xdg-desktop-portal-hyprland
6 | systemctl --user stop xdg-desktop-portal
7 | systemctl --user start xdg-desktop-portal-gtk
8 | systemctl --user start xdg-desktop-portal-hyprland
9 | sleep 2
10 | systemctl --user start xdg-desktop-portal
11 |
--------------------------------------------------------------------------------
/scripts/powermenu:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ## Files
4 | CONFIG="$HOME/.config/hypr/wofi/config"
5 | STYLE="$HOME/.config/hypr/wofi/style.css"
6 | COLORS="$HOME/.config/hypr/wofi/colors"
7 |
8 | ## Wofi Command
9 | wofi_command="wofi --show dmenu \
10 | --conf ${CONFIG} --style ${STYLE} --color ${COLORS} \
11 | --width=300 --height=260 \
12 | --cache-file=/dev/null \
13 | --hide-scroll --no-actions \
14 | --define=matching=fuzzy"
15 |
16 | uptime=$(uptime -p | sed -e 's/up //g')
17 |
18 | ## Entries
19 | shutdown=" Shutdown"
20 | reboot=" Restart"
21 | lock=" Lock"
22 | suspend=" Sleep"
23 | logout=" Logout"
24 |
25 | # Ask for confirmation
26 | cdialog() {
27 | yad --title='Confirm?' --borders=15 --center --fixed --undecorated --button=Yes:0 --button=No:1 --text="Are you sure?" --text-align=center
28 | }
29 |
30 | # Variable passed to rofi
31 | open_menu() {
32 | options="$lock\n$suspend\n$logout\n$reboot\n$shutdown"
33 |
34 | chosen="$(echo -e "$options" | $wofi_command --prompt "UP - $uptime")"
35 | case $chosen in
36 | $shutdown)
37 | cdialog
38 | if [[ "$?" == 0 ]]; then
39 | systemctl poweroff
40 | else
41 | exit
42 | fi
43 | ;;
44 | $reboot)
45 | cdialog
46 | if [[ "$?" == 0 ]]; then
47 | systemctl reboot
48 | else
49 | exit
50 | fi
51 | ;;
52 | $lock)
53 | ~/.config/hypr/scripts/lockscreen
54 | ;;
55 | $suspend)
56 | cdialog
57 | if [[ "$?" == 0 ]]; then
58 | # mpc -q pause
59 | pamixer -m
60 | ~/.config/hypr/scripts/lockscreen
61 | systemctl suspend
62 | else
63 | exit
64 | fi
65 | ;;
66 | $logout)
67 | cdialog
68 | if [[ "$?" == 0 ]]; then
69 | kill -9 -1
70 | else
71 | exit
72 | fi
73 | ;;
74 | esac
75 | }
76 |
77 | if [[ ! $(pidof wofi) ]]; then
78 | open_menu
79 | else
80 | pkill wofi
81 | fi
82 |
--------------------------------------------------------------------------------
/scripts/rofi-beats:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | rofi_command="rofi -c ~/.config/hypr/rofi/config.rasi -dmenu \
4 | --width=350 --height=380 \
5 | --cache-file=/dev/null \
6 | --hide-scroll --no-actions \
7 | --define=matching=fuzzy"
8 |
9 | notification() {
10 | notify-send "Lofi Stream" "Now Playing: Lofi Radio"
11 | }
12 |
13 | menu() {
14 | printf "1. Lofi Girl\n"
15 | printf "2. Chillhop\n"
16 | printf "3. Box Lofi\n"
17 | printf "4. The Bootleg Boy\n"
18 | printf "5. Radio Spinner\n"
19 | printf "6. SmoothChill\n"
20 | printf "7. Little Soul\n"
21 | printf "8. Fasetya\n"
22 | printf "9. Lofi Zone"
23 | }
24 |
25 | main() {
26 | choice=$(menu | ${rofi_command} | cut -d. -f1)
27 |
28 | case $choice in
29 | 1)
30 | notification
31 | uwsm app -- mpv "https://play.streamafrica.net/lofiradio"
32 | return
33 | ;;
34 | 2)
35 | notification
36 | uwsm app -- mpv "http://stream.zeno.fm/fyn8eh3h5f8uv"
37 | return
38 | ;;
39 | 3)
40 | notification
41 | uwsm app -- mpv "http://stream.zeno.fm/f3wvbbqmdg8uv"
42 | return
43 | ;;
44 | 4)
45 | notification
46 | uwsm app -- mpv "http://stream.zeno.fm/0r0xa792kwzuv"
47 | return
48 | ;;
49 | 5)
50 | notification
51 | uwsm app -- mpv "https://live.radiospinner.com/lofi-hip-hop-64"
52 | return
53 | ;;
54 | 6)
55 | notification
56 | uwsm app -- mpv "https://media-ssl.musicradio.com/SmoothChill"
57 | return
58 | ;;
59 | 7)
60 | notification
61 | uwsm app -- mpv --vid=no "https://www.youtube.com/watch?v=NiOxSuEJaTI"
62 | return
63 | ;;
64 | 8)
65 | notification
66 | uwsm app -- mpv --shuffle --ytdl-raw-options="cookies=/tmp/cookies.txt" --vid=no https://www.youtube.com/playlist\?list\=PLusoefCj_Mkn6dRQMc3MxUGFHLeYT4y49
67 | return
68 | ;;
69 | 9)
70 | notification
71 | uwsm app -- mpv --shuffle --ytdl-raw-options="cookies=/tmp/cookies.txt" --vid=no https://www.youtube.com/watch?v=GaW13eDQO6s
72 | return
73 | ;;
74 | esac
75 | }
76 |
77 | pkill -f http && notify-send "Lofi Stream" "Lofi Radio stopped" || main
78 |
--------------------------------------------------------------------------------
/scripts/screenshare.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | monitors=$(wlr-randr --json | jq '.[] | .name')
4 | windows="${XDPH_WINDOW_SHARING_LIST}"
5 |
6 | result=""
7 |
8 | # Add monitors to result
9 | while IFS= read -r monitor; do
10 | monitor=$(echo "$monitor" | tr -d '"') # Remove quotes from monitor name
11 | if [ -n "$result" ]; then
12 | result="${result}\n"
13 | fi
14 | result="${result}${monitor}\tscreen: ${monitor}"
15 | done <<<"$monitors"
16 |
17 | # Add region entry
18 | if [ -n "$result" ]; then
19 | result="${result}\n"
20 | fi
21 | result="${result}region\tSelection Region"
22 |
23 | # Add windows to result
24 | while IFS= read -r line; do
25 | if [ -n "$result" ]; then
26 | result="${result}\n"
27 | fi
28 | result="${result}${line}"
29 | done < <(echo "$windows" | awk -F'\\[HE>\\]' '{
30 | for(i=1; i<=NF; i++) {
31 | if ($i == "") continue;
32 |
33 | split($i, window, "\\[HC>\\]");
34 | id = window[1];
35 |
36 | split(window[2], parts, "\\[HT>\\]");
37 | class = parts[1];
38 | title = parts[2];
39 |
40 | if (id != "")
41 | print id "\t" "window: " title;
42 | }
43 | }')
44 |
45 | selection=$(echo -e "$result" | fuzzel -d --config ~/.config/hypr/fuzzel/fuzzel.ini)
46 |
47 | if [[ $selection == *"screen"* ]]; then
48 | monitor=$(echo "$selection" | cut -f1)
49 | echo "[SELECTION]/screen:${monitor}"
50 | elif [[ $selection == *"window"* ]]; then
51 | window_id=$(echo "$selection" | cut -f1)
52 | echo "[SELECTION]/window:${window_id}"
53 | elif [[ $selection == *"region"* ]]; then
54 | region=$(slurp -f "%o@%x,%y,%w,%h")
55 | echo "[SELECTION]/region:${region}"
56 | fi
57 |
--------------------------------------------------------------------------------
/scripts/screenshot:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | iDIR="$HOME/.config/hypr/mako/icons"
4 |
5 | time=$(date +%Y-%m-%d-%H-%M-%S)
6 | dir="$(xdg-user-dir PICTURES)/Screenshots"
7 | file="Screenshot_${time}_${RANDOM}.png"
8 |
9 | # notify and view screenshot
10 | # notify_cmd_shot="notify-send -h string:x-canonical-private-synchronous:shot-notify -u low -i ${iDIR}/picture.png"
11 | notify_cmd_shot="notify-send -h string:x-canonical-private-synchronous:shot-notify -u low -i ${dir}/${file}"
12 | notify_view() {
13 | ${notify_cmd_shot} "Copied to clipboard."
14 | viewnior ${dir}/"$file"
15 | if [[ -e "$dir/$file" ]]; then
16 | ${notify_cmd_shot} "Screenshot Saved."
17 | else
18 | ${notify_cmd_shot} "Screenshot Deleted."
19 | fi
20 | }
21 |
22 | # countdown
23 | countdown() {
24 | for sec in $(seq $1 -1 1); do
25 | notify-send -h string:x-canonical-private-synchronous:shot-notify -t 1000 -i "$iDIR"/timer.png "Taking shot in : $sec"
26 | sleep 1
27 | done
28 | }
29 |
30 | # take shots
31 | shotnow() {
32 | cd ${dir} && grim - | tee "$file" | wl-copy
33 | notify_view
34 | }
35 |
36 | shot5() {
37 | countdown '5'
38 | sleep 1 && cd ${dir} && grim - | tee "$file" | wl-copy
39 | notify_view
40 | }
41 |
42 | shot10() {
43 | countdown '10'
44 | sleep 1 && cd ${dir} && grim - | tee "$file" | wl-copy
45 | notify_view
46 | }
47 |
48 | shotwin() {
49 | w_pos=$(hyprctl activewindow | grep 'at:' | cut -d':' -f2 | tr -d ' ' | tail -n1)
50 | w_size=$(hyprctl activewindow | grep 'size:' | cut -d':' -f2 | tr -d ' ' | tail -n1 | sed s/,/x/g)
51 | cd ${dir} && grim -g "$w_pos $w_size" - | tee "$file" | wl-copy
52 | notify_view
53 | }
54 |
55 | shotarea() {
56 | cd ${dir} && grim -g "$(slurp -b 1B1F28CC -c E06B74ff -s C778DD0D -w 2)" - | tee "$file" | wl-copy
57 | notify_view
58 | }
59 |
60 | if [[ ! -d "$dir" ]]; then
61 | mkdir -p "$dir"
62 | fi
63 |
64 | if [[ "$1" == "--now" ]]; then
65 | shotnow
66 | elif [[ "$1" == "--in5" ]]; then
67 | shot5
68 | elif [[ "$1" == "--in10" ]]; then
69 | shot10
70 | elif [[ "$1" == "--win" ]]; then
71 | shotwin
72 | elif [[ "$1" == "--area" ]]; then
73 | shotarea
74 | else
75 | echo -e "Available Options : --now --in5 --in10 --win --area"
76 | fi
77 |
78 | exit 0
79 |
--------------------------------------------------------------------------------
/scripts/shellevents:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | ## shellevents - run shell functions in response to Hyprland event
4 | #
5 | # shellevents reads Hyprland events from stdin as documented at: http://wiki.hyprland.org/IPC/#tmphyprhissocket2sock
6 | #
7 | # the event string is parsed, splitting the data into indivual arguments
8 | # for each event recevied, a function with the name event_ is invoked
9 | # when invoked, the data is passed as named arguments
10 | #
11 | # a seperate program is required to connect to Hyprland socket2 and pass the
12 | # event strings to shellevents stdin. see usage below for an example using socat.
13 | #
14 | # Usage:
15 | #
16 | # cp /path/to/shellevents_default.sh custom_event_file.sh
17 | #
18 | # In custom_event_file.sh, add implementations for the events you want to handle.
19 | #
20 | # socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock \
21 | # EXEC:"/path/to/shellevents /path/to/custom_event_file.sh",nofork
22 | #
23 | # Reload custom_event_file.sh:
24 | # killall shellevents -USR1
25 | #
26 | # Verbose
27 | # pass '-v' as first argument to shellevents to print all events to stderr
28 |
29 | # load the default (empty) event implementations
30 | # shellcheck disable=SC1091
31 | . "$(dirname "$(readlink -mn "$0")")"/shellevents_default.sh
32 |
33 | PFS=$IFS
34 |
35 | load_events() {
36 | IFS=$PFS
37 | for f in $event_files; do
38 | # shellcheck disable=SC1090
39 | if . "$f"; then
40 | printf >&2 'loaded event file: %s\n' "$f"
41 | else
42 | printf >&2 'failed sourcing event file: %s\n' "$f"
43 | exit 2
44 | fi
45 | done
46 | }
47 |
48 | verbose=
49 | case "$1" in
50 | -v) verbose=1 && shift ;;
51 | esac
52 |
53 | event_files="$*"
54 | load_events
55 |
56 | trap 'load_events; continue' USR1
57 |
58 | while true; do
59 | if read -r event_data; then
60 | event="${event_data%%>>*}"
61 | edata="${event_data#"$event">>}"
62 |
63 | IFS=','
64 | # shellcheck disable=SC2086 # splitting is intended
65 | set -- $edata
66 | IFS=$PFS
67 |
68 | if [ -n "$verbose" ]; then
69 | printf >&2 '[%s] 1:%s 2:%s 3:%s 4:%s\n' "$event" "$1" "$2" "$3" "$4"
70 | fi
71 |
72 | case "$event" in
73 | "workspace") WORKSPACENAME="$1" event_workspace ;;
74 | "focusedmon") MONNAME="$1" WORKSPACENAME="$2" event_focusedmon ;;
75 | "activewindow") WINDOWCLASS="$1" WINDOWTITLE="$2" event_activewindow ;;
76 | "fullscreen") ENTER="$1" event_fullscreen ;;
77 | "monitorremoved") MONITORNAME="$1" event_monitorremoved ;;
78 | "monitoradded") MONITORNAME="$1" event_monitoradded ;;
79 | "createworkspace") WORKSPACENAME="$1" event_createworkspace ;;
80 | "destroyworkspace") WORKSPACENAME="$1" event_destroyworkspace ;;
81 | "moveworkspace") WORKSPACENAME="$1" MONNAME="$2" event_moveworkspace ;;
82 | "activelayout") KEYBOARDNAME="$1" LAYOUTNAME="$2" event_activelayout ;;
83 | "openwindow") WINDOWADDRESS="$1" WORKSPACENAME="$2" WINDOWCLASS="$3" WINDOWTITLE="$4" event_openwindow ;;
84 | "closewindow") WINDOWADDRESS="$1" event_closewindow ;;
85 | "movewindow") WINDOWADDRESS="$1" WORKSPACENAME="$2" event_movewindow ;;
86 | "openlayer") NAMESPACE="$1" event_openlayer ;;
87 | "closelayer") NAMESPACE="$1" event_closelayer ;;
88 | "submap") SUBMAPNAME="$1" event_submap ;;
89 | *) printf >&2 'Unknown event: %s\n' "$event" ;;
90 | esac
91 | fi
92 | done
93 |
--------------------------------------------------------------------------------
/scripts/shellevents_default.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # default handlers for shellevents
4 | #
5 | # override the function in your own events
6 | # file to provide a custom handler
7 | #
8 | # comments inside each handler list the variables
9 | # that are set when the handler is invoked
10 |
11 | event_workspace() {
12 | : # WORKSPACENAME
13 | }
14 |
15 | event_focusedmon() {
16 | : # MONNAME WORKSPACENAME
17 | }
18 |
19 | event_activewindow() {
20 | : # WINDOWCLASS WINDOWTITLE
21 | }
22 |
23 | event_fullscreen() {
24 | : # ENTER (0 if leaving fullscreen, 1 if entering)
25 | }
26 |
27 | event_monitorremoved() {
28 | : # MONITORNAME
29 | }
30 |
31 | event_monitoradded() {
32 | : # MONITORNAME
33 | }
34 |
35 | event_createworkspace() {
36 | : # WORKSPACENAME
37 | }
38 |
39 | event_destroyworkspace() {
40 | : # WORKSPACENAME
41 | }
42 |
43 | event_moveworkspace() {
44 | : # WORKSPACENAME MONNAME
45 | }
46 |
47 | event_activelayout() {
48 | : # KEYBOARDNAME LAYOUTNAME
49 | }
50 |
51 | event_openwindow() {
52 | : # WINDOWADDRESS WORKSPACENAME WINDOWCLASS WINDOWTITLE
53 | }
54 |
55 | event_closewindow() {
56 | : # WINDOWADDRESS
57 | }
58 |
59 | event_movewindow() {
60 | : # WINDOWADDRESS WORKSPACENAME
61 | }
62 |
63 | event_openlayer() {
64 | : # NAMESPACE
65 | }
66 |
67 | event_closelayer() {
68 | : # NAMESPACE
69 | }
70 |
71 | event_submap() {
72 | : # SUBMAPNAME
73 | }
74 |
--------------------------------------------------------------------------------
/scripts/startZellij:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ZJ_SESSIONS=$(zellij ls)
4 | NO_SESSIONS=$(echo "${ZJ_SESSIONS}" | wc -l)
5 |
6 | if [ "${NO_SESSIONS}" -ge 2 ]; then
7 | zellij attach \
8 | "$(echo "${ZJ_SESSIONS}" | awk '{print $1;}' | fzf --ansi)"
9 | else
10 | zellij attach -c
11 | fi
12 |
--------------------------------------------------------------------------------
/scripts/starth:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | PATH=$HOME/.local/bin:$HOME/.cargo/bin:$HOME/.config/hypr/scripts/:$PATH
4 | export PATH
5 |
6 | cd ~ || exit
7 |
8 | # exec Hyprland
9 | AQ_TRACE=1 HYPRLAND_TRACE=1 Hyprland
10 |
--------------------------------------------------------------------------------
/scripts/starth-debug:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | PATH=$HOME/bin/gamadv-xtd3:$HOME/.local/bin:$HOME/.cargo/bin:$HOME/.config/hypr/scripts/:$PATH
4 | export PATH
5 |
6 | cd ~ || exit
7 |
8 | # export HYPRLAND_LOG_WLR=1
9 | export WLR_NO_HARDWARE_CURSORS=1
10 | export _JAVA_AWT_WM_NONREPARENTING=1
11 | export XCURSOR_THEME=Catppuccin-Mocha-Mauve-Cursor
12 | export XCURSOR_SIZE=24
13 | export XDG_SESSION_TYPE=wayland
14 | export QT_QPA_PLATFORMTHEME=qt5ct
15 | export QT_QPA_PLATFORM="wayland;xcb"
16 | export QT_AUTO_SCREEN_SCALE_FACTOR=1
17 | export QT_WAYLAND_DISABLE_WINDOWDEORATION=1
18 | export MOZ_DISABLE_RDD_SANDBOX=1
19 | export MOZ_ENABLE_WAYLAND=1
20 | export NVD_BACKEND=direct
21 | export LIBVA_DRIVER_NAME=nvidia
22 | export __GLX_VENDOR_LIBRARY_NAME=nvidia
23 | export __NV_PRIME_RENDER_OFFLOAD=1
24 | export __VK_LAYER_NV_optimus=NVIDIA_only
25 | export WLR_BACKEND=vulkan
26 | export GBM_BACKEND=nvidia-drm
27 | export GDK_BACKEND="wayland,x11"
28 | export ASAN_OPTIONS="log_path=asan.log"
29 |
30 | # exec Hyprland
31 | exec Hyprland &> /tmp/hyprland-$(date +%Y-%m-%d-%H-%M-%S).log
32 |
--------------------------------------------------------------------------------
/scripts/startup:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | SCRIPTSDIR=$HOME/.config/hypr/scripts
4 |
5 | # Kill already running process
6 | _ps=(waybar mako)
7 | for _prs in "${_ps[@]}"; do
8 | if [[ $(pidof ${_prs}) ]]; then
9 | killall -9 ${_prs}
10 | fi
11 | done
12 |
13 | # Apply themes
14 | # ${SCRIPTSDIR}/gtkthemes &
15 |
16 | # Lauch notification daemon (mako)
17 | ${SCRIPTSDIR}/notifications &
18 |
19 | # Lauch statusbar (waybar)
20 | ${SCRIPTSDIR}/statusbar &
21 |
22 | # Start swhkd
23 | # ${SCRIPTSDIR}hotkeys &
24 |
25 | # Start mpd
26 | # exec mpd &
27 |
28 | # A hack to stop wifi from being rfkilled when lid switch
29 | sudo setkeycodes e057 240 e058 240
30 | # kmonad $HOME/.config/hypr/kmonad/tkl.kbd &
31 | kmonad $HOME/.config/hypr/kmonad/lappy.kbd &
32 |
33 | socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock EXEC:"${SCRIPTSDIR}/shellevents ${SCRIPTSDIR}/submaps.sh",nofork &
34 |
35 | /usr/bin/rclone mount --vfs-cache-mode writes MMU: /home/opal/MMU &
36 |
37 | # systemctl --user enable --now opentabletdriver.service
38 |
--------------------------------------------------------------------------------
/scripts/statusbar:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | CONFIG="$HOME/.config/hypr/waybar/config"
4 | STYLE="$HOME/.config/hypr/waybar/style.css"
5 |
6 | if [[ ! $(pidof waybar) ]]; then
7 | waybar --log-level error --config ${CONFIG} --style ${STYLE}
8 | fi
9 |
--------------------------------------------------------------------------------
/scripts/submaps.sh:
--------------------------------------------------------------------------------
1 | # shellcheck shell=sh
2 |
3 | # shellevents sample event file
4 |
5 | # when entering the resize submap dim all inactive windows and
6 | # add a very loud border to the active window
7 |
8 | CURRENT_SUBMAP="${CURRENT_SUBMAP:=}"
9 |
10 | # resize='keyword decoration:dim_inactive 1;keyword general:col.active_border 0xFFe7691e'
11 | enter='keyword decoration:dim_inactive 1;keyword general:col.active_border 0xffeba0ac'
12 | exit='keyword decoration:dim_inactive 0;keyword general:col.active_border 0xffcba6f7 0xff89b4fa 45deg'
13 |
14 | event_submap() {
15 | printf >&2 '%s\n' "$SUBMAPNAME"
16 | case "$SUBMAPNAME" in
17 | "resize"|"move"|"focus")
18 | CURRENT_SUBMAP='resize'
19 | hyprctl --batch "$enter"
20 | ;;
21 | *)
22 | case "$CURRENT_SUBMAP" in
23 | "resize"|"move"|"focus")
24 | CURRENT_SUBMAP=''
25 | hyprctl --batch "$exit"
26 | ;;
27 | esac
28 | ;;
29 | esac
30 | }
31 |
--------------------------------------------------------------------------------
/scripts/swallowToggle:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | SWALLOW=$(hyprctl -j getoption misc:enable_swallow | jq ".int")
4 |
5 | if [ "${SWALLOW}" == "1" ]; then
6 | hyprctl keyword misc:enable_swallow 0
7 | notify-send -i "$HOME/.config/hypr/mako/icons/hyprland.png" "Swallow" "OFF"
8 | else
9 | hyprctl keyword misc:enable_swallow 1
10 | notify-send -i "$HOME/.config/hypr/mako/icons/hyprland.png" "Swallow" "ON"
11 | fi
12 |
--------------------------------------------------------------------------------
/scripts/try_swap_workspace:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # Pascal Jaeger
4 |
5 | # utils
6 | green="\033[0;32m"
7 | red="\033[0;31m"
8 | blue="\033[0;34m"
9 | nocolor="\033[0m"
10 |
11 | #util functions
12 | check() {
13 | command -v "$1" 1>/dev/null
14 | }
15 |
16 | ok() {
17 | echo -e "[$green $nocolor] $*"
18 | }
19 |
20 | err() {
21 | echo -e "[$red $nocolor] $*"
22 | }
23 | optional() {
24 | echo -e "[$blue $nocolor] $*"
25 | }
26 |
27 | notify() {
28 | # shellcheck disable=SC2015
29 | check notify-send && {
30 | notify-send "$@"
31 | } || {
32 | echo "$@"
33 | }
34 | }
35 |
36 | checkUtils() {
37 | # shellcheck disable=SC2015
38 | check grep && ok "grep" || err "grep"
39 | # shellcheck disable=SC2015
40 | check grep && ok "cut" || err "cut"
41 | # shellcheck disable=SC2015
42 | check notify-send && ok "notify-send (Optional)" || optional "notify-send (Optional)"
43 | exit
44 | }
45 |
46 | basicChecks() {
47 | check hyprctl || {
48 | notify "Seriously mate!!" "Start Hyprland before this script"
49 | exit 1
50 | }
51 | pgrep -x Hyprland &>/dev/null || {
52 | notify "Make Sure Hyprland Session is running."
53 | exit 1
54 | }
55 | }
56 |
57 | help() {
58 | cat <&1))
22 | echo ${data[0]} | cut -f1 -d, > $cachedir/$cachefile
23 | echo ${data[1]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile
24 | echo ${data[2]} | sed -E 's/^.{15}//' >> $cachedir/$cachefile
25 | fi
26 |
27 | weather=($(cat $cachedir/$cachefile))
28 |
29 | # Restore IFSClear
30 | IFS=$SAVEIFS
31 |
32 | temperature=$(echo ${weather[2]} | sed -E 's/([[:digit:]])+\.\./\1 to /g')
33 |
34 | #echo ${weather[1]##*,}
35 |
36 | # https://fontawesome.com/icons?s=solid&c=weather
37 | case $(echo ${weather[1]##*,} | tr '[:upper:]' '[:lower:]') in
38 | "clear" | "sunny")
39 | condition=""
40 | ;;
41 | "partly cloudy")
42 | condition="杖"
43 | ;;
44 | "cloudy")
45 | condition=""
46 | ;;
47 | "overcast")
48 | condition=""
49 | ;;
50 | "mist" | "fog" | "freezing fog")
51 | condition=""
52 | ;;
53 | "patchy rain possible" | "patchy light drizzle" | "light drizzle" | "patchy light rain" | "light rain" | "light rain shower" | "rain")
54 | condition=""
55 | ;;
56 | "moderate rain at times" | "moderate rain" | "heavy rain at times" | "heavy rain" | "moderate or heavy rain shower" | "torrential rain shower" | "rain shower")
57 | condition=""
58 | ;;
59 | "patchy snow possible" | "patchy sleet possible" | "patchy freezing drizzle possible" | "freezing drizzle" | "heavy freezing drizzle" | "light freezing rain" | "moderate or heavy freezing rain" | "light sleet" | "ice pellets" | "light sleet showers" | "moderate or heavy sleet showers")
60 | condition="ﭽ"
61 | ;;
62 | "blowing snow" | "moderate or heavy sleet" | "patchy light snow" | "light snow" | "light snow showers")
63 | condition="流"
64 | ;;
65 | "blizzard" | "patchy moderate snow" | "moderate snow" | "patchy heavy snow" | "heavy snow" | "moderate or heavy snow with thunder" | "moderate or heavy snow showers")
66 | condition="ﰕ"
67 | ;;
68 | "thundery outbreaks possible" | "patchy light rain with thunder" | "moderate or heavy rain with thunder" | "patchy light snow with thunder")
69 | condition=""
70 | ;;
71 | *)
72 | condition=""
73 | echo -e "{\"text\":\""$condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}"
74 | ;;
75 | esac
76 |
77 | #echo $temp $condition
78 |
79 | echo -e "{\"text\":\""$temperature $condition"\", \"alt\":\""${weather[0]}"\", \"tooltip\":\""${weather[0]}: $temperature ${weather[1]}"\"}"
80 |
--------------------------------------------------------------------------------
/scripts/wlogout.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | LAYOUT="$HOME/.config/hypr/wlogout/layout"
4 | STYLE="$HOME/.config/hypr/wlogout/style.css"
5 |
6 | if [[ ! $(pidof wlogout) ]]; then
7 | # wleave -l ${LAYOUT} -C ${STYLE} -b 5 -B 400 -T 400 -p layer-shell -k
8 | wlogout -p layer-shell --layout ${LAYOUT} --css ${STYLE} --buttons-per-row 5 --margin-top 400 --margin-bottom 400
9 | else
10 | pkill wlogout
11 | fi
12 |
--------------------------------------------------------------------------------
/scripts/wttr.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # From https://raw.githubusercontent.com/rxyhn/dotfiles/main/home/rxyhn/modules/desktop/waybar/scripts/waybar-wttr.py
3 |
4 | import json
5 | import requests
6 | from datetime import datetime
7 |
8 | WEATHER_CODES = {
9 | '113': '☀️',
10 | '116': '⛅',
11 | '119': '☁️',
12 | '122': '☁️',
13 | '143': '☁️',
14 | '176': '🌧️',
15 | '179': '🌧️',
16 | '182': '🌧️',
17 | '185': '🌧️',
18 | '200': '⛈️',
19 | '227': '🌨️',
20 | '230': '🌨️',
21 | '248': '☁️ ',
22 | '260': '☁️',
23 | '263': '🌧️',
24 | '266': '🌧️',
25 | '281': '🌧️',
26 | '284': '🌧️',
27 | '293': '🌧️',
28 | '296': '🌧️',
29 | '299': '🌧️',
30 | '302': '🌧️',
31 | '305': '🌧️',
32 | '308': '🌧️',
33 | '311': '🌧️',
34 | '314': '🌧️',
35 | '317': '🌧️',
36 | '320': '🌨️',
37 | '323': '🌨️',
38 | '326': '🌨️',
39 | '329': '❄️',
40 | '332': '❄️',
41 | '335': '❄️',
42 | '338': '❄️',
43 | '350': '🌧️',
44 | '353': '🌧️',
45 | '356': '🌧️',
46 | '359': '🌧️',
47 | '362': '🌧️',
48 | '365': '🌧️',
49 | '368': '🌧️',
50 | '371': '❄️',
51 | '374': '🌨️',
52 | '377': '🌨️',
53 | '386': '🌨️',
54 | '389': '🌨️',
55 | '392': '🌧️',
56 | '395': '❄️'
57 | }
58 |
59 | data = {}
60 |
61 |
62 | weather = requests.get("https://wttr.in/?format=j1").json()
63 |
64 |
65 | def format_time(time):
66 | return time.replace("00", "").zfill(2)
67 |
68 |
69 | def format_temp(temp):
70 | return (hour['FeelsLikeC']+"°").ljust(3)
71 |
72 |
73 | def format_chances(hour):
74 | chances = {
75 | "chanceoffog": "Fog",
76 | "chanceoffrost": "Frost",
77 | "chanceofovercast": "Overcast",
78 | "chanceofrain": "Rain",
79 | "chanceofsnow": "Snow",
80 | "chanceofsunshine": "Sunshine",
81 | "chanceofthunder": "Thunder",
82 | "chanceofwindy": "Wind"
83 | }
84 |
85 | conditions = []
86 | for event in chances.keys():
87 | if int(hour[event]) > 0:
88 | conditions.append(chances[event]+" "+hour[event]+"%")
89 | return ", ".join(conditions)
90 |
91 | tempint = int(weather['current_condition'][0]['FeelsLikeC'])
92 | extrachar = ''
93 | if tempint > 0 and tempint < 10:
94 | extrachar = '+'
95 |
96 |
97 | data['text'] = ''+WEATHER_CODES[weather['current_condition'][0]['weatherCode']] + \
98 | ""+extrachar+weather['current_condition'][0]['FeelsLikeC']+"°"
99 |
100 | data['tooltip'] = f"{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}°\n"
101 | data['tooltip'] += f"Feels like: {weather['current_condition'][0]['FeelsLikeC']}°\n"
102 | data['tooltip'] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n"
103 | data['tooltip'] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n"
104 | for i, day in enumerate(weather['weather']):
105 | data['tooltip'] += f"\n"
106 | if i == 0:
107 | data['tooltip'] += "Today, "
108 | if i == 1:
109 | data['tooltip'] += "Tomorrow, "
110 | data['tooltip'] += f"{day['date']}\n"
111 | data['tooltip'] += f"⬆️{day['maxtempC']}° ⬇️{day['mintempC']}° "
112 | data['tooltip'] += f"🌅{day['astronomy'][0]['sunrise']} 🌇{day['astronomy'][0]['sunset']}\n"
113 | for hour in day['hourly']:
114 | if i == 0:
115 | if int(format_time(hour['time'])) < datetime.now().hour-2:
116 | continue
117 | data['tooltip'] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeC'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n"
118 |
119 |
120 | print(json.dumps(data))
121 |
--------------------------------------------------------------------------------
/split-monitor-workspaces.conf:
--------------------------------------------------------------------------------
1 | plugin {
2 | split-monitor-workspaces {
3 | count = 9
4 | keep_focused = 1
5 | enable_notifications = 0
6 | enable_persistent_workspaces = 0
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/virtualdesktops.conf:
--------------------------------------------------------------------------------
1 | plugin {
2 | virtual-desktops {
3 | cycleworkspaces = 1
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/waybar/config:
--------------------------------------------------------------------------------
1 | {
2 | "include": "~/.config/hypr/waybar/modules",
3 | "layer": "top",
4 | "exclusive": true,
5 | "passthrough": false,
6 | "position": "top",
7 | "fixed-center": false,
8 | "spacing": 3,
9 | "gtk-layer-shell": true,
10 | //"margin": 3,
11 |
12 | "modules-left": ["hyprland/workspaces", "hyprland/submap", "cpu", "custom/cputemp", "memory", "disk", "custom/waybar-mpris"],
13 | "modules-center": ["hyprland/window"],
14 | "modules-right": ["idle_inhibitor", "custom/uptime", "backlight", "wireplumber", "custom/vpn_check", "network", "battery", "custom/updater", "tray", "clock", "custom/power"],
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/waybar/mocha.css:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * Catppuccin Mocha palette
4 | * Maintainer: rubyowo
5 | *
6 | */
7 |
8 | @define-color base #1e1e2e;
9 | @define-color mantle #181825;
10 | @define-color crust #11111b;
11 |
12 | @define-color text #cdd6f4;
13 | @define-color subtext0 #a6adc8;
14 | @define-color subtext1 #bac2de;
15 |
16 | @define-color surface0 #313244;
17 | @define-color surface1 #45475a;
18 | @define-color surface2 #585b70;
19 |
20 | @define-color overlay0 #6c7086;
21 | @define-color overlay1 #7f849c;
22 | @define-color overlay2 #9399b2;
23 |
24 | @define-color blue #89b4fa;
25 | @define-color lavender #b4befe;
26 | @define-color sapphire #74c7ec;
27 | @define-color sky #89dceb;
28 | @define-color teal #94e2d5;
29 | @define-color green #a6e3a1;
30 | @define-color yellow #f9e2af;
31 | @define-color peach #fab387;
32 | @define-color maroon #eba0ac;
33 | @define-color red #f38ba8;
34 | @define-color mauve #cba6f7;
35 | @define-color pink #f5c2e7;
36 | @define-color flamingo #f2cdcd;
37 | @define-color rosewater #f5e0dc;
38 |
39 |
--------------------------------------------------------------------------------
/waybar/modules:
--------------------------------------------------------------------------------
1 | {
2 | "backlight": {
3 | "interval": 30,
4 | "align": 0,
5 | "rotate": 0,
6 | "tooltip-format": "{percent}",
7 | "format": "{icon}{percent}",
8 | "format-icons": [" ", " ", " ", " "],
9 | "on-scroll-up": "~/.config/hypr/scripts/brightness --inc",
10 | "on-scroll-down": "~/.config/hypr/scripts/brightness --dec",
11 | "smooth-scrolling-threshold": 1,
12 | },
13 |
14 | "hyprland/submap": {
15 | "format": " {}",
16 | "max-length": 30,
17 | "tooltip": false
18 | },
19 |
20 | "hyprland/workspaces": {
21 | "format": "{icon}",
22 | "on-click": "activate",
23 | "format-icons": {
24 | "1": " ",
25 | "2": " ",
26 | "3": " ",
27 | "4": " ",
28 | "5": " ",
29 | "6": " ",
30 | "7": " ",
31 | "8": " ",
32 | "9": " ",
33 | "urgent": " ",
34 | //"active": " ",
35 | //"default": " "
36 | "default": " ",
37 | },
38 | "all-outputs": false,
39 | "active-only": false,
40 | //"show-special": true,
41 | //"special-visible-only": true,
42 | "sort-by-number": true,
43 | "persistent-workspaces": {
44 | "*": 9,
45 | },
46 | "on-scroll-up": "hyprctl dispatch workspace e+1",
47 | "on-scroll-down": "hyprctl dispatch workspace e-1",
48 | },
49 |
50 | "battery": {
51 | "interval": 60,
52 | "align": 0,
53 | "rotate": 0,
54 | "full-at": 100,
55 | "design-capacity": false,
56 | "states": {
57 | "good": 95,
58 | "warning": 30,
59 | "critical": 15
60 | },
61 | "format": "{icon} {capacity}",
62 | "format-charging": " {capacity}",
63 | "format-plugged": " {capacity}",
64 | "format-full": "{icon}",
65 | "format-alt": "{icon}{time}",
66 | "format-icons": ["", "", "", "", ""],
67 | "format-time": "{H}h {M}min",
68 | "tooltip": true,
69 | "on-click-middle": "~/.config/hypr/scripts/swallowToggle"
70 | },
71 |
72 | "clock": {
73 | "interval": 60,
74 | "align": 0,
75 | "rotate": 0,
76 | "format": "{:%d %b ⁙ %I:%M %p}",
77 | "format-alt": "{:%A ⁙ %d %B %Y ⁙ %I:%M %p}",
78 | "timezone": "Asia/Kuala_Lumpur",
79 | "tooltip-format": "{calendar}",
80 | "calendar": {
81 | "mode" : "year",
82 | "mode-mon-col" : 3,
83 | "weeks-pos" : "right",
84 | "on-scroll" : 1,
85 | "format": {
86 | "months": "{}",
87 | "days": "{}",
88 | "weeks": "W{}",
89 | "weekdays": "{}",
90 | "today": "{}"
91 | }
92 | },
93 | //"tooltip-format": "{:%B %Y}\n{calendar}",
94 | "on-click-right": "~/.config/hypr/scripts/changeHyprpaper",
95 | },
96 |
97 | "cpu": {
98 | "interval": 5,
99 | "format": " {usage}%",
100 | "format-alt": "{icon0}{icon1}{icon2}{icon3} {usage:>2}%",
101 | "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"],
102 | },
103 |
104 | "custom/menu": {
105 | "format": " ",
106 | "tooltip": false,
107 | "on-click": "$HOME/.config/hypr/scripts/menu",
108 | },
109 |
110 | "custom/power": {
111 | "format": " ",
112 | "tooltip": false,
113 | "on-click": "~/.config/hypr/scripts/wleave.sh",
114 | },
115 |
116 | "disk": {
117 | "interval": 30,
118 | "format": " {free}",
119 | "format-alt": " {percentage_free}%",
120 | },
121 |
122 | "memory": {
123 | "interval": 10,
124 | "format": " {used:0.1f}G",
125 | "format-alt": " {}%",
126 | },
127 |
128 | "network": {
129 | "interval": 5,
130 | "format-wifi": " {signalStrength}%",
131 | "format-ethernet": " {ipaddr}/{cidr}",
132 | "format-linked": " {ifname} (No IP)",
133 | "format-disconnected": " Disconnected",
134 | "format-disabled": " Disabled",
135 | "format-alt": " {bandwidthUpBits} | {bandwidthDownBits}",
136 | "tooltip-format": " {ifname} {essid} via {gwaddr}",
137 | "on-click-middle": "~/.local/bin/mmuvpn up cbj",
138 | "on-click-right": "kitty --class update -T update -1 -e nmtui",
139 | },
140 |
141 | "custom/weather": {
142 | "tooltip": true,
143 | "format": "{}",
144 | "interval": 300,
145 | "exec": "~/.config/hypr/scripts/wttr.py",
146 | "return-type": "json",
147 | },
148 |
149 | "custom/updater":{
150 | "format": "{}",
151 | "exec": "$HOME/.config/hypr/scripts/checkUpdate",
152 | "exec-if": "[[ $($HOME/.config/hypr/scripts/checkUpdate) ]]",
153 | "interval": 300,
154 | "on-click": "kitty --class update -T update -e yay -Syu && notify-send -i '/usr/share/icons/hicolor/256x256/apps/kitty.png' 'Kitty Terminal' 'Nice!!!' "
155 | },
156 |
157 | "custom/uptime":{
158 | "format": " {}",
159 | "exec": "$HOME/.config/hypr/scripts/upt",
160 | "interval": 60,
161 | },
162 |
163 | "custom/cycle_wall":{
164 | "format":"",
165 | "on-click": "~/.config/hypr/scripts/changeHyprpaper",
166 | "tooltip-format": "Change wallpaper",
167 | },
168 |
169 | "custom/vpn_check":{
170 | "format":" {}",
171 | "exec": "~/.config/hypr/scripts/vpnCheck",
172 | "interval": 120,
173 | "on-click": "~/.local/bin/mmuvpn restart",
174 | "on-click-right": "~/.local/bin/mmuvpn down",
175 | },
176 |
177 | "wireplumber": {
178 | "format": "{icon}{volume}",
179 | "tooltip-format": "{volume}",
180 | "format-muted": " ",
181 | "format-bluetooth": " {volume}{format_source}",
182 | "format-bluetooth-muted": " Mute",
183 | "format-source": "{volume}",
184 | "format-source-muted": " ",
185 | "format-icons": {
186 | "headphone": " ",
187 | "hands-free": "",
188 | "headset": " ",
189 | "phone": " ",
190 | "portable": " ",
191 | "car": " ",
192 | "default": ["", " ", " "]
193 | },
194 | "scroll-step": 5.0,
195 | "on-click": "pamixer -t",
196 | "on-click-right": "kitty --class update -T update -e pulsemixer",
197 | "on-click-middle": "pavucontrol",
198 | "on-scroll-up": "~/.config/hypr/scripts/volume --inc",
199 | "on-scroll-down": "~/.config/hypr/scripts/volume --dec",
200 | "smooth-scrolling-threshold": 1,
201 | },
202 |
203 | "custom/cputemp":{
204 | "format": "{}",
205 | "exec": "~/.config/hypr/scripts/cputemp",
206 | "interval": 15,
207 | },
208 |
209 | "tray": {
210 | "spacing": 10,
211 | "icon-size": 13
212 | },
213 |
214 | "hyprland/window": {
215 | "format": "⁙ {} ⁙",
216 | "separate-outputs": true
217 | },
218 |
219 | "idle_inhibitor": {
220 | "format": "{icon}",
221 | "format-icons": {
222 | "activated": " ",
223 | "deactivated": " "
224 | },
225 | /* "timeout": 30.5 */
226 | },
227 |
228 | "custom/waybar-mpris": {
229 | // "format": "⁙ {} ⁙",
230 | "return-type": "json",
231 | "exec": "waybar-mpris --position --autofocus --order 'SYMBOL:POSITION' --separator string '⁙'",
232 | "on-click": "waybar-mpris --send toggle",
233 | // This option will switch between players on right click.
234 | "on-click-right": "waybar-mpris --send player-next",
235 | // The options below will switch the selected player on scroll
236 | // "on-scroll-up": "waybar-mpris --send player-next",
237 | // "on-scroll-down": "waybar-mpris --send player-prev",
238 | // The options below will go to next/previous track on scroll
239 | "on-scroll-up": "waybar-mpris --send next",
240 | "on-scroll-down": "waybar-mpris --send prev",
241 | "escape": true,
242 | },
243 | }
244 |
--------------------------------------------------------------------------------
/waybar/style.css:
--------------------------------------------------------------------------------
1 | @import "mocha.css";
2 |
3 | * {
4 | font-family:
5 | Symbols Nerd Font,
6 | Pragmasevka;
7 | font-size: 15px;
8 | border: none;
9 | border-radius: 0px;
10 | min-height: 0;
11 | /* margin: 1px; */
12 | }
13 |
14 | window#waybar {
15 | transition-property: background-color;
16 | transition-duration: 0.5s;
17 | background: @theme_base_color;
18 | /* border: 3px solid @overlay0; */
19 | /* border-radius: 0px; */
20 | /* padding: 5px; */
21 | /* margin: 0; */
22 | }
23 |
24 | window#waybar.hidden {
25 | opacity: 0.5;
26 | }
27 |
28 | #waybar.empty #window {
29 | background: none;
30 | }
31 |
32 | /* .modules-left, .modules-center, .modules-right { */
33 | /* background: @theme_base_color; */
34 | /* border: 3px solid @overlay0; */
35 | /* padding: 0px 5px; */
36 | /* border-radius: 5; */
37 | /* } */
38 |
39 | /* .modules-center { */
40 | /* border: 3px solid @lavender; */
41 | /* margin: 0px 5px; */
42 | /* } */
43 |
44 | #idle_inhibitor,
45 | #backlight,
46 | #battery,
47 | #clock,
48 | #cpu,
49 | #disk,
50 | #mode,
51 | #memory,
52 | #tray,
53 | #wireplumber,
54 | #custom-menu,
55 | #custom-power,
56 | #custom-weather,
57 | #custom-updater,
58 | #custom-vpn_check,
59 | #custom-uptime,
60 | #custom-cputemp,
61 | #custom-waybar-mpris,
62 | #window,
63 | #submap,
64 | #network {
65 | padding: 0px 2px;
66 | }
67 |
68 | #idle_inhibitor {
69 | color: @blue;
70 | }
71 |
72 | #backlight {
73 | color: @blue;
74 | }
75 |
76 | #battery {
77 | color: @green;
78 | }
79 |
80 | @keyframes blink {
81 | to {
82 | color: @surface0;
83 | }
84 | }
85 |
86 | #battery.critical:not(.charging) {
87 | background-color: @red;
88 | color: @theme_text_color;
89 | animation-name: blink;
90 | animation-duration: 0.5s;
91 | animation-timing-function: linear;
92 | animation-iteration-count: infinite;
93 | animation-direction: alternate;
94 | box-shadow: inset 0 -3px transparent;
95 | }
96 |
97 | #clock {
98 | color: @yellow;
99 | }
100 |
101 | #cpu {
102 | color: @green;
103 | }
104 |
105 | #memory {
106 | color: @sky;
107 | }
108 |
109 | #disk {
110 | color: @sapphire;
111 | }
112 |
113 | #tray > .passive {
114 | -gtk-icon-effect: dim;
115 | }
116 |
117 | #tray > .needs-attention {
118 | -gtk-icon-effect: highlight;
119 | }
120 |
121 | #workspaces button {
122 | border-radius: 0px;
123 | margin: 3px;
124 | padding: 3px;
125 | }
126 |
127 | #workspaces button:hover {
128 | border-radius: 0px;
129 | color: @overlay0;
130 | background-color: @surface0;
131 | }
132 |
133 | #workspaces button.persistent {
134 | color: @surface1;
135 | border-radius: 0px;
136 | }
137 |
138 | #workspaces button.active {
139 | color: @peach;
140 | border-radius: 0px;
141 | }
142 |
143 | #workspaces button.urgent {
144 | color: @red;
145 | border-radius: 0px;
146 | }
147 |
148 | #workspaces button:not(.empty):not(.active) {
149 | color: @mauve;
150 | border-radius: 0px;
151 | }
152 |
153 | #custom-menu {
154 | color: @rosewater;
155 | }
156 |
157 | #custom-power {
158 | color: @red;
159 | margin-right: 3px;
160 | }
161 |
162 | #custom-updater {
163 | color: @red;
164 | }
165 |
166 | #custom-uptime {
167 | color: @blue;
168 | }
169 |
170 | #custom-weather {
171 | color: @lavender;
172 | }
173 |
174 | #custom-vpn_check {
175 | color: @sky;
176 | }
177 |
178 | #custom-cputemp {
179 | color: @teal;
180 | }
181 |
182 | #wireplumber {
183 | color: @sapphire;
184 | }
185 |
186 | #wireplumber.bluetooth {
187 | color: @pink;
188 | }
189 |
190 | #wireplumber.muted {
191 | color: @red;
192 | }
193 |
194 | #window {
195 | color: @mauve;
196 | }
197 |
198 | #custom-waybar-mpris {
199 | color: @lavender;
200 | }
201 |
202 | #network {
203 | color: @teal;
204 | }
205 |
206 | #network.disconnected,
207 | #network.disabled {
208 | background-color: @surface0;
209 | color: @text;
210 | }
211 |
--------------------------------------------------------------------------------
/wl-kbptr.conf:
--------------------------------------------------------------------------------
1 | # Cursor submap (similar to the Mouse mode in Sway)
2 | submap = cursor
3 |
4 | # Jump cursor to a position
5 | bind = , a, exec, hyprctl dispatch submap reset && wl-kbptr -o modes=floating,click -o mode_floating.source=detect && hyprctl dispatch submap cursor
6 |
7 | # Cursor movement
8 | binde = , j, exec, wlrctl pointer move 0 10
9 | binde = , k, exec, wlrctl pointer move 0 -10
10 | binde = , l, exec, wlrctl pointer move 10 0
11 | binde = , h, exec, wlrctl pointer move -10 0
12 |
13 | # Left button
14 | bind = , s, exec, wlrctl pointer click left
15 | # Middle button
16 | bind = , d, exec, wlrctl pointer click middle
17 | # Right button
18 | bind = , f, exec, wlrctl pointer click right
19 |
20 | # Scroll up and down
21 | binde = , e, exec, wlrctl pointer scroll 30 0
22 | binde = , r, exec, wlrctl pointer scroll -30 0
23 |
24 | # Scroll left and right
25 | binde = , t, exec, wlrctl pointer scroll 0 -30
26 | binde = , g, exec, wlrctl pointer scroll 0 30
27 |
28 | # Exit cursor submap
29 | # If you do not use cursor timeout or cursor:hide_on_key_press, you can delete its respective cals
30 | bind = , escape, exec, hyprctl keyword cursor:inactive_timeout 3; hyprctl keyword cursor:hide_on_key_press true; hyprctl dispatch submap reset
31 |
32 | submap = reset
33 |
34 | # Entrypoint
35 | # If you do not use cursor timeout or cursor:hide_on_key_press, you can delete its respective cals
36 | bind = $mainMod, p, exec, hyprctl keyword cursor:inactive_timeout 0; hyprctl keyword cursor:hide_on_key_press false; hyprctl dispatch submap cursor
37 |
--------------------------------------------------------------------------------
/wlogout/icons/lock-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/lock-hover.png
--------------------------------------------------------------------------------
/wlogout/icons/lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/lock.png
--------------------------------------------------------------------------------
/wlogout/icons/logout-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/logout-hover.png
--------------------------------------------------------------------------------
/wlogout/icons/logout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/logout.png
--------------------------------------------------------------------------------
/wlogout/icons/power-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/power-hover.png
--------------------------------------------------------------------------------
/wlogout/icons/power.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/power.png
--------------------------------------------------------------------------------
/wlogout/icons/restart-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/restart-hover.png
--------------------------------------------------------------------------------
/wlogout/icons/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/restart.png
--------------------------------------------------------------------------------
/wlogout/icons/sleep-hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/sleep-hover.png
--------------------------------------------------------------------------------
/wlogout/icons/sleep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nawfalmrouyan/hyprland/0310baecdd741c97f864fc98d1713bb4089085dc/wlogout/icons/sleep.png
--------------------------------------------------------------------------------
/wlogout/layout:
--------------------------------------------------------------------------------
1 | {
2 | "label" : "lock",
3 | "action" : "hyprlock",
4 | "text" : "Lock",
5 | "keybind" : "l"
6 | }
7 | {
8 | "label" : "reboot",
9 | "action" : "systemctl reboot",
10 | "text" : "Reboot",
11 | "keybind" : "r"
12 | }
13 | {
14 | "label" : "shutdown",
15 | "action" : "systemctl poweroff",
16 | "text" : "Shutdown",
17 | "keybind" : "s"
18 | }
19 | {
20 | "label" : "logout",
21 | "action" : "uwsm stop",
22 | "text" : "Logout",
23 | "keybind" : "e"
24 | }
25 | {
26 | "label" : "suspend",
27 | "action" : "hyprlock && systemctl suspend",
28 | "text" : "Suspend",
29 | "keybind" : "u"
30 | }
31 |
--------------------------------------------------------------------------------
/wlogout/style.css:
--------------------------------------------------------------------------------
1 | window {
2 | font-family: Pragmasevka;
3 | font-size: 14pt;
4 | color: #cdd6f4;
5 | /* text */
6 | background-color: rgba(30, 30, 46, 0.5);
7 | /* background-color: #1e1e2e; */
8 | }
9 |
10 | button {
11 | background-repeat: no-repeat;
12 | background-position: center;
13 | background-size: 25%;
14 | border: none;
15 | background-color: rgba(30, 30, 46, 0);
16 | margin: 5px;
17 | transition:
18 | box-shadow 0.2s ease-in-out,
19 | background-color 0.2s ease-in-out;
20 | }
21 |
22 | button:hover {
23 | background-color: rgba(49, 50, 68, 0.1);
24 | }
25 |
26 | button:focus {
27 | background-color: #cba6f7;
28 | color: #1e1e2e;
29 | }
30 |
31 | #lock {
32 | background-image: image(url("icons/lock.png"));
33 | }
34 |
35 | #lock:focus {
36 | background-image: image(url("icons/lock-hover.png"));
37 | }
38 |
39 | #logout {
40 | background-image: image(url("icons/logout.png"));
41 | }
42 |
43 | #logout:focus {
44 | background-image: image(url("icons/logout-hover.png"));
45 | }
46 |
47 | #suspend {
48 | background-image: image(url("icons/sleep.png"));
49 | }
50 |
51 | #suspend:focus {
52 | background-image: image(url("icons/sleep-hover.png"));
53 | }
54 |
55 | #shutdown {
56 | background-image: image(url("icons/power.png"));
57 | }
58 |
59 | #shutdown:focus {
60 | background-image: image(url("icons/power-hover.png"));
61 | }
62 |
63 | #reboot {
64 | background-image: image(url("icons/restart.png"));
65 | }
66 |
67 | #reboot:focus {
68 | background-image: image(url("icons/restart-hover.png"));
69 | }
70 |
--------------------------------------------------------------------------------
/xdph.conf:
--------------------------------------------------------------------------------
1 | screencopy {
2 | custom_picker_binary=/home/opal/.config/hypr/scripts/screenshare.sh
3 | }
4 |
--------------------------------------------------------------------------------