├── README.md
├── hypr
├── hong-kong-night.jpg
├── hyprland.conf
└── xdg-portal-hyprland
├── kitty
├── kitty.conf
└── mocha.conf
├── mako
└── config
├── set-hypr
├── starship.toml
├── swaylock
└── config
├── waybar
├── config.jsonc
├── scripts
│ └── waybar-wttr.py
└── style.css
└── wofi
├── config
└── style.css
/README.md:
--------------------------------------------------------------------------------
1 | # hyprland
2 | collection of dot config files for hyprland with a simple install script for a fresh Arch linux with yay
3 |
4 | You can grab the config files and install packages by hand with this commnad
5 | ```
6 | yay -S hyprland-bin kitty waybar-hyprland \
7 | swaybg swaylock-effects wofi wlogout mako thunar \
8 | ttf-jetbrains-mono-nerd noto-fonts-emoji \
9 | polkit-gnome python-requests starship \
10 | swappy grim slurp pamixer brightnessctl gvfs \
11 | bluez bluez-utils lxappearance xfce4-settings \
12 | dracula-gtk-theme dracula-icons-git xdg-desktop-portal-hyprland-git
13 | ```
14 |
15 | Or you can use the attached script "set-hypr" to install everything for you.
16 |
--------------------------------------------------------------------------------
/hypr/hong-kong-night.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SolDoesTech/hyprland/a7f11b3e3e4beb2bdbf7b081adf6ce147e66cc7b/hypr/hong-kong-night.jpg
--------------------------------------------------------------------------------
/hypr/hyprland.conf:
--------------------------------------------------------------------------------
1 | # Setup monitors
2 | # See https://wiki.hyprland.org/Configuring/Monitors/
3 | monitor=,preferred,auto,auto
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 = waybar
20 | exec = swaybg -m fill -i ~/.config/hypr/hong-kong-night.jpg
21 |
22 | # Source a file (multi-file configs)
23 | # source = ~/.config/hypr/myColors.conf
24 |
25 | # For all categories, see https://wiki.hyprland.org/Configuring/Variables/
26 | input {
27 | kb_layout = us
28 | kb_variant =
29 | kb_model =
30 | kb_options =
31 | kb_rules =
32 |
33 | follow_mouse = 1
34 |
35 | touchpad {
36 | natural_scroll = no
37 | }
38 |
39 | sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
40 | }
41 |
42 | general {
43 | # See https://wiki.hyprland.org/Configuring/Variables/ for more
44 |
45 | gaps_in = 5
46 | gaps_out = 20
47 | border_size = 2
48 | #col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
49 | col.active_border=rgb(cdd6f4)
50 | col.inactive_border = rgba(595959aa)
51 |
52 | layout = dwindle
53 | }
54 |
55 | misc {
56 | disable_hyprland_logo = yes
57 | }
58 |
59 | decoration {
60 | # See https://wiki.hyprland.org/Configuring/Variables/ for more
61 |
62 | rounding = 10
63 |
64 | blur {
65 | enabled = true
66 | size = 7
67 | passes = 3
68 | }
69 |
70 | drop_shadow = yes
71 | shadow_range = 4
72 | shadow_render_power = 3
73 | col.shadow = rgba(1a1a1aee)
74 | }
75 |
76 | animations {
77 | enabled = yes
78 |
79 | # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
80 |
81 | bezier = myBezier, 0.05, 0.9, 0.1, 1.05
82 |
83 | animation = windows, 1, 7, myBezier
84 | animation = windowsOut, 1, 7, default, popin 80%
85 | animation = border, 1, 10, default
86 | animation = fade, 1, 7, default
87 | animation = workspaces, 1, 6, default
88 | }
89 |
90 | dwindle {
91 | # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
92 | pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
93 | preserve_split = yes # you probably want this
94 | }
95 |
96 | master {
97 | # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
98 | new_is_master = true
99 | }
100 |
101 | gestures {
102 | # See https://wiki.hyprland.org/Configuring/Variables/ for more
103 | workspace_swipe = off
104 | }
105 |
106 | # Example per-device config
107 | # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
108 | device:epic mouse V1 {
109 | sensitivity = -0.5
110 | }
111 |
112 | # Example windowrule v1
113 | # windowrule = float, ^(kitty)$
114 | # Example windowrule v2
115 | # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
116 | # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
117 | # rules below would make the specific app transparent
118 | windowrulev2 = opacity 0.8 0.8,class:^(kitty)$
119 | windowrulev2 = opacity 0.8 0.8,class:^(thunar)$
120 | # windowrulev2 = opacity 0.8 0.8,class:^(chromium)$
121 | # windowrulev2 = opacity 0.8 0.8,class:^(Code)$
122 |
123 | # See https://wiki.hyprland.org/Configuring/Keywords/ for more
124 | $mainMod = SUPER
125 |
126 | # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
127 | bind = $mainMod, Q, exec, kitty #open the terminal
128 | bind = $mainMod SHIFT, X, killactive, # close the active window
129 | bind = $mainMod, L, exec, swaylock # Lock the screen
130 | bind = $mainMod, M, exec, wlogout --protocol layer-shell # show the logout window
131 | bind = $mainMod SHIFT, M, exit, # Exit Hyprland all together no (force quit Hyprland)
132 | bind = $mainMod, E, exec, thunar # Show the graphical file browser
133 | bind = $mainMod, V, togglefloating, # Allow a window to float
134 | bind = $mainMod, SPACE, exec, wofi # Show the graphicall app launcher
135 | bind = $mainMod, P, pseudo, # dwindle
136 | bind = $mainMod, J, togglesplit, # dwindle
137 | bind = $mainMod, S, exec, grim -g "$(slurp)" - | swappy -f - # take a screenshot
138 |
139 | # ROG G15 Strix (2021) Specific binds
140 | bind = ,156, exec, rog-control-center # ASUS Armory crate key
141 | bind = ,211, exec, asusctl profile -n; pkill -SIGRTMIN+8 waybar # Fan Profile key switch between power profiles
142 | bind = ,121, exec, pamixer -t # Speaker Mute FN+F1
143 | bind = ,122, exec, pamixer -d 5 # Volume lower key
144 | bind = ,123, exec, pamixer -i 5 # Volume Higher key
145 | bind = ,256, exec, pamixer --default-source -t # Mic mute key
146 | bind = ,232, exec, brightnessctl set 10%- # Screen brightness down FN+F7
147 | bind = ,233, exec, brightnessctl set 10%+ # Screen brightness up FN+F8
148 | bind = ,237, exec, brightnessctl -d asus::kbd_backlight set 33%- # Keyboard brightness down FN+F2
149 | bind = ,238, exec, brightnessctl -d asus::kbd_backlight set 33%+ # Keyboard brightnes up FN+F3
150 | bind = ,210, exec, asusctl led-mode -n # Switch keyboard RGB profile FN+F4
151 |
152 | # Move focus with mainMod + arrow keys
153 | bind = $mainMod, left, movefocus, l
154 | bind = $mainMod, right, movefocus, r
155 | bind = $mainMod, up, movefocus, u
156 | bind = $mainMod, down, movefocus, d
157 |
158 | # Switch workspaces with mainMod + [0-9]
159 | bind = $mainMod, 1, workspace, 1
160 | bind = $mainMod, 2, workspace, 2
161 | bind = $mainMod, 3, workspace, 3
162 | bind = $mainMod, 4, workspace, 4
163 | bind = $mainMod, 5, workspace, 5
164 | bind = $mainMod, 6, workspace, 6
165 | bind = $mainMod, 7, workspace, 7
166 | bind = $mainMod, 8, workspace, 8
167 | bind = $mainMod, 9, workspace, 9
168 | bind = $mainMod, 0, workspace, 10
169 |
170 | # Move active window to a workspace with mainMod + SHIFT + [0-9]
171 | bind = $mainMod SHIFT, 1, movetoworkspace, 1
172 | bind = $mainMod SHIFT, 2, movetoworkspace, 2
173 | bind = $mainMod SHIFT, 3, movetoworkspace, 3
174 | bind = $mainMod SHIFT, 4, movetoworkspace, 4
175 | bind = $mainMod SHIFT, 5, movetoworkspace, 5
176 | bind = $mainMod SHIFT, 6, movetoworkspace, 6
177 | bind = $mainMod SHIFT, 7, movetoworkspace, 7
178 | bind = $mainMod SHIFT, 8, movetoworkspace, 8
179 | bind = $mainMod SHIFT, 9, movetoworkspace, 9
180 | bind = $mainMod SHIFT, 0, movetoworkspace, 10
181 |
182 | # Scroll through existing workspaces with mainMod + scroll
183 | bind = $mainMod, mouse_down, workspace, e+1
184 | bind = $mainMod, mouse_up, workspace, e-1
185 |
186 | # Move/resize windows with mainMod + LMB/RMB and dragging
187 | bindm = $mainMod, mouse:272, movewindow
188 | bindm = $mainMod, mouse:273, resizewindow
189 |
--------------------------------------------------------------------------------
/hypr/xdg-portal-hyprland:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | sleep 1
3 | killall xdg-desktop-portal-hyprland
4 | killall xdg-desktop-portal-wlr
5 | killall xdg-desktop-portal
6 | /usr/lib/xdg-desktop-portal-hyprland &
7 | sleep 2
8 | /usr/lib/xdg-desktop-portal &
9 |
--------------------------------------------------------------------------------
/kitty/kitty.conf:
--------------------------------------------------------------------------------
1 | include ./mocha.conf
2 | font_family jetbrains mono nerd font
3 | font_size 15
4 | bold_font auto
5 | italic_font auto
6 | bold_italic_font auto
7 | mouse_hide_wait 2.0
8 | cursor_shape block
9 | url_color #0087bd
10 | url_style dotted
11 | #Close the terminal without confirmation
12 | confirm_os_window_close 0
13 | background_opacity 0.95
14 |
--------------------------------------------------------------------------------
/kitty/mocha.conf:
--------------------------------------------------------------------------------
1 | # vim:ft=kitty
2 |
3 | ## name: Catppuccin-Mocha
4 | ## author: Pocco81 (https://github.com/Pocco81)
5 | ## license: MIT
6 | ## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf
7 | ## blurb: Soothing pastel theme for the high-spirited!
8 |
9 |
10 |
11 | # The basic colors
12 | foreground #CDD6F4
13 | background #1E1E2E
14 | selection_foreground #1E1E2E
15 | selection_background #F5E0DC
16 |
17 | # Cursor colors
18 | cursor #F5E0DC
19 | cursor_text_color #1E1E2E
20 |
21 | # URL underline color when hovering with mouse
22 | url_color #F5E0DC
23 |
24 | # Kitty window border colors
25 | active_border_color #B4BEFE
26 | inactive_border_color #6C7086
27 | bell_border_color #F9E2AF
28 |
29 | # OS Window titlebar colors
30 | wayland_titlebar_color system
31 | macos_titlebar_color system
32 |
33 | # Tab bar colors
34 | active_tab_foreground #11111B
35 | active_tab_background #CBA6F7
36 | inactive_tab_foreground #CDD6F4
37 | inactive_tab_background #181825
38 | tab_bar_background #11111B
39 |
40 | # Colors for marks (marked text in the terminal)
41 | mark1_foreground #1E1E2E
42 | mark1_background #B4BEFE
43 | mark2_foreground #1E1E2E
44 | mark2_background #CBA6F7
45 | mark3_foreground #1E1E2E
46 | mark3_background #74C7EC
47 |
48 | # The 16 terminal colors
49 |
50 | # black
51 | color0 #45475A
52 | color8 #585B70
53 |
54 | # red
55 | color1 #F38BA8
56 | color9 #F38BA8
57 |
58 | # green
59 | color2 #A6E3A1
60 | color10 #A6E3A1
61 |
62 | # yellow
63 | color3 #F9E2AF
64 | color11 #F9E2AF
65 |
66 | # blue
67 | color4 #89B4FA
68 | color12 #89B4FA
69 |
70 | # magenta
71 | color5 #F5C2E7
72 | color13 #F5C2E7
73 |
74 | # cyan
75 | color6 #94E2D5
76 | color14 #94E2D5
77 |
78 | # white
79 | color7 #BAC2DE
80 | color15 #A6ADC8
81 |
--------------------------------------------------------------------------------
/mako/config:
--------------------------------------------------------------------------------
1 | sort=-time
2 | layer=overlay
3 | background-color=#2e3440
4 | width=300
5 | height=110
6 | border-size=2
7 | border-color=#88c0d0
8 | border-radius=15
9 | icons=0
10 | max-icon-size=64
11 | default-timeout=5000
12 | ignore-timeout=1
13 | font=monospace 14
14 |
15 | [urgency=low]
16 | border-color=#cccccc
17 |
18 | [urgency=normal]
19 | border-color=#d08770
20 |
21 | [urgency=high]
22 | border-color=#bf616a
23 | default-timeout=0
24 |
25 | [category=mpd]
26 | default-timeout=2000
27 | group-by=category
28 |
29 |
--------------------------------------------------------------------------------
/set-hypr:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # The follwoing will attempt to install all needed packages to run Hyprland
4 | # This is a quick and dirty script there are no error checking
5 | # This script is meant to run on a clean fresh system
6 | #
7 | # Below is a list of the packages that would be installed
8 | #
9 | # hyprland: This is the Hyprland compositor
10 | # kitty: This is the default terminal
11 | # waybar: Waybar now has hyprland support
12 | # swaybg: This is used to set a desktop background image
13 | # swaylock-effects: This allows for the locking of the desktop its a fork that adds some editional visual effects
14 | # wofi: This is an application launcher menu
15 | # wlogout: This is a logout menu that allows for shutdown, reboot and sleep
16 | # mako: This is a graphical notification daemon
17 | # thunar: This is a graphical file manager
18 | # ttf-jetbrains-mono-nerd: Som nerd fonts for icons and overall look
19 | # noto-fonts-emoji: fonts needed by the weather script in the top bar
20 | # polkit-gnome: needed to get superuser access on some graphical appliaction
21 | # python-requests: needed for the weather module script to execute
22 | # starship: allows to customize the shell prompt
23 | # swappy: This is a screenshot editor tool
24 | # grim: This is a screenshot tool it grabs images from a Wayland compositor
25 | # slurp: This helps with screenshots, it selects a region in a Wayland compositor
26 | # pamixer: This helps with audio settings such as volume
27 | # brightnessctl: used to control monitor bright level
28 | # gvfs: adds missing functionality to thunar such as automount usb drives
29 | # bluez: the bluetooth service
30 | # bluez-utils: command line utilities to interact with bluettoth devices
31 | # lxappearance: used to set GTK theme
32 | # xfce4-settings: set of tools for xfce, needed to set GTK theme
33 | # dracula-gtk-theme: the Dracula theme, it fits the overall look and feel
34 | # dracula-icons-git" set of icons to go with the Dracula theme
35 | # xdg-desktop-portal-hyprland: xdg-desktop-portal backend for hyprland
36 |
37 | #### Check for yay ####
38 | ISYAY=/sbin/yay
39 | if [ -f "$ISYAY" ]; then
40 | echo -e "yay was located, moving on.\n"
41 | yay -Suy
42 | else
43 | echo -e "yay was not located, please install yay. Exiting script.\n"
44 | exit
45 | fi
46 |
47 | ### Disable wifi powersave mode ###
48 | read -n1 -rep 'Would you like to disable wifi powersave? (y,n)' WIFI
49 | if [[ $WIFI == "Y" || $WIFI == "y" ]]; then
50 | LOC="/etc/NetworkManager/conf.d/wifi-powersave.conf"
51 | echo -e "The following has been added to $LOC.\n"
52 | echo -e "[connection]\nwifi.powersave = 2" | sudo tee -a $LOC
53 | echo -e "\n"
54 | echo -e "Restarting NetworkManager service...\n"
55 | sudo systemctl restart NetworkManager
56 | sleep 3
57 | fi
58 |
59 | ### Install all of the above pacakges ####
60 | read -n1 -rep 'Would you like to install the packages? (y,n)' INST
61 | if [[ $INST == "Y" || $INST == "y" ]]; then
62 | yay -S --noconfirm hyprland kitty waybar \
63 | swaybg swaylock-effects wofi wlogout mako thunar \
64 | ttf-jetbrains-mono-nerd noto-fonts-emoji \
65 | polkit-gnome python-requests starship \
66 | swappy grim slurp pamixer brightnessctl gvfs \
67 | bluez bluez-utils lxappearance xfce4-settings \
68 | dracula-gtk-theme dracula-icons-git xdg-desktop-portal-hyprland
69 |
70 | # Start the bluetooth service
71 | echo -e "Starting the Bluetooth Service...\n"
72 | sudo systemctl enable --now bluetooth.service
73 | sleep 2
74 |
75 | # Clean out other portals
76 | echo -e "Cleaning out conflicting xdg portals...\n"
77 | yay -R --noconfirm xdg-desktop-portal-gnome xdg-desktop-portal-gtk
78 | fi
79 |
80 | ### Copy Config Files ###
81 | read -n1 -rep 'Would you like to copy config files? (y,n)' CFG
82 | if [[ $CFG == "Y" || $CFG == "y" ]]; then
83 | echo -e "Copying config files...\n"
84 | cp -R hypr ~/.config/
85 | cp -R kitty ~/.config/
86 | cp -R mako ~/.config/
87 | cp -R waybar ~/.config/
88 | cp -R swaylock ~/.config/
89 | cp -R wofi ~/.config/
90 |
91 | # Set some files as exacutable
92 | chmod +x ~/.config/hypr/xdg-portal-hyprland
93 | chmod +x ~/.config/waybar/scripts/waybar-wttr.py
94 | fi
95 |
96 | ### Install teh starship shell ###
97 | read -n1 -rep 'Would you like to install the starship shell? (y,n)' STAR
98 | if [[ $STAR == "Y" || $STAR == "y" ]]; then
99 | # install the starship shell
100 | echo -e "Updating .bashrc...\n"
101 | echo -e '\neval "$(starship init bash)"' >> ~/.bashrc
102 | echo -e "copying starship config file to ~/.confg ...\n"
103 | cp starship.toml ~/.config/
104 | fi
105 |
106 | ### Install software for Asus ROG laptops ###
107 | read -n1 -rep 'Would you like to install Asus ROG software support? (y,n)' ROG
108 | if [[ $ROG == "Y" || $ROG == "y" ]]; then
109 | echo -e "Adding Keys... \n"
110 | sudo pacman-key --recv-keys 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
111 | sudo pacman-key --finger 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
112 | sudo pacman-key --lsign-key 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
113 | sudo pacman-key --finger 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
114 |
115 | LOC="/etc/pacman.conf"
116 | echo -e "Updating $LOC with g14 repo.\n"
117 | echo -e "\n[g14]\nServer = https://arch.asus-linux.org" | sudo tee -a $LOC
118 | echo -e "\n"
119 | echo -e "Update the system...\n"
120 | sudo pacman -Suy
121 |
122 | echo -e "Installing ROG pacakges...\n"
123 | sudo pacman -S --noconfirm asusctl supergfxctl rog-control-center
124 | echo -e "Activating ROG services...\n"
125 | sudo systemctl enable --now power-profiles-daemon.service
126 | sleep 2
127 | sudo systemctl enable --now supergfxd
128 | sleep 2
129 | fi
130 |
131 | ### Script is done ###
132 | echo -e "Script had completed.\n"
133 | echo -e "You can start Hyprland by typing Hyprland (note the capital H).\n"
134 | read -n1 -rep 'Would you like to start Hyprland now? (y,n)' HYP
135 | if [[ $HYP == "Y" || $HYP == "y" ]]; then
136 | exec Hyprland
137 | else
138 | exit
139 | fi
140 |
--------------------------------------------------------------------------------
/starship.toml:
--------------------------------------------------------------------------------
1 | format = """
2 | [░▒▓](#a3aed2)\
3 | [ ](bg:#a3aed2 fg:#090c0c)\
4 | [](bg:#769ff0 fg:#a3aed2)\
5 | $directory\
6 | [](fg:#769ff0 bg:#394260)\
7 | $git_branch\
8 | $git_status\
9 | [](fg:#394260 bg:#212736)\
10 | $nodejs\
11 | $rust\
12 | $golang\
13 | $php\
14 | [](fg:#212736 bg:#1d2230)\
15 | $time\
16 | [ ](fg:#1d2230)\
17 | \n$character"""
18 |
19 | [directory]
20 | style = "fg:#e3e5e5 bg:#769ff0"
21 | format = "[ $path ]($style)"
22 | truncation_length = 3
23 | truncation_symbol = "…/"
24 |
25 | [directory.substitutions]
26 | "Documents" = " "
27 | "Downloads" = " "
28 | "Music" = " "
29 | "Pictures" = " "
30 |
31 | [git_branch]
32 | symbol = ""
33 | style = "bg:#394260"
34 | format = '[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)'
35 |
36 | [git_status]
37 | style = "bg:#394260"
38 | format = '[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)'
39 |
40 | [nodejs]
41 | symbol = ""
42 | style = "bg:#212736"
43 | format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
44 |
45 | [rust]
46 | symbol = ""
47 | style = "bg:#212736"
48 | format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
49 |
50 | [golang]
51 | symbol = "ﳑ"
52 | style = "bg:#212736"
53 | format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
54 |
55 | [php]
56 | symbol = ""
57 | style = "bg:#212736"
58 | format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
59 |
60 | [time]
61 | disabled = true
62 | time_format = "%R" # Hour:Minute Format
63 | style = "bg:#1d2230"
64 | format = '[[ $time ](fg:#a0a9cb bg:#1d2230)]($style)'
65 |
66 |
--------------------------------------------------------------------------------
/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=1f1d2e80
8 | font="Inter"
9 | indicator
10 | indicator-radius=200
11 | indicator-thickness=20
12 | line-color=1f1d2e
13 | ring-color=191724
14 | inside-color=1f1d2e
15 | key-hl-color=eb6f92
16 | separator-color=00000000
17 | text-color=e0def4
18 | text-caps-lock-color=""
19 | line-ver-color=eb6f92
20 | ring-ver-color=eb6f92
21 | inside-ver-color=1f1d2e
22 | text-ver-color=e0def4
23 | ring-wrong-color=31748f
24 | text-wrong-color=31748f
25 | inside-wrong-color=1f1d2e
26 | inside-clear-color=1f1d2e
27 | text-clear-color=e0def4
28 | ring-clear-color=9ccfd8
29 | line-clear-color=1f1d2e
30 | line-wrong-color=1f1d2e
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=0.2
38 | ignore-empty-password
39 |
--------------------------------------------------------------------------------
/waybar/config.jsonc:
--------------------------------------------------------------------------------
1 | {
2 | "layer": "top",
3 | "position": "top",
4 | "mod": "dock",
5 | "exclusive": true,
6 | "passthrough": false,
7 | "gtk-layer-shell": true,
8 | "height": 50,
9 | "modules-left": ["clock","custom/weather","wlr/workspaces"],
10 | "modules-center": ["hyprland/window"],
11 | "modules-right": ["network", "bluetooth", "temperature","custom/power_profile","battery","backlight","pulseaudio","pulseaudio#microphone","tray"],
12 | "hyprland/window": {
13 | "format": "{}"
14 | },
15 |
16 | "wlr/workspaces": {
17 | "disable-scroll": true,
18 | "all-outputs": true,
19 | "on-click": "activate",
20 | "persistent_workspaces": {
21 | "1": [],
22 | "2": [],
23 | "3": [],
24 | "4": [],
25 | "5": [],
26 | "6": [],
27 | "7": [],
28 | "8": [],
29 | "9": [],
30 | "10": []
31 | }
32 | },
33 |
34 | "custom/power_profile":{
35 | //shows the current power profile and switches to next on click
36 | "exec": "asusctl profile -p | sed s:'Active profile is'::",
37 | "interval": 30,
38 | "format": "{}",
39 | "on-click": "asusctl profile -n; pkill -SIGRTMIN+8 waybar",
40 | "signal": 8
41 | },
42 |
43 | "custom/weather" : {
44 | //shows the current weather and forecast
45 | "tooltip" : true,
46 | "format" : "{}",
47 | "interval" : 30,
48 | "exec" : "~/.config/waybar/scripts/waybar-wttr.py",
49 | "return-type" : "json"
50 | },
51 |
52 | "tray": {
53 | "icon-size": 18,
54 | "spacing": 10
55 | },
56 |
57 | "clock": {
58 | "format": "{: %I:%M %p %a, %b %e}",
59 | "tooltip-format": "{:%Y %B}\n{calendar}"
60 | },
61 |
62 | "backlight": {
63 | "device": "intel_backlight",
64 | "format": "{icon} {percent}%",
65 | "format-icons": ["", "", ""],
66 | "on-scroll-up": "brightnessctl set 1%+",
67 | "on-scroll-down": "brightnessctl set 1%-",
68 | "min-length": 6
69 | },
70 |
71 | "battery": {
72 | "states": {
73 | "good": 95,
74 | "warning": 30,
75 | "critical": 20
76 | },
77 | "format": "{icon} {capacity}%",
78 | "format-charging": " {capacity}%",
79 | "format-plugged": " {capacity}%",
80 | "format-alt": "{time} {icon}",
81 | "format-icons": ["", "", "", "", "", "", "", "", "", "", ""]
82 | },
83 |
84 | "pulseaudio": {
85 | "format": "{icon} {volume}%",
86 | "tooltip": false,
87 | "format-muted": " Muted",
88 | "on-click": "pamixer -t",
89 | "on-scroll-up": "pamixer -i 5",
90 | "on-scroll-down": "pamixer -d 5",
91 | "scroll-step": 5,
92 | "format-icons": {
93 | "headphone": "",
94 | "hands-free": "",
95 | "headset": "",
96 | "phone": "",
97 | "portable": "",
98 | "car": "",
99 | "default": ["", "", ""]
100 | }
101 | },
102 |
103 | "pulseaudio#microphone": {
104 | "format": "{format_source}",
105 | "format-source": " {volume}%",
106 | "format-source-muted": " Muted",
107 | "on-click": "pamixer --default-source -t",
108 | "on-scroll-up": "pamixer --default-source -i 5",
109 | "on-scroll-down": "pamixer --default-source -d 5",
110 | "scroll-step": 5
111 | },
112 |
113 | "temperature": {
114 | "thermal-zone": 1,
115 | "format": "{temperatureF}°F ",
116 | "critical-threshold": 80,
117 | "format-critical": "{temperatureC}°C "
118 | },
119 |
120 | "network": {
121 | // "interface": "wlp2*", // (Optional) To force the use of this interface
122 | "format-wifi": " {signalStrength}%",
123 | "format-ethernet": "{ipaddr}/{cidr}",
124 | "tooltip-format": "{essid} - {ifname} via {gwaddr}",
125 | "format-linked": "{ifname} (No IP)",
126 | "format-disconnected": "Disconnected ⚠",
127 | "format-alt": "{ifname}:{essid} {ipaddr}/{cidr}"
128 | },
129 |
130 | "bluetooth": {
131 | "format": " {status}",
132 | "format-disabled": "", // an empty format will hide the module
133 | "format-connected": " {num_connections}",
134 | "tooltip-format": "{device_alias}",
135 | "tooltip-format-connected": " {device_enumerate}",
136 | "tooltip-format-enumerate-connected": "{device_alias}"
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/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/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 | window#waybar {
11 | background: rgba(21, 18, 27, 0);
12 | color: #cdd6f4;
13 | }
14 |
15 | tooltip {
16 | background: #1e1e2e;
17 | border-radius: 10px;
18 | border-width: 2px;
19 | border-style: solid;
20 | border-color: #11111b;
21 | }
22 |
23 | #workspaces button {
24 | padding: 5px;
25 | color: #313244;
26 | margin-right: 5px;
27 | }
28 |
29 | #workspaces button.active {
30 | color: #a6adc8;
31 | }
32 |
33 | #workspaces button.focused {
34 | color: #a6adc8;
35 | background: #eba0ac;
36 | border-radius: 10px;
37 | }
38 |
39 | #workspaces button.urgent {
40 | color: #11111b;
41 | background: #a6e3a1;
42 | border-radius: 10px;
43 | }
44 |
45 | #workspaces button:hover {
46 | background: #11111b;
47 | color: #cdd6f4;
48 | border-radius: 10px;
49 | }
50 |
51 | #custom-power_profile,
52 | #custom-weather,
53 | #window,
54 | #clock,
55 | #battery,
56 | #pulseaudio,
57 | #network,
58 | #bluetooth,
59 | #temperature,
60 | #workspaces,
61 | #tray,
62 | #backlight {
63 | background: #1e1e2e;
64 | opacity: 0.8;
65 | padding: 0px 10px;
66 | margin: 3px 0px;
67 | margin-top: 10px;
68 | border: 1px solid #181825;
69 | }
70 |
71 | #temperature {
72 | border-radius: 10px 0px 0px 10px;
73 | }
74 |
75 | #temperature.critical {
76 | color: #eba0ac;
77 | }
78 |
79 | #backlight {
80 | border-radius: 10px 0px 0px 10px;
81 | }
82 |
83 | #tray {
84 | border-radius: 10px;
85 | margin-right: 10px;
86 | }
87 |
88 | #workspaces {
89 | background: #1e1e2e;
90 | border-radius: 10px;
91 | margin-left: 10px;
92 | padding-right: 0px;
93 | padding-left: 5px;
94 | }
95 |
96 | #custom-power_profile {
97 | color: #a6e3a1;
98 | border-left: 0px;
99 | border-right: 0px;
100 | }
101 |
102 | #window {
103 | border-radius: 10px;
104 | margin-left: 60px;
105 | margin-right: 60px;
106 | }
107 |
108 | #clock {
109 | color: #fab387;
110 | border-radius: 10px 0px 0px 10px;
111 | margin-left: 10px;
112 | border-right: 0px;
113 | }
114 |
115 | #network {
116 | color: #f9e2af;
117 | border-radius: 10px 0px 0px 10px;
118 | border-left: 0px;
119 | border-right: 0px;
120 | }
121 |
122 | #bluetooth {
123 | color: #89b4fa;
124 | border-radius: 0px 10px 10px 0px;
125 | margin-right: 10px
126 | }
127 |
128 | #pulseaudio {
129 | color: #89b4fa;
130 | border-left: 0px;
131 | border-right: 0px;
132 | }
133 |
134 | #pulseaudio.microphone {
135 | color: #cba6f7;
136 | border-left: 0px;
137 | border-right: 0px;
138 | border-radius: 0px 10px 10px 0px;
139 | margin-right: 10px;
140 | }
141 |
142 | #battery {
143 | color: #a6e3a1;
144 | border-radius: 0 10px 10px 0;
145 | margin-right: 10px;
146 | border-left: 0px;
147 | }
148 |
149 | #custom-weather {
150 | border-radius: 0px 10px 10px 0px;
151 | border-right: 0px;
152 | margin-left: 0px;
153 | }
154 |
--------------------------------------------------------------------------------
/wofi/config:
--------------------------------------------------------------------------------
1 | width=600
2 | height=350
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 |
--------------------------------------------------------------------------------
/wofi/style.css:
--------------------------------------------------------------------------------
1 | window {
2 | margin: 0px;
3 | border: 5px solid #1e1e2e;
4 | background-color: #cdd6f4;
5 | border-radius: 15px;
6 | }
7 |
8 | #input {
9 | padding: 4px;
10 | margin: 4px;
11 | padding-left: 20px;
12 | border: none;
13 | color: #cdd6f4;
14 | font-weight: bold;
15 | background-color: #1e1e2e;
16 | background: ;
17 | outline: none;
18 | border-radius: 15px;
19 | margin: 10px;
20 | margin-bottom: 2px;
21 | }
22 | #input:focus {
23 | border: 0px solid #1e1e2e;
24 | margin-bottom: 0px;
25 | }
26 |
27 | #inner-box {
28 | margin: 4px;
29 | border: 10px solid #1e1e2e;
30 | color: #cdd6f4;
31 | font-weight: bold;
32 | background-color: #1e1e2e;
33 | border-radius: 15px;
34 | }
35 |
36 | #outer-box {
37 | margin: 0px;
38 | border: none;
39 | border-radius: 15px;
40 | background-color: #1e1e2e;
41 | }
42 |
43 | #scroll {
44 | margin-top: 5px;
45 | border: none;
46 | border-radius: 15px;
47 | margin-bottom: 5px;
48 | /* background: rgb(255,255,255); */
49 | }
50 |
51 | #img:selected {
52 | background-color: #89b4fa;
53 | border-radius: 15px;
54 | }
55 |
56 | #text:selected {
57 | color: #cdd6f4;
58 | margin: 0px 0px;
59 | border: none;
60 | border-radius: 15px;
61 | background-color: #89b4fa;
62 | }
63 |
64 | #entry {
65 | margin: 0px 0px;
66 | border: none;
67 | border-radius: 15px;
68 | background-color: transparent;
69 | }
70 |
71 | #entry:selected {
72 | margin: 0px 0px;
73 | border: none;
74 | border-radius: 15px;
75 | background-color: #89b4fa;
76 | }
77 |
--------------------------------------------------------------------------------