├── 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 | 
14 | 
15 |
16 | ## If you like it, you can support me here:
17 |
18 |
19 |
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 |

22 |
23 |
62 |
63 |
64 |
74 |
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 |
--------------------------------------------------------------------------------