diff --git a/.gitmodules b/.gitmodules
index 54af80db..dc80b891 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,11 +2,3 @@
path = nvim
url = https://git.xenia.me.uk/xenia/nvim.git
branch = main
-[submodule "hyprland"]
- path = hypr
- url = https://git.xenia.me.uk/xenia/hyprland.git
- branch = main
-[submodule "waybar"]
- path = waybar
- url = https://git.xenia.me.uk/xenia/waybar.git
- branch = main
diff --git a/Makefile b/Makefile
index 50a2b09a..30722d7a 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ $(eval HOSTNAME=$(shell hostname))
HOMEMANAGER_CONFIG := $(PWD)/home/$(HOSTNAME)/$(USER).nix
CONFIG_DIR := $(if $(XDG_CONFIG_HOME), $(XDG_CONFIG_HOME), $(HOME)/.config)
HOMEMANAGER_CONFIG_DIR := $(CONFIG_DIR)/home-manager
-SUBMODULES := $(CONFIG_DIR)/nvim $(CONFIG_DIR)/hypr $(CONFIG_DIR)/waybar
+SUBMODULES := $(CONFIG_DIR)/nvim
.PHONY: default clean nixos home /etc/nixos/config
diff --git a/home/H0615/hypr/hyprpaper.conf b/home/H0615/hypr/hyprpaper.conf
index a4dbc267..872469f8 100644
--- a/home/H0615/hypr/hyprpaper.conf
+++ b/home/H0615/hypr/hyprpaper.conf
@@ -1,7 +1,2 @@
-preload = /etc/nixos/config/wallpaper/images_dark/1920x1080.png
-preload = /etc/nixos/config/wallpaper/images_dark/1920x1200.png
-preload = /etc/nixos/config/wallpaper/images_dark/1080x1920.png
-
-wallpaper = HDMI-A-1,/etc/nixos/config/wallpaper/images_dark/1920x1200.png
-wallpaper = DP-1,/etc/nixos/config/wallpaper/images_dark/1080x1920.png
-wallpaper = ,/etc/nixos/config/wallpaper/images_dark/1920x1080.png
+preload = ~/nixos/wallpaper.jpg
+wallpaper = ,~/nixos/wallpaper.jpg
diff --git a/home/J0162/hypr/hyprpaper.conf b/home/J0162/hypr/hyprpaper.conf
index b6bd2c7a..872469f8 100644
--- a/home/J0162/hypr/hyprpaper.conf
+++ b/home/J0162/hypr/hyprpaper.conf
@@ -1,2 +1,2 @@
-preload = /etc/nixos/config/wallpaper/images_dark/1920x1080.png
-wallpaper = ,/etc/nixos/config/wallpaper/images_dark/1920x1080.png
+preload = ~/nixos/wallpaper.jpg
+wallpaper = ,~/nixos/wallpaper.jpg
diff --git a/home/Vanguard/hypr/hyprpaper.conf b/home/Vanguard/hypr/hyprpaper.conf
index 3eb041e4..872469f8 100644
--- a/home/Vanguard/hypr/hyprpaper.conf
+++ b/home/Vanguard/hypr/hyprpaper.conf
@@ -1,2 +1,2 @@
-preload = /mnt/secondary/syncthing/pictures/Wallpapers/Landscapes/IMG_9509.JPG
-wallpaper = ,/mnt/secondary/syncthing/pictures/Wallpapers/Landscapes/IMG_9509.JPG
+preload = ~/nixos/wallpaper.jpg
+wallpaper = ,~/nixos/wallpaper.jpg
diff --git a/home/desktop/config/hypr/common.conf b/home/desktop/config/hypr/common.conf
new file mode 100644
index 00000000..51350924
--- /dev/null
+++ b/home/desktop/config/hypr/common.conf
@@ -0,0 +1,55 @@
+monitor=,preferred,auto,auto
+exec-once = waybar & hyprpaper & dunst & eww daemon
+
+source = ./macchiato.conf
+source = ./keybinds.conf
+source = ./window-rules.conf
+
+env = XCURSOR_SIZE,24
+
+input {
+ kb_layout = gb
+ follow_mouse = 1
+ touchpad {
+ natural_scroll = no
+ }
+}
+
+general {
+ gaps_in = 5
+ gaps_out = 20
+ border_size = 2
+ col.active_border = $mauve
+ col.group_border_active = $mauve
+ col.inactive_border = $surface2
+ col.group_border = $surface2
+ layout = master
+}
+
+decoration {
+ rounding = 10
+ blur = yes
+ blur_size = 5
+ blur_passes = 3
+ blur_new_optimizations = on
+ blur_xray = off
+ drop_shadow = yes
+ shadow_range = 4
+ shadow_render_power = 3
+ col.shadow = $base
+}
+
+animations {
+ enabled = yes
+ 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
+}
+
+master {
+ new_is_master = false
+}
diff --git a/home/desktop/config/hypr/keybinds.conf b/home/desktop/config/hypr/keybinds.conf
new file mode 100644
index 00000000..18344516
--- /dev/null
+++ b/home/desktop/config/hypr/keybinds.conf
@@ -0,0 +1,86 @@
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+bind = SUPER, Return, exec, wezterm
+bind = SUPER SHIFT, Return, exec, foot
+bind = SUPER, Q, killactive,
+bind = SUPER, E, exec, power-profiles
+bind = SUPER, P, exec, powermenu
+bind = SUPER, V, togglefloating,
+bind = SUPER, Space, exec, rofi -show drun
+bind = SUPER, S, togglegroup
+bind = SUPER SHIFT, S, changegroupactive
+bind = SUPER, F1, exec, swaylock
+bind = SUPER, W, exec, firefox
+bind = SUPER, F, exec, thunar
+bind = SUPER, M, fullscreen, 1
+bind = SUPER, A, bringactivetotop
+
+bind = , XF86AudioMute, exec, pamixer -t
+bind = , XF86AudioRaiseVolume, exec, pamixer -i 2
+bind = , XF86AudioLowerVolume, exec, pamixer -d 2
+
+# Move focus with mainMod + arrow keys
+bind = SUPER, left, movefocus, l
+bind = SUPER, H, movefocus, l
+bind = SUPER, right, movefocus, r
+bind = SUPER, L, movefocus, r
+bind = SUPER, up, movefocus, u
+bind = SUPER, K, movefocus, u
+bind = SUPER, down, movefocus, d
+bind = SUPER, J, movefocus, d
+
+bind = SUPER SHIFT, left, movewindow, l
+bind = SUPER SHIFT, H, movewindow, l
+bind = SUPER SHIFT, right, movewindow, r
+bind = SUPER SHIFT, L, movewindow, r
+bind = SUPER SHIFT, up, movewindow, u
+bind = SUPER SHIFT, K, movewindow, u
+bind = SUPER SHIFT, down, movewindow, d
+bind = SUPER SHIFT, J, movewindow, d
+
+# Switch workspaces with mainMod + [0-9]
+bind = SUPER, 1, workspace, 1
+bind = SUPER, 2, workspace, 2
+bind = SUPER, 3, workspace, 3
+bind = SUPER, 4, workspace, 4
+bind = SUPER, 5, workspace, 5
+bind = SUPER, 6, workspace, 6
+bind = SUPER, 7, workspace, 7
+bind = SUPER, 8, workspace, 8
+bind = SUPER, 9, workspace, 9
+bind = SUPER, 0, workspace, 10
+
+# Move active window to a workspace with mainMod + SHIFT + [0-9]
+bind = SUPER SHIFT, 1, movetoworkspace, 1
+bind = SUPER SHIFT, 2, movetoworkspace, 2
+bind = SUPER SHIFT, 3, movetoworkspace, 3
+bind = SUPER SHIFT, 4, movetoworkspace, 4
+bind = SUPER SHIFT, 5, movetoworkspace, 5
+bind = SUPER SHIFT, 6, movetoworkspace, 6
+bind = SUPER SHIFT, 7, movetoworkspace, 7
+bind = SUPER SHIFT, 8, movetoworkspace, 8
+bind = SUPER SHIFT, 9, movetoworkspace, 9
+
+bind = SUPER, period, workspace, m+1
+bind = SUPER, comma, workspace, m-1
+
+bind = SUPER SHIFT, period, movetoworkspace, m+1
+bind = SUPER SHIFT, comma, movetoworkspace, m-1
+
+bind = SUPER, bracketright, focusmonitor, +1
+bind = SUPER, bracketleft, focusmonitor, +1
+
+bind = SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1
+bind = SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, +1
+
+bind = SUPER, N, workspace, empty
+bind = SUPER SHIFT, N, movetoworkspace, empty
+
+bind = SUPER, C, togglespecialworkspace
+bind = SUPER SHIFT, C, movetoworkspace, special
+
+bind = SUPER, tab, workspace, previous
+bind = SUPER SHIFT, tab, movetoworkspace, previous
+
+# Move/resize windows with mainMod + LMB/RMB and dragging
+bindm = SUPER, mouse:272, movewindow
+bindm = SUPER, mouse:273, resizewindow
diff --git a/home/desktop/config/hypr/macchiato.conf b/home/desktop/config/hypr/macchiato.conf
new file mode 100644
index 00000000..91a88a15
--- /dev/null
+++ b/home/desktop/config/hypr/macchiato.conf
@@ -0,0 +1,61 @@
+$rosewaterAlpha = f4dbd6
+$flamingoAlpha = f0c6c6
+$pinkAlpha = f5bde6
+$mauveAlpha = c6a0f6
+$redAlpha = ed8796
+$maroonAlpha = ee99a0
+$peachAlpha = f5a97f
+$yellowAlpha = eed49f
+$greenAlpha = a6da95
+$tealAlpha = 8bd5ca
+$skyAlpha = 91d7e3
+$sapphireAlpha = 7dc4e4
+$blueAlpha = 8aadf4
+$lavenderAlpha = b7bdf8
+
+$textAlpha = cad3f5
+$subtext1Alpha = b8c0e0
+$subtext0Alpha = a5adcb
+
+$overlay2Alpha = 939ab7
+$overlay1Alpha = 8087a2
+$overlay0Alpha = 6e738d
+
+$surface2Alpha = 5b6078
+$surface1Alpha = 494d64
+$surface0Alpha = 363a4f
+
+$baseAlpha = 24273a
+$mantleAlpha = 1e2030
+$crustAlpha = 181926
+
+$rosewater = 0xfff5e0dc
+$flamingo = 0xfff2cdcd
+$pink = 0xfff5c2e7
+$mauve = 0xffcba6f7
+$red = 0xfff38ba8
+$maroon = 0xffeba0ac
+$peach = 0xfffab387
+$yellow = 0xfff9e2af
+$green = 0xffa6e3a1
+$teal = 0xff94e2d5
+$sky = 0xff89dceb
+$sapphire = 0xff74c7ec
+$blue = 0xff89b4fa
+$lavender = 0xffb4befe
+
+$text = 0xffcdd6f4
+$subtext1 = 0xffbac2de
+$subtext0 = 0xffa6adc8
+
+$overlay2 = 0xff9399b2
+$overlay1 = 0xff7f849c
+$overlay0 = 0xff6c7086
+
+$surface2 = 0xff585b70
+$surface1 = 0xff45475a
+$surface0 = 0xff313244
+
+$base = 0xff1e1e2e
+$mantle = 0xff181825
+$crust = 0xff11111b
diff --git a/home/desktop/config/hypr/window-rules.conf b/home/desktop/config/hypr/window-rules.conf
new file mode 100644
index 00000000..53084872
--- /dev/null
+++ b/home/desktop/config/hypr/window-rules.conf
@@ -0,0 +1,29 @@
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+windowrule = float, ^(foot)$
+windowrule = float, ^(thunar)$
+windowrule = float, ^(pavucontrol)$
+windowrule = float, ^(.blueman-manager-wrapped)$
+windowrule = float, ^(otpclient)$
+windowrule = float, title:^([Zz]oom)(.*)$
+
+windowrule = center, ^(foot)$
+windowrule = center, ^(thunar)$
+windowrule = center, ^(pavucontrol)$
+windowrule = center, ^(.blueman-manager-wrapped)$
+windowrule = move 2% 6%, ^(otpclient)$
+windowrule = center, title:^([Zz]oom)(.*)$
+
+windowrule = workspace 1, ^(VSCodium)$
+windowrule = workspace 2, ^(firefox|librewolf)$
+windowrule = workspace 3 silent, ^(Element|Signal|discord|Microsoft Teams - Preview)$
+windowrule = workspace 3, title:^([Zz]oom)(.*)$
+windowrule = workspace 4 silent, ^(org.qbittorrent.qBittorrent)$
+windowrule = workspace 5 silent, ^(Steam|steamwebhelper)$
+windowrule = workspace 6, ^(Nxplayer.bin)$
+
+windowrule = monitor 1, ^(VSCodium)$
+windowrule = monitor 1, ^(firefox|librewolf)$
+windowrule = monitor 1, ^(Microsoft Teams - Preview)$
+windowrule = monitor 1, title:^(Zoom)(.*)$
+windowrule = monitor 1, ^(Steam|steamwebhelper)$
+windowrule = monitor 1, ^(Nxplayer.bin)$
diff --git a/home/desktop/config/waybar/layout.json b/home/desktop/config/waybar/layout.json
new file mode 100644
index 00000000..8e420901
--- /dev/null
+++ b/home/desktop/config/waybar/layout.json
@@ -0,0 +1,11 @@
+{
+ "layer": "top",
+ "position": "top",
+ "spacing": 10,
+ "margin-top": 10,
+ "margin-left": 20,
+ "margin-right": 20,
+ "margin-bottom": 5,
+}
+
+// vim: ft=json
diff --git a/home/desktop/config/waybar/macchiato.css b/home/desktop/config/waybar/macchiato.css
new file mode 100644
index 00000000..68804731
--- /dev/null
+++ b/home/desktop/config/waybar/macchiato.css
@@ -0,0 +1,37 @@
+/*
+*
+* Catppuccin Macchiato palette
+* Maintainer: rubyowo
+*
+*/
+
+@define-color base #24273a;
+@define-color mantle #1e2030;
+@define-color crust #181926;
+
+@define-color text #cad3f5;
+@define-color subtext0 #a5adcb;
+@define-color subtext1 #b8c0e0;
+
+@define-color surface0 #363a4f;
+@define-color surface1 #494d64;
+@define-color surface2 #5b6078;
+
+@define-color overlay0 #6e738d;
+@define-color overlay1 #8087a2;
+@define-color overlay2 #939ab7;
+
+@define-color blue #8aadf4;
+@define-color lavender #b7bdf8;
+@define-color sapphire #7dc4e4;
+@define-color sky #91d7e3;
+@define-color teal #8bd5ca;
+@define-color green #a6da95;
+@define-color yellow #eed49f;
+@define-color peach #f5a97f;
+@define-color maroon #ee99a0;
+@define-color red #ed8796;
+@define-color mauve #c6a0f6;
+@define-color pink #f5bde6;
+@define-color flamingo #f0c6c6;
+@define-color rosewater #f4dbd6;
diff --git a/home/desktop/config/waybar/modules.json b/home/desktop/config/waybar/modules.json
new file mode 100644
index 00000000..d6447689
--- /dev/null
+++ b/home/desktop/config/waybar/modules.json
@@ -0,0 +1,190 @@
+{
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ "tray": {
+ "spacing": 10
+ },
+ "clock": {
+ "format": "{: %A %Y-%m-%d | %R}",
+ "tooltip-format": "{calendar}",
+ "calendar": {
+ "mode": "year",
+ "mode-mon-col": 3,
+ "weeks-pos": "right",
+ "on-scroll": 1,
+ "on-click-right": "mode",
+ "format": {
+ "months": "{}",
+ "days": "{}",
+ "weeks": "W{}",
+ "weekdays": "{}",
+ "today": "{}"
+ }
+ },
+ "actions": {
+ "on-click-right": "mode",
+ "on-click-forward": "tz_up",
+ "on-click-backward": "tz_down",
+ "on-scroll-up": "shift_up",
+ "on-scroll-down": "shift_down"
+ }
+ },
+ "clock#compact": {
+ "format": "{: %R}",
+ "tooltip-format": "{: %A %Y-%m-%d}"
+ },
+ "cpu": {
+ "format": "{usage}% ",
+ "tooltip": false
+ },
+ "memory": {
+ "format": "{}% "
+ },
+ "temperature": {
+ "critical-threshold": 80,
+ "format": "{temperatureC}°C {icon}",
+ "format-icons": [
+ "",
+ "",
+ ""
+ ]
+ },
+ "backlight": {
+ "format": "{percent}% {icon}",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "battery": {
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "Connected ",
+ "tooltip-format": "{ifname}",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "bluetooth": {
+ "format": " {status}",
+ "format-disabled": " {status}",
+ "format-off": " {status}",
+ "format-on": " {status}",
+ "format-connected": " {device_alias}",
+ "on-click": "blueman-manager"
+ },
+ "pulseaudio": {
+ "scroll-step": 5,
+ "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/power": {
+ "format": "",
+ "on-click": "powermenu"
+ },
+ "wlr/workspaces": {
+ "on-click": "activate",
+ "disable-scroll": true,
+ "all-outputs": false,
+ "sort-by-number": true,
+ "format": "{name}:{icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": "",
+ "urgent": "",
+ "focused": "",
+ "default": ""
+ },
+ "persistent_workspaces": {
+ "1": [],
+ "2": [],
+ "3": [],
+ "4": [],
+ "5": []
+ }
+ },
+ "sway/workspaces": {
+ "on-click": "activate",
+ "disable-scroll": true,
+ "all-outputs": false,
+ "sort-by-number": true,
+ "format": "{name}:{icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": "",
+ "urgent": "",
+ "focused": "",
+ "default": ""
+ },
+ "persistent_workspaces": {
+ "1": [],
+ "2": [],
+ "3": [],
+ "4": [],
+ "5": []
+ }
+ }
+}
diff --git a/home/desktop/config/waybar/style.css b/home/desktop/config/waybar/style.css
new file mode 100644
index 00000000..94323776
--- /dev/null
+++ b/home/desktop/config/waybar/style.css
@@ -0,0 +1,116 @@
+@import 'macchiato.css';
+
+* {
+ border: none;
+ border-radius: 10px;
+ font-family: "FiraCode Nerd Font";
+ font-size: 18px;
+}
+
+window#waybar {
+ background: transparent;
+}
+window#waybar.hidden {
+ opacity: 0.2;
+}
+#window {
+ margin-top: 6px;
+ padding-left: 10px;
+ padding-right: 10px;
+ border-radius: 10px;
+ transition: none;
+ color: transparent;
+ background: transparent;
+}
+
+#workspaces button {
+ transition: none;
+ color: @overlay0;
+ box-shadow: inset 0 -3px transparent;
+ border-radius: 2px;
+}
+#workspaces button.active,
+#workspaces button.focused {
+ color: @base;
+}
+#workspaces button:hover {
+ transition: none;
+ box-shadow: inherit;
+ text-shadow: inherit;
+ color: @base;
+ border-color: #e8a2af;
+ color: @base;
+}
+#workspaces button.focused:hover {
+ color: @base;
+}
+
+#workspaces,
+#cpu,
+#memory,
+#temperature,
+#pulseaudio,
+#bluetooth,
+#network,
+#backlight,
+#battery,
+#clock,
+#tray {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-left: 0px;
+ margin-right: 0px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ color: @crust;
+ background: @lavender;
+}
+
+#clock {
+ background: @pink;
+}
+#cpu {
+ background: @mauve;
+}
+#memory {
+ background: @red;
+}
+#temperature {
+ background: @yellow;
+}
+#pulseaudio {
+ background: @green;
+}
+#bluetooth {
+ background: @teal;
+}
+#network {
+ background: @sky;
+}
+#backlight {
+ background: @sapphire;
+}
+#battery {
+ background: @blue;
+}
+#battery.charging,
+#battery.plugged {
+ background-color: @blue;
+}
+#battery.critical:not(.charging) {
+ background-color: @blue;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+@keyframes blink {
+ to {
+ color: @red;
+ }
+}
+#tray {
+ color: @base;
+}
diff --git a/home/desktop/hyprland.nix b/home/desktop/hyprland.nix
index ce9849fe..4e02ae88 100644
--- a/home/desktop/hyprland.nix
+++ b/home/desktop/hyprland.nix
@@ -24,6 +24,10 @@ in {
hyprpaper
];
programs.rofi.package = pkgs.rofi-wayland;
+ xdg.configFile."hypr" = {
+ source = ./config/hypr;
+ recursive = true;
+ };
wayland.windowManager.hyprland = {
enable = true;
xwayland = {
diff --git a/home/desktop/waybar.nix b/home/desktop/waybar.nix
index 0c0b8d95..735d8ba6 100644
--- a/home/desktop/waybar.nix
+++ b/home/desktop/waybar.nix
@@ -3,5 +3,9 @@
(nerdfonts.override {fonts = ["FiraCode"];})
bluez
];
+ xdg.configFile."waybar" = {
+ source = ./config/waybar;
+ recursive = true;
+ };
programs.waybar.enable = true;
}
diff --git a/hypr b/hypr
deleted file mode 160000
index 5e557df0..00000000
--- a/hypr
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5e557df0b5a3001eae40606ce93387cd1dbf5049
diff --git a/waybar b/waybar
deleted file mode 160000
index 9af131ac..00000000
--- a/waybar
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9af131acfa9ea465c6f35fae85c15ba4a74224b9