diff --git a/shared/.config/dunst/dunstrc b/shared/.config/dunst/dunstrc
deleted file mode 100644
index 0b3c56b..0000000
--- a/shared/.config/dunst/dunstrc
+++ /dev/null
@@ -1,80 +0,0 @@
-# ~/.config/dunst/dunstrc
-
-[global]
- monitor = 0
- follow = mouse
- width = (200, 400)
- height = 300
- origin = top-right
- offset = 10x50
- scale = 0
- notification_limit = 0
-
- progress_bar = true
- progress_bar_height = 10
- progress_bar_frame_width = 1
- progress_bar_min_width = 150
- progress_bar_max_width = 300
-
- indicate_hidden = yes
- transparency = 0
- separator_height = 2
- padding = 12
- horizontal_padding = 12
- text_icon_padding = 0
- frame_width = 2
- frame_color = "#689d6a"
- separator_color = frame
- sort = yes
- idle_threshold = 120
-
- font = Hack Nerd Font Mono 10
- line_height = 0
- markup = full
- format = "%s\n%b"
- alignment = left
- vertical_alignment = center
- show_age_threshold = 60
- ellipsize = middle
- ignore_newline = no
- stack_duplicates = true
- hide_duplicate_count = false
- show_indicators = yes
-
- icon_position = left
- min_icon_size = 32
- max_icon_size = 64
-
- sticky_history = yes
- history_length = 20
-
- dmenu = /usr/bin/dmenu -p dunst:
- browser = /usr/bin/xdg-open
- always_run_script = true
- title = Dunst
- class = Dunst
- corner_radius = 0
- ignore_dbusclose = false
- force_xwayland = false
- force_xinerama = false
- mouse_left_click = close_current
- mouse_middle_click = do_action, close_current
- mouse_right_click = close_all
-
-[urgency_low]
- background = "#282828"
- foreground = "#ebdbb2"
- frame_color = "#689d6a"
- timeout = 10
-
-[urgency_normal]
- background = "#282828"
- foreground = "#ebdbb2"
- frame_color = "#689d6a"
- timeout = 10
-
-[urgency_critical]
- background = "#282828"
- foreground = "#ebdbb2"
- frame_color = "#cc241d"
- timeout = 0
diff --git a/shared/.config/electron-flags.conf b/shared/.config/electron-flags.conf
deleted file mode 100644
index 51bdd86..0000000
--- a/shared/.config/electron-flags.conf
+++ /dev/null
@@ -1,2 +0,0 @@
---enable-features=UseOzonePlatform
---ozone-platform=wayland
diff --git a/shared/.config/fontconfig/fonts.conf b/shared/.config/fontconfig/fonts.conf
index a5dffe9..a0d8ed3 100644
--- a/shared/.config/fontconfig/fonts.conf
+++ b/shared/.config/fontconfig/fonts.conf
@@ -1,14 +1,13 @@
-
-
+
+
-
-
-
- Verdana
-
-
- hintfull
-
-
-
-
\ No newline at end of file
+
+
+ Verdana
+
+
+ hintfull
+
+
+
~/.local/share/fonts
+
diff --git a/shared/.config/kanshi/config b/shared/.config/kanshi/config
deleted file mode 100644
index 4d7b98b..0000000
--- a/shared/.config/kanshi/config
+++ /dev/null
@@ -1,26 +0,0 @@
-output "Dell Inc. DELL S3422DWG 3LTSS63" {
- mode 3440x1440@143.975
- position 0,0
- alias $HOME_DESK_1
-}
-
-output eDP-1 {
- mode 2256x1504@59.999
- position 0,0
- scale 1.25
- alias $INTERNAL
-}
-
-profile docked {
- output $HOME_DESK_1 enable
- output $INTERNAL disable
-}
-
-profile mobile_external {
- output $INTERNAL enable position 0,0
- output * enable position 1805,0
-}
-
-profile undocked {
- output $INTERNAL enable
-}
diff --git a/shared/.config/sway/#config# b/shared/.config/sway/#config#
deleted file mode 100644
index d5b145c..0000000
--- a/shared/.config/sway/#config#
+++ /dev/null
@@ -1,261 +0,0 @@
-### Variables
-set $mod Mod4
-set $left h
-set $down j
-set $up k
-set $right l
-
-# Terminal
-set $term ghostty
-
-# App Launcher
-set $menu wofi --show drun
-
-# This systemd unit indicates that sway is running for other things (kanshi)
-exec_always systemctl --user start sway-session.target
-exec_always systemctl --user restart kanshi.service
-# Wallpaper
-output * bg #282828 solid_color
-
-# Displays (these get updated to an autodetect kanshi config, but this is a default before it runs)
-output "Dell Inc. DELL S3422DWG 3LTSS63" mode 3440x1440@143.975Hz
-output eDP-1 mode 2256x1504@59.999Hz scale 1.25
-
-# Idle Configuration
-exec swayidle -w \
- timeout 300 'swaylock -f' \
- timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
- timeout 900 'if [ $(cat /sys/class/power_supply/BAT*/status) != "Charging" ]; then systemctl suspend; fi' \
- before-sleep 'swaylock -f'
-
-# Keyboard
-input type:keyboard {
- xkb_layout "us"
- xkb_variant ""
- xkb_options "caps:ctrl_modifier,shift:both_capslock"
- repeat_delay 400
- repeat_rate 40
-}
-
-# Mouse
-input type:pointer {
- accel_profile "flat"
- pointer_accel 0.0
- scroll_factor 1.0
-}
-focus_follows_mouse no
-
-# Trackpad
-input type:touchpad {
- tap enabled
- natural_scroll enabled
- dwt enabled
- accel_profile "adaptive"
- pointer_accel 0.3
- scroll_factor 1.0
- middle_emulation enabled
-}
-
-### Key bindings
-#
-# Basics:
-#
- # Start a terminal
- bindsym $mod+Return exec $term
-
- # Kill focused window
- bindsym $mod+Shift+q kill
-
- # Start your launcher
- bindsym $mod+d exec $menu
-
- # Drag floating windows by holding down $mod and left mouse button.
- # Resize them with right mouse button + $mod.
- # Despite the name, also works for non-floating windows.
- # Change normal to inverse to use left mouse button for resizing and right
- # mouse button for dragging.
- floating_modifier $mod normal
-
- # Reload the configuration file
- bindsym $mod+Shift+c reload
-
- # Exit sway (logs you out of your Wayland session)
- bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
-
-#
-# Custom Binds:
-#
- bindsym $mod+Shift+s exec grimshot copy area
- bindsym $mod+x exec swaylock -f
-
-#
-# Moving around:
-#
- # Move your focus around
- bindsym $mod+$left focus left
- bindsym $mod+$down focus down
- bindsym $mod+$up focus up
- bindsym $mod+$right focus right
- # Or use $mod+[up|down|left|right]
- bindsym $mod+Left focus left
- bindsym $mod+Down focus down
- bindsym $mod+Up focus up
- bindsym $mod+Right focus right
-
- # Move the focused window with the same, but add Shift
- bindsym $mod+Shift+$left move left
- bindsym $mod+Shift+$down move down
- bindsym $mod+Shift+$up move up
- bindsym $mod+Shift+$right move right
- # Ditto, with arrow keys
- bindsym $mod+Shift+Left move left
- bindsym $mod+Shift+Down move down
- bindsym $mod+Shift+Up move up
- bindsym $mod+Shift+Right move right
-#
-# Workspaces:
-#
- # Switch to workspace
- bindsym $mod+1 workspace number 1
- bindsym $mod+2 workspace number 2
- bindsym $mod+3 workspace number 3
- bindsym $mod+4 workspace number 4
- bindsym $mod+5 workspace number 5
- bindsym $mod+6 workspace number 6
- bindsym $mod+7 workspace number 7
- bindsym $mod+8 workspace number 8
- bindsym $mod+9 workspace number 9
- bindsym $mod+0 workspace number 10
- # Move focused container to workspace
- bindsym $mod+Shift+1 move container to workspace number 1
- bindsym $mod+Shift+2 move container to workspace number 2
- bindsym $mod+Shift+3 move container to workspace number 3
- bindsym $mod+Shift+4 move container to workspace number 4
- bindsym $mod+Shift+5 move container to workspace number 5
- bindsym $mod+Shift+6 move container to workspace number 6
- bindsym $mod+Shift+7 move container to workspace number 7
- bindsym $mod+Shift+8 move container to workspace number 8
- bindsym $mod+Shift+9 move container to workspace number 9
- bindsym $mod+Shift+0 move container to workspace number 10
- # Note: workspaces can have any name you want, not just numbers.
- # We just use 1-10 as the default.
-#
-# Layout stuff:
-#
- # You can "split" the current object of your focus with
- # $mod+b or $mod+v, for horizontal and vertical splits
- # respectively.
- bindsym $mod+Shift+v splith
- bindsym $mod+v splitv
-
- # Switch the current container between different layout styles
- bindsym $mod+s layout stacking
- bindsym $mod+w layout tabbed
- bindsym $mod+e layout toggle split
-
- # Make the current focus fullscreen
- bindsym $mod+f fullscreen
-
- # Toggle the current focus between tiling and floating mode
- bindsym $mod+Shift+space floating toggle
-
- # Swap focus between the tiling area and the floating area
- bindsym $mod+space focus mode_toggle
-
- # Move focus to the parent container
- bindsym $mod+a focus parent
-#
-# Scratchpad:
-#
- # Sway has a "scratchpad", which is a bag of holding for windows.
- # You can send windows there and get them back later.
-
- # Move the currently focused window to the scratchpad
- bindsym $mod+Shift+minus move scratchpad
-
- # Show the next scratchpad window or hide the focused scratchpad window.
- # If there are multiple scratchpad windows, this command cycles through them.
- bindsym $mod+minus scratchpad show
-#
-# Resizing containers:
-#
-mode "resize" {
- # left will shrink the containers width
- # right will grow the containers width
- # up will shrink the containers height
- # down will grow the containers height
- bindsym $left resize shrink width 10px
- bindsym $down resize grow height 10px
- bindsym $up resize shrink height 10px
- bindsym $right resize grow width 10px
-
- # Ditto, with arrow keys
- bindsym Left resize shrink width 10px
- bindsym Down resize grow height 10px
- bindsym Up resize shrink height 10px
- bindsym Right resize grow width 10px
-
- # Return to default mode
- bindsym Return mode "default"
- bindsym Escape mode "default"
-}
-bindsym $mod+r mode "resize"
-#
-# Utilities:
-#
- # Special keys to adjust volume via PulseAudio
- bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
- bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
- bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
- bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
- # Special keys to adjust brightness via brightnessctl
- bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
- bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
- # Special key to take a screenshot with grim
- bindsym Print exec grim
-
-#
-# Styling:
-#
-
-# Remove title bars
-
-default_border pixel 2
-default_floating_border pixel 2
-
-# Add gaps
-gaps inner 5
-gaps outer 2
-
-# Gruvbox Dark colors
-set $bg #282828
-set $fg #ebdbb2
-set $red #cc241d
-set $green #98971a
-set $yellow #d79921
-set $blue #458588
-set $purple #b16286
-set $aqua #689d6a
-set $gray #a89984
-set $darkgray #1d2021
-
-# Window decorations
-# class border backgr. text indicator child_border
-client.focused $aqua $aqua $bg $purple $aqua
-client.focused_inactive $darkgray $darkgray $fg $purple $darkgray
-client.unfocused $darkgray $darkgray $gray $purple $darkgray
-client.urgent $red $red $bg $red $red
-
-# Font
-font pango:Hack Nerd Font Mono 10
-
-
-#
-# Status Bar:
-#
-# Read `man 5 sway-bar` for more information about this section.
-bar {
- swaybar_command waybar
-}
-
-include /etc/sway/config.d/*
diff --git a/shared/.config/sway/config b/shared/.config/sway/config
deleted file mode 100644
index 3e339ec..0000000
--- a/shared/.config/sway/config
+++ /dev/null
@@ -1,264 +0,0 @@
-### Variables
-set $mod Mod4
-set $left h
-set $down j
-set $up k
-set $right l
-
-# Terminal
-set $term ghostty
-
-# App Launcher
-set $menu wofi --show drun
-
-# This systemd unit indicates that sway is running for other things (kanshi)
-exec_always systemctl --user start sway-session.target
-exec_always systemctl --user restart kanshi.service
-# Wallpaper
-output * bg #282828 solid_color
-
-# Displays (these get updated to an autodetect kanshi config, but this is a default before it runs)
-output "Dell Inc. DELL S3422DWG 3LTSS63" mode 3440x1440@143.975Hz
-output eDP-1 mode 2256x1504@59.999Hz scale 1.25
-
-# Idle Configuration
-exec swayidle -w \
- timeout 300 'swaylock -f' \
- timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
- timeout 900 'if [ $(cat /sys/class/power_supply/BAT*/status) != "Charging" ]; then systemctl suspend; fi' \
- before-sleep 'swaylock -f'
-
-# Keyboard
-input type:keyboard {
- xkb_layout "us"
- xkb_variant ""
- #xkb_options "caps:ctrl_modifier,shift:both_capslock"
- xkb_options "caps:escape"
- repeat_delay 400
- repeat_rate 40
-}
-
-# Mouse
-input type:pointer {
- accel_profile "flat"
- pointer_accel 0.0
- scroll_factor 1.0
-}
-focus_follows_mouse no
-
-# Trackpad
-input type:touchpad {
- tap enabled
- natural_scroll disabled
- dwt enabled
- accel_profile "adaptive"
- pointer_accel 0.3
- scroll_factor 1.0
- middle_emulation enabled
-}
-
-### Key bindings
-#
-# Basics:
-#
- # Start a terminal
- bindsym $mod+Return exec $term
-
- # Kill focused window
- bindsym $mod+Shift+q kill
-
- # Start your launcher
- bindsym $mod+d exec $menu
-
- # Drag floating windows by holding down $mod and left mouse button.
- # Resize them with right mouse button + $mod.
- # Despite the name, also works for non-floating windows.
- # Change normal to inverse to use left mouse button for resizing and right
- # mouse button for dragging.
- floating_modifier $mod normal
-
- # Reload the configuration file
- bindsym $mod+Shift+c reload
-
- # Exit sway (logs you out of your Wayland session)
- bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
-
-#
-# Custom Binds:
-#
- bindsym $mod+Shift+s exec grimshot copy area
- bindsym $mod+x exec swaylock -f
-
-#
-# Moving around:
-#
- # Move your focus around
- bindsym $mod+$left focus left
- bindsym $mod+$down focus down
- bindsym $mod+$up focus up
- bindsym $mod+$right focus right
- # Or use $mod+[up|down|left|right]
- bindsym $mod+Left focus left
- bindsym $mod+Down focus down
- bindsym $mod+Up focus up
- bindsym $mod+Right focus right
-
- # Move the focused window with the same, but add Shift
- bindsym $mod+Shift+$left move left
- bindsym $mod+Shift+$down move down
- bindsym $mod+Shift+$up move up
- bindsym $mod+Shift+$right move right
- # Ditto, with arrow keys
- bindsym $mod+Shift+Left move left
- bindsym $mod+Shift+Down move down
- bindsym $mod+Shift+Up move up
- bindsym $mod+Shift+Right move right
-#
-# Workspaces:
-#
- # Switch to workspace
- bindsym $mod+1 workspace number 1
- bindsym $mod+2 workspace number 2
- bindsym $mod+3 workspace number 3
- bindsym $mod+4 workspace number 4
- bindsym $mod+5 workspace number 5
- bindsym $mod+6 workspace number 6
- bindsym $mod+7 workspace number 7
- bindsym $mod+8 workspace number 8
- bindsym $mod+9 workspace number 9
- bindsym $mod+0 workspace number 10
- # Move focused container to workspace
- bindsym $mod+Shift+1 move container to workspace number 1
- bindsym $mod+Shift+2 move container to workspace number 2
- bindsym $mod+Shift+3 move container to workspace number 3
- bindsym $mod+Shift+4 move container to workspace number 4
- bindsym $mod+Shift+5 move container to workspace number 5
- bindsym $mod+Shift+6 move container to workspace number 6
- bindsym $mod+Shift+7 move container to workspace number 7
- bindsym $mod+Shift+8 move container to workspace number 8
- bindsym $mod+Shift+9 move container to workspace number 9
- bindsym $mod+Shift+0 move container to workspace number 10
- # Note: workspaces can have any name you want, not just numbers.
- # We just use 1-10 as the default.
-#
-# Layout stuff:
-#
- # You can "split" the current object of your focus with
- # $mod+b or $mod+v, for horizontal and vertical splits
- # respectively.
- bindsym $mod+Shift+v splith
- bindsym $mod+v splitv
-
- # Switch the current container between different layout styles
- bindsym $mod+s layout stacking
- bindsym $mod+w layout tabbed
- bindsym $mod+e layout toggle split
-
- # Make the current focus fullscreen
- bindsym $mod+f fullscreen
-
- # Toggle the current focus between tiling and floating mode
- bindsym $mod+Shift+space floating toggle
-
- # Swap focus between the tiling area and the floating area
- bindsym $mod+space focus mode_toggle
-
- # Move focus to the parent container
- bindsym $mod+a focus parent
-#
-# Scratchpad:
-#
- # Sway has a "scratchpad", which is a bag of holding for windows.
- # You can send windows there and get them back later.
-
- # Move the currently focused window to the scratchpad
- bindsym $mod+Shift+minus move scratchpad
-
- # Show the next scratchpad window or hide the focused scratchpad window.
- # If there are multiple scratchpad windows, this command cycles through them.
- bindsym $mod+minus scratchpad show
-#
-# Resizing containers:
-#
-mode "resize" {
- # left will shrink the containers width
- # right will grow the containers width
- # up will shrink the containers height
- # down will grow the containers height
- bindsym $left resize shrink width 10px
- bindsym $down resize grow height 10px
- bindsym $up resize shrink height 10px
- bindsym $right resize grow width 10px
-
- # Ditto, with arrow keys
- bindsym Left resize shrink width 10px
- bindsym Down resize grow height 10px
- bindsym Up resize shrink height 10px
- bindsym Right resize grow width 10px
-
- # Return to default mode
- bindsym Return mode "default"
- bindsym Escape mode "default"
-}
-bindsym $mod+r mode "resize"
-#
-# Utilities:
-#
- # Special keys to adjust volume via PulseAudio
- bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
- bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
- bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
- bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
- # Special keys to adjust brightness via brightnessctl
- bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
- bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
- # Special key to take a screenshot with grim
- bindsym Print exec grim
-
-#
-# Styling:
-#
-
-# Remove title bars
-
-default_border pixel 2
-default_floating_border pixel 2
-
-# Add gaps
-gaps inner 5
-gaps outer 2
-
-# Gruvbox Dark colors
-set $bg #282828
-set $fg #ebdbb2
-set $red #cc241d
-set $green #98971a
-set $yellow #d79921
-set $blue #458588
-set $purple #b16286
-set $aqua #689d6a
-set $gray #a89984
-set $darkgray #1d2021
-
-# Window decorations
-# class border backgr. text indicator child_border
-client.focused $aqua $aqua $bg $purple $aqua
-client.focused_inactive $darkgray $darkgray $fg $purple $darkgray
-client.unfocused $darkgray $darkgray $gray $purple $darkgray
-client.urgent $red $red $bg $red $red
-
-# Font
-font pango:Hack Nerd Font Mono 10
-
-# Custom window rules
-for_window [app_id="com.tibia.client"] floating enable, move container to workspace 2
-
-#
-# Status Bar:
-#
-# Read `man 5 sway-bar` for more information about this section.
-bar {
- swaybar_command waybar
-}
-
-include /etc/sway/config.d/*
diff --git a/shared/.config/swaylock/config b/shared/.config/swaylock/config
deleted file mode 100644
index 421ff07..0000000
--- a/shared/.config/swaylock/config
+++ /dev/null
@@ -1,54 +0,0 @@
-# Gruvbox Dark color scheme
-color=282828
-
-# Ring colors
-ring-color=3c3836
-ring-clear-color=b8bb26
-ring-ver-color=83a598
-ring-wrong-color=fb4934
-
-# Inside colors
-inside-color=1d2021
-inside-clear-color=1d2021
-inside-ver-color=1d2021
-inside-wrong-color=1d2021
-
-# Line colors (separator)
-line-color=00000000
-line-clear-color=00000000
-line-ver-color=00000000
-line-wrong-color=00000000
-
-# Text colors
-text-color=ebdbb2
-text-clear-color=ebdbb2
-text-ver-color=ebdbb2
-text-wrong-color=fb4934
-
-# Key highlight
-key-hl-color=fabd2f
-bs-hl-color=fb4934
-caps-lock-key-hl-color=fe8019
-caps-lock-bs-hl-color=fb4934
-
-# Separator color
-separator-color=00000000
-
-# Font
-font=Hack Nerd Font Mono
-font-size=24
-
-# Indicator
-indicator-radius=100
-indicator-thickness=10
-
-# Show clock
-clock
-timestr=%H:%M:%S
-datestr=%Y-%m-%d
-
-# Fade in
-fade-in=0.2
-
-# Disable unlock indicator on inactivity
-hide-keyboard-layout
diff --git a/shared/.config/systemd/user/kanshi.service b/shared/.config/systemd/user/kanshi.service
deleted file mode 100644
index 6b5cc33..0000000
--- a/shared/.config/systemd/user/kanshi.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Dynamic output configuration for Wayland compositors
-Documentation=https://gitlab.freedesktop.org/emersion/kanshi
-BindsTo=sway-session.target
-
-[Service]
-Type=simple
-ExecStart=/usr/bin/kanshi
-
-[Install]
-WantedBy=sway-session.target
diff --git a/shared/.config/systemd/user/sway-session.target b/shared/.config/systemd/user/sway-session.target
deleted file mode 100644
index a6dadf9..0000000
--- a/shared/.config/systemd/user/sway-session.target
+++ /dev/null
@@ -1,6 +0,0 @@
-[Unit]
-Description=Sway compositor session
-Documentation=man:systemd.special
-BindsTo=graphical-session.target
-Wants=graphical-session-pre.target
-After=graphical-session-pre.target
diff --git a/shared/.config/waybar/config b/shared/.config/waybar/config
deleted file mode 100644
index 7a09274..0000000
--- a/shared/.config/waybar/config
+++ /dev/null
@@ -1,113 +0,0 @@
-{
- "layer": "top",
- "position": "top",
- "height": 30,
- "spacing": 8,
-
- "modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad"],
- "modules-center": ["sway/window"],
- "modules-right": ["idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "battery", "tray", "clock"],
-
- "sway/workspaces": {
- "disable-scroll": false,
- "all-outputs": true,
- "format": "{name}"
- },
-
- "sway/mode": {
- "format": "{}"
- },
-
- "sway/scratchpad": {
- "format": "{icon} {count}",
- "show-empty": false,
- "format-icons": ["", "đ"],
- "tooltip": true,
- "tooltip-format": "{app}: {title}"
- },
-
- "sway/window": {
- "format": "{}",
- "max-length": 50,
- "rewrite": {
- "(.*) â Mozilla Firefox": "đ $1",
- "(.*) - vim": " $1"
- }
- },
-
- "idle_inhibitor": {
- "format": "{icon}",
- "format-icons": {
- "activated": "đ",
- "deactivated": "đ"
- }
- },
-
- "tray": {
- "spacing": 10
- },
-
- "clock": {
- "format": "đ {:%Y-%m-%d %H:%M}",
- "tooltip-format": "{:%Y %B}\n{calendar}",
- "format-alt": "đ
{:%A, %B %d, %Y}"
- },
-
- "cpu": {
- "format": "â {usage}%",
- "tooltip": false
- },
-
- "memory": {
- "format": "đž {}%"
- },
-
- "temperature": {
- "thermal-zone": 2,
- "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
- "critical-threshold": 80,
- "format": "{icon} {temperatureC}°C",
- "format-icons": ["â", "đĄ", "đĨ"]
- },
-
- "backlight": {
- "format": "{icon} {percent}%",
- "format-icons": ["đ
", "đ"]
- },
-
- "battery": {
- "states": {
- "warning": 30,
- "critical": 15
- },
- "format": "{icon} {capacity}%",
- "format-charging": "⥠{capacity}%",
- "format-plugged": "đ {capacity}%",
- "format-alt": "{icon} {time}",
- "format-icons": ["đĒĢ", "đ", "đ", "đ", "đ"]
- },
-
- "network": {
- "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": {
- "format": "{icon} {volume}%",
- "format-muted": "đ muted",
- "format-icons": {
- "headphone": "đ§",
- "hands-free": "đ§",
- "headset": "đ§",
- "phone": "đą",
- "portable": "đą",
- "car": "đ",
- "default": ["đ", "đ", "đ"]
- },
- "on-click": "pavucontrol"
- }
-}
diff --git a/shared/.config/waybar/config-old b/shared/.config/waybar/config-old
deleted file mode 100644
index 7dbb5c8..0000000
--- a/shared/.config/waybar/config-old
+++ /dev/null
@@ -1,176 +0,0 @@
-{
- // "layer": "top", // Waybar at top layer
- // "position": "bottom", // Waybar position (top|bottom|left|right)
- "height": 24, // Waybar height (to be removed for auto height)
- // "width": 1280, // 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-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "battery", "battery#bat2", "clock", "tray"],
- "modules-right": ["mpd", "idle_inhibitor", "temperature", "cpu", "memory","network", "pulseaudio", "backlight", "keyboard-state", "battery", "battery#bat2", "tray", "clock"],
- // Modules configuration
- // "hyprland/workspaces": {
- // "disable-scroll": true,
- // "all-outputs": true,
- // "warp-on-scroll": false,
- // "format": "{name}: {icon}",
- // "format-icons": {
- // "1": "ī ",
- // "2": "ī¨",
- // "3": "īĄ",
- // "4": "īŧ",
- // "5": "īĩ",
- // "urgent": "īĒ",
- // "focused": "ī",
- // "default": "ī"
- // }
- // },
- "keyboard-state": {
- "numlock": true,
- "capslock": true,
- "format": "{name} {icon}",
- "format-icons": {
- "locked": "īŖ",
- "unlocked": "ī"
- }
- },
- "hyprland/mode": {
- "format": "{}"
- },
- "hyprland/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": "ī {title} - {artist} {stateIcon} [{elapsedTime:%M:%S}/{totalTime:%M:%S}] {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}[{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)",
- "on-click": "mpc toggle",
- "on-click-right": "foot -a ncmpcpp ncmpcpp",
- "on-scroll-up": "mpc volume +2",
- "on-scroll-down": "mpc volume -2"
-
- },
- "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}"
- "format": "{:L%Y-%m-%d[%a] %p%I:%M}"
- //"format": "{:%Y-%m-%d %H:%M}"
- },
- "cpu": {
- "format": "ī {usage}%",
-// "tooltip": false
- },
- "memory": {
- "format": "ī {}%"
- },
- "temperature": {
- "thermal-zone": 2,
- "hwmon-path": "/sys/class/hwmon/hwmon1/temp1_input",
- "critical-threshold": 80,
- "format-critical": "{icon} {temperatureC}°C",
- "format": "{icon} {temperatureC}°C",
- "format-icons": ["īĢ", "ī", "īŠ"]
- },
- "backlight": {
- // "device": "acpi_video1",
- "format": "{icon} {percent}%",
- "format-icons": ["î", "î", "î", "î", "î", "î", "î", "î", "î"]
- },
- "battery": {
- "states": {
- // "good": 95,
- "warning": 30,
- "critical": 15
- },
- "format": "{icon} {capacity}%",
- "format-charging": "ī§ {capacity}%",
- "format-plugged": "īĻ {capacity}%",
- "format-alt": "{icon} {time}",
- // "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": "ī {ifname}",
- "tooltip-format": "ī {ifname} via {gwaddr}",
- "format-linked": "ī {ifname} (No IP)",
- "format-disconnected": "Disconnected â {ifname}",
- "format-alt": "ī {ifname}: {ipaddr}/{cidr}"
- },
- "pulseaudio": {
- "scroll-step": 5, // %, can be a float
- "format": "{icon} {volume}% {format_source}",
- "format-bluetooth": "ī {icon} {volume}% {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",
- "on-click-right": "foot -a pw-top pw-top"
- },
- "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/shared/.config/waybar/style-old.css b/shared/.config/waybar/style-old.css
deleted file mode 100644
index bc47687..0000000
--- a/shared/.config/waybar/style-old.css
+++ /dev/null
@@ -1,197 +0,0 @@
-* {
- /* `otf-font-awesome` is required to be installed for icons */
- font-family: "Noto Sans CJK KR Regular";
- /*font-family: "D2CodingLigature Nerd Mono";*/
- font-size: 13px;
- min-height: 0;
-}
-
-window#waybar {
- background: transparent;
- /* background-color: rgba(43, 48, 59, 0.5); */
- /* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
- color: #ffffff;
- transition-property: background-color;
- transition-duration: .5s;
-}
-
-window#waybar.hidden {
- opacity: 0.2;
-}
-
-#waybar.empty #window {
- background-color: transparent;
-}
-
-#workspaces {
-}
-
-#window {
- margin: 2;
- padding-left: 8;
- padding-right: 8;
- background-color: rgba(0,0,0,0.3);
- font-size:14px;
- font-weight: bold;
-}
-
-button {
- /* Use box-shadow instead of border so the text isn't offset */
- box-shadow: inset 0 -3px transparent;
- /* Avoid rounded borders under each button name */
- border: none;
- border-radius: 0;
-}
-
-/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
-button:hover {
- background: inherit;
- border-top: 2px solid #c9545d;
-}
-
-#workspaces button {
- padding: 0 4px;
- /* background-color: rgba(0,0,0,0.3); */
-}
-
-#workspaces button:hover {
-}
-
-#workspaces button.focused {
- /* box-shadow: inset 0 -2px #c9545d; */
- background-color: rgba(0,0,0,0.3);
- color:#c9545d;
- border-top: 2px solid #c9545d;
-}
-
-#workspaces button.active {
- /* box-shadow: inset 0 -2px #c9545d; */
- background-color: rgba(0,0,0,0.3);
- color:#c9545d;
- border-top: 2px solid #c9545d;
-}
-
-#workspaces button.urgent {
- background-color: #eb4d4b;
-}
-
-#mode {
- background-color: #64727D;
- border-bottom: 3px solid #ffffff;
-}
-
-#clock,
-#battery,
-#cpu,
-#memory,
-#disk,
-#temperature,
-#backlight,
-#network,
-#pulseaudio,
-#wireplumber,
-#custom-media,
-#tray,
-#mode,
-#idle_inhibitor,
-#scratchpad,
-#mpd {
- margin: 2px;
- padding-left: 4px;
- padding-right: 4px;
- background-color: rgba(0,0,0,0.3);
- color: #ffffff;
-}
-
-/* If workspaces is the leftmost module, omit left margin */
-.modules-left > widget:first-child > #workspaces {
- margin-left: 0;
-}
-
-/* If workspaces is the rightmost module, omit right margin */
-.modules-right > widget:last-child > #workspaces {
- margin-right: 0;
-}
-
-#clock {
- font-size:14px;
- font-weight: bold;
-}
-
-#battery icon {
- color: red;
-}
-
-#battery.charging, #battery.plugged {
- color: #ffffff;
- background-color: #26A65B;
-}
-
-@keyframes blink {
- to {
- background-color: #ffffff;
- color: #000000;
- }
-}
-
-#battery.warning:not(.charging) {
- background-color: #f53c3c;
- color: #ffffff;
- animation-name: blink;
- animation-duration: 0.5s;
- animation-timing-function: linear;
- animation-iteration-count: infinite;
- animation-direction: alternate;
-}
-
-#battery.critical:not(.charging) {
- background-color: #f53c3c;
- color: #ffffff;
- animation-name: blink;
- animation-duration: 0.5s;
- animation-timing-function: linear;
- animation-iteration-count: infinite;
- animation-direction: alternate;
-}
-
-label:focus {
- background-color: #000000;
-}
-
-#network.disconnected {
- background-color: #f53c3c;
-}
-
-#temperature.critical {
- background-color: #eb4d4b;
-}
-
-#idle_inhibitor.activated {
- background-color: #ecf0f1;
- color: #2d3436;
-}
-
-#tray > .passive {
- -gtk-icon-effect: dim;
-}
-
-#tray > .needs-attention {
- -gtk-icon-effect: highlight;
- background-color: #eb4d4b;
-}
-
-/*
-
-window#waybar.solo {
-background-color: #FFFFFF;
-}
-
-window#waybar.termite {
-background-color: #3F3F3F;
-}
-
-window#waybar.chromium {
-background-color: #000000;
-border: none;
-}
- */
diff --git a/shared/.config/waybar/style.css b/shared/.config/waybar/style.css
deleted file mode 100644
index b639a30..0000000
--- a/shared/.config/waybar/style.css
+++ /dev/null
@@ -1,140 +0,0 @@
-* {
- border: none;
- border-radius: 0;
- font-family: "Hack Nerd Font Mono";
- font-size: 13px;
- min-height: 0;
-}
-
-window#waybar {
- background-color: rgba(40, 40, 40, 0.0);
- color: #ebdbb2;
-}
-
-/* Left modules */
-#workspaces button {
- padding: 0 8px;
- background-color: transparent;
- color: #ebdbb2;
-}
-
-#workspaces button:hover {
- background-color: transparent;
- color: #fabd2f;
-}
-
-#workspaces button.focused {
- background-color: transparent;
- color: #fe8019;
- font-weight: bold;
-}
-
-#workspaces button.urgent {
- background-color: transparent;
- color: #fb4934;
-}
-
-#mode {
- background-color: transparent;
- color: #fb4934;
- padding: 0 8px;
-}
-
-#scratchpad {
- background-color: transparent;
- color: #ebdbb2;
- padding: 0 8px;
-}
-
-/* Center module */
-#window {
- background-color: transparent;
- color: #ebdbb2;
- padding: 0 8px;
-}
-
-/* Right modules */
-#idle_inhibitor,
-#pulseaudio,
-#network,
-#cpu,
-#memory,
-#temperature,
-#backlight,
-#battery,
-#tray,
-#clock {
- background-color: transparent;
- color: #ebdbb2;
- padding: 0 8px;
-}
-
-#idle_inhibitor.activated {
- color: #b8bb26;
-}
-
-#idle_inhibitor.deactivated {
- color: #928374;
-}
-
-#pulseaudio.muted {
- color: #928374;
-}
-
-#network.disconnected {
- color: #fb4934;
-}
-
-#cpu {
- color: #b8bb26;
-}
-
-#memory {
- color: #fabd2f;
-}
-
-#temperature {
- color: #8ec07c;
-}
-
-#temperature.critical {
- color: #fb4934;
-}
-
-#backlight {
- color: #d3869b;
-}
-
-#battery {
- color: #b8bb26;
-}
-
-#battery.charging {
- color: #8ec07c;
-}
-
-#battery.warning:not(.charging) {
- color: #fabd2f;
-}
-
-#battery.critical:not(.charging) {
- color: #fb4934;
-}
-
-#clock {
- color: #83a598;
- font-weight: bold;
-}
-
-#tray {
- padding: 0 8px;
-}
-
-#tray > .passive {
- -gtk-icon-effect: dim;
-}
-
-#tray > .needs-attention {
- -gtk-icon-effect: highlight;
- color: #fb4934;
-}
diff --git a/shared/.config/wofi/config b/shared/.config/wofi/config
deleted file mode 100644
index a476ffd..0000000
--- a/shared/.config/wofi/config
+++ /dev/null
@@ -1 +0,0 @@
-font=Hack Nerd Font Mono 11
diff --git a/shared/.config/wofi/style.css b/shared/.config/wofi/style.css
deleted file mode 100644
index 8cb23cc..0000000
--- a/shared/.config/wofi/style.css
+++ /dev/null
@@ -1,39 +0,0 @@
-window {
-margin: 0px;
-border: 1px solid #928374;
-background-color: #282828;
-}
-
-#input {
-margin: 5px;
-border: none;
-color: #ebdbb2;
-background-color: #1d2021;
-}
-
-#inner-box {
-margin: 5px;
-border: none;
-background-color: #282828;
-}
-
-#outer-box {
-margin: 5px;
-border: none;
-background-color: #282828;
-}
-
-#scroll {
-margin: 0px;
-border: none;
-}
-
-#text {
-margin: 5px;
-border: none;
-color: #ebdbb2;
-}
-
-#entry:selected {
-background-color: #1d2021;
-}
diff --git a/shared/.config/xdg-desktop-portal/config b/shared/.config/xdg-desktop-portal/config
deleted file mode 100644
index 6a6f305..0000000
--- a/shared/.config/xdg-desktop-portal/config
+++ /dev/null
@@ -1,3 +0,0 @@
-[screencast]
-chooser_type=simple
-chooser_cmd=slurp -f %o -or
\ No newline at end of file
diff --git a/shared/.config/xdg-desktop-portal/portals.conf b/shared/.config/xdg-desktop-portal/portals.conf
deleted file mode 100644
index a38bc4f..0000000
--- a/shared/.config/xdg-desktop-portal/portals.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-[preferred]
-default=wlr;gtk
-org.freedesktop.impl.portal.ScreenCast=wlr
-org.freedesktop.impl.portal.Screenshot=wlr
\ No newline at end of file
diff --git a/shared/.local/share/applications/com.yubico.yubioath.desktop b/shared/.local/share/applications/com.yubico.yubioath.desktop
new file mode 100644
index 0000000..8e6419b
--- /dev/null
+++ b/shared/.local/share/applications/com.yubico.yubioath.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Yubico Authenticator
+GenericName=Yubico Authenticator
+Exec="/usr/local/bin/yubico-authenticator-7.3.0-linux/authenticator"
+Icon=/usr/local/bin/yubico-authenticator-7.3.0-linux/linux_support/com.yubico.yubioath.png
+Type=Application
+Categories=Utility;
+Keywords=Yubico;Authenticator;
diff --git a/system-backup-20251125-202712.json b/system-backup-20251125-202712.json
deleted file mode 100644
index ff43ab0..0000000
--- a/system-backup-20251125-202712.json
+++ /dev/null
@@ -1,155 +0,0 @@
-{
- "timestamp": "20251125-202712",
- "packages": {
- "pacman": [
- "7zip",
- "amd-ucode",
- "base",
- "base-devel",
- "bat",
- "bind",
- "bluez",
- "bluez-utils",
- "bolt",
- "brightnessctl",
- "btop",
- "cantarell-fonts",
- "clang",
- "cups",
- "cups-pdf",
- "direnv",
- "discord",
- "dunst",
- "e2fsprogs",
- "emacs-wayland",
- "eza",
- "fastfetch",
- "fd",
- "firefox",
- "flatpak",
- "foomatic-db",
- "foomatic-db-engine",
- "foomatic-db-nonfree-ppds",
- "foomatic-db-ppds",
- "freerdp",
- "gdb",
- "ghostty",
- "gimp",
- "git",
- "go",
- "gopls",
- "gutenprint",
- "imagemagick",
- "inetutils",
- "kanshi",
- "keychain",
- "lazygit",
- "lib32-mesa",
- "lib32-pipewire",
- "lib32-vulkan-radeon",
- "libreoffice-fresh",
- "linux",
- "linux-firmware",
- "linux-lts",
- "lldb",
- "luarocks",
- "man-db",
- "man-pages",
- "mosh",
- "nano",
- "ncspot",
- "networkmanager",
- "nnn",
- "noto-fonts",
- "noto-fonts-cjk",
- "noto-fonts-emoji",
- "noto-fonts-extra",
- "nss-mdns",
- "openssh",
- "pacman-contrib",
- "pavucontrol",
- "pcsc-tools",
- "pipewire",
- "pipewire-alsa",
- "pipewire-jack",
- "pipewire-pulse",
- "ranger",
- "reflector",
- "ripgrep",
- "rustup",
- "sbcl",
- "stow",
- "sway",
- "sway-contrib",
- "swaybg",
- "swayidle",
- "swaylock",
- "system-config-printer",
- "texinfo",
- "texlive-bibtexextra",
- "texlive-fontsrecommended",
- "texlive-latex",
- "texlive-latexextra",
- "texlive-plaingeneric",
- "texlive-xetex",
- "the_silver_searcher",
- "tlp",
- "tmux",
- "ttf-dejavu",
- "ttf-fira-code",
- "ttf-hack-nerd",
- "ttf-liberation",
- "unzip",
- "vlc",
- "vlc-plugin-ffmpeg",
- "vulkan-radeon",
- "waybar",
- "weechat",
- "wget",
- "wimlib",
- "wireplumber",
- "woff2-font-awesome",
- "wofi",
- "xdg-desktop-portal-wlr",
- "xdg-user-dirs",
- "xorg-xwayland",
- "zsh"
- ],
- "aur": [
- "bambustudio-bin",
- "omnissa-horizon-client",
- "paru",
- "paru-debug",
- "yubico-authenticator-bin",
- "zoom"
- ]
- },
- "systemd": {
- "system": [
- "bluetooth.service",
- "getty@.service",
- "NetworkManager-dispatcher.service",
- "NetworkManager-wait-online.service",
- "NetworkManager.service",
- "reflector.service",
- "systemd-boot-update.service",
- "tlp.service",
- "avahi-daemon.socket",
- "cups.socket",
- "pcscd.socket",
- "systemd-userdbd.socket",
- "remote-fs.target"
- ],
- "user": [
- "kanshi.service",
- "wireplumber.service",
- "xdg-user-dirs.service",
- "p11-kit-server.socket",
- "pipewire-pulse.socket",
- "pipewire.socket"
- ]
- },
- "flatpak": [
- "com.adamcake.Bolt"
- ]
-}
diff --git a/system-backup.sh b/system-backup.sh
deleted file mode 100755
index f843720..0000000
--- a/system-backup.sh
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/bash
-
-set -e
-
-TIMESTAMP=$(date +%Y%m%d-%H%M%S)
-BACKUP_FILE="system-backup-${TIMESTAMP}.json"
-
-show_help() {
- echo "Usage: $0 [OPTION]"
- echo ""
- echo "Options:"
- echo " -b, --backup [filename] Create backup (default: system-backup-TIMESTAMP.json)"
- echo " -r, --restore Restore from backup file"
- echo " -h, --help Show this help message"
-}
-
-backup() {
- local filename="${1:-$BACKUP_FILE}"
-
- echo "Creating backup..."
-
- # Get package lists (filtering out any integers/counts)
- local pacman_pkgs=$(paru -Qqen | grep -v '^[0-9]*$')
- local aur_pkgs=$(paru -Qqem | grep -v '^[0-9]*$')
-
- # Get systemd units (filter headers, footers, and integers)
- local system_units=$(systemctl list-unit-files --state=enabled --no-pager --no-legend | \
- awk '{print $1}' | grep -E '\.(service|timer|socket|target|path|mount)$')
- local user_units=$(systemctl --user list-unit-files --state=enabled --no-pager --no-legend | \
- awk '{print $1}' | grep -E '\.(service|timer|socket|target|path|mount)$')
-
- # Get flatpak list
- local flatpak_pkgs=""
- if command -v flatpak &> /dev/null; then
- flatpak_pkgs=$(flatpak list --app --columns=application | tail -n +1 | grep -v '^[0-9]*$')
- fi
-
- # Build JSON
- jq -n \
- --arg timestamp "$TIMESTAMP" \
- --arg pacman "$pacman_pkgs" \
- --arg aur "$aur_pkgs" \
- --arg system "$system_units" \
- --arg user "$user_units" \
- --arg flatpak "$flatpak_pkgs" \
- '{
- timestamp: $timestamp,
- packages: {
- pacman: ($pacman | split("\n") | map(select(length > 0))),
- aur: ($aur | split("\n") | map(select(length > 0)))
- },
- systemd: {
- system: ($system | split("\n") | map(select(length > 0))),
- user: ($user | split("\n") | map(select(length > 0)))
- },
- flatpak: ($flatpak | split("\n") | map(select(length > 0)))
- }' > "$filename"
-
- echo "Backup created: $filename"
-}
-
-restore() {
- local filename="$1"
-
- if [[ -z "$filename" ]]; then
- echo "Error: No backup file specified"
- show_help
- exit 1
- fi
-
- if [[ ! -f "$filename" ]]; then
- echo "Error: Backup file $filename not found"
- exit 1
- fi
-
- # Ensure jq is installed
- if ! command -v jq &> /dev/null; then
- echo "Installing jq..."
- sudo pacman -S --noconfirm jq
- fi
-
- echo "Restoring from $filename..."
-
- # Install pacman packages
- echo "Installing official repository packages..."
- jq -r '.packages.pacman[]' "$filename" | paru -S --needed --noconfirm -
-
- # Install AUR packages
- echo "Installing AUR packages..."
- jq -r '.packages.aur[]' "$filename" | paru -S --needed --noconfirm -
-
- # Enable system units
- echo "Enabling system units..."
- jq -r '.systemd.system[]' "$filename" | while read -r unit; do
- [[ -n "$unit" ]] && sudo systemctl enable "$unit" 2>/dev/null || echo "Skipping $unit"
- done
-
- # Enable user units
- echo "Enabling user units..."
- jq -r '.systemd.user[]' "$filename" | while read -r unit; do
- [[ -n "$unit" ]] && systemctl --user enable "$unit" 2>/dev/null || echo "Skipping $unit"
- done
-
- # Install flatpak packages
- if command -v flatpak &> /dev/null; then
- echo "Installing flatpak packages..."
- jq -r '.flatpak[]' "$filename" | while read -r pkg; do
- [[ -n "$pkg" ]] && flatpak install -y "$pkg" 2>/dev/null || echo "Skipping $pkg"
- done
- else
- echo "Flatpak not installed, skipping flatpak packages"
- fi
-
- echo "Restore complete."
-}
-
-case "$1" in
- -b|--backup)
- backup "$2"
- ;;
- -r|--restore)
- restore "$2"
- ;;
- -h|--help)
- show_help
- ;;
- *)
- show_help
- exit 1
- ;;
-esac