diff --git a/bg.jpg b/bg.jpg
new file mode 100644
index 00000000..360308a0
Binary files /dev/null and b/bg.jpg differ
diff --git a/dotfiles/.bashrc b/dotfiles/.bashrc
index fac7078a..ca93e48c 100644
--- a/dotfiles/.bashrc
+++ b/dotfiles/.bashrc
@@ -17,6 +17,7 @@ shopt -s checkjobs
alias cat='bat'
alias l='ls -alh'
alias ls='ls --color=auto'
+alias grep='grep --color=auto'
alias ll='ls -lhi'
alias ta='tmux attach'
alias t='tmux'
diff --git a/dotfiles/.config/autostart/Nextcloud.desktop b/dotfiles/.config/autostart/Nextcloud.desktop
deleted file mode 100644
index 219765f2..00000000
--- a/dotfiles/.config/autostart/Nextcloud.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Name=Nextcloud
-GenericName=File Synchronizer
-Exec="/usr/bin/nextcloud" --background
-Terminal=false
-Icon=Nextcloud
-Categories=Network
-Type=Application
-StartupNotify=false
-X-GNOME-Autostart-enabled=true
-X-GNOME-Autostart-Delay=10
diff --git a/dotfiles/.config/dunst/dunstrc b/dotfiles/.config/dunst/dunstrc
new file mode 100644
index 00000000..af1b6f9e
--- /dev/null
+++ b/dotfiles/.config/dunst/dunstrc
@@ -0,0 +1,436 @@
+# See dunst(5) for all configuration options
+
+[global]
+ ### Display ###
+
+ # Which monitor should the notifications be displayed on.
+ monitor = 0
+
+ # Display notification on focused monitor. Possible modes are:
+ # mouse: follow mouse pointer
+ # keyboard: follow window with keyboard focus
+ # none: don't follow anything
+ #
+ # "keyboard" needs a window manager that exports the
+ # _NET_ACTIVE_WINDOW property.
+ # This should be the case for almost all modern window managers.
+ #
+ # If this option is set to mouse or keyboard, the monitor option
+ # will be ignored.
+ follow = mouse
+
+ ### Geometry ###
+
+ # dynamic width from 0 to 300
+ # width = (0, 300)
+ # constant width of 300
+ width = 300
+
+ # The maximum height of a single notification, excluding the frame.
+ height = 300
+
+ # Position the notification in the top right corner
+ origin = top-center
+
+ # Offset from the origin
+ offset = 10x10
+
+ # Scale factor. It is auto-detected if value is 0.
+ scale = 0
+
+ # Maximum number of notification (0 means no limit)
+ notification_limit = 4
+
+ ### Progress bar ###
+
+ # Turn on the progess bar. It appears when a progress hint is passed with
+ # for example dunstify -h int:value:12
+ progress_bar = true
+
+ # Set the progress bar height. This includes the frame, so make sure
+ # it's at least twice as big as the frame width.
+ progress_bar_height = 10
+
+ # Set the frame width of the progress bar
+ progress_bar_frame_width = 1
+
+ # Set the minimum width for the progress bar
+ progress_bar_min_width = 150
+
+ # Set the maximum width for the progress bar
+ progress_bar_max_width = 300
+
+
+ # Show how many messages are currently hidden (because of
+ # notification_limit).
+ indicate_hidden = yes
+
+ # The transparency of the window. Range: [0; 100].
+ # This option will only work if a compositing window manager is
+ # present (e.g. xcompmgr, compiz, etc.). (X11 only)
+ transparency = 15
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ separator_height = 1
+
+ # Padding between text and separator.
+ padding = 8
+
+ # Horizontal padding.
+ horizontal_padding = 10
+
+ # Padding between text and icon.
+ text_icon_padding = 0
+
+ # Defines width in pixels of frame around the notification window.
+ # Set to 0 to disable.
+ frame_width = 2
+
+ # Defines color of the frame around the notification window.
+ frame_color = "#bd93f9"
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ # A client can set the 'transient' hint to bypass this. See the rules
+ # section for how to disable this if necessary
+ idle_threshold = 120
+
+ ### Text ###
+
+ font = JetBrains Mono Nerd Font 10
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
+ line_height = 0
+
+ # Possible values are:
+ # full: Allow a small subset of html markup in notifications:
+ # bold
+ # italic
+ # strikethrough
+ # underline
+ #
+ # For a complete reference see
+ # .
+ #
+ # strip: This setting is provided for compatibility with some broken
+ # clients that send markup even though it's not enabled on the
+ # server. Dunst will try to strip the markup but the parsing is
+ # simplistic so using this option outside of matching rules for
+ # specific applications *IS GREATLY DISCOURAGED*.
+ #
+ # no: Disable markup parsing, incoming notifications will be treated as
+ # plain text. Dunst will not advertise that it has the body-markup
+ # capability if this is set as a global setting.
+ #
+ # It's important to note that markup inside the format option will be parsed
+ # regardless of what this is set to.
+ markup = full
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "%s %p\n%b"
+
+ # Alignment of message text.
+ # Possible values are "left", "center" and "right".
+ alignment = center
+
+ # Vertical alignment of message text and icon.
+ # Possible values are "top", "center" and "bottom".
+ vertical_alignment = center
+
+ # Show age of message if message is older than show_age_threshold
+ # seconds.
+ # Set to -1 to disable.
+ show_age_threshold = 60
+
+ # Specify where to make an ellipsis in long lines.
+ # Possible values are "start", "middle" and "end".
+ ellipsize = middle
+
+ # Ignore newlines '\n' in notifications.
+ ignore_newline = no
+
+ # Stack together notifications with the same content
+ stack_duplicates = true
+
+ # Hide the count of stacked notifications with the same content
+ hide_duplicate_count = false
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = yes
+
+ ### Icons ###
+
+ # Align icons left/right/off
+ icon_position = off
+
+ # Scale small icons up to this size, set to 0 to disable. Helpful
+ # for e.g. small files or high-dpi screens. In case of conflict,
+ # max_icon_size takes precedence over this.
+ min_icon_size = 0
+
+ # Scale larger icons down to this size, set to 0 to disable
+ max_icon_size = 64
+
+ # Paths to default icons.
+ icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+ ### History ###
+
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = yes
+
+ # Maximum amount of notifications kept in history
+ history_length = 20
+
+ ### Misc/Advanced ###
+
+ # dmenu path.
+ dmenu = /usr/bin/dmenu -p dunst:
+
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/firefox -new-tab
+
+ # Always run rule-defined scripts, even if the notification is suppressed
+ always_run_script = true
+
+ # Define the title of the windows spawned by dunst
+ title = Dunst
+
+ # Define the class of the windows spawned by dunst
+ class = Dunst
+
+ # Define the corner radius of the notification window
+ # in pixel size. If the radius is 0, you have no rounded
+ # corners.
+ # The radius will be automatically lowered if it exceeds half of the
+ # notification height to avoid clipping text and/or icons.
+ corner_radius = 10
+
+ # Ignore the dbus closeNotification message.
+ # Useful to enforce the timeout set by dunst configuration. Without this
+ # parameter, an application may close the notification sent before the
+ # user defined timeout.
+ ignore_dbusclose = false
+
+ ### Wayland ###
+ # These settings are Wayland-specific. They have no effect when using X11
+
+ # Uncomment this if you want to let notications appear under fullscreen
+ # applications (default: overlay)
+ # layer = top
+
+ # Set this to true to use X11 output on Wayland.
+ force_xwayland = false
+
+ ### Legacy
+
+ # Use the Xinerama extension instead of RandR for multi-monitor support.
+ # This setting is provided for compatibility with older nVidia drivers that
+ # do not support RandR and using it on systems that support RandR is highly
+ # discouraged.
+ #
+ # By enabling this setting dunst will not be able to detect when a monitor
+ # is connected or disconnected which might break follow mode if the screen
+ # layout changes.
+ force_xinerama = false
+
+ ### mouse
+
+ # Defines list of actions for each mouse event
+ # Possible values are:
+ # * none: Don't do anything.
+ # * do_action: Invoke the action determined by the action_name rule. If there is no
+ # such action, open the context menu.
+ # * open_url: If the notification has exactly one url, open it. If there are multiple
+ # ones, open the context menu.
+ # * close_current: Close current notification.
+ # * close_all: Close all notifications.
+ # * context: Open context menu for the notification.
+ # * context_all: Open context menu for all notifications.
+ # These values can be strung together for each mouse event, and
+ # will be executed in sequence.
+ mouse_left_click = close_current
+ mouse_middle_click = do_action, close_current
+ mouse_right_click = close_all
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+ # Calculate the dpi to use on a per-monitor basis.
+ # If this setting is enabled the Xft.dpi value will be ignored and instead
+ # dunst will attempt to calculate an appropriate dpi value for each monitor
+ # using the resolution and physical size. This might be useful in setups
+ # where there are multiple screens with very different dpi values.
+ per_monitor_dpi = false
+
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#282a36"
+ foreground = "#6272a4"
+ timeout = 10
+ # Icon for notifications with low urgency, uncomment to enable
+ #new_icon = /path/to/icon
+
+[urgency_normal]
+ background = "#282a36"
+ foreground = "#f8f8f2"
+ timeout = 10
+ # Icon for notifications with normal urgency, uncomment to enable
+ #new_icon = /path/to/icon
+
+[urgency_critical]
+ background = "#282a36"
+ foreground = "#ff5555"
+ frame_color = "#ff5555"
+ timeout = 0
+ # Icon for notifications with critical urgency, uncomment to enable
+ #new_icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+#
+# Messages can be matched by
+# appname (discouraged, see desktop_entry)
+# body
+# category
+# desktop_entry
+# icon
+# match_transient
+# msg_urgency
+# stack_tag
+# summary
+#
+# and you can override the
+# background
+# foreground
+# format
+# frame_color
+# fullscreen
+# new_icon
+# set_stack_tag
+# set_transient
+# set_category
+# timeout
+# urgency
+# skip_display
+# history_ignore
+# action_name
+# word_wrap
+# ellipsize
+# alignment
+#
+# Shell-like globbing will get expanded.
+#
+# Instead of the appname filter, it's recommended to use the desktop_entry filter.
+# GLib based applications export their desktop-entry name. In comparison to the appname,
+# the desktop-entry won't get localized.
+#
+# SCRIPTING
+# You can specify a script that gets run when the rule matches by
+# setting the "script" option.
+# The script will be called as follows:
+# script appname summary body icon urgency
+# where urgency can be "LOW", "NORMAL" or "CRITICAL".
+#
+# NOTE: It might be helpful to run dunst -print in a terminal in order
+# to find fitting options for rules.
+
+# Disable the transient hint so that idle_threshold cannot be bypassed from the
+# client
+#[transient_disable]
+# match_transient = yes
+# set_transient = no
+#
+# Make the handling of transient notifications more strict by making them not
+# be placed in history.
+#[transient_history_ignore]
+# match_transient = yes
+# history_ignore = yes
+
+# fullscreen values
+# show: show the notifications, regardless if there is a fullscreen window opened
+# delay: displays the new notification, if there is no fullscreen window active
+# If the notification is already drawn, it won't get undrawn.
+# pushback: same as delay, but when switching into fullscreen, the notification will get
+# withdrawn from screen again and will get delayed like a new notification
+#[fullscreen_delay_everything]
+# fullscreen = delay
+#[fullscreen_show_critical]
+# msg_urgency = critical
+# fullscreen = show
+
+#[espeak]
+# summary = "*"
+# script = dunst_espeak.sh
+
+#[script-test]
+# summary = "*script*"
+# script = dunst_test.sh
+
+#[ignore]
+# # This notification will not be displayed
+# summary = "foobar"
+# skip_display = true
+
+#[history-ignore]
+# # This notification will not be saved in history
+# summary = "foobar"
+# history_ignore = yes
+
+#[skip-display]
+# # This notification will not be displayed, but will be included in the history
+# summary = "foobar"
+# skip_display = yes
+
+#[signed_on]
+# appname = Pidgin
+# summary = "*signed on*"
+# urgency = low
+#
+#[signed_off]
+# appname = Pidgin
+# summary = *signed off*
+# urgency = low
+#
+#[says]
+# appname = Pidgin
+# summary = *says*
+# urgency = critical
+#
+#[twitter]
+# appname = Pidgin
+# summary = *twitter.com*
+# urgency = normal
+#
+#[stack-volumes]
+# appname = "some_volume_notifiers"
+# set_stack_tag = "volume"
+#
+# vim: ft=cfg
\ No newline at end of file
diff --git a/dotfiles/.config/foot/foot.ini b/dotfiles/.config/foot/foot.ini
new file mode 100644
index 00000000..d28d8735
--- /dev/null
+++ b/dotfiles/.config/foot/foot.ini
@@ -0,0 +1,207 @@
+# -*- conf -*-
+
+shell=/bin/bash
+# term=foot (or xterm-256color if built with -Dterminfo=disabled)
+# login-shell=no
+
+# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
+ title=Terminal
+# locked-title=no
+
+ font=JetBrains Mono Nerd Font:size=12
+# font-bold=
+# font-italic=
+# font-bold-italic=
+# font-size-adjustment=0.5
+# line-height=
+# letter-spacing=0
+# horizontal-letter-offset=0
+# vertical-letter-offset=0
+# underline-offset=
+# underline-thickness=
+# box-drawings-uses-font-glyphs=no
+# dpi-aware=no
+
+# initial-window-size-pixels=700x500 # Or,
+# initial-window-size-chars=
+# initial-window-mode=windowed
+pad=5x5 center # optionally append 'center'
+# resize-delay-ms=100
+
+# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
+
+# bold-text-in-bright=no
+# word-delimiters=,│`|:"'()[]{}<>
+# selection-target=primary
+# workers=
+# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux)
+# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD)
+
+[environment]
+# name=value
+
+[bell]
+# urgent=no
+# notify=no
+# visual=no
+# command=
+# command-focused=no
+
+[scrollback]
+lines=1000
+# multiplier=3.0
+# indicator-position=relative
+# indicator-format=""
+
+[url]
+launch=xdg-open ${url}
+# label-letters=sadfjklewcmpgh
+# osc8-underline=url-mode
+# protocols=http, https, ftp, ftps, file, gemini, gopher
+# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
+
+[cursor]
+style=block
+# color=
+# blink=no
+# beam-thickness=1.5
+# underline-thickness=
+
+[mouse]
+# hide-when-typing=no
+# alternate-scroll-mode=yes
+
+[touch]
+# long-press-delay=400
+
+# JetBrains Darcula
+# Palette based on the same theme from https://github.com/dexpota/kitty-themes
+
+[cursor]
+color=282a36 f8f8f2
+
+[colors]
+alpha=0.9
+foreground=f8f8f2
+background=282a36
+regular0=000000 # black
+regular1=ff5555 # red
+regular2=50fa7b # green
+regular3=f1fa8c # yellow
+regular4=bd93f9 # blue
+regular5=ff79c6 # magenta
+regular6=8be9fd # cyan
+regular7=bfbfbf # white
+bright0=4d4d4d # bright black
+bright1=ff6e67 # bright red
+bright2=5af78e # bright green
+bright3=f4f99d # bright yellow
+bright4=caa9fa # bright blue
+bright5=ff92d0 # bright magenta
+bright6=9aedfe # bright cyan
+bright7=e6e6e6 # bright white
+
+
+[csd]
+# preferred=server
+# size=26
+# font=
+# color=
+# hide-when-maximized=no
+# double-click-to-maximize=yes
+# border-width=0
+# border-color=
+# button-width=26
+# button-color=
+# button-minimize-color=
+# button-maximize-color=
+# button-close-color=
+
+[key-bindings]
+# scrollback-up-page=Shift+Page_Up
+# scrollback-up-half-page=none
+# scrollback-up-line=none
+# scrollback-down-page=Shift+Page_Down
+# scrollback-down-half-page=none
+# scrollback-down-line=none
+# scrollback-home=none
+# scrollback-end=none
+# clipboard-copy=Control+Shift+c XF86Copy
+# clipboard-paste=Control+Shift+v XF86Paste
+# primary-paste=Shift+Insert
+# search-start=Control+Shift+r
+# font-increase=Control+plus Control+equal Control+KP_Add
+# font-decrease=Control+minus Control+KP_Subtract
+# font-reset=Control+0 Control+KP_0
+# spawn-terminal=Control+Shift+n
+# minimize=none
+# maximize=none
+# fullscreen=none
+# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-selected=[xargs -r firefox] none
+# show-urls-launch=Control+Shift+o
+# show-urls-copy=none
+# show-urls-persistent=none
+# prompt-prev=Control+Shift+z
+# prompt-next=Control+Shift+x
+# unicode-input=Control+Shift+u
+# noop=none
+
+[search-bindings]
+# cancel=Control+g Control+c Escape
+# commit=Return
+# find-prev=Control+r
+# find-next=Control+s
+# cursor-left=Left Control+b
+# cursor-left-word=Control+Left Mod1+b
+# cursor-right=Right Control+f
+# cursor-right-word=Control+Right Mod1+f
+# cursor-home=Home Control+a
+# cursor-end=End Control+e
+# delete-prev=BackSpace
+# delete-prev-word=Mod1+BackSpace Control+BackSpace
+# delete-next=Delete
+# delete-next-word=Mod1+d Control+Delete
+# extend-char=Shift+Right
+# extend-to-word-boundary=Control+w Control+Shift+Right
+# extend-to-next-whitespace=Control+Shift+w
+# extend-line-down=Shift+Down
+# extend-backward-char=Shift+Left
+# extend-backward-to-word-boundary=Control+Shift+Left
+# extend-backward-to-next-whitespace=none
+# extend-line-up=Shift+Up
+# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
+# primary-paste=Shift+Insert
+# unicode-input=none
+# scrollback-up-page=Shift+Page_Up
+# scrollback-up-half-page=none
+# scrollback-up-line=none
+# scrollback-down-page=Shift+Page_Down
+# scrollback-down-half-page=none
+# scrollback-down-line=none
+# scrollback-home=none
+# scrollback-end=none
+
+[url-bindings]
+# cancel=Control+g Control+c Control+d Escape
+# toggle-url-visible=t
+
+[text-bindings]
+# \x03=Mod4+c # Map Super+c -> Ctrl+c
+
+[mouse-bindings]
+scrollback-up-mouse=BTN_BACK
+scrollback-down-mouse=BTN_FORWARD
+# selection-override-modifiers=Shift
+primary-paste=BTN_MIDDLE
+# select-begin=BTN_LEFT
+# select-begin-block=Control+BTN_LEFT
+# select-extend=BTN_RIGHT
+# select-extend-character-wise=Control+BTN_RIGHT
+# select-word=BTN_LEFT-2
+# select-word-whitespace=Control+BTN_LEFT-2
+# select-quote = BTN_LEFT-3
+# select-row=BTN_LEFT-4
+
+# vim: ft=dosini
\ No newline at end of file
diff --git a/dotfiles/.config/sway/config b/dotfiles/.config/sway/config
new file mode 100644
index 00000000..5862adc8
--- /dev/null
+++ b/dotfiles/.config/sway/config
@@ -0,0 +1,235 @@
+#---------------#
+# Main Settings #
+#---------------#
+set $mod Mod4
+set $term foot
+font pango: JetBrainsMono Nerd Font Medium 10
+
+gaps inner 5
+gaps outer 0
+smart_gaps off
+
+include /etc/sway/config-vars.d/*
+
+#--------------#
+# Key Bindings #
+#--------------#
+
+# Home row direction keys, like vim
+set $left h
+set $down j
+set $up k
+set $right l
+
+# Application launcher
+set $menu wofi --show run
+
+# Start a terminal
+bindsym $mod+Return exec $term
+
+# Start brave with wayland
+bindsym $mod+shift+b exec brave --ozone-platform-hint=auto
+
+# Kill focused window
+bindsym $mod+c kill
+
+# Lock Screen
+bindsym $mod+shift+q exec swaylock -f
+
+# Start app launcher
+bindsym $mod+d exec $menu
+
+# take screenshot
+bindsym $mod+p exec grim -g "$(slurp)" - | wl-copy
+
+# 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+r reload
+
+# Exit sway (logs you out of your Wayland session)
+bindsym $mod+Shift+x 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'
+
+#
+# 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+b 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"
+
+#--------#
+# Output #
+#--------#
+
+# Background
+output * bg /usr/share/backgrounds/bg.jpg fill
+
+# Monitors
+# output HDMI-A-3 mode 1920x1080@74.973Hz
+output DP-1 scale 2
+
+# Monitor names: swaymsg -t get_outputs
+
+# Idle configuration
+exec swayidle -w \
+ timeout 150 'swaylock -f -c 000000' \
+ timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
+ before-sleep 'swaylock -f -c 000000'
+
+#-------#
+# Input #
+#-------#
+
+# Keyboard layout toggle
+input type:keyboard {
+ xkb_layout pt,us
+ xkb_options grp:rctrl_toggle
+}
+
+# Input names: swaymsg -t get_inputs
+
+#------------#
+# Status Bar #
+#------------#
+
+bar {
+ swaybar_command waybar
+}
+
+#---------#
+# Borders #
+#---------#
+
+default_border pixel 3
+default_floating_border pixel 3
+smart_borders on
+
+# Border colors
+client.focused #fab387 #fab387 #1e1e2e
+client.unfocused #1e1e2e #1e1e2e #cdd6f4
+client.focused_inactive #fab387 #fab387 #1e1e2e
+client.placeholder #f9e2af #f9e2af #1e1e2e
+client.urgent #f38ba8 #f38ba8 #1e1e2e
+client.background #1e1e2e
+
+focus_follows_mouse no
+
+#-----------#
+# Autostart #
+#-----------#
+exec_always --no-startup-id nextcloud --background &
+
+
+
+include /etc/sway/config.d/*
diff --git a/dotfiles/.config/swaylock/config b/dotfiles/.config/swaylock/config
new file mode 100644
index 00000000..f95d1afa
--- /dev/null
+++ b/dotfiles/.config/swaylock/config
@@ -0,0 +1,29 @@
+color=1e1e2e
+bs-hl-color=f5e0dc
+caps-lock-bs-hl-color=f5e0dc
+caps-lock-key-hl-color=a6e3a1
+inside-color=00000000
+inside-clear-color=00000000
+inside-caps-lock-color=00000000
+inside-ver-color=00000000
+inside-wrong-color=00000000
+key-hl-color=a6e3a1
+layout-bg-color=00000000
+layout-border-color=00000000
+layout-text-color=cdd6f4
+line-color=00000000
+line-clear-color=00000000
+line-caps-lock-color=00000000
+line-ver-color=00000000
+line-wrong-color=00000000
+ring-color=b4befe
+ring-clear-color=f5e0dc
+ring-caps-lock-color=fab387
+ring-ver-color=89b4fa
+ring-wrong-color=eba0ac
+separator-color=00000000
+text-color=cdd6f4
+text-clear-color=f5e0dc
+text-caps-lock-color=fab387
+text-ver-color=89b4fa
+text-wrong-color=eba0ac
\ No newline at end of file
diff --git a/dotfiles/.config/waybar/colors.css b/dotfiles/.config/waybar/colors.css
new file mode 100644
index 00000000..7931a038
--- /dev/null
+++ b/dotfiles/.config/waybar/colors.css
@@ -0,0 +1,12 @@
+@define-color background-darker rgba(30, 31, 41, 230);
+@define-color background #282a36;
+@define-color selection #44475a;
+@define-color foreground #f8f8f2;
+@define-color comment #6272a4;
+@define-color cyan #8be9fd;
+@define-color green #50fa7b;
+@define-color orange #ffb86c;
+@define-color pink #ff79c6;
+@define-color purple #bd93f9;
+@define-color red #ff5555;
+@define-color yellow #f1fa8c;
\ No newline at end of file
diff --git a/dotfiles/.config/waybar/config b/dotfiles/.config/waybar/config
new file mode 100644
index 00000000..f92a2225
--- /dev/null
+++ b/dotfiles/.config/waybar/config
@@ -0,0 +1,192 @@
+{
+ "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 5, // Gaps between modules (4px)
+ "margin-top": 10,
+ "margin-right": 10,
+ "margin-left": 10,
+ "margin-bottom": 0,
+ // Choose the order of the modules
+ "modules-left": ["clock", "backlight", "battery", "tray"],
+ "modules-center": ["sway/workspaces"],
+ "modules-right": ["wireplumber", "network", "cpu", "memory", "temperature"],
+ // Modules configuration
+ "custom/power": {
+ "format": "",
+ "on-click": "",
+ },
+ "sway/workspaces": {
+ "disable-scroll": true,
+ "all-outputs": true,
+ "format": "{icon}",
+ "format-icons": {
+ "focused": "",
+ "default": ""
+ }
+ },
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ //"clock": {
+ // // "timezone": "America/New_York",
+ // "tooltip-format": "{:%Y %B}\n{calendar}",
+ // "format-alt": "{:%Y-%m-%d}"
+ //},
+ "clock": {
+ "format": "{:%H:%M} ",
+ "format-alt": "{:%A, %B %d, %Y (%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"
+ }
+ },
+ "cpu": {
+ "interval": 1,
+ "format": "{usage}% ",
+ "tooltip": false
+ },
+ "memory": {
+ "interval": 2,
+ "format": "{}% "
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ "hwmon-path": "/sys/class/hwmon/hwmon3/temp1_input",
+ "critical-threshold": 80,
+ "format-critical": " {temperatureC}°C ",
+ "format": "{temperatureC}°C {icon}",
+ "format-icons": ["", ""],
+ "interval": 1
+ },
+ "temperature#gpu": {
+ // "thermal-zone": 2,
+ "hwmon-path": "/sys/class/hwmon/hwmon5/temp1_input",
+ "critical-threshold": 80,
+ "format-critical": " {temperatureC}°C ",
+ "format": " {temperatureC}°C {icon}",
+ "format-icons": ["", ""],
+ "interval": 1
+ },
+ "backlight": {
+ // "device": "acpi_video1",
+ "format": "{percent}% {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", ""]
+ },
+ "battery": {
+ "states": {
+ // "good": 95,
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "wireplumber": {
+ "format": "{volume}% {icon}",
+ "format-muted": "",
+ "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
+ "format-icons": ["", "", ""]
+ },
+ "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/dotfiles/.config/waybar/style.css b/dotfiles/.config/waybar/style.css
new file mode 100644
index 00000000..721648eb
--- /dev/null
+++ b/dotfiles/.config/waybar/style.css
@@ -0,0 +1,313 @@
+@define-color base-darker rgba(30, 31, 41, 230);
+@define-color base #282a36;
+@define-color selection #44475a;
+@define-color foreground #f8f8f2;
+@define-color comment #6272a4;
+@define-color cyan #8be9fd;
+@define-color green #50fa7b;
+@define-color orange #ffb86c;
+@define-color pink #ff79c6;
+@define-color purple #bd93f9;
+@define-color red #ff5555;
+@define-color yellow #f1fa8c;
+
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: "JetBrainsMono Nerd Font", "Material Design Icons";
+ font-size: 14px;
+ color: @foreground;
+}
+
+#window {
+ color: @pink;
+ background: @base;
+ transition-property: background-color;
+ border-radius: 100px;
+ padding: 0 10px;
+}
+
+#waybar.empty #window {
+ background: none;
+}
+
+window#waybar {
+ background-color: transparent;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+
+
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+button {
+ margin-right: 5px;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+ background: @base;
+ box-shadow: none;
+ text-shadow: none;
+}
+
+button:hover {
+ color: @pink;
+ border: none;
+ box-shadow: none;
+ text-shadow: none;
+}
+
+#workspaces {
+ border-radius: 100px;
+ background: @base;
+ padding: 0 15px;
+}
+
+#workspaces button {
+ border: none;
+ background-color: @base;
+ color: @foreground;
+ transition: 0.2s;
+ padding-left: 0;
+ padding-right: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+#workspaces button:hover {
+ color: @orange;
+ background: @base;
+ transition: 0.2s;
+ box-shadow: none;
+ text-shadow: none;
+}
+
+#workspaces button.focused {
+ background: @base;
+ box-shadow: none;
+ text-shadow: none;
+}
+
+#workspaces button.urgent {
+ background: @red;
+ box-shadow: inset 0px 0px 0px 3px @base;
+ text-shadow: none;
+ color: @base;
+}
+
+#mode {
+ background: @base;
+ box-shadow: none;
+ text-shadow: none;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#mpd,
+#language,
+#keyboard-state,
+#custom-power {
+ padding-left: 15px;
+ padding-right: 18px;
+ background-color: @base;
+ border-radius: 100px;
+}
+
+#window,
+#workspaces {
+ margin: 0 5px;
+}
+
+/* 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 {
+ color: @orange;
+}
+
+#temperature {
+ color: @orange;
+}
+
+#battery {
+ color: @purple;
+}
+
+#battery.charging,
+#battery.plugged {
+ color: @orange;
+}
+
+@keyframes blink {
+ to {
+ background-color: @base;
+ color: #000000;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: @red;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+label:focus {
+ color: @foreground;
+}
+
+#cpu {
+ color: @purple;
+}
+
+#memory {
+ color: @purple;
+}
+
+#disk {
+ color: @purple;
+}
+
+#backlight {
+ color: @pink;
+}
+
+#network {
+ color: @cyan;
+}
+
+#network.disconnected {
+ color: @red;
+}
+
+#pulseaudio {
+ color: @green;
+}
+
+#pulseaudio.muted {
+ color: @red;
+}
+
+#wireplumber {
+ color: @pink;
+}
+
+#wireplumber.muted {
+ color: @red;
+}
+
+#custom-media {
+ color: @purple;
+ min-width: 100px;
+}
+
+#custom-media.custom-spotify {
+ color: @purple;
+}
+
+#custom-media.custom-vlc {
+ color: @purple;
+}
+
+#temperature {
+ color: @purple;
+}
+
+#temperature.critical {
+ color: @base;
+ background: @red;
+ box-shadow: inset 0px 0px 0px 3px @base;
+}
+
+#tray {
+ color: @foreground;
+}
+
+#tray>.passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray>.needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: @base;
+}
+
+#idle_inhibitor {
+ color: @yellow;
+}
+
+#idle_inhibitor.activated {
+ background-color: @red;
+ box-shadow: inset 0px 0px 0px 3px @base;
+ color: @base;
+}
+
+#mpd {
+ background-color: #66cc99;
+ color: @purple;
+}
+
+#mpd.disconnected {
+ background-color: #f53c3c;
+}
+
+#mpd.stopped {
+ background-color: #90b1b1;
+}
+
+#mpd.paused {
+ background-color: #51a37a;
+}
+
+#language {
+ color: @orange;
+ min-width: 16px;
+}
+
+#keyboard-state {
+ color: @orange;
+ min-width: 16px;
+}
+
+#keyboard-state>label {
+ padding: 0 5px;
+}
+
+#keyboard-state>label.locked {
+ color: @red;
+}
+
+#scratchpad {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#scratchpad.empty {
+ background-color: transparent;
+}
diff --git a/dotfiles/.config/wofi/style.css b/dotfiles/.config/wofi/style.css
new file mode 100644
index 00000000..f88ee70f
--- /dev/null
+++ b/dotfiles/.config/wofi/style.css
@@ -0,0 +1,71 @@
+window {
+ margin: 0px;
+ border: 2px solid #bd93f9;
+ background-color: #282a36;
+ border-radius: 10px;
+ outline-style: none;
+ }
+
+ #input {
+ margin: 5px;
+ border: none;
+ border-radius: 50px;
+ color: #f8f8f2;
+ background-color: #44475a;
+ outline-style: none;
+ }
+
+ #inner-box {
+ margin: 5px;
+ border: none;
+ background-color: #282a36;
+ outline-style: none;
+ }
+
+ #outer-box {
+ margin: 5px;
+ border: none;
+ background-color: #282a36;
+ outline-style: none;
+ }
+
+ #scroll {
+ margin: 0px;
+ border: none;
+ outline-style: none;
+ }
+
+ #text {
+ margin: 5px;
+ border: none;
+ color: #f8f8f2;
+ }
+
+ #entry {
+ border-radius: 50px;
+ outline-style: none;
+ }
+
+ #entry.activatable #text {
+ color: #282a36;
+ }
+
+ #entry > * {
+ color: #f8f8f2;
+ }
+
+ #entry:selected {
+ background-color: #44475a;
+ border: none;
+ outline-style: none;
+ }
+
+ #entry:selected #text {
+ font-weight: bold;
+ color: #bd93f9;
+ background-color: #44475a;
+ }
+
+ #img:selected {
+ background: none;
+ }
\ No newline at end of file
diff --git a/dotfiles/.vim/vimrc b/dotfiles/.vim/vimrc
index d07bb214..82be8075 100644
--- a/dotfiles/.vim/vimrc
+++ b/dotfiles/.vim/vimrc
@@ -254,7 +254,7 @@ function! StatuslineGit()
return strlen(l:branchname) > 0?' '.l:branchname.' ':''
endfunction
-set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Cursor:\ %l/%c\ \ \ Lines:\ %L%=%{StatuslineGit()}
+set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ Cursor:\ %l/%c\ \ \ Lines:\ %L%=%{StatuslineGit()}
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -370,4 +370,4 @@ function! VisualSelection(direction, extra_filter) range
let @/ = l:pattern
let @" = l:saved_reg
-endfunction
\ No newline at end of file
+endfunction
diff --git a/install.sh b/install.sh
index 5b8b7eaa..35968e17 100755
--- a/install.sh
+++ b/install.sh
@@ -14,8 +14,11 @@ fi
# Install script dependencies
paru -Sy curl git stow bat fzf less nextcloud-client
+# Install DE
+paru -Sy sway swaybg swaylock waybar wofi foot grim slurp wl-clipboard
+
# Install GUI Apps
-paru -Sy foot signal-desktop gnome-calendar gnome-podcasts brave-bin
+paru -Sy signal-desktop gnome-calendar gnome-podcasts brave-bin
# Install CLI Apps
paru -Sy toipe bottom w3m newsboat iamb tmux ollama vim transmission-cli mutt pass
@@ -31,6 +34,13 @@ stow -v -t $HOME dotfiles --adopt
git diff
git reset --hard
+# Reload fonts
+fc-cache -fv
+
+# link wallpaper
+mkdir -p "/usr/share/backgrounds"
+sudo cp -f ~/dotfiles/bg.jpg /usr/share/backgrounds/bg.jpg
+
# dconf reset -f /
dconf load / < dconf-settings
diff --git a/wallpapers/blobs-d.svg b/wallpapers/blobs-d.svg
deleted file mode 100644
index e1f6382b..00000000
--- a/wallpapers/blobs-d.svg
+++ /dev/null
@@ -1,671 +0,0 @@
-
-
diff --git a/wallpapers/blobs-l.svg b/wallpapers/blobs-l.svg
deleted file mode 100644
index b49caff1..00000000
--- a/wallpapers/blobs-l.svg
+++ /dev/null
@@ -1,491 +0,0 @@
-
-