diff --git a/configs/dotfiles/hypr/hyprland.conf b/configs/dotfiles/hyprland/desktop/hypr/hyprland.conf
similarity index 95%
rename from configs/dotfiles/hypr/hyprland.conf
rename to configs/dotfiles/hyprland/desktop/hypr/hyprland.conf
index 98e7f9f..fd0eee6 100644
--- a/configs/dotfiles/hypr/hyprland.conf
+++ b/configs/dotfiles/hyprland/desktop/hypr/hyprland.conf
@@ -1,21 +1,22 @@
-# This is an example Hyprland config file.
-#
-# Refer to the wiki for more information.
-
-#
-# Please note not all available settings / options are set here.
-# For a full list, see the wiki
-#
+# Gib's Desktop Hyprland Config
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=eDP-1,1920x1200@120,1920x0,1
monitor=DP-1,1920x1080@75,0x0,1
-
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
-# Execute your favorite apps at launch
-exec-once = waybar & hyprpaper
+# Waybar
+exec-once = waybar
+
+# Hyprpaper
+exec-once = hyprpaper
+
+# Dunst
+exec-once = systemctl --user start dunst
+
+# Hyprpolkitagent
+exec-once = systemctl --user start hyprpolkitagent
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
@@ -186,3 +187,4 @@ bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
+
diff --git a/configs/dotfiles/hypr/hyprpaper.conf b/configs/dotfiles/hyprland/desktop/hypr/hyprpaper.conf
similarity index 100%
rename from configs/dotfiles/hypr/hyprpaper.conf
rename to configs/dotfiles/hyprland/desktop/hypr/hyprpaper.conf
diff --git a/configs/dotfiles/waybar/config b/configs/dotfiles/hyprland/desktop/waybar/config
similarity index 93%
rename from configs/dotfiles/waybar/config
rename to configs/dotfiles/hyprland/desktop/waybar/config
index 7bce349..6fed958 100644
--- a/configs/dotfiles/waybar/config
+++ b/configs/dotfiles/hyprland/desktop/waybar/config
@@ -5,14 +5,18 @@
"width": 1900, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
- "modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad", "custom/media"],
- "modules-center": ["sway/window"],
+ "modules-left": ["hyprland/workspaces", "sway/mode", "sway/scratchpad", "custom/media"],
+ "modules-center": [
+ "hyprland/window": {
+ "seperate-outputs": true
+ }
+ ],
"modules-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "sway/language", "battery", "battery#bat2", "clock", "tray"],
// Modules configuration
- "sway/workspaces": {
- "disable-scroll": true,
+ "hyprland/workspaces": {
"all-outputs": true,
- "warp-on-scroll": false,
+ "on-scroll-up": "hyprctl dispatch workspace e+1",
+ "on-scroll-down": "hyprctl dispatch workspace e-1",
"format": "{name}: {icon}",
"format-icons": {
"1": "",
diff --git a/configs/dotfiles/waybar/style.css b/configs/dotfiles/hyprland/desktop/waybar/style.css
similarity index 100%
rename from configs/dotfiles/waybar/style.css
rename to configs/dotfiles/hyprland/desktop/waybar/style.css
diff --git a/configs/dotfiles/hyprland/gulfport/hypr/hyprland.conf b/configs/dotfiles/hyprland/gulfport/hypr/hyprland.conf
new file mode 100644
index 0000000..fd0eee6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/hypr/hyprland.conf
@@ -0,0 +1,190 @@
+# Gib's Desktop Hyprland Config
+
+# See https://wiki.hyprland.org/Configuring/Monitors/
+monitor=eDP-1,1920x1200@120,1920x0,1
+monitor=DP-1,1920x1080@75,0x0,1
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+
+# Waybar
+exec-once = waybar
+
+# Hyprpaper
+exec-once = hyprpaper
+
+# Dunst
+exec-once = systemctl --user start dunst
+
+# Hyprpolkitagent
+exec-once = systemctl --user start hyprpolkitagent
+
+# Source a file (multi-file configs)
+# source = ~/.config/hypr/myColors.conf
+
+# Set programs that you use
+$terminal = kitty
+$fileManager = nautilus
+$browser = flatpak run one.ablaze.floorp
+$menu = wofi --show drun
+
+# Some default env vars.
+env = XCURSOR_SIZE,24
+env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
+
+# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ kb_rules =
+
+ follow_mouse = 1
+
+ touchpad {
+ natural_scroll = true
+ }
+
+ sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+}
+
+general {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ gaps_in = 6
+ gaps_out = 12
+ border_size = 3
+ col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
+ col.inactive_border = rgba(595959aa)
+
+ layout = master
+
+ # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+ allow_tearing = false
+}
+
+decoration {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ rounding = 10
+
+ blur {
+ enabled = true
+ size = 3
+ passes = 1
+
+ vibrancy = 0.1696
+ }
+
+ drop_shadow = true
+ shadow_range = 4
+ shadow_render_power = 3
+ col.shadow = rgba(1a1a1aee)
+}
+
+animations {
+ enabled = true
+
+ # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+
+ animation = windows, 1, 7, myBezier
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default
+}
+
+dwindle {
+ # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
+ pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+ preserve_split = true # you probably want this
+}
+
+master {
+ # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+ new_is_master = false
+}
+
+gestures {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ workspace_swipe = false
+}
+
+misc {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ force_default_wallpaper = -1 # Set to 0 to disable the anime mascot wallpapers
+}
+
+# Example per-device config
+# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
+device:epic-mouse-v1 {
+ sensitivity = -0.5
+}
+
+# Example windowrule v1
+ windowrule = tile, ^(kitty)$
+# Example windowrule v2
+# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+windowrulev2 = nomaximizerequest, class:.* # You'll probably like this.
+
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+$mainMod = SUPER
+
+# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+bind = $mainMod, T, exec, $terminal
+bind = $mainMod, F, exec, $fileManager
+bind = $mainMod, W, exec, $browser
+bind = $mainMod, C, killactive,
+bind = $mainMod, M, exit,
+bind = $mainMod, V, togglefloating,
+bind = $mainMod, R, exec, $menu
+bind = $mainMod, P, pseudo, # dwindle
+bind = $mainMod, J, togglesplit, # dwindle
+
+# Move focus with mainMod + arrow keys
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j, movefocus, d
+
+# Switch workspaces with mainMod + [0-9]
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 2, workspace, 2
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 4, workspace, 4
+bind = $mainMod, 5, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 7, workspace, 7
+bind = $mainMod, 8, workspace, 8
+bind = $mainMod, 9, workspace, 9
+bind = $mainMod, 0, workspace, 10
+
+# Move active window to a workspace with mainMod + SHIFT + [0-9]
+bind = $mainMod SHIFT, 1, movetoworkspace, 1
+bind = $mainMod SHIFT, 2, movetoworkspace, 2
+bind = $mainMod SHIFT, 3, movetoworkspace, 3
+bind = $mainMod SHIFT, 4, movetoworkspace, 4
+bind = $mainMod SHIFT, 5, movetoworkspace, 5
+bind = $mainMod SHIFT, 6, movetoworkspace, 6
+bind = $mainMod SHIFT, 7, movetoworkspace, 7
+bind = $mainMod SHIFT, 8, movetoworkspace, 8
+bind = $mainMod SHIFT, 9, movetoworkspace, 9
+bind = $mainMod SHIFT, 0, movetoworkspace, 10
+
+# Example special workspace (scratchpad)
+bind = $mainMod, S, togglespecialworkspace, magic
+bind = $mainMod SHIFT, S, movetoworkspace, special:magic
+
+# Scroll through existing workspaces with mainMod + scroll
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# Move/resize windows with mainMod + LMB/RMB and dragging
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
diff --git a/configs/dotfiles/hyprland/gulfport/hypr/hyprpaper.conf b/configs/dotfiles/hyprland/gulfport/hypr/hyprpaper.conf
new file mode 100644
index 0000000..aab1ee4
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/hypr/hyprpaper.conf
@@ -0,0 +1,5 @@
+preload = /home/gib/Pictures/Wallpapers/Best_of_the_best/excellentbg.png
+preload = /home/gib/Pictures/Wallpapers/Best_of_the_best/gloomyroadcatbg.png
+
+wallpaper = eDP-1,/home/gib/Pictures/Wallpapers/Best_of_the_best/excellentbg.png
+wallpaper = DP-1,/home/gib/Pictures/Wallpapers/Best_of_the_best/gloomyroadcatbg.png
diff --git a/configs/dotfiles/hyprland/gulfport/waybar/config b/configs/dotfiles/hyprland/gulfport/waybar/config
new file mode 100644
index 0000000..6fed958
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/waybar/config
@@ -0,0 +1,161 @@
+{
+ "layer": "top", // Waybar at top layer
+ "position": "top", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ "width": 1900, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["hyprland/workspaces", "sway/mode", "sway/scratchpad", "custom/media"],
+ "modules-center": [
+ "hyprland/window": {
+ "seperate-outputs": true
+ }
+ ],
+ "modules-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "sway/language", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ "hyprland/workspaces": {
+ "all-outputs": true,
+ "on-scroll-up": "hyprctl dispatch workspace e+1",
+ "on-scroll-down": "hyprctl dispatch workspace e-1",
+ "format": "{name}: {icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": "",
+ "urgent": "",
+ "focused": "",
+ "default": ""
+ }
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ "clock": {
+ // "timezone": "America/New_York",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%Y-%m-%d}"
+ },
+ "cpu": {
+ "format": "{usage}% ",
+ "tooltip": false
+ },
+ "memory": {
+ "format": "{}% "
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+ "critical-threshold": 80,
+ // "format-critical": "{temperatureC}°C {icon}",
+ "format": "{temperatureC}°C {icon}",
+ "format-icons": ["", "", ""]
+ },
+ "backlight": {
+ // "device": "acpi_video1",
+ "format": "{percent}% {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", ""]
+ },
+ "battery": {
+ "states": {
+ // "good": 95,
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{volume}% {icon} {format_source}",
+ "format-bluetooth": "{volume}% {icon} {format_source}",
+ "format-bluetooth-muted": " {icon} {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": "{volume}% ",
+ "format-source-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", ""]
+ },
+ "on-click": "pavucontrol"
+ },
+ "custom/media": {
+ "format": "{icon} {}",
+ "return-type": "json",
+ "max-length": 40,
+ "format-icons": {
+ "spotify": "",
+ "default": "🎜"
+ },
+ "escape": true,
+ "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
+ // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport/waybar/style.css b/configs/dotfiles/hyprland/gulfport/waybar/style.css
new file mode 100644
index 0000000..02a170d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/waybar/style.css
@@ -0,0 +1,73 @@
+* {
+ border: none;
+ border-radius: 0;
+ font-family: Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ min-height: 0;
+}
+
+window#waybar {
+ background: rgba(43, 48, 59, 0.5);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: white;
+}
+
+tooltip {
+ background: rgba(43, 48, 59, 0.5);
+ border: 1px solid rgba(100, 114, 125, 0.5);
+}
+tooltip label {
+ color: white;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background: transparent;
+ color: white;
+ border-bottom: 3px solid transparent;
+}
+
+#workspaces button.focused {
+ background: #64727D;
+ border-bottom: 3px solid white;
+}
+
+#mode, #clock, #battery {
+ padding: 0 10px;
+}
+
+#mode {
+ background: #64727D;
+ border-bottom: 3px solid white;
+}
+
+#clock {
+ background-color: #64727D;
+}
+
+#battery {
+ background-color: #ffffff;
+ color: black;
+}
+
+#battery.charging {
+ color: white;
+ background-color: #26A65B;
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: black;
+ }
+}
+
+#battery.warning:not(.charging) {
+ background: #f53c3c;
+ color: white;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
diff --git a/configs/dotfiles/hyprland/laptop/hypr/hyprland.conf b/configs/dotfiles/hyprland/laptop/hypr/hyprland.conf
new file mode 100644
index 0000000..f4e40d2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/hypr/hyprland.conf
@@ -0,0 +1,188 @@
+# Gib's Laptop Hyprland Config
+
+# See https://wiki.hyprland.org/Configuring/Monitors/
+monitor=eDP-1,1920x1200@120,1920x0,1
+monitor=DP-1,1920x1080@75,0x0,1
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+
+# Waybar
+exec-once = waybar
+
+# Hyprpaper
+exec-once = hyprpaper
+
+# Dunst
+exec-once = dunst
+
+#
+
+# Source a file (multi-file configs)
+# source = ~/.config/hypr/myColors.conf
+
+# Set programs that you use
+$terminal = kitty
+$fileManager = nautilus
+$browser = flatpak run one.ablaze.floorp
+$menu = wofi --show drun
+
+# Some default env vars.
+env = XCURSOR_SIZE,24
+env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
+
+# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ kb_rules =
+
+ follow_mouse = 1
+
+ touchpad {
+ natural_scroll = true
+ }
+
+ sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+}
+
+general {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ gaps_in = 6
+ gaps_out = 12
+ border_size = 3
+ col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
+ col.inactive_border = rgba(595959aa)
+
+ layout = master
+
+ # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+ allow_tearing = false
+}
+
+decoration {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ rounding = 10
+
+ blur {
+ enabled = true
+ size = 3
+ passes = 1
+
+ vibrancy = 0.1696
+ }
+
+ drop_shadow = true
+ shadow_range = 4
+ shadow_render_power = 3
+ col.shadow = rgba(1a1a1aee)
+}
+
+animations {
+ enabled = true
+
+ # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+
+ animation = windows, 1, 7, myBezier
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default
+}
+
+dwindle {
+ # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
+ pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+ preserve_split = true # you probably want this
+}
+
+master {
+ # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+ new_is_master = false
+}
+
+gestures {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ workspace_swipe = false
+}
+
+misc {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ force_default_wallpaper = -1 # Set to 0 to disable the anime mascot wallpapers
+}
+
+# Example per-device config
+# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
+device:epic-mouse-v1 {
+ sensitivity = -0.5
+}
+
+# Example windowrule v1
+ windowrule = tile, ^(kitty)$
+# Example windowrule v2
+# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+windowrulev2 = nomaximizerequest, class:.* # You'll probably like this.
+
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+$mainMod = SUPER
+
+# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+bind = $mainMod, T, exec, $terminal
+bind = $mainMod, F, exec, $fileManager
+bind = $mainMod, W, exec, $browser
+bind = $mainMod, C, killactive,
+bind = $mainMod, M, exit,
+bind = $mainMod, V, togglefloating,
+bind = $mainMod, R, exec, $menu
+bind = $mainMod, P, pseudo, # dwindle
+bind = $mainMod, J, togglesplit, # dwindle
+
+# Move focus with mainMod + arrow keys
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j, movefocus, d
+
+# Switch workspaces with mainMod + [0-9]
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 2, workspace, 2
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 4, workspace, 4
+bind = $mainMod, 5, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 7, workspace, 7
+bind = $mainMod, 8, workspace, 8
+bind = $mainMod, 9, workspace, 9
+bind = $mainMod, 0, workspace, 10
+
+# Move active window to a workspace with mainMod + SHIFT + [0-9]
+bind = $mainMod SHIFT, 1, movetoworkspace, 1
+bind = $mainMod SHIFT, 2, movetoworkspace, 2
+bind = $mainMod SHIFT, 3, movetoworkspace, 3
+bind = $mainMod SHIFT, 4, movetoworkspace, 4
+bind = $mainMod SHIFT, 5, movetoworkspace, 5
+bind = $mainMod SHIFT, 6, movetoworkspace, 6
+bind = $mainMod SHIFT, 7, movetoworkspace, 7
+bind = $mainMod SHIFT, 8, movetoworkspace, 8
+bind = $mainMod SHIFT, 9, movetoworkspace, 9
+bind = $mainMod SHIFT, 0, movetoworkspace, 10
+
+# Example special workspace (scratchpad)
+bind = $mainMod, S, togglespecialworkspace, magic
+bind = $mainMod SHIFT, S, movetoworkspace, special:magic
+
+# Scroll through existing workspaces with mainMod + scroll
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# Move/resize windows with mainMod + LMB/RMB and dragging
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
diff --git a/configs/dotfiles/hyprland/laptop/hypr/hyprpaper.conf b/configs/dotfiles/hyprland/laptop/hypr/hyprpaper.conf
new file mode 100644
index 0000000..aab1ee4
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/hypr/hyprpaper.conf
@@ -0,0 +1,5 @@
+preload = /home/gib/Pictures/Wallpapers/Best_of_the_best/excellentbg.png
+preload = /home/gib/Pictures/Wallpapers/Best_of_the_best/gloomyroadcatbg.png
+
+wallpaper = eDP-1,/home/gib/Pictures/Wallpapers/Best_of_the_best/excellentbg.png
+wallpaper = DP-1,/home/gib/Pictures/Wallpapers/Best_of_the_best/gloomyroadcatbg.png
diff --git a/configs/dotfiles/hyprland/laptop/waybar/config b/configs/dotfiles/hyprland/laptop/waybar/config
new file mode 100644
index 0000000..6fed958
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/waybar/config
@@ -0,0 +1,161 @@
+{
+ "layer": "top", // Waybar at top layer
+ "position": "top", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ "width": 1900, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["hyprland/workspaces", "sway/mode", "sway/scratchpad", "custom/media"],
+ "modules-center": [
+ "hyprland/window": {
+ "seperate-outputs": true
+ }
+ ],
+ "modules-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "sway/language", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ "hyprland/workspaces": {
+ "all-outputs": true,
+ "on-scroll-up": "hyprctl dispatch workspace e+1",
+ "on-scroll-down": "hyprctl dispatch workspace e-1",
+ "format": "{name}: {icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": "",
+ "urgent": "",
+ "focused": "",
+ "default": ""
+ }
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ "clock": {
+ // "timezone": "America/New_York",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%Y-%m-%d}"
+ },
+ "cpu": {
+ "format": "{usage}% ",
+ "tooltip": false
+ },
+ "memory": {
+ "format": "{}% "
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+ "critical-threshold": 80,
+ // "format-critical": "{temperatureC}°C {icon}",
+ "format": "{temperatureC}°C {icon}",
+ "format-icons": ["", "", ""]
+ },
+ "backlight": {
+ // "device": "acpi_video1",
+ "format": "{percent}% {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", ""]
+ },
+ "battery": {
+ "states": {
+ // "good": 95,
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{volume}% {icon} {format_source}",
+ "format-bluetooth": "{volume}% {icon} {format_source}",
+ "format-bluetooth-muted": " {icon} {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": "{volume}% ",
+ "format-source-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", ""]
+ },
+ "on-click": "pavucontrol"
+ },
+ "custom/media": {
+ "format": "{icon} {}",
+ "return-type": "json",
+ "max-length": 40,
+ "format-icons": {
+ "spotify": "",
+ "default": "🎜"
+ },
+ "escape": true,
+ "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
+ // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop/waybar/style.css b/configs/dotfiles/hyprland/laptop/waybar/style.css
new file mode 100644
index 0000000..02a170d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/waybar/style.css
@@ -0,0 +1,73 @@
+* {
+ border: none;
+ border-radius: 0;
+ font-family: Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ min-height: 0;
+}
+
+window#waybar {
+ background: rgba(43, 48, 59, 0.5);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: white;
+}
+
+tooltip {
+ background: rgba(43, 48, 59, 0.5);
+ border: 1px solid rgba(100, 114, 125, 0.5);
+}
+tooltip label {
+ color: white;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background: transparent;
+ color: white;
+ border-bottom: 3px solid transparent;
+}
+
+#workspaces button.focused {
+ background: #64727D;
+ border-bottom: 3px solid white;
+}
+
+#mode, #clock, #battery {
+ padding: 0 10px;
+}
+
+#mode {
+ background: #64727D;
+ border-bottom: 3px solid white;
+}
+
+#clock {
+ background-color: #64727D;
+}
+
+#battery {
+ background-color: #ffffff;
+ color: black;
+}
+
+#battery.charging {
+ color: white;
+ background-color: #26A65B;
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: black;
+ }
+}
+
+#battery.warning:not(.charging) {
+ background: #f53c3c;
+ color: white;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
diff --git a/packages/espanso b/packages/espanso
index fd9a7dd..b9ac086 160000
--- a/packages/espanso
+++ b/packages/espanso
@@ -1 +1 @@
-Subproject commit fd9a7dd4f2afccaeb61623286b1230c0df0c7033
+Subproject commit b9ac086adf5c14d07f8b60a7009acd878f6cf7ca