├── background └── v4-background.jpg ├── startup_browser ├── images │ └── image.png ├── index.html └── style.css ├── screenshots ├── swappy-20240603_193236.png └── swappy-20240603_194049.png ├── wofi ├── config-bmenu ├── config ├── config-lmenu └── style │ └── v4-style.css ├── waybar ├── scripts │ ├── power_profile │ ├── update-sys │ ├── kb-brightness │ ├── brightness │ ├── baraction │ ├── volume │ ├── waybar-wttr.py │ └── waybar-wttr-c.py ├── conf │ ├── v4-config-bottom.jsonc │ └── v4-config.jsonc └── style │ └── v4-style.css ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── wlogout └── layout ├── README.md ├── swaylock └── config ├── hyprv_util └── hyprland.conf /background/v4-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosa12/Hyprland_dotfiles/HEAD/background/v4-background.jpg -------------------------------------------------------------------------------- /startup_browser/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosa12/Hyprland_dotfiles/HEAD/startup_browser/images/image.png -------------------------------------------------------------------------------- /screenshots/swappy-20240603_193236.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosa12/Hyprland_dotfiles/HEAD/screenshots/swappy-20240603_193236.png -------------------------------------------------------------------------------- /screenshots/swappy-20240603_194049.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosa12/Hyprland_dotfiles/HEAD/screenshots/swappy-20240603_194049.png -------------------------------------------------------------------------------- /wofi/config-bmenu: -------------------------------------------------------------------------------- 1 | width=375 2 | height=450 3 | location=bottom_left 4 | show=drun 5 | prompt=Search... 6 | filter_rate=100 7 | allow_markup=true 8 | no_actions=false 9 | halign=fill 10 | orientation=vertical 11 | content_halign=fill 12 | insensitive=true 13 | allow_images=true 14 | image_size=32 15 | gtk_dark=true 16 | layer=top -------------------------------------------------------------------------------- /wofi/config: -------------------------------------------------------------------------------- 1 | width=600 2 | height=300 3 | location=center 4 | show=drun 5 | prompt=Search... 6 | filter_rate=100 7 | allow_markup=true 8 | no_actions=true 9 | halign=fill 10 | orientation=vertical 11 | content_halign=fill 12 | insensitive=true 13 | allow_images=true 14 | image_size=40 15 | gtk_dark=true 16 | dynamic_lines=true 17 | -------------------------------------------------------------------------------- /wofi/config-lmenu: -------------------------------------------------------------------------------- 1 | show=drun 2 | prompt=Apps 3 | normal_window=false 4 | layer=top 5 | columns=4 6 | width=50% 7 | height=50% 8 | location=0 9 | orientation=vertical 10 | halign=fill 11 | line_wrap=off 12 | dynamic_lines=false 13 | allow_markup=true 14 | allow_images=true 15 | image_size=32 16 | exec_search=false 17 | hide_search=false 18 | parse_search=false 19 | insensitive=false 20 | hide_scroll=true 21 | no_actions=true 22 | sort_order=alphabetical 23 | gtk_dark=true 24 | filter_rate=100 25 | key_expand=Tab 26 | key_exit=Escape -------------------------------------------------------------------------------- /waybar/scripts/power_profile: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | get_pwr() { 4 | PWR=$(asusctl profile -p | sed s:'Active profile is'::) 5 | } 6 | 7 | get_pwr 8 | 9 | if [ $PWR == Balanced ]; then 10 | text="󰾅" 11 | tooltip="Balanced" 12 | elif [ $PWR == Performance ]; then 13 | text="󰓅" 14 | tooltip="Performance" 15 | elif [ $PWR == Quiet ]; then 16 | text="󰾆" 17 | tooltip="Quiet" 18 | fi 19 | 20 | echo '{"text": "'$text'", "tooltip": "'$tooltip'"}' 21 | 22 | if [[ "$1" == "next" ]]; then 23 | asusctl profile -n; pkill -SIGRTMIN+8 waybar 24 | get_pwr 25 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low "$PWR Power Profile" 26 | fi -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /wlogout/layout: -------------------------------------------------------------------------------- 1 | { 2 | "label" : "lock", 3 | "action" : "loginctl lock-session", 4 | "text" : "Lock", 5 | "keybind" : "l" 6 | } 7 | { 8 | "label" : "hibernate", 9 | "action" : "systemctl hibernate", 10 | "text" : "Hibernate", 11 | "keybind" : "h" 12 | } 13 | { 14 | "label" : "logout", 15 | "action" : "loginctl terminate-user $USER", 16 | "text" : "Logout", 17 | "keybind" : "e" 18 | } 19 | { 20 | "label" : "shutdown", 21 | "action" : "systemctl poweroff", 22 | "text" : "Shutdown", 23 | "keybind" : "s" 24 | } 25 | { 26 | "label" : "suspend", 27 | "action" : "systemctl suspend", 28 | "text" : "Suspend", 29 | "keybind" : "u" 30 | } 31 | { 32 | "label" : "reboot", 33 | "action" : "systemctl reboot", 34 | "text" : "Reboot", 35 | "keybind" : "r" 36 | } 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hyprland 2 | 3 | ### Basically, i started with https://github.com/SolDoesTech/HyprV4 and modified that till i got this 4 | 5 | ### So shoutout to SolDoesTech!!! 6 | 7 | ### The startup page for the browser is inspired by https://github.com/Nainish-Rai, also shoutout to him! 8 | 9 | # If you like it, give it a star! 10 | 11 | # I will answer to any question in the `issues` section, so be brave and use it 12 | 13 | ![Desktop](screenshots/swappy-20240603_193236.png) 14 | ![Neofetch](screenshots/swappy-20240603_194049.png) 15 | 16 | ## If you like it, you can support me here: 17 | 18 | 19 | Buy Me A Coffee donate button 20 | 21 | -------------------------------------------------------------------------------- /swaylock/config: -------------------------------------------------------------------------------- 1 | daemonize 2 | show-failed-attempts 3 | clock 4 | screenshot 5 | effect-blur=9x5 6 | effect-vignette=0.5:0.5 7 | color=D6D2B880 8 | font="Inter" 9 | indicator 10 | indicator-radius=200 11 | indicator-thickness=20 12 | line-color=D6D2B8 13 | ring-color=3E423B 14 | inside-color=D6D2B8 15 | key-hl-color=1F2544 16 | separator-color=00000000 17 | text-color=3E423B 18 | text-caps-lock-color="" 19 | line-ver-color=1F2544 20 | ring-ver-color=1F2544 21 | inside-ver-color=D6D2B8 22 | text-ver-color=3E423B 23 | ring-wrong-color=31748f 24 | text-wrong-color=31748f 25 | inside-wrong-color=D6D2B8 26 | inside-clear-color=D6D2B8 27 | text-clear-color=3E423B 28 | ring-clear-color=9ccfd8 29 | line-clear-color=D6D2B8 30 | line-wrong-color=D6D2B8 31 | bs-hl-color=31748f 32 | grace=2 33 | grace-no-mouse 34 | grace-no-touch 35 | datestr=%a, %B %e 36 | timestr=%I:%M %p 37 | fade-in=1 38 | ignore-empty-password 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /wofi/style/v4-style.css: -------------------------------------------------------------------------------- 1 | window { 2 | font-family: "DejaVu Sans", "Font Awesome 5 Free"; 3 | margin: 0px; 4 | background-color: #CCC7AE; 5 | border-radius: 30px; 6 | border: 4px solid #9d6540; 7 | font-weight: bold; 8 | } 9 | 10 | #input { 11 | margin: 5px; 12 | border: none; 13 | color: #253A51; 14 | background-color: #CCC7AE; 15 | border-radius: 30px; 16 | border: 2px solid #3E423B; 17 | } 18 | 19 | #inner-box { 20 | margin: 5px; 21 | border: none; 22 | background-color: #CCC7AE; 23 | border-radius: 30px; 24 | } 25 | 26 | #outer-box { 27 | margin: 15px; 28 | border: none; 29 | background-color: #CCC7AE; 30 | } 31 | 32 | #scroll { 33 | margin: -2px 0px; 34 | border: none; 35 | visibility: hidden; 36 | display: none; 37 | } 38 | 39 | #text { 40 | margin: 10px; 41 | border: none; 42 | color: #253A51; 43 | } 44 | 45 | #entry:selected { 46 | background-color: #3E423B; 47 | border-radius: 20px; 48 | outline: none; 49 | } 50 | 51 | #entry:selected * { 52 | background-color: #97937e; 53 | border-radius: 20px; 54 | outline: none; 55 | } -------------------------------------------------------------------------------- /waybar/scripts/update-sys: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Original script by @speltriao on GitHub 4 | # https://github.com/speltriao/Pacman-Update-for-GNOME-Shell 5 | 6 | # If the operating system is not Arch Linux, exit the script successfully 7 | if [ ! -f /etc/arch-release ]; then 8 | exit 0 9 | fi 10 | 11 | # Calculate updates for each service 12 | AUR=$(yay -Qua | wc -l) 13 | OFFICIAL=$(checkupdates | wc -l) 14 | 15 | # Case/switch for each service updates 16 | case $1 in 17 | aur) echo " $AUR";; 18 | official) echo " $OFFICIAL";; 19 | esac 20 | 21 | # If the parameter is "update", update all services 22 | if [ "$1" = "update" ]; then 23 | kitty --title update-sys sh -c 'yay -Syu' 24 | fi 25 | 26 | # If there aren't any parameters, return the total number of updates 27 | if [ "$1" = "" ]; then 28 | # Calculate total number of updates 29 | COUNT=$((OFFICIAL+AUR)) 30 | # If there are updates, the script will output the following:  Updates 31 | # If there are no updates, the script will output nothing. 32 | 33 | if [[ "$COUNT" = "0" ]] 34 | then 35 | echo "" 36 | else 37 | # This Update symbol is RTL. So ‭ is left-to-right override. 38 | echo " $COUNT" 39 | fi 40 | exit 0 41 | fi -------------------------------------------------------------------------------- /waybar/scripts/kb-brightness: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | iDIR="$HOME/.config/HyprV/mako/icons" 4 | 5 | # Get brightness 6 | get_backlight() { 7 | LIGHT=$(printf "%.0f\n" $(brightnessctl -d '*::kbd_backlight' i)) 8 | echo "${LIGHT}%" 9 | } 10 | 11 | # Get icons 12 | get_icon() { 13 | backlight="$(brightnessctl -d '*::kbd_backlight' g)" 14 | current="${backlight%%%}" 15 | if [[ ("$current" -ge "0") && ("$current" -le "1") ]]; then 16 | icon="$iDIR/brightness-20.png" 17 | elif [[ ("$current" -ge "1") && ("$current" -le "2") ]]; then 18 | icon="$iDIR/brightness-60.png" 19 | elif [[ ("$current" -ge "2") && ("$current" -le "3") ]]; then 20 | icon="$iDIR/brightness-100.png" 21 | fi 22 | } 23 | 24 | # Notify 25 | notify_user() { 26 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Keyboard Brightness : $(brightnessctl -d '*::kbd_backlight' g)" 27 | } 28 | 29 | # Increase brightness 30 | inc_backlight() { 31 | brightnessctl -d *::kbd_backlight set 33%+ && get_icon && notify_user 32 | } 33 | 34 | # Decrease brightness 35 | dec_backlight() { 36 | brightnessctl -d *::kbd_backlight set 33%- && get_icon && notify_user 37 | } 38 | 39 | # Execute accordingly 40 | if [[ "$1" == "--get" ]]; then 41 | brightnessctl -d '*::kbd_backlight' g 42 | elif [[ "$1" == "--inc" ]]; then 43 | inc_backlight 44 | elif [[ "$1" == "--dec" ]]; then 45 | dec_backlight 46 | else 47 | get_backlight 48 | fi -------------------------------------------------------------------------------- /waybar/scripts/brightness: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | iDIR="$HOME/.config/HyprV/mako/icons" 4 | 5 | # Get brightness 6 | get_backlight() { 7 | LIGHT=$(printf "%.0f\n" $(brightnessctl i)) 8 | echo "${LIGHT}%" 9 | } 10 | 11 | # Get icons 12 | get_icon() { 13 | backlight="$(brightnessctl g)" 14 | current="${backlight%%%}" 15 | if [[ ("$current" -ge "0") && ("$current" -le "52") ]]; then 16 | icon="$iDIR/brightness-20.png" 17 | elif [[ ("$current" -ge "52") && ("$current" -le "103") ]]; then 18 | icon="$iDIR/brightness-40.png" 19 | elif [[ ("$current" -ge "103") && ("$current" -le "155") ]]; then 20 | icon="$iDIR/brightness-60.png" 21 | elif [[ ("$current" -ge "155") && ("$current" -le "207") ]]; then 22 | icon="$iDIR/brightness-80.png" 23 | elif [[ ("$current" -ge "180") && ("$current" -le "255") ]]; then 24 | icon="$iDIR/brightness-100.png" 25 | fi 26 | } 27 | 28 | # Notify 29 | notify_user() { 30 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Brightness : $(brightnessctl g)" 31 | } 32 | 33 | # Increase brightness 34 | inc_backlight() { 35 | brightnessctl set 10%+ && get_icon && notify_user 36 | } 37 | 38 | # Decrease brightness 39 | dec_backlight() { 40 | brightnessctl set 10%- && get_icon && notify_user 41 | } 42 | 43 | # Execute accordingly 44 | if [[ "$1" == "--get" ]]; then 45 | brightnessctl g 46 | elif [[ "$1" == "--inc" ]]; then 47 | inc_backlight 48 | elif [[ "$1" == "--dec" ]]; then 49 | dec_backlight 50 | else 51 | get_backlight 52 | fi -------------------------------------------------------------------------------- /waybar/conf/v4-config-bottom.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", 3 | "position": "right", 4 | "mod": "dock", 5 | "exclusive": true, 6 | "passthrough": false, 7 | "gtk-layer-shell": true, 8 | "height": 200, 9 | "width": 50, 10 | "modules-center": [ 11 | "custom/launch_thunar", 12 | "custom/launch_firefox", 13 | "custom/launch_chrome", 14 | "custom/launch_spotify", 15 | "custom/launch_kitty", 16 | "custom/launch_vscode", 17 | "custom/launch_vim", 18 | "custom/launch_java", 19 | "custom/launch_mongo", 20 | "custom/launch_discord", 21 | "custom/launch_steam" 22 | ], 23 | 24 | "include": [ 25 | "~/.config/HyprV/waybar/conf/mesu.jsonc" 26 | ], 27 | 28 | "custom/launch_firefox": { 29 | "format": "", 30 | "on-click": "firefox", 31 | "tooltip": false 32 | }, 33 | 34 | "custom/launch_chrome": { 35 | "format": "", 36 | "on-click": "chromium", 37 | "tooltip": false 38 | }, 39 | 40 | "custom/launch_spotify": { 41 | "format": "", 42 | "on-click": "spotify-launcher", 43 | "tooltip": false 44 | }, 45 | 46 | "custom/launch_thunar": { 47 | "format": "", 48 | "on-click": "exec thunar", 49 | "tooltip": false 50 | }, 51 | 52 | "custom/launch_kitty": { 53 | "format": "", 54 | "on-click": "exec kitty", 55 | "tooltip": false 56 | }, 57 | 58 | "custom/launch_vscode": { 59 | "format": "", 60 | "on-click": "exec code", 61 | "tooltip": false 62 | }, 63 | 64 | "custom/launch_java": { 65 | "format": "", 66 | "on-click": "exec intellij-idea-community", 67 | "tooltip": false 68 | }, 69 | 70 | "custom/launch_mongo": { 71 | "format": "", 72 | "on-click": "exec com.mongodb.Compass", 73 | "tooltip": false 74 | }, 75 | 76 | "custom/launch_vim": { 77 | "format": "", 78 | "on-click": "exec vim", 79 | "tooltip": false 80 | }, 81 | 82 | "custom/launch_discord": { 83 | "format": "󰙯", 84 | "on-click": "exec discord", 85 | "tooltip": false 86 | }, 87 | "custom/launch_steam": { 88 | "format": "󰓓", 89 | "on-click": "exec com.valvesoftware.Steam", 90 | "tooltip": false 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /waybar/scripts/baraction: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . ~/.config/HyprV/hyprv.conf 3 | 4 | #Check the version 5 | VER=$(readlink -f ~/.config/waybar/config.jsonc | cut -d '-' -f1 | cut -d '/' -f8) 6 | 7 | # Check which waybar theme is set 8 | THEMEIS=$(readlink -f ~/.config/waybar/style.css | cut -d '-' -f3) 9 | 10 | #if the theme is not dark then we need to switch to it 11 | if [[ $THEMEIS == "" ]]; then 12 | SWITCHTO="-dark" 13 | MODESTR="Dark" 14 | else 15 | MODESTR="Light" 16 | fi 17 | 18 | #show a message 19 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low "switching to $MODESTR" 20 | 21 | #set the waybar theme 22 | ln -sf ~/.config/HyprV/waybar/style/$VER'-style'$SWITCHTO.css ~/.config/waybar/style.css 23 | 24 | #set the wofi theme 25 | ln -sf ~/.config/HyprV/wofi/style/$VER'-style'$SWITCHTO.css ~/.config/wofi/style.css 26 | 27 | #set the mako theme 28 | ln -sf ~/.config/HyprV/mako/conf/config$SWITCHTO ~/.config/mako/config 29 | 30 | #set the measuring unit 31 | if [[ $SET_MESU == "I" ]]; then 32 | ln -sf ~/.config/HyprV/waybar/conf/mesu-imp.jsonc ~/.config/HyprV/waybar/conf/mesu.jsonc 33 | elif [[ $SET_MESU == "M" ]]; then 34 | ln -sf ~/.config/HyprV/waybar/conf/mesu-met.jsonc ~/.config/HyprV/waybar/conf/mesu.jsonc 35 | fi 36 | 37 | #set the xfce and GTK theme 38 | if [ $VER == "v4" ]; then 39 | xfconf-query -c xsettings -p /Net/IconThemeName -s "Papirus-Dark" 40 | gsettings set org.gnome.desktop.interface icon-theme "Papirus-Dark" 41 | else 42 | xfconf-query -c xsettings -p /Net/IconThemeName -s "Adwaita$SWITCHTO" 43 | gsettings set org.gnome.desktop.interface icon-theme "Adwaita$SWITCHTO" 44 | fi 45 | 46 | xfconf-query -c xsettings -p /Net/ThemeName -s "Adwaita$SWITCHTO" 47 | gsettings set org.gnome.desktop.interface gtk-theme "Adwaita$SWITCHTO" 48 | 49 | 50 | #change the background image and be cool about it ;) 51 | if [ -z $SET_BG ]; then 52 | swww img ~/.config/HyprV/backgrounds/$VER'-background'$SWITCHTO.jpg --transition-fps 60 --transition-type wipe --transition-duration 2 53 | else 54 | swww img $SET_BG --transition-fps 60 --transition-type wipe --transition-duration 2 55 | fi 56 | 57 | #update the sddm image 58 | cp -f ~/.config/HyprV/backgrounds/$VER'-background'$SWITCHTO.jpg /usr/share/sddm/themes/sdt/wallpaper.jpg 59 | 60 | #reset mako 61 | sleep 1 62 | pkill mako 63 | mako & 64 | 65 | #restart the waybar 66 | #killall -SIGUSR2 waybar <-- start causing web brwsers to close so switched to below... 67 | pkill waybar 68 | waybar & 69 | 70 | if [[ $VER == "v4" ]]; then 71 | waybar --config ~/.config/HyprV/waybar/conf/v4-config-bottom.jsonc 72 | fi -------------------------------------------------------------------------------- /startup_browser/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | Startpage 13 | 14 | 15 | 16 |
17 |
18 |
19 |
20 |
21 | background 22 |
23 | 62 |
63 | 75 |
76 |
77 | 78 | 79 | -------------------------------------------------------------------------------- /waybar/style/v4-style.css: -------------------------------------------------------------------------------- 1 | * { 2 | border: none; 3 | border-radius: 0; 4 | font-family: "JetBrainsMono Nerd Font"; 5 | font-weight: bold; 6 | font-size: 16px; 7 | min-height: 0; 8 | ; 9 | } 10 | 11 | window#waybar { 12 | background: #3E423B; 13 | color: #EADFB4; 14 | border: 4px solid #9d6540; 15 | border-radius: 30px; 16 | 17 | } 18 | 19 | tooltip { 20 | background: #9d6540; 21 | opacity: 0.8; 22 | border-radius: 10px; 23 | border-width: 2px; 24 | border-style: solid; 25 | border-color: #1F2544; 26 | } 27 | 28 | tooltip label{ 29 | color: #2b2b2c; 30 | } 31 | 32 | #workspaces { 33 | background: #D6D2B8; 34 | margin: 5px 5px 5px 5px; 35 | padding: 0px 5px 0px 5px; 36 | border-radius: 16px; 37 | border: solid 0px #f4d9e1; 38 | font-weight: normal; 39 | font-style: normal; 40 | } 41 | #workspaces button { 42 | padding: 0px 5px; 43 | border-radius: 16px; 44 | color: #928374; 45 | } 46 | 47 | #workspaces button.active { 48 | color: #D6D2B8; 49 | background-color: transparent; 50 | border-radius: 16px; 51 | } 52 | 53 | #workspaces button:hover { 54 | background-color: #D6D2B8; 55 | color: #3E423B; 56 | border-radius: 10px; 57 | } 58 | 59 | #custom-launch_wofi, 60 | #custom-launch_chrome, 61 | #custom-launch_vim, 62 | #custom-launch_vscode, 63 | #custom-launch_firefox, 64 | #custom-launch_spotify, 65 | #custom-launch_thunar, 66 | #custom-launch_mongo, 67 | #custom-launch_java, 68 | #custom-launch_kitty, 69 | #custom-launch_steam, 70 | #custom-lock_screen, 71 | #custom-launch_discord, 72 | #custom-light_dark, 73 | #custom-power_btn, 74 | #custom-power_profile, 75 | #custom-weather, 76 | #custom-myhyprv, 77 | #window, 78 | #cpu, 79 | #disk, 80 | #custom-updates, 81 | #memory, 82 | #clock, 83 | #battery, 84 | #pulseaudio, 85 | #network, 86 | #tray, 87 | #temperature, 88 | #workspaces, 89 | #idle_inhibitor, 90 | #backlight { 91 | background: transparent; 92 | padding: 5px 5px 5px 5px; 93 | margin: 5px 5px 5px 5px; 94 | border-radius: 8px; 95 | border: solid 0px #f4d9e1; 96 | margin-left: 5px; 97 | opacity: 0.8; 98 | } 99 | 100 | #temperature, #backlight, #custom-myhyprv { 101 | border-radius: 10px 0px 0px 10px; 102 | } 103 | 104 | #bluetooth, #custom-light_dark { 105 | border-radius: 0px 10px 10px 0px; 106 | margin-right: 10px 107 | } 108 | 109 | #temperature.critical { 110 | color: #e92d4d; 111 | } 112 | 113 | #window { 114 | border-radius: 10px; 115 | margin-left: 20px; 116 | margin-right: 20px; 117 | } 118 | #custom-launch_vscode, 119 | #custom-launch_steam, 120 | #custom-launch_discord, 121 | #custom-launch_firefox, 122 | #custom-launch_mongo, 123 | #custom-launch_chrome, 124 | #custom-launch_thunar, 125 | #custom-launch_spotify, 126 | #custom-launch_wofi, 127 | #custom-launch_kitty, 128 | #custom-launch_vim, 129 | #custom-launch_java, 130 | #custom-weather { 131 | border-right: 0px; 132 | font-size: 25px; 133 | margin-right: +15px; 134 | 135 | } 136 | 137 | 138 | 139 | #custom-launch_vim{ 140 | font-size: 30px; 141 | } 142 | 143 | #custom-launch_mongo, 144 | 145 | #custom-launch_java{ 146 | font-size: 33px; 147 | margin-right: 0px; 148 | } 149 | 150 | #custom-launch_steam, 151 | #custom-launch_discord{ 152 | margin-right: +10px; 153 | } -------------------------------------------------------------------------------- /waybar/scripts/volume: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | iDIR="$HOME/.config/HyprV/mako/icons" 4 | 5 | # Get Volume 6 | get_volume() { 7 | volume=$(pamixer --get-volume) 8 | echo "$volume" 9 | } 10 | 11 | # Get icons 12 | get_icon() { 13 | current=$(get_volume) 14 | if [[ "$current" -eq "0" ]]; then 15 | echo "$iDIR/volume-mute.png" 16 | elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then 17 | echo "$iDIR/volume-low.png" 18 | elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then 19 | echo "$iDIR/volume-mid.png" 20 | elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then 21 | echo "$iDIR/volume-high.png" 22 | fi 23 | } 24 | 25 | # Notify 26 | notify_user() { 27 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_icon)" "Volume : $(get_volume) %" 28 | } 29 | 30 | # Increase Volume 31 | inc_volume() { 32 | pamixer -i 5 && notify_user 33 | } 34 | 35 | # Decrease Volume 36 | dec_volume() { 37 | pamixer -d 5 && notify_user 38 | } 39 | 40 | # Toggle Mute 41 | toggle_mute() { 42 | if [ "$(pamixer --get-mute)" == "false" ]; then 43 | pamixer -m && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/volume-mute.png" "Volume Switched OFF" 44 | elif [ "$(pamixer --get-mute)" == "true" ]; then 45 | pamixer -u && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_icon)" "Volume Switched ON" 46 | fi 47 | } 48 | 49 | # Toggle Mic 50 | toggle_mic() { 51 | if [ "$(pamixer --default-source --get-mute)" == "false" ]; then 52 | pamixer --default-source -m && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/microphone-mute.png" "Microphone Switched OFF" 53 | elif [ "$(pamixer --default-source --get-mute)" == "true" ]; then 54 | pamixer -u --default-source u && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/microphone.png" "Microphone Switched ON" 55 | fi 56 | } 57 | # Get icons 58 | get_mic_icon() { 59 | current=$(pamixer --default-source --get-volume) 60 | if [[ "$current" -eq "0" ]]; then 61 | echo "$iDIR/microphone.png" 62 | elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then 63 | echo "$iDIR/microphone.png" 64 | elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then 65 | echo "$iDIR/microphone.png" 66 | elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then 67 | echo "$iDIR/microphone.png" 68 | fi 69 | } 70 | # Notify 71 | notify_mic_user() { 72 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_mic_icon)" "Mic-Level : $(pamixer --default-source --get-volume) %" 73 | } 74 | 75 | # Increase MIC Volume 76 | inc_mic_volume() { 77 | pamixer --default-source -i 5 && notify_mic_user 78 | } 79 | 80 | # Decrease MIC Volume 81 | dec_mic_volume() { 82 | pamixer --default-source -d 5 && notify_mic_user 83 | } 84 | 85 | # Execute accordingly 86 | if [[ "$1" == "--get" ]]; then 87 | get_volume 88 | elif [[ "$1" == "--inc" ]]; then 89 | inc_volume 90 | elif [[ "$1" == "--dec" ]]; then 91 | dec_volume 92 | elif [[ "$1" == "--toggle" ]]; then 93 | toggle_mute 94 | elif [[ "$1" == "--toggle-mic" ]]; then 95 | toggle_mic 96 | elif [[ "$1" == "--get-icon" ]]; then 97 | get_icon 98 | elif [[ "$1" == "--get-mic-icon" ]]; then 99 | get_mic_icon 100 | elif [[ "$1" == "--mic-inc" ]]; then 101 | inc_mic_volume 102 | elif [[ "$1" == "--mic-dec" ]]; then 103 | dec_mic_volume 104 | else 105 | get_volume 106 | fi -------------------------------------------------------------------------------- /waybar/scripts/waybar-wttr.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import json 4 | import requests 5 | from datetime import datetime 6 | 7 | WEATHER_CODES = { 8 | '113': '☀️ ', 9 | '116': '⛅ ', 10 | '119': '☁️ ', 11 | '122': '☁️ ', 12 | '143': '☁️ ', 13 | '176': '🌧️', 14 | '179': '🌧️', 15 | '182': '🌧️', 16 | '185': '🌧️', 17 | '200': '⛈️ ', 18 | '227': '🌨️', 19 | '230': '🌨️', 20 | '248': '☁️ ', 21 | '260': '☁️ ', 22 | '263': '🌧️', 23 | '266': '🌧️', 24 | '281': '🌧️', 25 | '284': '🌧️', 26 | '293': '🌧️', 27 | '296': '🌧️', 28 | '299': '🌧️', 29 | '302': '🌧️', 30 | '305': '🌧️', 31 | '308': '🌧️', 32 | '311': '🌧️', 33 | '314': '🌧️', 34 | '317': '🌧️', 35 | '320': '🌨️', 36 | '323': '🌨️', 37 | '326': '🌨️', 38 | '329': '❄️ ', 39 | '332': '❄️ ', 40 | '335': '❄️ ', 41 | '338': '❄️ ', 42 | '350': '🌧️', 43 | '353': '🌧️', 44 | '356': '🌧️', 45 | '359': '🌧️', 46 | '362': '🌧️', 47 | '365': '🌧️', 48 | '368': '🌧️', 49 | '371': '❄️', 50 | '374': '🌨️', 51 | '377': '🌨️', 52 | '386': '🌨️', 53 | '389': '🌨️', 54 | '392': '🌧️', 55 | '395': '❄️ ' 56 | } 57 | 58 | data = {} 59 | 60 | 61 | weather = requests.get("https://wttr.in/?format=j1").json() 62 | 63 | 64 | def format_time(time): 65 | return time.replace("00", "").zfill(2) 66 | 67 | 68 | def format_temp(temp): 69 | return (hour['FeelsLikeF']+"°").ljust(3) 70 | 71 | 72 | def format_chances(hour): 73 | chances = { 74 | "chanceoffog": "Fog", 75 | "chanceoffrost": "Frost", 76 | "chanceofovercast": "Overcast", 77 | "chanceofrain": "Rain", 78 | "chanceofsnow": "Snow", 79 | "chanceofsunshine": "Sunshine", 80 | "chanceofthunder": "Thunder", 81 | "chanceofwindy": "Wind" 82 | } 83 | 84 | conditions = [] 85 | for event in chances.keys(): 86 | if int(hour[event]) > 0: 87 | conditions.append(chances[event]+" "+hour[event]+"%") 88 | return ", ".join(conditions) 89 | 90 | tempint = int(weather['current_condition'][0]['FeelsLikeF']) 91 | extrachar = '' 92 | if tempint > 0 and tempint < 10: 93 | extrachar = '+' 94 | 95 | 96 | data['text'] = ' '+WEATHER_CODES[weather['current_condition'][0]['weatherCode']] + \ 97 | " "+extrachar+weather['current_condition'][0]['FeelsLikeF']+"°" 98 | 99 | data['tooltip'] = f"{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_F']}°\n" 100 | data['tooltip'] += f"Feels like: {weather['current_condition'][0]['FeelsLikeF']}°\n" 101 | data['tooltip'] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n" 102 | data['tooltip'] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n" 103 | for i, day in enumerate(weather['weather']): 104 | data['tooltip'] += f"\n" 105 | if i == 0: 106 | data['tooltip'] += "Today, " 107 | if i == 1: 108 | data['tooltip'] += "Tomorrow, " 109 | data['tooltip'] += f"{day['date']}\n" 110 | data['tooltip'] += f"⬆️ {day['maxtempF']}° ⬇️ {day['mintempF']}° " 111 | data['tooltip'] += f"🌅 {day['astronomy'][0]['sunrise']} 🌇 {day['astronomy'][0]['sunset']}\n" 112 | for hour in day['hourly']: 113 | if i == 0: 114 | if int(format_time(hour['time'])) < datetime.now().hour-2: 115 | continue 116 | data['tooltip'] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeF'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n" 117 | 118 | 119 | print(json.dumps(data)) 120 | -------------------------------------------------------------------------------- /waybar/scripts/waybar-wttr-c.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import json 4 | import requests 5 | from datetime import datetime 6 | 7 | WEATHER_CODES = { 8 | '113': '☀️ ', 9 | '116': '⛅ ', 10 | '119': '☁️ ', 11 | '122': '☁️ ', 12 | '143': '☁️ ', 13 | '176': '🌧️', 14 | '179': '🌧️', 15 | '182': '🌧️', 16 | '185': '🌧️', 17 | '200': '⛈️ ', 18 | '227': '🌨️', 19 | '230': '🌨️', 20 | '248': '☁️ ', 21 | '260': '☁️ ', 22 | '263': '🌧️', 23 | '266': '🌧️', 24 | '281': '🌧️', 25 | '284': '🌧️', 26 | '293': '🌧️', 27 | '296': '🌧️', 28 | '299': '🌧️', 29 | '302': '🌧️', 30 | '305': '🌧️', 31 | '308': '🌧️', 32 | '311': '🌧️', 33 | '314': '🌧️', 34 | '317': '🌧️', 35 | '320': '🌨️', 36 | '323': '🌨️', 37 | '326': '🌨️', 38 | '329': '❄️ ', 39 | '332': '❄️ ', 40 | '335': '❄️ ', 41 | '338': '❄️ ', 42 | '350': '🌧️', 43 | '353': '🌧️', 44 | '356': '🌧️', 45 | '359': '🌧️', 46 | '362': '🌧️', 47 | '365': '🌧️', 48 | '368': '🌧️', 49 | '371': '❄️', 50 | '374': '🌨️', 51 | '377': '🌨️', 52 | '386': '🌨️', 53 | '389': '🌨️', 54 | '392': '🌧️', 55 | '395': '❄️ ' 56 | } 57 | 58 | data = {} 59 | 60 | 61 | weather = requests.get("https://wttr.in/?format=j1").json() 62 | 63 | 64 | def format_time(time): 65 | return time.replace("00", "").zfill(2) 66 | 67 | 68 | def format_temp(temp): 69 | return (hour['FeelsLikeC']+"°").ljust(3) 70 | 71 | 72 | def format_chances(hour): 73 | chances = { 74 | "chanceoffog": "Fog", 75 | "chanceoffrost": "Frost", 76 | "chanceofovercast": "Overcast", 77 | "chanceofrain": "Rain", 78 | "chanceofsnow": "Snow", 79 | "chanceofsunshine": "Sunshine", 80 | "chanceofthunder": "Thunder", 81 | "chanceofwindy": "Wind" 82 | } 83 | 84 | conditions = [] 85 | for event in chances.keys(): 86 | if int(hour[event]) > 0: 87 | conditions.append(chances[event]+" "+hour[event]+"%") 88 | return ", ".join(conditions) 89 | 90 | tempint = int(weather['current_condition'][0]['FeelsLikeC']) 91 | extrachar = '' 92 | if tempint > 0 and tempint < 10: 93 | extrachar = '+' 94 | 95 | 96 | data['text'] = ' '+WEATHER_CODES[weather['current_condition'][0]['weatherCode']] + \ 97 | " "+extrachar+weather['current_condition'][0]['FeelsLikeC']+"°" 98 | 99 | data['tooltip'] = f"{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}°\n" 100 | data['tooltip'] += f"Feels like: {weather['current_condition'][0]['FeelsLikeC']}°\n" 101 | data['tooltip'] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n" 102 | data['tooltip'] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n" 103 | for i, day in enumerate(weather['weather']): 104 | data['tooltip'] += f"\n" 105 | if i == 0: 106 | data['tooltip'] += "Today, " 107 | if i == 1: 108 | data['tooltip'] += "Tomorrow, " 109 | data['tooltip'] += f"{day['date']}\n" 110 | data['tooltip'] += f"⬆️ {day['maxtempC']}° ⬇️ {day['mintempC']}° " 111 | data['tooltip'] += f"🌅 {day['astronomy'][0]['sunrise']} 🌇 {day['astronomy'][0]['sunset']}\n" 112 | for hour in day['hourly']: 113 | if i == 0: 114 | if int(format_time(hour['time'])) < datetime.now().hour-2: 115 | continue 116 | data['tooltip'] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeC'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n" 117 | 118 | 119 | print(json.dumps(data)) 120 | -------------------------------------------------------------------------------- /hyprv_util: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | . ~/.config/HyprV/hyprv.conf 3 | 4 | get_theme() { 5 | # Check which waybar theme is set 6 | THEMEIS=$(readlink -f ~/.config/waybar/style.css | cut -d '-' -f3) 7 | 8 | #if the theme is not dark then we need to switch to it 9 | if [[ $THEMEIS == "dark.css" ]]; then 10 | SWITCHTO="-dark" 11 | MODESTR="Dark" 12 | else 13 | SWITCHTO="" 14 | MODESTR="Light" 15 | fi 16 | } 17 | 18 | update_theme() { 19 | #set the xfce and GTK theme 20 | if [[ $VER == "v4" || $VERTO == "v4-" ]]; then 21 | xfconf-query -c xsettings -p /Net/IconThemeName -s "Papirus-Dark" 22 | gsettings set org.gnome.desktop.interface icon-theme "Papirus-Dark" 23 | fi 24 | } 25 | 26 | get_ver() { 27 | VER="v3" 28 | } 29 | 30 | restart_waybar() { 31 | #restart the waybar 32 | pkill waybar 33 | waybar & 34 | 35 | get_ver 36 | 37 | if [[ $VER == "v3" ]]; then 38 | waybar --config ~/.config/HyprV/waybar/conf/v4-config-bottom.jsonc 39 | fi 40 | 41 | } 42 | 43 | set_current_background() { 44 | get_theme 45 | get_ver 46 | 47 | if [[ ! -z "$SET_BG" ]]; then 48 | #set the current background 49 | if [[ $THEMEIS == "dark.css" ]]; then 50 | swww img ~/.config/HyprV/backgrounds/$VER'-background-dark.jpg' 51 | else 52 | swww img ~/.config/HyprV/backgrounds/$VER'-background.jpg' 53 | fi 54 | else 55 | swww img $SET_BG 56 | fi 57 | } 58 | 59 | switch_version() { 60 | get_theme 61 | get_ver 62 | case $VER in 63 | v1) 64 | #we are on v1 so switch to v2 65 | VERTO="v2-" 66 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low "switching to HyprV2" 67 | ;; 68 | 69 | v2) 70 | #we are on v2 so switch to v3 71 | VERTO="v3-" 72 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low "switching to HyprV3" 73 | ;; 74 | 75 | v3) 76 | #we are on v3 so switch to v4 77 | VERTO="v4-" 78 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low "switching to HyprV4" 79 | ;; 80 | 81 | v4) 82 | #we are on v4 so switch to v1 83 | VERTO="v1-" 84 | notify-send -h string:x-canonical-private-synchronous:sys-notify -u low "switching to HyprV1" 85 | ;; 86 | 87 | esac 88 | #set the waybar config 89 | ln -sf ~/.config/HyprV/waybar/conf/$VERTO'config.jsonc' ~/.config/waybar/config.jsonc 90 | #set the waybar theme 91 | ln -sf ~/.config/HyprV/waybar/style/$VERTO'style'$SWITCHTO.css ~/.config/waybar/style.css 92 | #set the wofi theme 93 | ln -sf ~/.config/HyprV/wofi/style/$VERTO'style'$SWITCHTO.css ~/.config/wofi/style.css 94 | 95 | #set the background 96 | if [ -z $SET_BG ]; then 97 | swww img ~/.config/HyprV/backgrounds/$VERTO'background'$SWITCHTO.jpg --transition-fps 60 --transition-type wipe --transition-duration 2 98 | else 99 | swww img $SET_BG --transition-fps 60 --transition-type wipe --transition-duration 2 100 | fi 101 | 102 | #update the sddm image 103 | cp -f ~/.config/HyprV/backgrounds/$VERTO'background'$SWITCHTO.jpg /usr/share/sddm/themes/sdt/wallpaper.jpg 104 | 105 | } 106 | 107 | switch_keyboard() { 108 | hyprctl switchxkblayout $SET_KB next 109 | } 110 | 111 | if [[ "$1" == "vswitch" ]]; then 112 | switch_version 113 | update_theme 114 | restart_waybar 115 | elif [[ "$1" == "setbg" ]]; then 116 | set_current_background 117 | update_theme 118 | restart_waybar 119 | elif [[ "$1" == "swkb" ]]; then 120 | switch_keyboard 121 | restart_waybar 122 | fi 123 | 124 | # need to show the version and tooltip 125 | get_ver 126 | 127 | TOOLTIP='Default Keybinds\n'\ 128 | 'SUPER + Q = Start Kitty\n'\ 129 | 'SUPER + F4 = Close Window\n'\ 130 | 'SUPER + L = Lock Screen\n'\ 131 | 'SUPER + M = Logout menu\n'\ 132 | 'SUPER + E = File Manager\n'\ 133 | 'SUPER + V = Toggle Float\n'\ 134 | 'SUPER + SPACE = App Launcher\n'\ 135 | 'SUPER + S = Screenshot\n'\ 136 | 'SUPER + T = Switch HyprV version\n'\ 137 | 'ALT + V = Open clipboard manager' 138 | 139 | echo '{"text": "'$VER'", "tooltip": "'$TOOLTIP'"}' 140 | -------------------------------------------------------------------------------- /waybar/conf/v4-config.jsonc: -------------------------------------------------------------------------------- 1 | [{ 2 | "position": "top", 3 | "layer": "top", 4 | "height": 16, 5 | "margin-top": 0, 6 | "margin-bottom": 0, 7 | "margin-left": 0, 8 | "margin-right": 0, 9 | "modules-left": [ 10 | "custom/power_btn", 11 | "custom/lock_screen", 12 | "hyprland/workspaces" 13 | ], 14 | "modules-center": [ 15 | "idle_inhibitor", 16 | "clock", 17 | "custom/updates" 18 | ], 19 | "modules-right": [ 20 | "cpu", 21 | "pulseaudio", 22 | "pulseaudio#microphone", 23 | "backlight", 24 | "tray", 25 | "temperature", 26 | "custom/power_profile", 27 | "battery", 28 | "hyprland/language", 29 | "custom/myhyprv", 30 | "custom/light_dark" 31 | ], 32 | 33 | "clock": { 34 | "format": " {:%H:%M}", 35 | "tooltip": "true", 36 | "tooltip-format": "{:%Y %B}\n{calendar}", 37 | "format-alt": " {:%d/%m}" 38 | }, 39 | "include": [ 40 | "~/.config/HyprV/waybar/conf/mesu.jsonc", 41 | "~/.config/HyprV/waybar/conf/asus-rog.jsonc", 42 | "~/.config/HyprV/waybar/conf/hyprv-util.jsonc" 43 | ], 44 | 45 | "idle_inhibitor": { 46 | "format": "{icon}", 47 | "format-icons": { 48 | "activated": "󰛐", 49 | "deactivated": "󰛑" 50 | }, 51 | "tooltip": true 52 | }, 53 | 54 | "hyprland/language": { 55 | "interval": 30, 56 | "format": " {}", 57 | "keyboard-name": "logitech-pro-gaming-keyboard", 58 | "on-click": "~/.config/HyprV/hyprv_util swkb", 59 | "signal": 8 60 | }, 61 | 62 | "custom/power_btn": { 63 | "format": "", 64 | "on-click": "sh -c '(sleep 0.5s; wlogout --protocol layer-shell)' & disown", 65 | "tooltip": false 66 | }, 67 | 68 | "custom/lock_screen": { 69 | "format": "", 70 | "on-click": "sh -c '(sleep 0.5s; swaylock)' & disown", 71 | "tooltip": false 72 | }, 73 | 74 | "hyprland/workspaces": { 75 | "disable-scroll": true, 76 | "all-outputs": true, 77 | "on-click": "activate", 78 | "format": "{icon}", 79 | "persistent_workspaces": { 80 | "1": [], 81 | "2": [], 82 | "3": [], 83 | "4": [], 84 | "5": [], 85 | "6": [], 86 | "7": [], 87 | "8": [], 88 | "9": [], 89 | "10": [] 90 | } 91 | }, 92 | 93 | 94 | "cpu": { 95 | "interval": 10, 96 | "format": "", 97 | "max-length": 10, 98 | "format-alt-click": "click-right", 99 | "format-alt": " {usage}%", 100 | "on-click": "kitty --start-as=fullscreen --title btop sh -c 'btop'" 101 | }, 102 | 103 | "battery": { 104 | "states": { 105 | "good": 80, 106 | "warning": 30, 107 | "critical": 20 108 | }, 109 | "format": "{icon}", 110 | "format-charging": " {capacity}%", 111 | "format-plugged": " {capacity}%", 112 | "format-alt-click": "click-right", 113 | "format-alt": "{icon} {capacity}%", 114 | "format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] 115 | }, 116 | 117 | "pulseaudio": { 118 | "format": "{icon}", 119 | "format-muted": "", 120 | "on-click": "~/.config/HyprV/waybar/scripts/volume --toggle", 121 | "on-click-right": "pavucontrol", 122 | "on-scroll-up": "~/.config/HyprV/waybar/scripts/volume --inc", 123 | "on-scroll-down": "~/.config/HyprV/waybar/scripts/volume --dec", 124 | "scroll-step": 5, 125 | "format-icons": { 126 | "headphone": "", 127 | "hands-free": "", 128 | "headset": "", 129 | "phone": "", 130 | "portable": "", 131 | "car": "", 132 | "default": ["", "", ""] 133 | }, 134 | "tooltip": true, 135 | "tooltip-format": "{icon} at {volume}%" 136 | }, 137 | 138 | "pulseaudio#microphone": { 139 | "format": "{format_source}", 140 | "format-source": "", 141 | "format-source-muted": "", 142 | "on-click": "~/.config/HyprV/waybar/scripts/volume --toggle-mic", 143 | "on-click-right": "pavucontrol", 144 | "on-scroll-up": "~/.config/HyprV/waybar/scripts/volume --mic-inc", 145 | "on-scroll-down": "~/.config/HyprV/waybar/scripts/volume --mic-dec", 146 | "scroll-step": 5, 147 | "tooltip": true, 148 | "tooltip-format": " at {volume}%" 149 | }, 150 | 151 | "backlight": { 152 | "device": "intel_backlight", 153 | "format": "{icon}", 154 | "format-alt-click": "click-right", 155 | "format-alt": "{icon} {percent}%", 156 | "format-icons": ["󰃞", "󰃟", "󰃠"], 157 | "on-scroll-up": "~/.config/HyprV/waybar/scripts/brightness --inc", 158 | "on-scroll-down": "~/.config/HyprV/waybar/scripts/brightness --dec" 159 | }, 160 | 161 | "tray": { 162 | "icon-size": 16, 163 | "spacing": 10 164 | }, 165 | 166 | "custom/updates": { 167 | "format": "{}", 168 | "exec": "~/.config/HyprV/waybar/scripts/update-sys", 169 | "on-click": "~/.config/HyprV/waybar/scripts/update-sys update", 170 | "interval": 300, 171 | "tooltip": true 172 | } 173 | }] 174 | 175 | -------------------------------------------------------------------------------- /startup_browser/style.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css2?family=Source+Code+Pro); 2 | :root { 3 | --background-color: #D6D2B8; 4 | --link-hover: #928374; 5 | --link-heading: #9d6540; 6 | --background-glow: 0px 0px 30px #dedbc9; 7 | } 8 | * { 9 | padding: 0; 10 | margin: 0; 11 | } 12 | html { 13 | height: 100vh; 14 | display: flex; 15 | align-items: center; 16 | justify-content: center; 17 | } 18 | body { 19 | background-color: #3E423B; 20 | font-family: "Source Code Pro", monospace; 21 | display: flex; 22 | align-items: center; 23 | justify-content: center; 24 | position: relative; 25 | overflow-x: hidden; 26 | } 27 | .wrapper { 28 | display: flex; 29 | justify-content: center; 30 | align-items: center; 31 | margin-left: 4rem; 32 | margin-top: -1rem; 33 | } 34 | .maincard { 35 | display: flex; 36 | flex-direction: column; 37 | background-color: #3E423B; 38 | margin-top: 10%; 39 | height: 820px; 40 | width: 700px; 41 | backdrop-filter: blur(7px); 42 | box-shadow: 0px 0px 40px rgb(0, 0, 0); 43 | } 44 | .content { 45 | display: flex; 46 | gap: 3rem; 47 | } 48 | .image { 49 | max-width: 50%; 50 | margin-right: 60px; 51 | } 52 | img { 53 | max-height: 700px; 54 | max-width: 500px; 55 | height: 700px; 56 | padding-left: 10px; 57 | width: 450px; 58 | padding-top: 15px; 59 | } 60 | section { 61 | display: flex; 62 | flex-direction: column; 63 | gap: 1rem; 64 | } 65 | .links { 66 | display: flex; 67 | flex-direction: column; 68 | justify-content: space-evenly; 69 | gap: 1.5rem; 70 | width: 300px; 71 | margin-top: 1rem; 72 | padding-top: 5px; 73 | margin-left: 40px; 74 | color: #EADFB4; 75 | font-size: 20px; 76 | font-weight: 100; 77 | border-color: rgba(255, 255, 255, 0); 78 | border-style: solid; 79 | border-width: 2px; 80 | } 81 | .links ul { 82 | display: flex; 83 | flex-direction: column; 84 | gap: 0.12rem; 85 | } 86 | .links h3 { 87 | color: var(--link-heading); 88 | font-weight: 600; 89 | align-items: center; 90 | display: flex; 91 | } 92 | a:hover { 93 | color: var(--link-hover); 94 | transform: scale(2); 95 | margin-bottom: 2px; 96 | font-weight: 500; 97 | } 98 | 99 | a { 100 | padding: 0px; 101 | text-decoration: none; 102 | color: #EADFB4; 103 | } 104 | form { 105 | font-size: 2.5rem; 106 | margin-bottom: 0px; 107 | padding-top: 0px; 108 | border: none; 109 | color: var(--link-heading); 110 | } 111 | 112 | form input { 113 | border: none; 114 | background-color: rgba(107, 102, 255, 0); 115 | color: #D6D2B8; 116 | font-size: 30px; 117 | font-weight: 500; 118 | } 119 | form input:focus { 120 | outline: none; 121 | } 122 | .search { 123 | display: flex; 124 | align-items: center; 125 | margin-top: 1.5rem; 126 | margin-left: 1rem; 127 | } 128 | .bg { 129 | height: 780px; 130 | position: fixed; 131 | width: 700px; 132 | margin-left: -5rem; 133 | margin-top: -2rem; 134 | background-color: var(--background-color); 135 | box-shadow: var(--background-glow); 136 | } 137 | 138 | /* Hamburger Menu */ 139 | .navbar { 140 | position: fixed; 141 | top: 0; 142 | right: 0; 143 | opacity: 0.95; 144 | } 145 | 146 | .navbar-container input[type="checkbox"], 147 | .navbar-container .hamburger-lines { 148 | display: block; 149 | cursor: pointer; 150 | } 151 | 152 | .navbar-container { 153 | display: block; 154 | position: relative; 155 | height: 64px; 156 | } 157 | 158 | .navbar-container input[type="checkbox"] { 159 | position: absolute; 160 | display: block; 161 | height: 32px; 162 | width: 30px; 163 | top: 20px; 164 | left: 20px; 165 | z-index: 5; 166 | opacity: 0; 167 | } 168 | 169 | .navbar-container .hamburger-lines { 170 | cursor: pointer; 171 | display: block; 172 | height: 15px; 173 | width: 20px; 174 | position: absolute; 175 | top: 17px; 176 | left: 20px; 177 | z-index: 2; 178 | display: flex; 179 | flex-direction: column; 180 | justify-content: space-between; 181 | } 182 | 183 | .hamburger-lines { 184 | width: 0.5rem; 185 | height: 1rem; 186 | } 187 | 188 | .navbar-container .hamburger-lines .line { 189 | cursor: pointer; 190 | display: block; 191 | height: 2px; 192 | width: 100%; 193 | border-radius: 10px; 194 | background: rgba(113, 113, 113, 0.503); 195 | } 196 | 197 | .navbar-container .hamburger-lines .line1 { 198 | transform-origin: 0% 0%; 199 | transition: transform 0.4s ease-in-out; 200 | } 201 | 202 | .navbar-container .hamburger-lines .line2 { 203 | transition: transform 0.2s ease-in-out; 204 | } 205 | 206 | .navbar-container .hamburger-lines .line3 { 207 | transform-origin: 0% 100%; 208 | transition: transform 0.4s ease-in-out; 209 | } 210 | 211 | .navbar .menu-items { 212 | padding-top: 100px; 213 | background: rgb(36, 36, 36); 214 | height: 100vh; 215 | max-width: 300px; 216 | transform: translate(150%); 217 | display: flex; 218 | flex-direction: column; 219 | margin-left: -40px; 220 | padding-left: 50px; 221 | transition: transform 0.5s ease-in-out; 222 | box-shadow: 5px 0px 10px 0px var(--background-color); 223 | list-style: none; 224 | } 225 | 226 | .navbar .menu-items li { 227 | margin-bottom: 1.5rem; 228 | font-size: 1rem; 229 | font-weight: 500; 230 | padding-right: 2rem; 231 | } 232 | 233 | .navbar .menu-items li a { 234 | color: var(--background-color); 235 | } 236 | 237 | .navbar .menu-items li a:hover { 238 | cursor: pointer; 239 | color: var(--link-hover); 240 | } 241 | 242 | .navbar-container input[type="checkbox"]:checked ~ .menu-items { 243 | transform: translateX(0em); 244 | } 245 | 246 | .navbar-container input[type="checkbox"]:checked ~ .hamburger-lines .line1 { 247 | transform: rotate(35deg); 248 | } 249 | 250 | .navbar-container input[type="checkbox"]:checked ~ .hamburger-lines .line2 { 251 | transform: scaleY(0); 252 | } 253 | 254 | .navbar-container input[type="checkbox"]:checked ~ .hamburger-lines .line3 { 255 | transform: rotate(-35deg); 256 | } -------------------------------------------------------------------------------- /hyprland.conf: -------------------------------------------------------------------------------- 1 | # Setup monitors 2 | # See https://wiki.hyprland.org/Configuring/Monitors/ 3 | monitor=,preferred,auto,1 4 | 5 | # Dual monitor example on G15 Strix 6 | # eDP-1 is the built in monitor while DP-1 is external 7 | # Both monitors here are at 1440 and 165Hz 8 | # DP-1 is on the left and eDP-1 is on the right 9 | #monitor=DP-1,2560x1440@165,0x0,1 10 | #monitor=eDP-1,2560x1440@165,2560x0,1 11 | 12 | # See https://wiki.hyprland.org/Configuring/Keywords/ for more 13 | 14 | # Execute your favorite apps at launch 15 | exec-once = ~/.config/hypr/xdg-portal-hyprland 16 | exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP 17 | exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP 18 | exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 19 | exec-once = swww init 20 | exec = waybar 21 | exec-once = mako 22 | exec-once = blueman-applet 23 | exec-once = nm-applet --indicator 24 | exec-once = wl-paste --watch cliphist store 25 | exec = ~/.config/HyprV/hyprv_util setbg 26 | 27 | # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ 28 | input { 29 | kb_layout = us 30 | kb_variant = 31 | kb_model = 32 | kb_options = 33 | kb_rules = 34 | 35 | follow_mouse = 1 36 | 37 | touchpad { 38 | natural_scroll = no 39 | } 40 | 41 | sensitivity = 0 # -1.0 - 1.0, 0 means no modification. 42 | } 43 | 44 | xwayland { 45 | force_zero_scaling = false 46 | } 47 | 48 | general { 49 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 50 | 51 | gaps_in = 5 52 | gaps_out = 5 53 | border_size = 4 54 | col.active_border = rgba(B1AC96ff) 55 | #col.active_border=rgb(704264) 56 | col.inactive_border = rgb(1F2544) 57 | 58 | layout = dwindle 59 | } 60 | 61 | misc { 62 | disable_hyprland_logo = yes 63 | } 64 | 65 | decoration { 66 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 67 | 68 | rounding = 4 69 | 70 | blur { 71 | enabled = true 72 | size = 7 73 | passes = 4 74 | new_optimizations = true 75 | } 76 | 77 | blurls = lockscreen 78 | 79 | drop_shadow = no 80 | shadow_range = 15 81 | shadow_render_power = 3 82 | col.shadow = rgb(31748f) 83 | } 84 | 85 | animations { 86 | enabled = yes 87 | bezier = overshot, 0.13, 0.99, 0.29, 1.1 88 | animation = windows, 1, 7, overshot, slide 89 | animation = windowsIn, 1, 7, overshot, slide 90 | animation = windowsOut, 1, 7, overshot, slide 91 | animation = windowsMove, 1, 7, overshot, slide 92 | animation = border, 1, 10, default 93 | animation = fade, 1, 7, overshot, 94 | animation = workspaces, 1, 6, overshot, slidevert 95 | } 96 | 97 | dwindle { 98 | # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more 99 | pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below 100 | preserve_split = yes # you probably want this 101 | smart_resizing = yes 102 | } 103 | 104 | master { 105 | # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more 106 | new_is_master = true 107 | always_center_master = true 108 | } 109 | 110 | gestures { 111 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 112 | workspace_swipe = off 113 | } 114 | 115 | # Example per-device config 116 | # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more 117 | 118 | # Example windowrule v1 119 | #windowrule = float, ^(kitty)$ 120 | windowrule = float,^(pavucontrol)$ 121 | windowrule = float,^(blueman-manager)$ 122 | windowrule = float,^(nm-connection-editor)$ 123 | windowrule = float,^(chromium)$ 124 | windowrule = float,^(thunar)$ 125 | windowrule = float, title:^(btop)$ 126 | windowrule = float, title:^(update-sys)$ 127 | 128 | # Example windowrule v2 129 | # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ 130 | # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more 131 | # rules below would make the specific app transparent 132 | windowrulev2 = opacity 0.8 0.8,class:^(kitty)$ 133 | windowrulev2 = animation popin,class:^(kitty)$,title:^(update-sys)$ 134 | windowrulev2 = animation popin,class:^(thunar)$ 135 | windowrulev2 = opacity 0.8 0.8,class:^(thunar)$ 136 | windowrulev2 = opacity 0.8 0.8,class:^(VSCodium)$ 137 | windowrulev2 = animation popin,class:^(chromium)$ 138 | windowrulev2 = move cursor -3% -105%,class:^(wofi)$ 139 | windowrulev2 = noanim,class:^(wofi)$ 140 | windowrulev2 = opacity 0.8 0.6,class:^(wofi)$ 141 | 142 | 143 | # See https://wiki.hyprland.org/Configuring/Keywords/ for more 144 | $mainMod = SUPER 145 | 146 | # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more 147 | bind = $mainMod, Q, exec, kitty #open the terminal 148 | bind = $mainMod, F4, killactive, # close the active window 149 | bind = $mainMod, L, exec, swaylock # Lock the screen 150 | bind = $mainMod, M, exec, wlogout --protocol layer-shell # show the logout window 151 | bind = $mainMod SHIFT, M, exit, # Exit Hyprland all together no (force quit Hyprland) 152 | bind = $mainMod, E, exec, thunar # Show the graphical file browser 153 | bind = $mainMod, V, togglefloating, # Allow a window to float 154 | bind = $mainMod, SPACE, exec, wofi --hide-scroll # Show the graphical app launcher 155 | bind = $mainMod, P, pseudo, # dwindle 156 | bind = $mainMod, J, togglesplit, # dwindle 157 | bind = $mainMod, S, exec, grim -g "$(slurp)" - | swappy -f - # take a screenshot 158 | bind = ALT, V, exec, cliphist list | wofi -dmenu | cliphist decode | wl-copy # open clipboard manager 159 | bind = $mainMod, T, exec, ~/.config/HyprV/hyprv_util vswitch # switch HyprV version 160 | 161 | # Move focus with mainMod + arrow keys 162 | bind = $mainMod, left, movefocus, l 163 | bind = $mainMod, right, movefocus, r 164 | bind = $mainMod, up, movefocus, u 165 | bind = $mainMod, down, movefocus, d 166 | 167 | # Switch workspaces with mainMod + [0-9] 168 | bind = $mainMod, 1, workspace, 1 169 | bind = $mainMod, 2, workspace, 2 170 | bind = $mainMod, 3, workspace, 3 171 | bind = $mainMod, 4, workspace, 4 172 | bind = $mainMod, 5, workspace, 5 173 | bind = $mainMod, 6, workspace, 6 174 | bind = $mainMod, 7, workspace, 7 175 | bind = $mainMod, 8, workspace, 8 176 | bind = $mainMod, 9, workspace, 9 177 | bind = $mainMod, 0, workspace, 10 178 | 179 | # Move active window to a workspace with mainMod + SHIFT + [0-9] 180 | bind = $mainMod SHIFT, 1, movetoworkspace, 1 181 | bind = $mainMod SHIFT, 2, movetoworkspace, 2 182 | bind = $mainMod SHIFT, 3, movetoworkspace, 3 183 | bind = $mainMod SHIFT, 4, movetoworkspace, 4 184 | bind = $mainMod SHIFT, 5, movetoworkspace, 5 185 | bind = $mainMod SHIFT, 6, movetoworkspace, 6 186 | bind = $mainMod SHIFT, 7, movetoworkspace, 7 187 | bind = $mainMod SHIFT, 8, movetoworkspace, 8 188 | bind = $mainMod SHIFT, 9, movetoworkspace, 9 189 | bind = $mainMod SHIFT, 0, movetoworkspace, 10 190 | 191 | # Scroll through existing workspaces with mainMod + scroll 192 | bind = $mainMod, mouse_down, workspace, e+1 193 | bind = $mainMod, mouse_up, workspace, e-1 194 | 195 | # Move/resize windows with mainMod + LMB/RMB and dragging 196 | bindm = $mainMod, mouse:272, movewindow 197 | bindm = $mainMod, mouse:273, resizewindow 198 | 199 | # Source a file (multi-file configs) 200 | # source = ~/.config/hypr/myColors.conf 201 | source = ~/.config/hypr/media-binds.conf 202 | source = ~/.config/hypr/env_var.conf 203 | source = ~/.config/hypr/env_var_nvidia.conf 204 | 205 | env = LIBVA_DRIVER_NAME,nvidia 206 | env = XDG_SESSION_TYPE,wayland 207 | env = GBM_BACKEND,nvidia-drm 208 | env = __GLX_VENDOR_LIBRARY_NAME,nvidia 209 | env = WLR_NO_HARDWARE_CURSORS,1 210 | --------------------------------------------------------------------------------