diff --git a/.luarc.json b/.luarc.json
new file mode 100644
index 0000000..62faf36
--- /dev/null
+++ b/.luarc.json
@@ -0,0 +1,10 @@
+{
+ "workspace": {
+ "library": [
+ "/usr/share/hypr/stubs"
+ ]
+ },
+ "diagnostics": {
+ "globals": ["hl"]
+ }
+}
diff --git a/config.py b/config.py
new file mode 100644
index 0000000..85ca74d
--- /dev/null
+++ b/config.py
@@ -0,0 +1,5 @@
+grub_theme = "/usr/share/grub/themes/monterey-grub-theme/theme.txt"
+grub_os_prober = True
+kernel_args_all = ""
+kernel_args_debug_only = ""
+kernel_args_normal_only = ""
diff --git a/config/hypr/hyprland.lua b/config/hypr/hyprland.lua
new file mode 100644
index 0000000..5ab4bd2
--- /dev/null
+++ b/config/hypr/hyprland.lua
@@ -0,0 +1,11 @@
+-- TODO: Laptop vs desktop vs docked config
+local swap_escape = false
+require("hyprland.core.general")
+require("hyprland.core.input")(swap_escape)
+
+require("colors")
+
+hl.device({
+ name = "pnp0c50:00-093a:0255-touchpad",
+ enabled = true,
+})
diff --git a/config/hypr/hyprland/binds/device.lua b/config/hypr/hyprland/binds/device.lua
new file mode 100644
index 0000000..df93d9f
--- /dev/null
+++ b/config/hypr/hyprland/binds/device.lua
@@ -0,0 +1,10 @@
+local function exit_submap()
+ hl.dispatch(hl.dsp.submap("reset"))
+end
+
+hl.define_submap("launch", function()
+ hl.bind("l", function()
+ hl.dispatch(hl.dsp.exec_cmd("librewolf"))
+ exit_submap()
+ end)
+end)
diff --git a/config/hypr/hyprland/binds/launch.lua b/config/hypr/hyprland/binds/launch.lua
new file mode 100644
index 0000000..88259ba
--- /dev/null
+++ b/config/hypr/hyprland/binds/launch.lua
@@ -0,0 +1,91 @@
+local function exit_submap()
+ hl.dispatch(hl.dsp.submap("reset"))
+end
+
+hl.define_submap("launch", function()
+ -- Librewolf
+ hl.bind("l", function()
+ hl.dispatch(hl.dsp.exec_cmd("librewolf"))
+ exit_submap()
+ end)
+
+ -- Steam
+ hl.bind("s", function()
+ hl.dispatch(hl.dsp.exec_cmd("steam"))
+ exit_submap()
+ end)
+
+ -- Discord
+ hl.bind("d", function()
+ hl.dispatch(hl.dsp.exec_cmd("vesktop"))
+ exit_submap()
+ end)
+
+ -- Kitty
+ hl.bind("k", function()
+ hl.dispatch(hl.dsp.exec_cmd("kitty"))
+ exit_submap()
+ end)
+ hl.bind("Return", function()
+ hl.dispatch(hl.dsp.exec_cmd("kitty"))
+ exit_submap()
+ end)
+
+ -- Filezilla
+ hl.bind("f", function()
+ hl.dispatch(hl.dsp.exec_cmd("filezilla"))
+ exit_submap()
+ end)
+
+ -- Thunderbird
+ hl.bind("t", function()
+ hl.dispatch(hl.dsp.exec_cmd("thunderbird"))
+ exit_submap()
+ end)
+
+ -- Zathura
+ hl.bind("z", function()
+ hl.dispatch(hl.dsp.exec_cmd("zathura"))
+ exit_submap()
+ end)
+
+ -- Brave
+ hl.bind("Shift + B", function()
+ hl.dispatch(hl.dsp.exec_cmd("brave"))
+ exit_submap()
+ end)
+
+ -- bsmanager
+ hl.bind("b", function()
+ hl.dispatch(hl.dsp.exec_cmd("/opt/bs-manager/bs-manager"))
+ exit_submap()
+ end)
+
+ -- ALVR
+ hl.bind("p", function()
+ hl.dispatch(hl.dsp.exec_cmd("alvr_dashboard"))
+ exit_submap()
+ end)
+
+ -- Qalculate
+ hl.bind("c", function()
+ hl.dispatch(hl.dsp.exec_cmd("qalculate-qt"))
+ exit_submap()
+ end)
+
+ -- AirPlay
+ hl.bind("a", function()
+ hl.dispatch(hl.dsp.exec_cmd("notify-send 'AirPlay server is starting...' --app-name='AirPlay Video'"))
+ hl.dispatch(
+ hl.dsp.exec_cmd(
+ "terminator -T 'hiddent'terminator' -e 'systemctl start avahi-daemon' && sleep 5 && uxplay -n LinuxVideoplay -nh"
+ )
+ )
+ exit_submap()
+ end)
+
+ -- Escape
+ hl.bind("Escape", function()
+ exit_submap()
+ end)
+end)
diff --git a/config/hypr/hyprland/core/general.lua b/config/hypr/hyprland/core/general.lua
new file mode 100644
index 0000000..4d808ce
--- /dev/null
+++ b/config/hypr/hyprland/core/general.lua
@@ -0,0 +1,10 @@
+hl.config({
+ general = {
+ gaps_in = 3,
+ gaps_out = 4,
+ border_size = 2,
+ no_focus_fallback = true,
+
+ layout = "dwindle",
+ },
+})
diff --git a/config/hypr/hyprland/core/group.lua b/config/hypr/hyprland/core/group.lua
new file mode 100644
index 0000000..365e30f
--- /dev/null
+++ b/config/hypr/hyprland/core/group.lua
@@ -0,0 +1 @@
+-- TODO: Check out what this does (pretty sure as in i3)
diff --git a/config/hypr/hyprland/core/input.lua b/config/hypr/hyprland/core/input.lua
new file mode 100644
index 0000000..0842c8d
--- /dev/null
+++ b/config/hypr/hyprland/core/input.lua
@@ -0,0 +1,51 @@
+--- @param swap_escape boolean
+return function(swap_escape)
+ hl.config({
+ inputs = {
+ kb_options = swap_escape and "caps:swapescape" or "",
+ kb_layout = "us",
+ kb_variant = "altgr-intl",
+ natural_scroll = "true",
+
+ numlock_by_default = true,
+ repeat_delay = 400,
+
+ follow_mouse = 2,
+ mouse_refocus = true,
+ scroll_factor = 2,
+ accel_profile = "flat",
+
+ touchpad = {
+ disable_while_typing = true,
+ natural_scroll = true,
+ scroll_factor = 4,
+ },
+
+ focus_on_close = 1,
+
+ sensitivity = 0,
+ },
+ gestures = {
+ workspace_swipe_distance = 200,
+ workspace_swipe_cancel_ratio = 0.3,
+ workspace_swipe_forever = true,
+ workspace_swipe_direction_lock = false,
+ },
+ })
+
+ hl.gesture({
+ fingers = 3,
+ direction = "horizontal",
+ action = "workspace",
+ })
+ hl.gesture({
+ fingers = 3,
+ direction = "down",
+ action = "close",
+ })
+ hl.gesture({
+ fingers = 3,
+ direction = "up",
+ action = "fullscreen",
+ })
+end
diff --git a/config/hypr/hyprland/core/misc.lua b/config/hypr/hyprland/core/misc.lua
new file mode 100644
index 0000000..b87c2c8
--- /dev/null
+++ b/config/hypr/hyprland/core/misc.lua
@@ -0,0 +1,23 @@
+hl.config({
+ xwayland = {
+ force_zero_scaling = true,
+ },
+ misc = {
+ disable_hyprland_logo = true,
+ disable_splash_rendering = true,
+ vrr = 3,
+ allow_session_lock_restore = true,
+ },
+ dwindle = {
+ pseudotile = true,
+ force_split = 2,
+ preserve_split = true,
+ },
+ binds = {
+ workspace_back_and_forth = true,
+ },
+ cursor = {
+ no_warps = false,
+ inactive_timeout = 5,
+ },
+})
diff --git a/config/hypr/hyprland/core/style.lua b/config/hypr/hyprland/core/style.lua
new file mode 100644
index 0000000..85fe37f
--- /dev/null
+++ b/config/hypr/hyprland/core/style.lua
@@ -0,0 +1,26 @@
+hl.config({
+ decoration = {
+ inactive_opacity = 1,
+ rounding = 10,
+
+ shadow = {
+ enabled = true,
+ range = 4,
+ },
+
+ blur = {
+ enabled = true,
+ xray = true,
+ new_optimizations = true,
+ size = 1,
+ passes = 2,
+ },
+
+ dim_inactive = true,
+ dim_strength = 0.1,
+ -- TODO: Consider adding glow?
+ },
+ animations = {
+ enabled = true,
+ },
+})
diff --git a/config/hypr/hyprland/execs.lua b/config/hypr/hyprland/execs.lua
new file mode 100644
index 0000000..279dccb
--- /dev/null
+++ b/config/hypr/hyprland/execs.lua
@@ -0,0 +1,6 @@
+hl.on("hyprland.start", function()
+ -- hl.exec_cmd("~/.config/hypr/xdg-portal-hyprland")
+ -- hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XAUTHORITY DISPLAY")
+ -- hl.exec_cmd("systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP")
+ hl.exec_cmd("systemctl --user start hyprpolkitagent")
+end)
diff --git a/config/hypr/hyprland/layout/init.lua b/config/hypr/hyprland/layout/init.lua
new file mode 100644
index 0000000..e69de29
diff --git a/config/hypr/hyprland/monitors.lua b/config/hypr/hyprland/monitors.lua
new file mode 100644
index 0000000..b88e026
--- /dev/null
+++ b/config/hypr/hyprland/monitors.lua
@@ -0,0 +1,44 @@
+return function(is_laptop, is_docked)
+ if is_laptop then
+ hl.monitor({
+ output = "",
+ mode = "preferred",
+ position = "auto",
+ scale = 1,
+ })
+ if is_docked then
+ hl.monitor({
+ output = "eDP-1",
+ disabled = true,
+ })
+ else
+ hl.monitor({
+ output = "eDP-1",
+ mode = "2880x1800@240",
+ position = "0x0",
+ scale = 1.5,
+ })
+ end
+ elseif is_laptop and is_docked then
+ hl.monitor({
+ output = "DP-1",
+ mode = "1920x1080@144",
+ position = "0x0",
+ scale = 1,
+ })
+ else
+ hl.monitor({
+ output = "DP-1",
+ mode = "1920x1080@144",
+ position = "0x0",
+ scale = 1,
+ vrr = 2
+ })
+ hl.monitor({
+ output = "DP-2",
+ mode = "1920x1080@75",
+ position = "1920x0",
+ scale = 1,
+ })
+ end
+end
diff --git a/config/matugen/README.md b/config/matugen/README.md
index 4a4e04e..352835b 100644
--- a/config/matugen/README.md
+++ b/config/matugen/README.md
@@ -5,5 +5,5 @@ Shamelessly copied from [End-4's dotfiles](https://github.com/end-4/dots-hyprlan
# TODOs
- [ ] Custom yazi theme
- [ ] Qt theme
-- [ ] Remove unneeded elements
+- [X] Remove unneeded elements
- [ ] Quickshell stuff
diff --git a/config/matugen/config.toml b/config/matugen/config.toml
index ca3ffb0..d8edf7c 100644
--- a/config/matugen/config.toml
+++ b/config/matugen/config.toml
@@ -20,11 +20,3 @@ output_path = '~/.config/gtk-3.0/gtk.css'
[templates.gtk4]
input_path = '~/.config/matugen/templates/gtk-4.0/gtk.css'
output_path = '~/.config/gtk-4.0/gtk.css'
-
-[templates.kde_colors]
-input_path = '~/.config/matugen/templates/kde/color.txt'
-output_path = '~/.local/state/quickshell/user/generated/color.txt'
-
-[templates.wallpaper]
-input_path = '~/.config/matugen/templates/wallpaper.txt'
-output_path = '~/.local/state/quickshell/user/generated/wallpaper/path.txt'
diff --git a/config/matugen/templates/ags/_material.scss b/config/matugen/templates/ags/_material.scss
deleted file mode 100644
index 81acbfe..0000000
--- a/config/matugen/templates/ags/_material.scss
+++ /dev/null
@@ -1,70 +0,0 @@
-$darkmode: False;
-$transparent: False;
-$background: {{colors.background.default.hex}};
-$onBackground: {{colors.on_background.default.hex}};
-$surface: {{colors.surface.default.hex}};
-$surfaceDim: {{colors.surface_dim.default.hex}};
-$surfaceBright: {{colors.surface_bright.default.hex}};
-$surfaceContainerLowest: {{colors.surface_container_lowest.default.hex}};
-$surfaceContainerLow: {{colors.surface_container_low.default.hex}};
-$surfaceContainer: {{colors.surface_container.default.hex}};
-$surfaceContainerHigh: {{colors.surface_container_high.default.hex}};
-$surfaceContainerHighest: {{colors.surface_container_highest.default.hex}};
-$onSurface: {{colors.on_surface.default.hex}};
-$surfaceVariant: {{colors.surface_variant.default.hex}};
-$onSurfaceVariant: {{colors.on_surface_variant.default.hex}};
-$inverseSurface: {{colors.inverse_surface.default.hex}};
-$inverseOnSurface: {{colors.inverse_on_surface.default.hex}};
-$outline: {{colors.outline.default.hex}};
-$outlineVariant: {{colors.outline_variant.default.hex}};
-$shadow: {{colors.shadow.default.hex}};
-$scrim: {{colors.scrim.default.hex}};
-$primary: {{colors.primary.default.hex}};
-$onPrimary: {{colors.on_primary.default.hex}};
-$primaryContainer: {{colors.primary_container.default.hex}};
-$onPrimaryContainer: {{colors.on_primary_container.default.hex}};
-$inversePrimary: {{colors.inverse_primary.default.hex}};
-$secondary: {{colors.secondary.default.hex}};
-$onSecondary: {{colors.on_secondary.default.hex}};
-$secondaryContainer: {{colors.secondary_container.default.hex}};
-$onSecondaryContainer: {{colors.on_secondary_container.default.hex}};
-$tertiary: {{colors.tertiary.default.hex}};
-$onTertiary: {{colors.on_tertiary.default.hex}};
-$tertiaryContainer: {{colors.tertiary_container.default.hex}};
-$onTertiaryContainer: {{colors.on_tertiary_container.default.hex}};
-$error: {{colors.error.default.hex}};
-$onError: {{colors.on_error.default.hex}};
-$errorContainer: {{colors.error_container.default.hex}};
-$onErrorContainer: {{colors.on_error_container.default.hex}};
-$primaryFixed: {{colors.primary_fixed.default.hex}};
-$primaryFixedDim: {{colors.primary_fixed_dim.default.hex}};
-$onPrimaryFixed: {{colors.on_primary_fixed.default.hex}};
-$onPrimaryFixedVariant: {{colors.on_primary_fixed_variant.default.hex}};
-$secondaryFixed: {{colors.secondary_fixed.default.hex}};
-$secondaryFixedDim: {{colors.secondary_fixed_dim.default.hex}};
-$onSecondaryFixed: {{colors.on_secondary_fixed.default.hex}};
-$onSecondaryFixedVariant: {{colors.on_secondary_fixed_variant.default.hex}};
-$tertiaryFixed: {{colors.tertiary_fixed.default.hex}};
-$tertiaryFixedDim: {{colors.tertiary_fixed_dim.default.hex}};
-$onTertiaryFixed: {{colors.on_tertiary_fixed.default.hex}};
-$onTertiaryFixedVariant: {{colors.on_tertiary_fixed_variant.default.hex}};
-$success: #B5CCBA;
-$onSuccess: #213528;
-$successContainer: #374B3E;
-$onSuccessContainer: #D1E9D6;
-$term0: #0D1C20;
-$term1: #8383FF;
-$term2: #63DFD4;
-$term3: #75FCDD;
-$term4: #76B4BD;
-$term5: #7AAEEA;
-$term6: #81D8D7;
-$term7: #CCDBD5;
-$term8: #B1BCB5;
-$term9: #BCB9FF;
-$term10: #F6FFFD;
-$term11: #FFFFFF;
-$term12: #BEE3E5;
-$term13: #C8DAFF;
-$term14: #E5FFFE;
-$term15: #ADEDF6;
diff --git a/config/matugen/templates/ags/sourceviewtheme-light.xml b/config/matugen/templates/ags/sourceviewtheme-light.xml
deleted file mode 100644
index d501c31..0000000
--- a/config/matugen/templates/ags/sourceviewtheme-light.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
- end_4
- <_description>Catppuccin port but very random
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/matugen/templates/ags/sourceviewtheme.xml b/config/matugen/templates/ags/sourceviewtheme.xml
deleted file mode 100644
index 7198099..0000000
--- a/config/matugen/templates/ags/sourceviewtheme.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
- Leo Iannacone
- <_description>Based on SublimeText Monokai Extended - Generated with tm2gtksw2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/config/matugen/templates/kde/color.txt b/config/matugen/templates/kde/color.txt
deleted file mode 100644
index 3514290..0000000
--- a/config/matugen/templates/kde/color.txt
+++ /dev/null
@@ -1 +0,0 @@
-{{colors.source_color.default.hex}}
\ No newline at end of file
diff --git a/config/matugen/templates/kde/kde-material-you-colors-wrapper.sh b/config/matugen/templates/kde/kde-material-you-colors-wrapper.sh
deleted file mode 100755
index 058ef15..0000000
--- a/config/matugen/templates/kde/kde-material-you-colors-wrapper.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env bash
-
-XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
-
-color=$(tr -d '\n' < "$XDG_STATE_HOME/quickshell/user/generated/color.txt")
-
-current_mode=$(gsettings get org.gnome.desktop.interface color-scheme 2>/dev/null | tr -d "'")
-if [[ "$current_mode" == "prefer-dark" ]]; then
- mode_flag="-d"
-else
- mode_flag="-l"
-fi
-
-# Parse --scheme-variant flag
-scheme_variant_str=""
-while [[ $# -gt 0 ]]; do
- case "$1" in
- --scheme-variant)
- scheme_variant_str="$2"
- shift 2
- ;;
- *)
- shift
- ;;
- esac
-done
-
-# Map string variant to integer
-case "$scheme_variant_str" in
- scheme-content) sv_num=0 ;;
- scheme-expressive) sv_num=1 ;;
- scheme-fidelity) sv_num=2 ;;
- scheme-monochrome) sv_num=3 ;;
- scheme-neutral) sv_num=4 ;;
- scheme-tonal-spot) sv_num=5 ;;
- scheme-vibrant) sv_num=6 ;;
- scheme-rainbow) sv_num=7 ;;
- scheme-fruit-salad) sv_num=8 ;;
- "") sv_num=5 ;;
- *)
- echo "Unknown scheme variant: $scheme_variant_str" >&2
- exit 1
- ;;
-esac
-
-source "$(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate"
-kde-material-you-colors "$mode_flag" --color "$color" -sv "$sv_num"
-deactivate
diff --git a/config/matugen/templates/wallpaper.txt b/config/matugen/templates/wallpaper.txt
deleted file mode 100644
index 33b0c5b..0000000
--- a/config/matugen/templates/wallpaper.txt
+++ /dev/null
@@ -1 +0,0 @@
-{{image}}
diff --git a/config/swaync/config.json b/config/swaync/config.json
new file mode 100644
index 0000000..8d27310
--- /dev/null
+++ b/config/swaync/config.json
@@ -0,0 +1,87 @@
+{
+ "$schema": "/etc/xdg/swaync/configSchema.json",
+ "ignore-gtk-theme": true,
+ "positionX": "right",
+ "positionY": "top",
+ "layer": "overlay",
+ "control-center-layer": "top",
+ "layer-shell": true,
+ "layer-shell-cover-screen": true,
+ "cssPriority": "user",
+ "control-center-margin-top": 0,
+ "control-center-margin-bottom": 0,
+ "control-center-margin-right": 0,
+ "control-center-margin-left": 0,
+ "notification-2fa-action": true,
+ "notification-inline-replies": false,
+ "notification-body-image-height": 100,
+ "notification-body-image-width": 200,
+ "timeout": 10,
+ "timeout-low": 5,
+ "timeout-critical": 0,
+ "fit-to-screen": true,
+ "relative-timestamps": true,
+ "control-center-width": 500,
+ "control-center-height": 600,
+ "notification-window-width": 500,
+ "keyboard-shortcuts": true,
+ "notification-grouping": true,
+ "image-visibility": "when-available",
+ "transition-time": 200,
+ "hide-on-clear": false,
+ "hide-on-action": true,
+ "text-empty": "No Notifications",
+ "notification-visibility": {
+ "example-name": {
+ "state": "muted",
+ "urgency": "Normal",
+ "app-name": "example.app.id"
+ }
+ },
+ "widgets": [
+ "inhibitors",
+ "title",
+ "dnd",
+ "notifications"
+ ],
+ "widget-config": {
+ "notifications": {
+ "vexpand": true
+ },
+ "inhibitors": {
+ "text": "Inhibitors",
+ "button-text": "Clear All",
+ "clear-all-button": true
+ },
+ "title": {
+ "text": "Notifications",
+ "clear-all-button": true,
+ "button-text": "Clear All"
+ },
+ "dnd": {
+ "text": "Do Not Disturb"
+ },
+ "label": {
+ "max-lines": 5,
+ "text": "Label Text"
+ },
+ "mpris": {
+ "blacklist": [],
+ "autohide": false,
+ "show-album-art": "always",
+ "loop-carousel": false
+ },
+ "buttons-grid": {
+ "buttons-per-row": 7,
+ "actions": [
+ {
+ "label": "яки",
+ "type": "toggle",
+ "active": true,
+ "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'",
+ "update-command": "sh -c '[[ $(nmcli radio wifi) == \"enabled\" ]] && echo true || echo false'"
+ }
+ ]
+ }
+ }
+}