diff --git a/.config/hypr/animations.conf b/.config/hypr/animations.conf
new file mode 100644
index 0000000..f106e03
--- /dev/null
+++ b/.config/hypr/animations.conf
@@ -0,0 +1,12 @@
+animations {
+ enabled = yes
+
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+
+ animation = windows, 1, 2, myBezier
+ animation = windowsOut, 1, 2, default, popin 80%
+ animation = border, 1, 5, default
+ animation = borderangle, 1, 3, default
+ animation = fade, 1, 2, default
+ animation = workspaces, 1, 1, default
+}
diff --git a/.config/hypr/autostart.conf b/.config/hypr/autostart.conf
new file mode 100644
index 0000000..36218c8
--- /dev/null
+++ b/.config/hypr/autostart.conf
@@ -0,0 +1,3 @@
+exec-once = waypaper --restore
+exec-once = wl-paste --watch cliphist store
+exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
diff --git a/.config/hypr/environment.conf b/.config/hypr/environment.conf
new file mode 100644
index 0000000..1862f5d
--- /dev/null
+++ b/.config/hypr/environment.conf
@@ -0,0 +1,19 @@
+# Firefox
+env = MOZ_ENABLE_WAYLAND,1
+
+# Qt
+env = QT_QPA_PLATFORM,wayland
+env = QT_QPA_PLATFORMTHEME,qt6ct
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+
+# Wayland
+env = XDG_SESSION_TYPE,wayland
+env = GDK_BACKEND,wayland
+env = GSK_RENDERER,vulkan
+
+# Wlroots
+env = WLR_NO_HARDWARE_CURSORS,1
+env = WLR_RENDERER,vulkan
+
+# X11
+env = XCURSOR_SIZE,24
diff --git a/.config/hypr/general.conf b/.config/hypr/general.conf
new file mode 100644
index 0000000..3d3c497
--- /dev/null
+++ b/.config/hypr/general.conf
@@ -0,0 +1,69 @@
+general {
+ gaps_in = 2
+ gaps_out = 4
+ border_size = 2
+ layout = dwindle
+ allow_tearing = true
+
+ col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
+ col.inactive_border = rgba(595959aa)
+}
+
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ kb_rules =
+
+ touchpad {
+ natural_scroll = no
+ }
+
+ follow_mouse = 1
+ sensitivity = 0
+ accel_profile = flat
+}
+
+debug {
+ overlay = false
+}
+
+decoration {
+ rounding = 5
+
+ blur {
+ enabled = true
+ size = 4
+ passes = 4
+ new_optimizations = on
+ ignore_opacity = on
+ xray = false
+ }
+
+ drop_shadow = no
+ shadow_range = 4
+ shadow_render_power = 3
+ col.shadow = rgba(1a1a1aee)
+
+ #active_opacity = 0.9
+ #inactive_opacity = 0.9
+}
+
+dwindle {
+ pseudotile = yes
+ preserve_split = yes
+ no_gaps_when_only = 1
+}
+
+master {
+ new_is_master = true
+}
+
+gestures {
+ workspace_swipe = off
+}
+
+misc {
+ force_default_wallpaper = 0
+}
diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..b83a503
--- /dev/null
+++ b/.config/hypr/hyprland.conf
@@ -0,0 +1,9 @@
+source = monitor.conf
+source = programs.conf
+source = environment.conf
+source = autostart.conf
+source = general.conf
+source = animations.conf
+source = rules.conf
+source = keys.conf
+source = typing.conf
diff --git a/.config/hypr/keys.conf b/.config/hypr/keys.conf
new file mode 100644
index 0000000..010fe4f
--- /dev/null
+++ b/.config/hypr/keys.conf
@@ -0,0 +1,92 @@
+$main = SUPER
+
+# Apps
+bind = $main, B, exec, $browser
+bind = $main, D, exec, $editor
+bind = $main, E, exec, $files
+bind = $main, L, exec, $lockscreen
+bind = $main, S, exec, pkill $statusbar || $statusbar
+bind = $main, Super_L, exec, pkill $menu || $menu
+bind = $main, T, exec, $terminal
+bind = $main, W, exec, $wallpaper
+bind = $main, Return, exec, $floating
+bind = $main, F1, exec, $systeminfo
+bind = , Print, exec, $screenshot
+
+# Window management
+bind = $main, C, killactive,
+bind = $main, F, fullscreen,
+bind = $main, V, togglefloating,
+bind = $main, P, pseudo,
+bind = $main, J, togglesplit,
+
+# Session management
+bind = $main, Backspace, exit,
+bind = $main, F12, exec, $logout
+
+# Window focus
+bind = $main, left, movefocus, l
+bind = $main, right, movefocus, r
+bind = $main, up, movefocus, u
+bind = $main, down, movefocus, d
+
+# Window resizing
+binde = $main SHIFT, left, resizeactive, -10 0
+binde = $main SHIFT, right, resizeactive, 10 0
+binde = $main SHIFT, up, resizeactive, 0 -10
+binde = $main SHIFT, down, resizeactive, 0 10
+
+# Switch workspaces with numpad
+bind =, KP_Home, workspace, 1
+bind =, KP_Up, workspace, 2
+bind =, KP_Prior, workspace, 3
+bind =, KP_Left, workspace, 4
+bind =, KP_Begin, workspace, 5
+bind =, KP_Right, workspace, 6
+bind =, KP_End, workspace, 7
+bind =, KP_Down, workspace, 8
+bind =, KP_Next, workspace, 9
+
+# Move window to a specific workspace with numpad
+bind = $main, KP_Home, movetoworkspace, 1
+bind = $main, KP_Up, movetoworkspace, 2
+bind = $main, KP_Prior, movetoworkspace, 3
+bind = $main, KP_Left, movetoworkspace, 4
+bind = $main, KP_Begin, movetoworkspace, 5
+bind = $main, KP_Right, movetoworkspace, 6
+bind = $main, KP_End, movetoworkspace, 7
+bind = $main, KP_Down, movetoworkspace, 8
+bind = $main, KP_Next, movetoworkspace, 9
+
+# Move window to a specific workspace with numbers
+bind = $main, 1, movetoworkspace, 1
+bind = $main, 2, movetoworkspace, 2
+bind = $main, 3, movetoworkspace, 3
+bind = $main, 4, movetoworkspace, 4
+bind = $main, 5, movetoworkspace, 5
+bind = $main, 6, movetoworkspace, 6
+bind = $main, 7, movetoworkspace, 7
+bind = $main, 8, movetoworkspace, 8
+bind = $main, 9, movetoworkspace, 9
+
+# Move window to an adjacent workspace
+bind = $main ALT, right, movetoworkspace, +1
+bind = $main ALT, left, movetoworkspace, -1
+
+# Special workspace (scratchpad)
+bind = $main, F9, togglespecialworkspace, magic
+bind = $main SHIFT, F9, movetoworkspace, special:magic
+
+# Move and resize windows (main + LMB/RMB and drag)
+bindm = $main, mouse:272, movewindow
+bindm = $main, mouse:273, resizewindow
+
+# Media player control
+bindl =, XF86AudioPlay, exec, playerctl play-pause
+bindl =, XF86AudioNext, exec, playerctl next
+bindl =, XF86AudioPrev, exec, playerctl previous
+
+# Volume control
+bindle =, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+
+bindle =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-
+bindl =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
diff --git a/.config/hypr/monitor.conf b/.config/hypr/monitor.conf
new file mode 100644
index 0000000..8ccd5e6
--- /dev/null
+++ b/.config/hypr/monitor.conf
@@ -0,0 +1 @@
+monitor = ,highrr,auto,auto
diff --git a/.config/hypr/programs.conf b/.config/hypr/programs.conf
new file mode 100644
index 0000000..f8912ec
--- /dev/null
+++ b/.config/hypr/programs.conf
@@ -0,0 +1,17 @@
+# Apps
+$browser = google-chrome
+$email = thunderbird
+$files = nautilus
+$logout = wlogout
+$lockscreen = swaylock
+$menu = fuzzel
+$screenshot = IMG=~/pictures/screenshots/$(date +%Y-%m-%d_%H-%M-%S).png && grim -g "$(slurp -d)" $IMG && wl-copy < $IMG
+$statusbar = waybar
+$terminal = kgx
+$wallpaper = waypaper
+
+# Terminal based
+$editor = $terminal -e nano
+$center = [float;size 960 540;center]
+$floating = $center $terminal
+$systeminfo = $center $terminal --hold -e fastfetch
diff --git a/.config/hypr/rules.conf b/.config/hypr/rules.conf
new file mode 100644
index 0000000..64df288
--- /dev/null
+++ b/.config/hypr/rules.conf
@@ -0,0 +1,10 @@
+# Blur the status bar
+layerrule = blur, $statusbar
+layerrule = ignorealpha 0.1, $statusbar
+
+# Blur the launcher
+layerrule = blur, launcher
+layerrule = ignorealpha 0.1, launcher
+
+# Disable maximize event
+windowrulev2 = suppressevent maximize, class:.*
diff --git a/.config/hypr/typing.conf b/.config/hypr/typing.conf
new file mode 100644
index 0000000..82fcbbb
--- /dev/null
+++ b/.config/hypr/typing.conf
@@ -0,0 +1,26 @@
+$mod = ALT
+
+# Special characters
+bindle = $mod, KP_Add, exec, wtype ±
+bindle = $mod, KP_Subtract, exec, wtype ±
+bindle = $mod, Equal, exec, wtype ≈
+bindle = $mod, Grave, exec, wtype ≈
+bindle = $mod, T, exec, wtype ™
+bindle = $mod, C, exec, wtype ©
+bindle = $mod, R, exec, wtype ®
+
+# German language
+bindle = $mod, A, exec, wtype ä
+bindle = $mod SHIFT, A, exec, wtype Ä
+bindle = $mod, O, exec, wtype ö
+bindle = $mod SHIFT, O, exec, wtype Ö
+bindle = $mod, U, exec, wtype ü
+bindle = $mod SHIFT, U, exec, wtype Ü
+bindle = $mod, S, exec, wtype ß
+
+# Emoji
+bindle = $mod, W, exec, wtype 👋
+bindle = $mod, H, exec, wtype ❤️
+bindle = $mod, L, exec, wtype 👍
+bindle = $mod, P, exec, wtype 🙏
+bindle = $mod, F, exec, wtype 🤣
diff --git a/.config/swaylock/config b/.config/swaylock/config
new file mode 100644
index 0000000..28a9383
--- /dev/null
+++ b/.config/swaylock/config
@@ -0,0 +1,38 @@
+daemonize
+show-failed-attempts
+clock
+screenshot
+effect-blur=9x5
+effect-vignette=0.5:0.5
+color=1f1d2e80
+font=Ubuntu Nerd Font
+indicator
+indicator-radius=200
+indicator-thickness=20
+line-color=1f1d2e
+ring-color=33CCFE
+inside-color=1f1d2e
+key-hl-color=EC4899
+separator-color=00000000
+text-color=e0def4
+text-caps-lock-color=
+line-ver-color=eb6f92
+ring-ver-color=eb6f92
+inside-ver-color=1f1d2e
+text-ver-color=e0def4
+ring-wrong-color=31748f
+text-wrong-color=31748f
+inside-wrong-color=1f1d2e
+inside-clear-color=1f1d2e
+text-clear-color=e0def4
+ring-clear-color=9ccfd8
+line-clear-color=1f1d2e
+line-wrong-color=1f1d2e
+bs-hl-color=31748f
+grace=2
+grace-no-mouse
+grace-no-touch
+datestr=
+timestr=%H : %M
+fade-in=0.2
+ignore-empty-password
diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc
new file mode 100644
index 0000000..e31de93
--- /dev/null
+++ b/.config/waybar/config.jsonc
@@ -0,0 +1,22 @@
+{
+ "layer": "top",
+ "position": "bottom",
+ "modules-left": [],
+ "modules-center": [],
+ "modules-right": [
+ "group/hardware",
+ "custom/updates",
+ "wireplumber",
+ "clock",
+ ],
+ "group/hardware": {
+ "orientation": "horizontal",
+ "modules": [
+ "cpu",
+ "custom/gpu",
+ "memory",
+ "disk",
+ ],
+ },
+ "include": "~/.config/waybar/modules.jsonc",
+}
diff --git a/.config/waybar/modules.jsonc b/.config/waybar/modules.jsonc
new file mode 100644
index 0000000..bc990ea
--- /dev/null
+++ b/.config/waybar/modules.jsonc
@@ -0,0 +1,115 @@
+{
+ "clock": {
+ "interval": 60,
+ "format": " {:%H : %M}",
+ "tooltip-format": "{:%A, %Y-%m-%d}",
+ "on-click": "gnome-clocks",
+ "on-click-right": "date -u +'%Y-%m-%dT%H:%M:%SZ' | wl-copy",
+ },
+ "cpu": {
+ "interval": 2,
+ "format": "{icon} {usage}%",
+ "format-icons": ["", "", ""],
+ "max-length": 10,
+ "on-click": "$TERMINAL -e btop",
+ },
+ "custom/updates": {
+ "interval": 300,
+ "format": " {}",
+ "exec": "~/.bin/updates",
+ "return-type": "json",
+ "on-click": "$TERMINAL -e yay",
+ },
+ "custom/gpu": {
+ "interval": 2,
+ "exec": "nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits",
+ "format": " {}%",
+ "return-type": "",
+ "on-click": "$TERMINAL -e nvtop",
+ "max-length": 10,
+ },
+ "memory": {
+ "interval": 2,
+ "format": " {used} GiB",
+ "max-length": 10,
+ "on-click": "$TERMINAL -e btop",
+ },
+ "network#up": {
+ "interval": 2,
+ "format": " {bandwidthUpBits}",
+ "tooltip-format": " {ifname} upload",
+ "max-length": 10,
+ "on-click": "$TERMINAL -e nethogs",
+ },
+ "network#down": {
+ "interval": 2,
+ "format": " {bandwidthDownBits}",
+ "tooltip-format": " {ifname} download",
+ "max-length": 10,
+ "on-click": "$TERMINAL -e nethogs",
+ },
+ "disk": {
+ "interval": 30,
+ "format": " {used}",
+ "path": "/",
+ "max-length": 10,
+ "on-click": "$TERMINAL -e dua i",
+ },
+ "mpris": {
+ "format": "{player_icon} {title}",
+ "format-paused": "{status_icon} {title}",
+ "player-icons": {
+ "default": "",
+ "mpv": ""
+ },
+ "status-icons": {
+ "paused": ""
+ },
+ "title-len": 30,
+ },
+ "wireplumber": {
+ "format": "{icon} {volume}%",
+ "format-muted": "",
+ "scroll-step": 5,
+ "format-icons": ["", "", ""],
+ "max-length": 10,
+ "on-click": "helvum",
+ },
+ "hyprland/window": {
+ "format": " {initialTitle}",
+ "separate-outputs": true
+ },
+ "hyprland/workspaces": {
+ "format": "{icon}",
+ "persistent-workspaces": {
+ "*": 9
+ },
+ "format-icons": {
+ "default": "",
+ "empty": "",
+ "active": "",
+ "urgent": "",
+ },
+ "sort-by-number": true,
+ "on-click": "activate",
+ },
+ "custom/os":{
+ "format": "",
+ "tooltip": false,
+ "on-click": "$TERMINAL --hold -e fastfetch",
+ },
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 14,
+ "icon-theme": "Adwaita",
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": [
+ ],
+ "app_ids-mapping": {
+ },
+ "rewrite": {
+ },
+ },
+}
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..3f239fe
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,124 @@
+/* ===== Generic ===== */
+
+* {
+ border: none;
+ font-family: "Ubuntu Nerd Font";
+ font-size: 12px;
+ padding: 0;
+ margin: 0;
+}
+
+/* ===== Waybar ===== */
+
+#waybar {
+ background: transparent;
+ /* background: rgba(54, 137, 230, 0.8); */
+ /* border-top: 1px solid rgba(54, 137, 230, 0.8); */
+}
+
+#waybar.hidden {
+ opacity: 0.2;
+}
+
+#waybar #window {
+ opacity: 1;
+ transition: opacity 200ms ease;
+}
+
+#waybar.empty #window {
+ opacity: 0;
+}
+
+/* ===== Modules ===== */
+
+#clock,
+#cpu,
+#disk,
+#memory,
+#mpris,
+#network,
+#window,
+#wireplumber,
+#custom-gpu,
+#custom-updates {
+ color: rgba(32, 32, 32, 0.8);
+ padding: 4px 8px;
+ margin: 2px;
+ margin-right: 0;
+ border-radius: 3px;
+}
+
+#custom-os {
+ font-size: 150%;
+ color: rgb(137, 220, 235);
+ /* background: transparent; */
+}
+
+#custom-updates.disabled {
+ opacity: 0;
+}
+
+/* ===== Taskbar ===== */
+
+#taskbar button {
+ padding: 0px 5px;
+}
+
+#taskbar button:hover {}
+#taskbar button.active {}
+
+/* ===== Workspaces ===== */
+
+#workspaces button {
+ /* color: rgba(38, 41, 44, 0.9); */
+ padding: 0px 5px;
+ color: white;
+ background: transparent;
+ text-shadow: none;
+ border-radius: 0;
+ opacity: 0.5;
+}
+
+#workspaces button.empty {
+ opacity: 0.5;
+}
+
+#workspaces button.active {
+ opacity: 1.0;
+}
+
+#workspaces button.visible {}
+#workspaces button.urgent {}
+#workspaces button.persistent {}
+#workspaces button.hidden {}
+
+
+/* ===== Extra colors ===== */
+
+#cpu {
+ background: rgb(50.15%, 92.07%, 99.48%);
+}
+
+#custom-gpu {
+ background: rgb(67.06%, 91.37%, 70.2%);
+}
+
+#memory {
+ background: rgb(100%, 81.7%, 68.38%);
+}
+
+#disk {
+ background: rgb(100%, 80.74%, 81.04%);
+}
+
+#network {
+ background: rgb(92.54%, 81.78%, 100%);
+}
+
+#wireplumber {
+ background: rgb(90%, 90%, 90%);
+}
+
+#clock {
+ background: rgb(90%, 90%, 90%);
+}
diff --git a/.config/wlogout/layout b/.config/wlogout/layout
new file mode 100644
index 0000000..e125ce4
--- /dev/null
+++ b/.config/wlogout/layout
@@ -0,0 +1,18 @@
+{
+ "label" : "logout",
+ "action" : "loginctl terminate-user $USER",
+ "text" : "Logout",
+ "keybind" : "l"
+}
+{
+ "label" : "shutdown",
+ "action" : "systemctl poweroff",
+ "text" : "Shutdown",
+ "keybind" : "s"
+}
+{
+ "label" : "reboot",
+ "action" : "systemctl reboot",
+ "text" : "Reboot",
+ "keybind" : "r"
+}
diff --git a/.config/wlogout/style.css b/.config/wlogout/style.css
new file mode 100644
index 0000000..b9d7cc1
--- /dev/null
+++ b/.config/wlogout/style.css
@@ -0,0 +1,46 @@
+* {
+ background-image: none;
+}
+
+window {
+ background-color: rgba(0, 0, 0, 0.5);
+}
+
+button {
+ color: #ffffff;
+ background-color: rgba(0, 0, 0, 1);
+ border-style: solid;
+ border-color: #33ccfe;
+ border-width: 2px;
+ border-radius: 10px;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 25%;
+ margin: 50px;
+}
+
+button:focus, button:active, button:hover {
+ background-color: #353c4a;
+ outline-style: none;
+}
+
+#logout {
+ background-image: image(
+ url("/usr/share/wlogout/icons/logout.png"),
+ url("/usr/local/share/wlogout/icons/logout.png")
+ );
+}
+
+#shutdown {
+ background-image: image(
+ url("/usr/share/wlogout/icons/shutdown.png"),
+ url("/usr/local/share/wlogout/icons/shutdown.png")
+ );
+}
+
+#reboot {
+ background-image: image(
+ url("/usr/share/wlogout/icons/reboot.png"),
+ url("/usr/local/share/wlogout/icons/reboot.png")
+ );
+}