├── .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 |
4 | 5 | 6 | 7 |
8 | 9 | ## 🌟 Preview 10 | ![image](https://github.com/user-attachments/assets/362dcc0d-d4ea-4967-9f94-6541a83190fb) 11 | 12 | ![image](https://github.com/user-attachments/assets/6cf67aa8-2069-4f3d-9cf8-56e6894f8c08) 13 | 14 | ![image](https://github.com/user-attachments/assets/e0435737-88ed-4f20-acb2-88708c67c460) 15 | 16 | ![image](https://github.com/user-attachments/assets/1899348c-fdda-4baa-a4d0-d7e72fa8b0ab) 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 | --------------------------------------------------------------------------------