├── 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 | --------------------------------------------------------------------------------