summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorChristian Krinitsin <christian@krinitsin.xyz>2024-03-16 21:00:19 +0100
committerChristian Krinitsin <christian@krinitsin.xyz>2024-03-16 21:00:19 +0100
commitb8a4392c8754a56265701f97f4833b447efff29a (patch)
treec7a0f84d29ace7a215201311ebc02e1e8eb7f952
downloaddotfiles-b8a4392c8754a56265701f97f4833b447efff29a.tar.gz
dotfiles-b8a4392c8754a56265701f97f4833b447efff29a.zip
init
-rw-r--r--.bash_profile9
-rw-r--r--.bashrc31
-rwxr-xr-x.config/alacritty/alacritty.toml39
-rwxr-xr-x.config/dunst/dunstrc436
-rwxr-xr-x.config/kitty/kitty.conf243
-rw-r--r--.config/mimeapps.list11
-rw-r--r--.config/nvim/init.lua5
-rw-r--r--.config/nvim/lazy-lock.json24
-rw-r--r--.config/nvim/lua/core/keymaps.lua10
-rw-r--r--.config/nvim/lua/core/lazy.lua15
-rw-r--r--.config/nvim/lua/core/options.lua27
-rw-r--r--.config/nvim/lua/plugins/appearance.lua28
-rw-r--r--.config/nvim/lua/plugins/autoclose.lua10
-rw-r--r--.config/nvim/lua/plugins/comment.lua21
-rw-r--r--.config/nvim/lua/plugins/everforest.lua12
-rw-r--r--.config/nvim/lua/plugins/git.lua18
-rw-r--r--.config/nvim/lua/plugins/lspconfig.lua136
-rw-r--r--.config/nvim/lua/plugins/statusline.lua11
-rw-r--r--.config/nvim/lua/plugins/telescope.lua8
-rwxr-xr-x.config/qutebrowser/autoconfig.yml14
-rw-r--r--.config/qutebrowser/bookmarks/urls1
-rwxr-xr-x.config/qutebrowser/config.py35
-rwxr-xr-x.config/qutebrowser/dracula/__init__.py0
-rw-r--r--.config/qutebrowser/dracula/__pycache__/__init__.cpython-311.pycbin0 -> 160 bytes
-rw-r--r--.config/qutebrowser/dracula/__pycache__/draw.cpython-311.pycbin0 -> 7904 bytes
-rwxr-xr-x.config/qutebrowser/dracula/draw.py291
-rwxr-xr-x.config/qutebrowser/qsettings/QtProject.conf8
-rw-r--r--.config/qutebrowser/quickmarks10
-rwxr-xr-x.config/rofi/arc_dark_colors.rasi34
-rwxr-xr-x.config/rofi/arc_dark_transparent_colors.rasi34
-rwxr-xr-x.config/rofi/config.rasi2
-rwxr-xr-x.config/rofi/power-profiles.rasi120
-rwxr-xr-x.config/rofi/powermenu.rasi124
-rwxr-xr-x.config/rofi/rofidmenu.rasi134
-rwxr-xr-x.config/rofi/rofikeyhint.rasi137
-rwxr-xr-x.config/spotify-player/app.toml39
-rwxr-xr-x.config/starship.toml207
-rw-r--r--.config/sway/config156
-rwxr-xr-x.config/systemd/user/mbsync.service9
-rwxr-xr-x.config/systemd/user/mbsync.timer10
l---------.config/systemd/user/timers.target.wants/mbsync.timer1
-rw-r--r--.config/user-dirs.dirs9
-rw-r--r--.config/waybar/colors.css12
-rw-r--r--.config/waybar/config166
-rwxr-xr-x.config/waybar/i3blocks.conf69
-rwxr-xr-x.config/waybar/scripts/blur-lock11
-rwxr-xr-x.config/waybar/scripts/cpu_usage62
-rwxr-xr-x.config/waybar/scripts/disk48
-rwxr-xr-x.config/waybar/scripts/get_weather.sh19
-rwxr-xr-x.config/waybar/scripts/mail.sh3
-rwxr-xr-x.config/waybar/scripts/memory69
-rwxr-xr-x.config/waybar/scripts/power-profiles190
-rwxr-xr-x.config/waybar/scripts/powermenu186
-rwxr-xr-x.config/waybar/scripts/ppd-status11
-rwxr-xr-x.config/waybar/scripts/temperature86
-rwxr-xr-x.config/waybar/scripts/volume93
-rwxr-xr-x.config/waybar/scripts/volume_brightness.sh96
-rw-r--r--.config/waybar/style.css270
-rwxr-xr-x.config/zathura/zathurarc56
-rwxr-xr-x.mbsyncrc49
-rwxr-xr-x.profile4
61 files changed, 3969 insertions, 0 deletions
diff --git a/.bash_profile b/.bash_profile
new file mode 100644
index 0000000..99fd48b
--- /dev/null
+++ b/.bash_profile
@@ -0,0 +1,9 @@
+#
+# ~/.bash_profile
+#
+
+[[ -f ~/.bashrc ]] && . ~/.bashrc
+
+if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
+	exec sway
+fi
diff --git a/.bashrc b/.bashrc
new file mode 100644
index 0000000..547fb5e
--- /dev/null
+++ b/.bashrc
@@ -0,0 +1,31 @@
+# Export own script path
+export PATH=/usr/local/bin/:$HOME/.local/bin/:$PATH
+
+# Aliases
+alias ls='ls --color=auto'
+alias la='ls -lav --ignore=..'
+alias vim="nvim"
+alias lg="lazygit"
+alias pgl="pass git pull"
+alias pgs="pass git push"
+alias spt="spotify_player -d"
+alias swconf="nvim ~/.config/sway/config"
+alias sandisk="sudo mount /dev/sda1 /mnt/sandisk && cd /mnt/sandisk/"
+alias fd='cd "$(find ~/documents/ ~/downloads/ ~/.config/ ~/uni/ -type d | fzf -i)"'
+alias :q="exit"
+alias ..="cd .."
+alias v="vim"
+
+# Arrow bindings
+bind '"\e[A":history-search-backward'
+bind '"\e[B":history-search-forward'
+
+# Start programs
+eval "$(starship init bash)"
+eval "$(zoxide init --cmd='cd' bash)"
+
+# Navtag
+#source /home/chris/.scripts/navtag/commands.sh
+
+# Own shell functions
+source $HOME/.scripts/shell_functions.sh
diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml
new file mode 100755
index 0000000..f297cc3
--- /dev/null
+++ b/.config/alacritty/alacritty.toml
@@ -0,0 +1,39 @@
+[colors.cursor]
+cursor = "#d3c6aa"
+text = "#232a2e"
+
+[colors.primary]
+background = "#2b3339"
+foreground = "#d3c6aa"
+
+[colors.normal]
+black = "#232a2e"
+blue = "#7fbbb3"
+cyan = "#e69875"
+green = "#83c092"
+magenta = "#d699b6"
+red = "#e67e80"
+white = "#d3c6aa"
+yellow = "#dbbc7f"
+
+[colors.bright]
+black = "#475158"
+blue = "#3a515d"
+cyan = "#d699b6"
+green = "#a7c080"
+magenta = "#7fbbb3"
+red = "#e67e80"
+white = "#9da9a0"
+yellow = "#dbbc7f"
+
+[cursor]
+style = "Block"
+
+[font.normal]
+family = "DroidSansM Nerd Font"
+
+[font]
+size = 12.0
+
+[scrolling]
+history = 2000
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100755
index 0000000..0166817
--- /dev/null
+++ b/.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 = none
+
+    ### 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-right
+
+    # Offset from the origin
+    offset = 30x40
+
+    # Scale factor. It is auto-detected if value is 0.
+    scale = 0
+
+    # Maximum number of notification (0 means no limit)
+    notification_limit = 5
+
+    ### 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 = 16
+
+    # Draw a line of "separator_height" pixel height between two
+    # notifications.
+    # Set to 0 to disable.
+    separator_height = 2
+
+    # Padding between text and separator.
+    padding = 8
+
+    # Horizontal padding.
+    horizontal_padding = 8
+
+    # 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 = 1
+
+    # Defines color of the frame around the notification window.
+    frame_color = "#d3c6aa"
+
+    # 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 = auto
+
+    # 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 = 0
+
+    ### Text ###
+
+    font = Noto Sans Regular 9
+
+    # 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:
+    #        <b>bold</b>
+    #        <i>italic</i>
+    #        <s>strikethrough</s>
+    #        <u>underline</u>
+    #
+    #        For a complete reference see
+    #        <https://docs.gtk.org/Pango/pango_markup.html>.
+    #
+    # 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 = "<b>%s</b>\n%b"
+
+    # Alignment of message text.
+    # Possible values are "left", "center" and "right".
+    alignment = left
+
+    # 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 = true
+
+    # Display indicators for URLs (U) and actions (A).
+    show_indicators = yes
+
+    ### Icons ###
+
+    # Align icons left/right/off
+    icon_position = left
+
+    # 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 = 32
+
+    # Paths to default icons.
+    #icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+    icon_path = /usr/share/icons/Qogir/16/status:/usr/share/icons/Qogir/16/devices/:/usr/share/icons/Qogir/24/panel/:/usr/share/icons/Qogir/16/apps/:/usr/share/pixmaps/
+    ### History ###
+
+    # Should a notification popped up from history be sticky or timeout
+    # as if it would normally do.
+    sticky_history = false
+
+    # Maximum amount of notifications kept in history
+    history_length = 0
+
+    ### Misc/Advanced ###
+
+    # dmenu path.
+    dmenu = /home/chris/.local/bin/dmenu -p dunst:
+
+    # Browser for opening urls in context menu.
+    browser = /usr/bin/xdg-open
+
+    # 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 = 7
+
+    # 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 = "#2b3339"
+    foreground = "#d3c6aa"
+    timeout = 5
+    # Icon for notifications with low urgency, uncomment to enable
+    icon = /usr/share/icons/Arc-X-D/status/16/dialog-information.png
+
+[urgency_normal]
+    background = "#2b3339"
+    foreground = "#d3c6aa"
+    timeout = 5
+    # Icon for notifications with normal urgency, uncomment to enable
+    icon = /usr/share/icons/Arc-X-D/status/16/dialog-question.png
+
+[urgency_critical]
+    background = "#2b3339"
+    foreground = "#d3c6aa"
+    frame_color = "#d699b6"
+    timeout = 120
+    # Icon for notifications with critical urgency, uncomment to enable
+    icon = /usr/share/icons/Arc-X-D/status/16/dialog-warning.png
+
+# 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
diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf
new file mode 100755
index 0000000..531d422
--- /dev/null
+++ b/.config/kitty/kitty.conf
@@ -0,0 +1,243 @@
+# vim:fileencoding=utf-8:ft=conf
+
+# Font family. You can also specify different fonts for the
+# bold/italic/bold-italic variants. By default they are derived automatically,
+# by the OSes font system. Setting them manually is useful for font families
+# that have many weight variants like Book, Medium, Thick, etc. For example:
+# font_family Operator Mono Book
+# bold_font Operator Mono Thick
+# bold_italic_font Operator Mono Medium
+# font_family      Input Mono
+font_family      DroidSansM Nerd Font
+italic_font      auto
+bold_font        auto
+bold_italic_font auto
+
+# Font size (in pts)
+font_size        12.0
+
+# The foreground color
+foreground       #d3c6aa
+
+# The background color
+background       #2b3339
+
+# The foreground for selections
+selection_foreground #2f2f2f
+
+# The background for selections
+selection_background #e67e80
+
+# The cursor color
+cursor           #d3c6aa
+
+# The cursor shape can be one of (block, beam, underline)
+shell_integration no-cursor
+cursor_shape block
+
+# The interval (in seconds) at which to blink the cursor. Set to zero to
+# disable blinking.
+cursor_blink_interval     1
+
+# Stop blinking cursor after the specified number of seconds of keyboard inactivity. Set to
+# zero or a negative number to never stop blinking.
+cursor_stop_blinking_after 15.0
+
+# Number of lines of history to keep in memory for scrolling back
+scrollback_lines 2000
+
+# Program with which to view scrollback in a new window. The scrollback buffer is passed as
+# STDIN to this program. If you change it, make sure the program you use can
+# handle ANSI escape sequences for colors and text formatting.
+scrollback_pager less +G -R
+
+# Wheel scroll multiplier (modify the amount scrolled by the mouse wheel)
+wheel_scroll_multiplier 5.0
+
+# The interval between successive clicks to detect double/triple clicks (in seconds)
+click_interval 0.5
+
+# Characters considered part of a word when double clicking. In addition to these characters
+# any character that is marked as an alpha-numeric character in the unicode
+# database will be matched.
+select_by_word_characters :@-./_~?&=%+#
+
+# Hide mouse cursor after the specified number of seconds of the mouse not being used. Set to
+# zero or a negative number to disable mouse cursor hiding.
+mouse_hide_wait 0.0
+
+# The enabled window layouts. A comma separated list of layout names. The special value * means
+# all layouts. The first listed layout will be used as the startup layout.
+# For a list of available layouts, see the file layouts.py
+enabled_layouts *
+
+# If enabled, the window size will be remembered so that new instances of kitty will have the same
+# size as the previous instance. If disabled, the window will initially have size configured
+# by initial_window_width/height, in pixels.
+remember_window_size   no
+initial_window_width   640
+initial_window_height  400
+
+# Delay (in milliseconds) between screen updates. Decreasing it, increases fps
+# at the cost of more CPU usage. The default value yields ~100fps which is more
+# that sufficient for most uses.
+# repaint_delay    10
+repaint_delay    10
+
+# Delay (in milliseconds) before input from the program running in the terminal
+# is processed. Note that decreasing it will increase responsiveness, but also
+# increase CPU usage and might cause flicker in full screen programs that
+# redraw the entire screen on each loop, because kitty is so fast that partial
+# screen updates will be drawn.
+input_delay 3
+
+# Visual bell duration. Flash the screen when a bell occurs for the specified number of
+# seconds. Set to zero to disable.
+visual_bell_duration 0.0
+
+# Enable/disable the audio bell. Useful in environments that require silence.
+enable_audio_bell no
+
+# The modifier keys to press when clicking with the mouse on URLs to open the URL
+open_url_modifiers ctrl+shift
+
+# The program with which to open URLs that are clicked on. The special value "default" means to
+# use the operating system's default URL handler.
+open_url_with default
+
+# The value of the TERM environment variable to set
+term xterm-kitty
+
+# The width (in pts) of window borders. Will be rounded to the nearest number of pixels based on screen resolution.
+window_border_width 0
+
+window_margin_width 0
+
+# The color for the border of the active window
+active_border_color #ffffff
+
+# The color for the border of inactive windows
+inactive_border_color #cccccc
+
+# Tab-bar colors
+active_tab_foreground #000
+active_tab_background #eee
+inactive_tab_foreground #444
+inactive_tab_background #999
+
+
+# The 16 terminal colors. There are 8 basic colors, each color has a dull and
+# bright version.
+
+# black
+color0   #232a2e
+color8   #475158
+
+# red
+color1   #e67e80
+color9   #e67e80
+
+# green
+color2    #83c092
+color10   #a7c080
+
+# yellow
+color3    #dbbc7f
+color11   #dbbc7f
+
+# blue
+color4   #7fbbb3
+color12  #3a515d
+
+# magenta
+color5   #d699b6
+color13  #7fbbb3
+
+# cyan
+color6   #e69875
+color14  #d699b6
+
+# white
+color7   #d3c6aa
+color15  #9da9a0
+
+# Key mapping
+# For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html
+# For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html
+# You can use the special action no_op to unmap a keyboard shortcut that is
+# assigned in the default configuration.
+
+# Clipboard
+map super+v             paste_from_clipboard
+map ctrl+shift+s        paste_from_selection
+map super+c             copy_to_clipboard
+map shift+insert        paste_from_selection
+
+# Scrolling
+map ctrl+shift+up        scroll_line_up
+map ctrl+shift+down      scroll_line_down
+map ctrl+shift+k         scroll_line_up
+map ctrl+shift+j         scroll_line_down
+map ctrl+shift+page_up   scroll_page_up
+map ctrl+shift+page_down scroll_page_down
+map ctrl+shift+home      scroll_home
+map ctrl+shift+end       scroll_end
+map ctrl+shift+h         show_scrollback
+
+# Window management
+map super+n             new_os_window
+map super+w             close_window
+map ctrl+shift+enter    new_window
+map ctrl+shift+]        next_window
+map ctrl+shift+[        previous_window
+map ctrl+shift+f        move_window_forward
+map ctrl+shift+b        move_window_backward
+map ctrl+shift+`        move_window_to_top
+map ctrl+shift+1        first_window
+map ctrl+shift+2        second_window
+map ctrl+shift+3        third_window
+map ctrl+shift+4        fourth_window
+map ctrl+shift+5        fifth_window
+map ctrl+shift+6        sixth_window
+map ctrl+shift+7        seventh_window
+map ctrl+shift+8        eighth_window
+map ctrl+shift+9        ninth_window
+map ctrl+shift+0        tenth_window
+
+# Tab management
+map ctrl+shift+right    next_tab
+map ctrl+shift+left     previous_tab
+map ctrl+shift+t        new_tab
+map ctrl+shift+q        close_tab
+map ctrl+shift+l        next_layout
+map ctrl+shift+.        move_tab_forward
+map ctrl+shift+,        move_tab_backward
+
+# Miscellaneous
+map ctrl+shift+up      increase_font_size
+map ctrl+shift+down    decrease_font_size
+map ctrl+shift+backspace restore_font_size
+
+# Symbol mapping (special font for specified unicode code points). Map the
+# specified unicode codepoints to a particular font. Useful if you need special
+# rendering for some symbols, such as for Powerline. Avoids the need for
+# patched fonts. Each unicode code point is specified in the form U+<code point
+# in hexadecimal>. You can specify multiple code points, separated by commas
+# and ranges separated by hyphens. symbol_map itself can be specified multiple times.
+# Syntax is:
+#
+# symbol_map codepoints Font Family Name
+#
+# For example:
+#
+#symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols
+hide_window_decorations titlebar-only
+macos_option_as_alt no
+
+# Change the color of the kitty window's titlebar on macOS. A value of "system"
+# means to use the default system color, a value of "background" means to use
+# the default background color and finally you can use an arbitrary color, such
+# as #12af59 or "red".
+macos_titlebar_color background
+
+allow_remote_control yes
diff --git a/.config/mimeapps.list b/.config/mimeapps.list
new file mode 100644
index 0000000..25a0b74
--- /dev/null
+++ b/.config/mimeapps.list
@@ -0,0 +1,11 @@
+[Default Applications]
+application/pdf=org.pwmt.zathura.desktop
+x-scheme-handler/http=org.qutebrowser.qutebrowser.desktop
+x-scheme-handler/https=org.qutebrowser.qutebrowser.desktop
+x-scheme-handler/mailto=userapp-Thunderbird-IAYNK2.desktop
+message/rfc822=userapp-Thunderbird-IAYNK2.desktop
+x-scheme-handler/mid=userapp-Thunderbird-IAYNK2.desktop
+
+[Added Associations]
+x-scheme-handler/mailto=userapp-Thunderbird-IAYNK2.desktop;
+x-scheme-handler/mid=userapp-Thunderbird-IAYNK2.desktop;
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
new file mode 100644
index 0000000..15c11dd
--- /dev/null
+++ b/.config/nvim/init.lua
@@ -0,0 +1,5 @@
+vim.loader.enable()
+
+require('core/options')
+require('core/keymaps')
+require('core/lazy')
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
new file mode 100644
index 0000000..b0c13c2
--- /dev/null
+++ b/.config/nvim/lazy-lock.json
@@ -0,0 +1,24 @@
+{
+  "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
+  "LuaSnip": { "branch": "master", "commit": "a7a4b4682c4b3e2ba82b82a4e6e5f5a0e79dec32" },
+  "actions-preview.nvim": { "branch": "master", "commit": "5072b1b1065a6b22bdd46b5c21780a91d6a08071" },
+  "autoclose.nvim": { "branch": "main", "commit": "dc42806540dcf448ecb2bad6b67204410cfbe629" },
+  "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
+  "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
+  "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
+  "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
+  "everforest-nvim": { "branch": "main", "commit": "eedb19079c6bf9d162f74a5c48a6d2759f38cc76" },
+  "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
+  "indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
+  "lazy.nvim": { "branch": "main", "commit": "83493db50a434a4c5c648faf41e2ead80f96e478" },
+  "lazygit.nvim": { "branch": "main", "commit": "774dcecbd0b9b57be6c150adacb60ced79b11b23" },
+  "lspkind.nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" },
+  "lualine.nvim": { "branch": "master", "commit": "af4c3cf17206810880d2a93562e0a4c0d901c684" },
+  "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
+  "nvim-colorizer.lua": { "branch": "master", "commit": "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6" },
+  "nvim-lspconfig": { "branch": "master", "commit": "4bdd3800b4148f670c6cf55ef65f490148eeb550" },
+  "nvim-treesitter": { "branch": "master", "commit": "f87882858438834d2fbb6379aa2be37de901751b" },
+  "nvim-web-devicons": { "branch": "master", "commit": "a851380fbea4c1312d11f13d5cdc86a7a19808dd" },
+  "plenary.nvim": { "branch": "master", "commit": "f7adfc4b3f4f91aab6caebf42b3682945fbc35be" },
+  "telescope.nvim": { "branch": "master", "commit": "6312868392331c9c0f22725041f1ec2bef57c751" }
+}
\ No newline at end of file
diff --git a/.config/nvim/lua/core/keymaps.lua b/.config/nvim/lua/core/keymaps.lua
new file mode 100644
index 0000000..5200427
--- /dev/null
+++ b/.config/nvim/lua/core/keymaps.lua
@@ -0,0 +1,10 @@
+local map = vim.keymap.set
+
+map("", "<Space>", "<Nop>", {})
+vim.g.mapleader = " "
+vim.g.maplocalleader = " "
+
+map("i", "jk", "<Esc>", {})
+
+vim.keymap.set('n', '<leader>ff', ':Telescope find_files theme=dropdown<CR>', {})
+vim.keymap.set('n', '<leader>lg', ':LazyGit<CR>', {})
diff --git a/.config/nvim/lua/core/lazy.lua b/.config/nvim/lua/core/lazy.lua
new file mode 100644
index 0000000..169284a
--- /dev/null
+++ b/.config/nvim/lua/core/lazy.lua
@@ -0,0 +1,15 @@
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+
+if not vim.loop.fs_stat(lazypath) then
+  vim.fn.system({
+    "git",
+    "clone",
+    "--filter=blob:none",
+    "https://github.com/folke/lazy.nvim.git",
+    "--branch=stable", -- latest stable release
+    lazypath,
+  })
+end
+vim.opt.rtp:prepend(lazypath)
+
+require("lazy").setup("plugins")
diff --git a/.config/nvim/lua/core/options.lua b/.config/nvim/lua/core/options.lua
new file mode 100644
index 0000000..8f5b36e
--- /dev/null
+++ b/.config/nvim/lua/core/options.lua
@@ -0,0 +1,27 @@
+vim.opt.clipboard = 'unnamedplus'
+vim.opt.mouse = 'a'
+vim.opt.shell='/bin/bash'
+
+vim.opt.backup=false
+vim.opt.writebackup=false
+vim.opt.updatetime=300
+vim.opt.signcolumn="yes"
+
+vim.opt.tabstop = 4                 -- number of visual spaces per TAB
+vim.opt.softtabstop = 4             -- number of spacesin tab when editing
+vim.opt.shiftwidth = 4              -- insert 4 spaces on a tab
+vim.opt.expandtab = true            -- tabs are spaces, mainly because of python
+vim.opt.smartindent=true
+vim.opt.autoindent=true
+vim.opt.smarttab=true
+
+vim.opt.number = true               -- show absolute number
+vim.opt.relativenumber = true       -- add numbers to each line on the left side
+vim.opt.splitbelow = true           -- open new vertical split bottom
+vim.opt.splitright = true           -- open new horizontal splits right
+vim.opt.termguicolors = true        -- enabl 24-bit RGB color in the TUI
+vim.opt.showmode = false            -- we are experienced, wo don't need the "-- INSERT --" mode hint
+
+vim.opt.incsearch = true            -- search as characters are entered
+vim.opt.ignorecase = true           -- ignore case in searches by default
+vim.opt.smartcase = true            -- but make it case sensitive if an uppercase is entered
diff --git a/.config/nvim/lua/plugins/appearance.lua b/.config/nvim/lua/plugins/appearance.lua
new file mode 100644
index 0000000..24012be
--- /dev/null
+++ b/.config/nvim/lua/plugins/appearance.lua
@@ -0,0 +1,28 @@
+return {
+
+    {
+        "nvim-treesitter/nvim-treesitter",
+        build = ":TSUpdate",
+        config = function ()
+          require("nvim-treesitter.configs").setup({
+              ensure_installed = { "c", "lua", "vim" },
+              sync_install = false,
+              highlight = { enable = true },
+              indent = { enable = true },
+            })
+        end
+    },
+
+    {
+        "norcalli/nvim-colorizer.lua",
+        config = function ()
+            require 'colorizer'.setup()
+        end
+    },
+
+    {
+        "lukas-reineke/indent-blankline.nvim",
+        main = "ibl",
+        opts = {}
+    },
+}
diff --git a/.config/nvim/lua/plugins/autoclose.lua b/.config/nvim/lua/plugins/autoclose.lua
new file mode 100644
index 0000000..692f4e4
--- /dev/null
+++ b/.config/nvim/lua/plugins/autoclose.lua
@@ -0,0 +1,10 @@
+return {
+
+    {
+        "m4xshen/autoclose.nvim",
+        config = function ()
+            require("autoclose").setup()
+        end
+    }
+
+}
diff --git a/.config/nvim/lua/plugins/comment.lua b/.config/nvim/lua/plugins/comment.lua
new file mode 100644
index 0000000..c37d7cd
--- /dev/null
+++ b/.config/nvim/lua/plugins/comment.lua
@@ -0,0 +1,21 @@
+return {
+
+    {
+        "numToStr/Comment.nvim",
+        opts = {
+            -- Visual mappings
+            opleader = {
+                line = '<Space>/',
+                block = '<Space>?',
+            },
+
+            -- Normal mappings
+            toggler = {
+                line = '<Space>/',
+                block = '<Space>?',
+            }
+        },
+        lazy = false
+    }
+
+}
diff --git a/.config/nvim/lua/plugins/everforest.lua b/.config/nvim/lua/plugins/everforest.lua
new file mode 100644
index 0000000..9b0b58a
--- /dev/null
+++ b/.config/nvim/lua/plugins/everforest.lua
@@ -0,0 +1,12 @@
+return {
+
+    {
+      "neanias/everforest-nvim",
+      lazy = false, -- load during startup
+      priority = 1000, -- load before all the other start plugins
+      config = function()
+        vim.cmd([[colorscheme everforest]]) -- set colortheme
+      end,
+    }
+
+}
diff --git a/.config/nvim/lua/plugins/git.lua b/.config/nvim/lua/plugins/git.lua
new file mode 100644
index 0000000..4e09cd3
--- /dev/null
+++ b/.config/nvim/lua/plugins/git.lua
@@ -0,0 +1,18 @@
+return {
+
+    {
+        "kdheepak/lazygit.nvim",
+    	cmd = {
+    		"LazyGit",
+    		"LazyGitConfig",
+    		"LazyGitCurrentFile",
+    		"LazyGitFilter",
+    		"LazyGitFilterCurrentFile",
+    	},
+        -- optional for floating window border decoration
+        dependencies = {
+            "nvim-lua/plenary.nvim",
+        },
+    },
+
+}
diff --git a/.config/nvim/lua/plugins/lspconfig.lua b/.config/nvim/lua/plugins/lspconfig.lua
new file mode 100644
index 0000000..ce00009
--- /dev/null
+++ b/.config/nvim/lua/plugins/lspconfig.lua
@@ -0,0 +1,136 @@
+local function border(hl_name)
+  return {
+    { "╭", hl_name },
+    { "─", hl_name },
+    { "╮", hl_name },
+    { "│", hl_name },
+    { "╯", hl_name },
+    { "─", hl_name },
+    { "╰", hl_name },
+    { "│", hl_name },
+  }
+end
+
+return {
+
+    {
+        "hrsh7th/cmp-nvim-lsp",
+        config = function()
+            require'cmp'.setup {
+                sources = {
+                  { name = 'nvim_lsp' }
+                }
+            }
+        end
+    },
+
+    {
+        "neovim/nvim-lspconfig",
+        config = function()
+           require'lspconfig'.lua_ls.setup{
+                capabilities = require('cmp_nvim_lsp').default_capabilities(),
+                settings = {  Lua = {  diagnostics = {  globals = { 'vim', 'c2' }  }  }  }
+           }
+
+           require'lspconfig'.clangd.setup{
+                capabilities = require('cmp_nvim_lsp').default_capabilities()
+           }
+        end,
+    },
+
+    {
+        "hrsh7th/nvim-cmp",
+        event = "InsertEnter",
+        dependencies = {
+            "hrsh7th/cmp-buffer", -- source for text in buffer
+            "hrsh7th/cmp-path", -- source for file system paths in commands
+            "L3MON4D3/LuaSnip", -- snippet engine
+            "saadparwaiz1/cmp_luasnip", -- for lua autocompletion
+            "rafamadriz/friendly-snippets", -- useful snippets library
+            "onsails/lspkind.nvim", -- vs-code like pictograms
+        },
+
+        config = function()
+        local cmp = require("cmp")
+
+        local luasnip = require("luasnip")
+
+        local lspkind = require("lspkind")
+
+        -- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
+        require("luasnip.loaders.from_vscode").lazy_load()
+
+        cmp.setup({
+          completion = {
+            completeopt = "menu,menuone,preview,noselect",
+          },
+
+          window = {
+            completion = {
+              border = border "CmpDocBorder",
+              winhighlight = "Normal:CmpDoc",
+            },
+            documentation = {
+              border = border "CmpDocBorder",
+              winhighlight = "Normal:CmpDoc",
+            },
+          },
+
+          snippet = { -- configure how nvim-cmp interacts with snippet engine
+            expand = function(args)
+              luasnip.lsp_expand(args.body)
+            end,
+          },
+
+          mapping = cmp.mapping.preset.insert({
+            ["<S-Tab>"] = cmp.mapping(function(fallback)
+              if cmp.visible() then
+                cmp.select_prev_item()
+              elseif require("luasnip").jumpable(-1) then
+                vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
+              else
+                fallback()
+              end
+            end, { "i", "s", }),
+            ["<Tab>"] = cmp.mapping(function(fallback)
+              if cmp.visible() then
+                cmp.select_next_item()
+              elseif require("luasnip").expand_or_jumpable() then
+                vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
+              else
+                fallback()
+              end
+            end, { "i", "s", }),
+            ["<C-p>"] = cmp.mapping.select_prev_item(), -- previous suggestion
+            ["<C-n>"] = cmp.mapping.select_next_item(), -- next suggestion
+            ["<C-e>"] = cmp.mapping.abort(), -- close completion window
+            ["<CR>"] = cmp.mapping.confirm({ select = false }),
+          }),
+
+          -- sources for autocompletion
+          sources = cmp.config.sources({
+            { name = "nvim_lsp" },
+            { name = "luasnip" }, -- snippets
+            { name = "buffer" }, -- text within current buffer
+            { name = "path" }, -- file system paths
+          }),
+
+          -- configure lspkind for vs-code like pictograms in completion menu
+          formatting = {
+            format = lspkind.cmp_format({
+              maxwidth = 50,
+              ellipsis_char = "...",
+            }),
+          },
+        })
+      end,
+    },
+
+    {
+       "aznhe21/actions-preview.nvim",
+       config = function()
+         vim.keymap.set({ "v", "n" }, "<leader>an", require("actions-preview").code_actions)
+       end,
+    },
+
+}
diff --git a/.config/nvim/lua/plugins/statusline.lua b/.config/nvim/lua/plugins/statusline.lua
new file mode 100644
index 0000000..f065296
--- /dev/null
+++ b/.config/nvim/lua/plugins/statusline.lua
@@ -0,0 +1,11 @@
+return {
+
+    {
+        "nvim-lualine/lualine.nvim",
+        dependencies = { 'nvim-tree/nvim-web-devicons' },
+        config = function ()
+            require('lualine').setup()
+        end
+    },
+
+}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
new file mode 100644
index 0000000..757fa90
--- /dev/null
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -0,0 +1,8 @@
+return {
+
+    {
+        "nvim-telescope/telescope.nvim", tag = '0.1.6',
+        dependencies = { 'nvim-lua/plenary.nvim' }
+    }
+
+}
diff --git a/.config/qutebrowser/autoconfig.yml b/.config/qutebrowser/autoconfig.yml
new file mode 100755
index 0000000..4b470ea
--- /dev/null
+++ b/.config/qutebrowser/autoconfig.yml
@@ -0,0 +1,14 @@
+# If a config.py file exists, this file is ignored unless it's explicitly loaded
+# via config.load_autoconfig(). For more information, see:
+# https://github.com/qutebrowser/qutebrowser/blob/main/doc/help/configuring.asciidoc#loading-autoconfigyml
+# DO NOT edit this file by hand, qutebrowser will overwrite it.
+# Instead, create a config.py - see :help for details.
+
+config_version: 2
+settings:
+  colors.webpage.darkmode.enabled:
+    global: false
+  content.notifications.enabled:
+    https://www.netflix.com: false
+  downloads.prevent_mixed_content:
+    global: false
diff --git a/.config/qutebrowser/bookmarks/urls b/.config/qutebrowser/bookmarks/urls
new file mode 100644
index 0000000..d84aace
--- /dev/null
+++ b/.config/qutebrowser/bookmarks/urls
@@ -0,0 +1 @@
+https://dev.to/spacerockmedia/how-i-manage-my-dotfiles-using-gnu-stow-4l59 How I manage my dotfiles using GNU Stow - DEV Community
diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py
new file mode 100755
index 0000000..dae457f
--- /dev/null
+++ b/.config/qutebrowser/config.py
@@ -0,0 +1,35 @@
+import dracula.draw
+
+config = config
+c = c
+
+dracula.draw.blood(c, {
+    'spacing': {
+        'vertical': 6,
+        'horizontal': 8
+    }
+})
+
+config.set("colors.webpage.darkmode.enabled", True)
+
+# Bindings
+config.bind('J', ':tab-prev')
+config.bind('K', ':tab-next')
+config.bind('aj', 'spawn --userscript qute-pass')
+config.bind('ak', 'spawn --userscript qute-pass --password-only')
+
+c.content.javascript.clipboard="access-paste"
+
+config.set("downloads.location.suggestion", "both")
+
+c.editor.command = ["kitty", "-e", "nvim", "{}"]
+
+c.colors.webpage.preferred_color_scheme = 'dark'
+c.colors.webpage.darkmode.enabled = True
+c.colors.webpage.darkmode.algorithm = "lightness-cielab"
+c.colors.webpage.darkmode.threshold.foreground = 150
+c.colors.webpage.darkmode.threshold.background = 100
+c.colors.webpage.darkmode.policy.images = 'always'
+
+# Load existing settings made via :set
+config.load_autoconfig()
diff --git a/.config/qutebrowser/dracula/__init__.py b/.config/qutebrowser/dracula/__init__.py
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/.config/qutebrowser/dracula/__init__.py
diff --git a/.config/qutebrowser/dracula/__pycache__/__init__.cpython-311.pyc b/.config/qutebrowser/dracula/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000..958a220
--- /dev/null
+++ b/.config/qutebrowser/dracula/__pycache__/__init__.cpython-311.pyc
Binary files differdiff --git a/.config/qutebrowser/dracula/__pycache__/draw.cpython-311.pyc b/.config/qutebrowser/dracula/__pycache__/draw.cpython-311.pyc
new file mode 100644
index 0000000..8857702
--- /dev/null
+++ b/.config/qutebrowser/dracula/__pycache__/draw.cpython-311.pyc
Binary files differdiff --git a/.config/qutebrowser/dracula/draw.py b/.config/qutebrowser/dracula/draw.py
new file mode 100755
index 0000000..eaca4c4
--- /dev/null
+++ b/.config/qutebrowser/dracula/draw.py
@@ -0,0 +1,291 @@
+def blood(c, options = {}):
+    palette = {
+        'background': '#2b3339',
+        'background-alt': '#2d353b', 
+        'background-attention': '#2b3339',
+        'border': '#2b3339',
+        'current-line': '#4f585e',
+        'selection': '#4f585e',
+        'foreground': '#d3c6aa',
+        'foreground-alt': '#d3c6aa',
+        'foreground-attention': '#859289',
+        'comment': '#3a515d',
+        'cyan': '#7fbbb3',
+        'green': '#a7c080',
+        'orange': '#e69875',
+        'pink': '#83c092',
+        'purple': '#d699b6',
+        'red': '#e67e80',
+        'yellow': '#dbbc7f'
+    }   
+
+    spacing = options.get('spacing', {
+        'vertical': 5,
+        'horizontal': 5
+    })
+
+    padding = options.get('padding', {
+        'top': spacing['vertical'],
+        'right': spacing['horizontal'],
+        'bottom': spacing['vertical'],
+        'left': spacing['horizontal']
+    })
+
+    ## Background color of the completion widget category headers.
+    c.colors.completion.category.bg = palette['background']
+
+    ## Bottom border color of the completion widget category headers.
+    c.colors.completion.category.border.bottom = palette['border']
+
+    ## Top border color of the completion widget category headers.
+    c.colors.completion.category.border.top = palette['border']
+
+    ## Foreground color of completion widget category headers.
+    c.colors.completion.category.fg = palette['foreground']
+
+    ## Background color of the completion widget for even rows.
+    c.colors.completion.even.bg = palette['background']
+
+    ## Background color of the completion widget for odd rows.
+    c.colors.completion.odd.bg = palette['background-alt']
+
+    ## Text color of the completion widget.
+    c.colors.completion.fg = palette['foreground']
+
+    ## Background color of the selected completion item.
+    c.colors.completion.item.selected.bg = palette['selection']
+
+    ## Bottom border color of the selected completion item.
+    c.colors.completion.item.selected.border.bottom = palette['selection']
+
+    ## Top border color of the completion widget category headers.
+    c.colors.completion.item.selected.border.top = palette['selection']
+
+    ## Foreground color of the selected completion item.
+    c.colors.completion.item.selected.fg = palette['foreground']
+
+    ## Foreground color of the matched text in the completion.
+    c.colors.completion.match.fg = palette['orange']
+
+    ## Color of the scrollbar in completion view
+    c.colors.completion.scrollbar.bg = palette['background']
+
+    ## Color of the scrollbar handle in completion view.
+    c.colors.completion.scrollbar.fg = palette['foreground']
+
+    ## Background color for the download bar.
+    c.colors.downloads.bar.bg = palette['background']
+
+    ## Background color for downloads with errors.
+    c.colors.downloads.error.bg = palette['background']
+
+    ## Foreground color for downloads with errors.
+    c.colors.downloads.error.fg = palette['red']
+
+    ## Color gradient stop for download backgrounds.
+    c.colors.downloads.stop.bg = palette['background']
+
+    ## Color gradient interpolation system for download backgrounds.
+    ## Type: ColorSystem
+    ## Valid values:
+    ##   - rgb: Interpolate in the RGB color system.
+    ##   - hsv: Interpolate in the HSV color system.
+    ##   - hsl: Interpolate in the HSL color system.
+    ##   - none: Don't show a gradient.
+    c.colors.downloads.system.bg = 'none'
+
+    ## Background color for hints. Note that you can use a `rgba(...)` value
+    ## for transparency.
+    c.colors.hints.bg = palette['background']
+
+    ## Font color for hints.
+    c.colors.hints.fg = palette['purple']
+
+    ## Hints
+    c.hints.border = '1px solid ' + palette['background-alt']
+
+    ## Font color for the matched part of hints.
+    c.colors.hints.match.fg = palette['foreground-alt']
+
+    ## Background color of the keyhint widget.
+    c.colors.keyhint.bg = palette['background']
+
+    ## Text color for the keyhint widget.
+    c.colors.keyhint.fg = palette['purple']
+
+    ## Highlight color for keys to complete the current keychain.
+    c.colors.keyhint.suffix.fg = palette['selection']
+
+    ## Background color of an error message.
+    c.colors.messages.error.bg = palette['background']
+
+    ## Border color of an error message.
+    c.colors.messages.error.border = palette['background-alt']
+
+    ## Foreground color of an error message.
+    c.colors.messages.error.fg = palette['red']
+
+    ## Background color of an info message.
+    c.colors.messages.info.bg = palette['background']
+
+    ## Border color of an info message.
+    c.colors.messages.info.border = palette['background-alt']
+
+    ## Foreground color an info message.
+    c.colors.messages.info.fg = palette['comment']
+
+    ## Background color of a warning message.
+    c.colors.messages.warning.bg = palette['background']
+
+    ## Border color of a warning message.
+    c.colors.messages.warning.border = palette['background-alt']
+
+    ## Foreground color a warning message.
+    c.colors.messages.warning.fg = palette['red']
+
+    ## Background color for prompts.
+    c.colors.prompts.bg = palette['background']
+
+    # ## Border used around UI elements in prompts.
+    c.colors.prompts.border = '1px solid ' + palette['background-alt']
+
+    ## Foreground color for prompts.
+    c.colors.prompts.fg = palette['cyan']
+
+    ## Background color for the selected item in filename prompts.
+    c.colors.prompts.selected.bg = palette['selection']
+
+    ## Background color of the statusbar in caret mode.
+    c.colors.statusbar.caret.bg = palette['background']
+
+    ## Foreground color of the statusbar in caret mode.
+    c.colors.statusbar.caret.fg = palette['orange']
+
+    ## Background color of the statusbar in caret mode with a selection.
+    c.colors.statusbar.caret.selection.bg = palette['background']
+
+    ## Foreground color of the statusbar in caret mode with a selection.
+    c.colors.statusbar.caret.selection.fg = palette['orange']
+
+    ## Background color of the statusbar in command mode.
+    c.colors.statusbar.command.bg = palette['background']
+
+    ## Foreground color of the statusbar in command mode.
+    c.colors.statusbar.command.fg = palette['pink']
+
+    ## Background color of the statusbar in private browsing + command mode.
+    c.colors.statusbar.command.private.bg = palette['background']
+
+    ## Foreground color of the statusbar in private browsing + command mode.
+    c.colors.statusbar.command.private.fg = palette['foreground-alt']
+
+    ## Background color of the statusbar in insert mode.
+    c.colors.statusbar.insert.bg = palette['background-attention']
+
+    ## Foreground color of the statusbar in insert mode.
+    c.colors.statusbar.insert.fg = palette['foreground-attention']
+
+    ## Background color of the statusbar.
+    c.colors.statusbar.normal.bg = palette['background']
+
+    ## Foreground color of the statusbar.
+    c.colors.statusbar.normal.fg = palette['foreground']
+
+    ## Background color of the statusbar in passthrough mode.
+    c.colors.statusbar.passthrough.bg = palette['background']
+
+    ## Foreground color of the statusbar in passthrough mode.
+    c.colors.statusbar.passthrough.fg = palette['orange']
+
+    ## Background color of the statusbar in private browsing mode.
+    c.colors.statusbar.private.bg = palette['background-alt']
+
+    ## Foreground color of the statusbar in private browsing mode.
+    c.colors.statusbar.private.fg = palette['foreground-alt']
+
+    ## Background color of the progress bar.
+    c.colors.statusbar.progress.bg = palette['background']
+
+    ## Foreground color of the URL in the statusbar on error.
+    c.colors.statusbar.url.error.fg = palette['red']
+
+    ## Default foreground color of the URL in the statusbar.
+    c.colors.statusbar.url.fg = palette['foreground']
+
+    ## Foreground color of the URL in the statusbar for hovered links.
+    c.colors.statusbar.url.hover.fg = palette['cyan']
+
+    ## Foreground color of the URL in the statusbar on successful load
+    c.colors.statusbar.url.success.http.fg = palette['green']
+
+    ## Foreground color of the URL in the statusbar on successful load
+    c.colors.statusbar.url.success.https.fg = palette['green']
+
+    ## Foreground color of the URL in the statusbar when there's a warning.
+    c.colors.statusbar.url.warn.fg = palette['yellow']
+
+    ## Status bar padding
+    c.statusbar.padding = padding
+
+    ## Background color of the tab bar.
+    ## Type: QtColor
+    c.colors.tabs.bar.bg = palette['selection']
+
+    ## Background color of unselected even tabs.
+    ## Type: QtColor
+    c.colors.tabs.even.bg = palette['selection']
+
+    ## Foreground color of unselected even tabs.
+    ## Type: QtColor
+    c.colors.tabs.even.fg = palette['foreground']
+
+    ## Color for the tab indicator on errors.
+    ## Type: QtColor
+    c.colors.tabs.indicator.error = palette['red']
+
+    ## Color gradient start for the tab indicator.
+    ## Type: QtColor
+    c.colors.tabs.indicator.start = palette['orange']
+
+    ## Color gradient end for the tab indicator.
+    ## Type: QtColor
+    c.colors.tabs.indicator.stop = palette['green']
+
+    ## Color gradient interpolation system for the tab indicator.
+    ## Type: ColorSystem
+    ## Valid values:
+    ##   - rgb: Interpolate in the RGB color system.
+    ##   - hsv: Interpolate in the HSV color system.
+    ##   - hsl: Interpolate in the HSL color system.
+    ##   - none: Don't show a gradient.
+    c.colors.tabs.indicator.system = 'none'
+
+    ## Background color of unselected odd tabs.
+    ## Type: QtColor
+    c.colors.tabs.odd.bg = palette['selection']
+
+    ## Foreground color of unselected odd tabs.
+    ## Type: QtColor
+    c.colors.tabs.odd.fg = palette['foreground']
+
+    # ## Background color of selected even tabs.
+    # ## Type: QtColor
+    c.colors.tabs.selected.even.bg = palette['background']
+
+    # ## Foreground color of selected even tabs.
+    # ## Type: QtColor
+    c.colors.tabs.selected.even.fg = palette['foreground']
+
+    # ## Background color of selected odd tabs.
+    # ## Type: QtColor
+    c.colors.tabs.selected.odd.bg = palette['background']
+
+    # ## Foreground color of selected odd tabs.
+    # ## Type: QtColor
+    c.colors.tabs.selected.odd.fg = palette['foreground']
+
+    ## Tab padding
+    c.tabs.padding = padding
+    c.tabs.indicator.width = 1
+    c.tabs.favicons.scale = 1
+
diff --git a/.config/qutebrowser/qsettings/QtProject.conf b/.config/qutebrowser/qsettings/QtProject.conf
new file mode 100755
index 0000000..4facf37
--- /dev/null
+++ b/.config/qutebrowser/qsettings/QtProject.conf
@@ -0,0 +1,8 @@
+[FileDialog]
+history=file:///home/chris/uni/gra/team117/Ausarbeitung/textures, file:///home/chris, file:///home/chris/uni/sem3/gra, file:///home/chris/uni/sem3/gra/team117, file:///home/chris/uni/sem3/russisch
+lastVisited=file:///home/chris/uni/sem3/russisch
+qtVersion=6.6.1
+shortcuts=file:, file:///home/chris
+sidebarWidth=87
+treeViewHeader="@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1\xd1\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\0\xf5\0\0\0\x1\0\0\0\0\0\0\0\x39\0\0\0\x1\0\0\0\0\0\0\0=\0\0\0\x1\0\0\0\0\0\0\0\x66\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff\0\0\0\0)"
+viewMode=List
diff --git a/.config/qutebrowser/quickmarks b/.config/qutebrowser/quickmarks
new file mode 100644
index 0000000..184cfef
--- /dev/null
+++ b/.config/qutebrowser/quickmarks
@@ -0,0 +1,10 @@
+ar https://artemis.in.tum.de/courses
+everforest https://user-images.githubusercontent.com/58662350/214382352-cd7a4f63-e6ef-4575-82c0-a8b72aa37c0c.png
+moo https://www.moodle.tum.de/my/
+yt https://www.youtube.com/
+dis https://www.disneyplus.com/en-gb/home
+tumlive https://live.rbg.tum.de/
+zu https://zulip.in.tum.de/
+gn https://keep.google.com/#home
+swayswitch1 https://luxagraf.net/src/guide-to-switching-i3-to-sway
+tum https://campus.tum.de/tumonline/
diff --git a/.config/rofi/arc_dark_colors.rasi b/.config/rofi/arc_dark_colors.rasi
new file mode 100755
index 0000000..6918845
--- /dev/null
+++ b/.config/rofi/arc_dark_colors.rasi
@@ -0,0 +1,34 @@
+/*******************************************************
+ * ROFI Arc Dark colors for EndeavourOS
+ * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
+ *******************************************************/
+* {
+    selected-normal-foreground:  rgba ( 249, 249, 249, 100 % );
+    foreground:                  rgba ( 196, 203, 212, 100 % );
+    normal-foreground:           @foreground;
+    alternate-normal-background: rgba ( 64, 69, 82, 59 % );
+    red:                         rgba ( 220, 50, 47, 100 % );
+    selected-urgent-foreground:  rgba ( 249, 249, 249, 100 % );
+    blue:                        rgba ( 38, 139, 210, 100 % );
+    urgent-foreground:           rgba ( 204, 102, 102, 100 % );
+    alternate-urgent-background: rgba ( 75, 81, 96, 90 % );
+    active-foreground:           rgba ( 101, 172, 255, 100 % );
+    lightbg:                     rgba ( 238, 232, 213, 100 % );
+    selected-active-foreground:  rgba ( 249, 249, 249, 100 % );
+    alternate-active-background: rgba ( 75, 81, 96, 89 % );
+    background:                  rgba ( 45, 48, 59, 95 % );
+    alternate-normal-foreground: @foreground;
+    normal-background:           @background;
+    lightfg:                     rgba ( 88, 104, 117, 100 % );
+    selected-normal-background:  rgba ( 64, 132, 214, 100 % );
+    border-color:                rgba ( 124, 131, 137, 100 % );
+    spacing:                     2;
+    separatorcolor:              rgba ( 29, 31, 33, 100 % );
+    urgent-background:           rgba ( 29, 31, 33, 17 % );
+    selected-urgent-background:  rgba ( 165, 66, 66, 100 % );
+    alternate-urgent-foreground: @urgent-foreground;
+    background-color:            rgba ( 0, 0, 0, 0 % );
+    alternate-active-foreground: @active-foreground;
+    active-background:           rgba ( 29, 31, 33, 17 % );
+    selected-active-background:  rgba ( 68, 145, 237, 100 % );
+}
diff --git a/.config/rofi/arc_dark_transparent_colors.rasi b/.config/rofi/arc_dark_transparent_colors.rasi
new file mode 100755
index 0000000..a661a6b
--- /dev/null
+++ b/.config/rofi/arc_dark_transparent_colors.rasi
@@ -0,0 +1,34 @@
+/*******************************************************
+ * ROFI Arch Dark Transparent colors for EndeavourOS
+ * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
+ *******************************************************/
+* {
+    selected-normal-foreground:  rgba ( 35, 42, 46, 100 % );
+    foreground:                  rgba ( 211, 198, 170, 100 % );
+    normal-foreground:           @foreground;
+    alternate-normal-background: rgba ( 45, 48, 59, 1 % );
+    red:                         rgba ( 220, 50, 47, 100 % );
+    selected-urgent-foreground:  rgba ( 249, 249, 249, 100 % );
+    blue:                        rgba ( 38, 139, 210, 100 % );
+    urgent-foreground:           rgba ( 204, 102, 102, 100 % );
+    alternate-urgent-background: rgba ( 75, 81, 96, 90 % );
+    active-foreground:           rgba ( 101, 172, 255, 100 % );
+    lightbg:                     rgba ( 238, 232, 213, 100 % );
+    selected-active-foreground:  rgba ( 249, 249, 249, 100 % );
+    alternate-active-background: rgba ( 45, 48, 59, 88 % );
+    background:                  rgba ( 43, 51, 57, 100 % );
+    alternate-normal-foreground: @foreground;
+    normal-background:           rgba ( 45, 48, 59, 1 % );
+    lightfg:                     rgba ( 88, 104, 117, 100 % );
+    selected-normal-background:  rgba ( 122, 132, 120, 100 % );
+    border-color:                rgba (33, 39, 54, 100 % );
+    spacing:                     2;
+    separatorcolor:              rgba ( 45, 48, 59, 1 % );
+    urgent-background:           rgba ( 45, 48, 59, 15 % );
+    selected-urgent-background:  rgba ( 165, 66, 66, 100 % );
+    alternate-urgent-foreground: @urgent-foreground;
+    background-color:            rgba ( 0, 0, 0, 0 % );
+    alternate-active-foreground: @active-foreground;
+    active-background:           rgba ( 29, 31, 33, 17 % );
+    selected-active-background:  rgba ( 26, 28, 35, 100 % );
+}
diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi
new file mode 100755
index 0000000..791f798
--- /dev/null
+++ b/.config/rofi/config.rasi
@@ -0,0 +1,2 @@
+//@theme "/usr/share/rofi/themes/Arc-Dark.rasi"
+@theme "/usr/share/rofi/themes/Arc-Dark.rasi"
diff --git a/.config/rofi/power-profiles.rasi b/.config/rofi/power-profiles.rasi
new file mode 100755
index 0000000..3f07f18
--- /dev/null
+++ b/.config/rofi/power-profiles.rasi
@@ -0,0 +1,120 @@
+/*******************************************************
+ * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
+ *******************************************************/
+configuration {
+    font:             "Noto Sans Regular 10";
+    show-icons:       false;
+    icon-theme:       "Qogir";
+    scroll-method:    0;
+    disable-history:  false;
+    fullscreen:       false;
+    hide-scrollbar:   true;
+    sidebar-mode:     false;
+}
+
+@import "~/.config/rofi/arc_dark_transparent_colors.rasi"
+
+
+window {
+    background-color: @background;
+    border:           2;
+    padding:          10;
+    transparency:     "real";
+    width:            170px;
+    location:         east;
+    x-offset:       -20;
+    /*y-offset:       18;*/
+}
+listview {
+    lines:   4;
+    columns: 1;
+}
+element {
+    border:  0;
+    padding: 1px;
+}
+element-text {
+    background-color: inherit;
+    text-color:       inherit;
+}
+element.normal.normal {
+    background-color: @normal-background;
+    text-color:       @normal-foreground;
+}
+element.normal.urgent {
+    background-color: @urgent-background;
+    text-color:       @urgent-foreground;
+}
+element.normal.active {
+    background-color: @active-background;
+    text-color:       @active-foreground;
+}
+element.selected.normal {
+    background-color: @selected-normal-background;
+    text-color:       @selected-normal-foreground;
+}
+element.selected.urgent {
+    background-color: @selected-urgent-background;
+    text-color:       @selected-urgent-foreground;
+}
+element.selected.active {
+    background-color: @selected-active-background;
+    text-color:       @selected-active-foreground;
+}
+element.alternate.normal {
+    background-color: @alternate-normal-background;
+    text-color:       @alternate-normal-foreground;
+}
+element.alternate.urgent {
+    background-color: @alternate-urgent-background;
+    text-color:       @alternate-urgent-foreground;
+}
+element.alternate.active {
+    background-color: @alternate-active-background;
+    text-color:       @alternate-active-foreground;
+}
+scrollbar {
+    width:        4px;
+    border:       0;
+    handle-color: @normal-foreground;
+    handle-width: 8px;
+    padding:      0;
+}
+mode-switcher {
+    border:       2px 0px 0px;
+    border-color: @separatorcolor;
+}
+button {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+button.selected {
+    background-color: @selected-normal-background;
+    text-color:       @selected-normal-foreground;
+}
+inputbar {
+    spacing:    0;
+    text-color: @normal-foreground;
+    padding:    1px;
+}
+case-indicator {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+entry {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+prompt {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+inputbar {
+    children:   [ prompt,textbox-prompt-colon,entry,case-indicator ];
+}
+textbox-prompt-colon {
+    expand:     false;
+    str:        "Set Power Profile:";
+    margin:     0px 0.3em 0em 0em;
+    text-color: @normal-foreground;
+}
diff --git a/.config/rofi/powermenu.rasi b/.config/rofi/powermenu.rasi
new file mode 100755
index 0000000..c0be76b
--- /dev/null
+++ b/.config/rofi/powermenu.rasi
@@ -0,0 +1,124 @@
+/*******************************************************
+ * ROFI configs i3 powermenu for EndeavourOS
+ * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
+ *******************************************************/
+configuration {
+    font:            "Noto Sans Regular 10";
+    show-icons:      false;
+    icon-theme:      "Qogir";
+    scroll-method:   0;
+    disable-history: false;
+    sidebar-mode:    false;
+}
+
+@import "~/.config/rofi/arc_dark_transparent_colors.rasi"
+
+window {
+    background-color: @background;
+    border:           2;
+    padding:          10;
+    transparency:     "real";
+    width:            120px;
+    location:         east;
+    x-offset:       -20;
+    /*y-offset:       18;*/
+}
+listview {
+    lines:     7;
+    columns:   1;
+    scrollbar: false;
+}
+element {
+    border:  0;
+    padding: 1px;
+}
+element-text {
+    background-color: inherit;
+    text-color:       inherit;
+}
+element.normal.normal {
+    background-color: @normal-background;
+    text-color:       @normal-foreground;
+}
+element.normal.urgent {
+    background-color: @urgent-background;
+    text-color:       @urgent-foreground;
+}
+element.normal.active {
+    background-color: @active-background;
+    text-color:       @active-foreground;
+}
+element.selected.normal {
+    background-color: @selected-normal-background;
+    text-color:       @selected-normal-foreground;
+}
+element.selected.urgent {
+    background-color: @selected-urgent-background;
+    text-color:       @selected-urgent-foreground;
+}
+element.selected.active {
+    background-color: @selected-active-background;
+    text-color:       @selected-active-foreground;
+}
+element.alternate.normal {
+    background-color: @alternate-normal-background;
+    text-color:       @alternate-normal-foreground;
+}
+element.alternate.urgent {
+    background-color: @alternate-urgent-background;
+    text-color:       @alternate-urgent-foreground;
+}
+element.alternate.active {
+    background-color: @alternate-active-background;
+    text-color:       @alternate-active-foreground;
+}
+scrollbar {
+    width:        4px;
+    border:       0;
+    handle-color: @normal-foreground;
+    handle-width: 8px;
+    padding:      0;
+}
+mode-switcher {
+    border:       2px 0px 0px;
+    border-color: @separatorcolor;
+}
+button {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+button.selected {
+    background-color: @selected-normal-background;
+    text-color:       @selected-normal-foreground;
+}
+inputbar {
+    spacing:    0;
+    text-color: @normal-foreground;
+    padding:    1px;
+}
+case-indicator {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+entry {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+prompt {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+inputbar {
+    children:   [ prompt,textbox-prompt-colon,entry,case-indicator ];
+}
+textbox-prompt-colon {
+    expand:     false;
+    str:        ":";
+    margin:     0px 0.3em 0em 0em;
+    text-color: @normal-foreground;
+}
+
+/*removes the text input line*/
+mainbox {
+  children: [listview];
+}
diff --git a/.config/rofi/rofidmenu.rasi b/.config/rofi/rofidmenu.rasi
new file mode 100755
index 0000000..37052d0
--- /dev/null
+++ b/.config/rofi/rofidmenu.rasi
@@ -0,0 +1,134 @@
+/*******************************************************
+ * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
+ *******************************************************/
+configuration {
+    font:                "Noto Sans Regular 10";
+    show-icons:          true;
+    icon-theme:          "Qogir";
+    display-drun:        "Apps";
+    drun-display-format: "{name}";
+    scroll-method:       0;
+    disable-history:     false;
+    sidebar-mode:        false;
+}
+
+@import "~/.config/rofi/arc_dark_transparent_colors.rasi"
+
+window {
+    background-color: @background;
+    border:           2;
+    padding:          30;
+}
+listview {
+    lines:   10;
+    columns: 4;
+}
+mainbox {
+    border:  0;
+    padding: 0;
+}
+message {
+    border:       2px 0px 0px;
+    border-color: @separatorcolor;
+    padding:      1px;
+}
+textbox {
+    text-color: @foreground;
+}
+listview {
+    fixed-height: 0;
+    border:       8px 0px 0px;
+    border-color: @separatorcolor;
+    spacing:      8px;
+    scrollbar:    false;
+    padding:      2px 0px 0px;
+}
+element {
+    border:  0;
+    padding: 1px;
+}
+element-text {
+    background-color: inherit;
+    text-color:       inherit;
+}
+element.normal.normal {
+    background-color: @normal-background;
+    text-color:       @normal-foreground;
+}
+element.normal.urgent {
+    background-color: @urgent-background;
+    text-color:       @urgent-foreground;
+}
+element.normal.active {
+    background-color: @active-background;
+    text-color:       @active-foreground;
+}
+element.selected.normal {
+    background-color: @selected-normal-background;
+    text-color:       @selected-normal-foreground;
+}
+element.selected.urgent {
+    background-color: @selected-urgent-background;
+    text-color:       @selected-urgent-foreground;
+}
+element.selected.active {
+    background-color: @selected-active-background;
+    text-color:       @selected-active-foreground;
+}
+element.alternate.normal {
+    background-color: @alternate-normal-background;
+    text-color:       @alternate-normal-foreground;
+}
+element.alternate.urgent {
+    background-color: @alternate-urgent-background;
+    text-color:       @alternate-urgent-foreground;
+}
+element.alternate.active {
+    background-color: @alternate-active-background;
+    text-color:       @alternate-active-foreground;
+}
+scrollbar {
+    width:        4px;
+    border:       0;
+    handle-color: @normal-foreground;
+    handle-width: 8px;
+    padding:      0;
+}
+mode-switcher {
+    border:       2px 0px 0px;
+    border-color: @separatorcolor;
+}
+button {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+button.selected {
+    background-color: @selected-normal-background;
+    text-color:       @selected-normal-foreground;
+}
+inputbar {
+    spacing:    0;
+    text-color: @normal-foreground;
+    padding:    1px;
+}
+case-indicator {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+entry {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+prompt {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+inputbar {
+    children:   [ prompt,textbox-prompt-colon,entry,case-indicator ];
+}
+textbox-prompt-colon {
+    expand:     false;
+    str:        ":";
+    margin:     0px 0.3em 0em 0em;
+    text-color: @normal-foreground;
+}
diff --git a/.config/rofi/rofikeyhint.rasi b/.config/rofi/rofikeyhint.rasi
new file mode 100755
index 0000000..4177d18
--- /dev/null
+++ b/.config/rofi/rofikeyhint.rasi
@@ -0,0 +1,137 @@
+/*******************************************************
+ * ROFI configs i3 keyhint-menu for EndeavourOS
+ * Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
+ *******************************************************/
+configuration {
+    font:                "Noto Sans Regular 10";
+    show-icons:          false;
+    icon-theme:          "Qogir";
+    display-drun:        "KeyHint";
+    drun-display-format: "{name}";
+    scroll-method:       0;
+    disable-history:     false;
+    fullscreen:          false;
+    hide-scrollbar:      true;
+    sidebar-mode:        false;
+}
+
+@import "~/.config/rofi/arc_dark_transparent_colors.rasi"
+
+window {
+    background-color: @background;
+    border:           0;
+    padding:          30;
+}
+listview {
+    lines:   10;
+    columns: 1;
+}
+mainbox {
+    border:  0;
+    padding: 0;
+}
+message {
+    border:       2px 0px 0px;
+    border-color: @separatorcolor;
+    padding:      1px;
+}
+textbox {
+    text-color: @foreground;
+}
+listview {
+    fixed-height: 0;
+    border:       8px 0px 0px;
+    border-color: @separatorcolor;
+    spacing:      8px;
+    scrollbar:    false;
+    padding:      2px 0px 0px;
+}
+element {
+    border:  0;
+    padding: 1px;
+}
+element-text {
+    background-color: inherit;
+    text-color:       inherit;
+}
+element.normal.normal {
+    background-color: @normal-background;
+    text-color:       @normal-foreground;
+}
+element.normal.urgent {
+    background-color: @urgent-background;
+    text-color:       @urgent-foreground;
+}
+element.normal.active {
+    background-color: @active-background;
+    text-color:       @active-foreground;
+}
+element.selected.normal {
+    background-color: @selected-normal-background;
+    text-color:       @selected-normal-foreground;
+}
+element.selected.urgent {
+    background-color: @selected-urgent-background;
+    text-color:       @selected-urgent-foreground;
+}
+element.selected.active {
+    background-color: @selected-active-background;
+    text-color:       @selected-active-foreground;
+}
+element.alternate.normal {
+    background-color: @alternate-normal-background;
+    text-color:       @alternate-normal-foreground;
+}
+element.alternate.urgent {
+    background-color: @alternate-urgent-background;
+    text-color:       @alternate-urgent-foreground;
+}
+element.alternate.active {
+    background-color: @alternate-active-background;
+    text-color:       @alternate-active-foreground;
+}
+scrollbar {
+    width:        4px;
+    border:       0;
+    handle-color: @normal-foreground;
+    handle-width: 8px;
+    padding:      0;
+}
+mode-switcher {
+    border:       2px 0px 0px;
+    border-color: @separatorcolor;
+}
+button {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+button.selected {
+    background-color: @selected-normal-background;
+    text-color:       @selected-normal-foreground;
+}
+inputbar {
+    spacing:    0;
+    text-color: @normal-foreground;
+    padding:    1px;
+}
+case-indicator {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+entry {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+prompt {
+    spacing:    0;
+    text-color: @normal-foreground;
+}
+inputbar {
+    children:   [ prompt,textbox-prompt-colon,entry,case-indicator ];
+}
+textbox-prompt-colon {
+    expand:     false;
+    str:        ":";
+    margin:     0px 0.3em 0em 0em;
+    text-color: @normal-foreground;
+}
diff --git a/.config/spotify-player/app.toml b/.config/spotify-player/app.toml
new file mode 100755
index 0000000..7b3228c
--- /dev/null
+++ b/.config/spotify-player/app.toml
@@ -0,0 +1,39 @@
+theme = "dracula"
+client_id = "8b99ea3c69664d0b952d35575d543f4c"
+client_port = 8080
+playback_format = """
+{track} 
+{artists} - {album}
+{metadata}"""
+notify_format = { summary = "{track}", body = "{artists} - {album}" }
+tracks_playback_limit = 50
+app_refresh_duration_in_ms = 32
+playback_refresh_duration_in_ms = 0
+page_size_in_rows = 20
+play_icon = "▶"
+pause_icon = "▌▌"
+liked_icon = "♥"
+border_type = "Plain"
+progress_bar_type = "Rectangle"
+playback_window_position = "Top"
+playback_window_width = 6
+enable_media_control = true
+enable_streaming = "DaemonOnly"
+notify_streaming_only=true
+enable_cover_image_cache = true
+default_device = "spotify-daemon"
+
+[copy_command]
+command = "xclip"
+args = [
+    "-sel",
+    "c",
+]
+
+[device]
+name = "spotify-daemon"
+device_type = "speaker"
+volume = 70
+bitrate = 320
+audio_cache = false
+normalization = false
diff --git a/.config/starship.toml b/.config/starship.toml
new file mode 100755
index 0000000..14f7a1f
--- /dev/null
+++ b/.config/starship.toml
@@ -0,0 +1,207 @@
+# format = """
+# [](#83c092)\
+# $username\
+# [](bg:#a7c080 fg:#83c092)\
+# $directory\
+# [](fg:#a7c080 bg:#7a8478)\
+# $git_branch\
+# $git_status\
+# [](fg:#7a8478 bg:#445055)\
+# $c\
+# $elixir\
+# $elm\
+# $golang\
+# $haskell\
+# $java\
+# $julia\
+# $nodejs\
+# $nim\
+# $rust\
+# $scala\
+# [](fg:#445055)\
+# """
+#bg:#445055)\
+#$docker_context\
+#[](fg:#445055)\
+
+
+#accent: "#7a8478"
+#background: "#2b3339"
+#foreground: "#d3c6aa"
+ #   black: "#445055"
+  #  red: "#e67e80"
+   # green: "#a7c080"
+    #yellow: "#dbbc7f"
+  #  blue: "#7fbbb3"
+  #  magenta: "#d699b6"
+  #  cyan: "#83c092"
+  #  white: "#d3c6aa"
+# Disable the blank line at the start of the prompt
+# add_newline = false
+
+# You can also replace your username with a neat symbol like  to save some space
+# [username]
+# show_always = true
+# style_user = "bg:#83c092"
+# style_root = "bg:#83c092"
+# format = '[ ]($style)'
+
+# [directory]
+# style = "bg:#a7c080"
+# format = '[ $path ]($style)'
+#truncation_length = 3
+#truncation_symbol = "…/"
+
+# Here is how you can shorten some long paths by text replacement
+# similar to mapped_locations in Oh My Posh:
+# [directory.substitutions]
+# "Documents" = " "
+# "Downloads" = " "
+# "Music" = " "
+# "Pictures" = " "
+# "~" = " "
+# Keep in mind that the order matters. For example:
+# "Important Documents" = "  "
+# will not be replaced, because "Documents" was already substituted before.
+# So either put "Important Documents" before "Documents" or use the substituted version:
+# "Important  " = "  "
+
+# [c]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [docker_context]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol $context ]($style) $path'
+#
+# [elixir]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [elm]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [git_branch]
+# symbol = ""
+# style = "bg:#7a8478"
+# format = '[ $symbol $branch ]($style)'
+#
+# [git_status]
+# style = "bg:#7a8478"
+# format = '[$all_status$ahead_behind ]($style)'
+#
+# [golang]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [haskell]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [java]
+# symbol = ""
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [julia]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [nodejs]
+# symbol = ""
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [nim]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [rust]
+# symbol = ""
+# style = "bg:#2445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [scala]
+# symbol = " "
+# style = "bg:#445055"
+# format = '[ $symbol ($version) ]($style)'
+#
+# [time]
+# disabled = true
+# time_format = "%R" # Hour:Minute Format
+# style = "bg:#33658A"
+# format = '[ ♥ $time ]($style)'
+
+format = """
+[░▒▓](#83c092)\
+[  ](bg:#83c092 fg:#090c0c)\
+[](bg:#a7c080 fg:#83c092)\
+$directory\
+[](fg:#a7c080 bg:#7a8478)\
+$git_branch\
+$git_status\
+[](fg:#7a8478 bg:#212736)\
+$nodejs\
+$rust\
+$golang\
+$php\
+[](fg:#212736 bg:#2b3339)\
+$time\
+[ ](fg:#2b3339)\
+\n$character"""
+
+[directory]
+style = "fg:#090c0c bg:#a7c080"
+format = "[ $path ]($style)"
+truncation_length = 3
+truncation_symbol = "…/"
+
+[directory.substitutions]
+"documents" = "󰈙 "
+"downloads" = " "
+"music" = " "
+"pictures" = " "
+
+[git_branch]
+symbol = ""
+style = "bg:#7a8478"
+format = '[[ $symbol $branch ](fg:#a7c080 bg:#7a8478)]($style)'
+
+[git_status]
+style = "bg:#7a8478"
+format = '[[($all_status$ahead_behind )](fg:#a7c080 bg:#7a8478)]($style)'
+
+[nodejs]
+symbol = ""
+style = "bg:#212736"
+format = '[[ $symbol ($version) ](fg:#a7c080 bg:#212736)]($style)'
+
+[rust]
+symbol = ""
+style = "bg:#212736"
+format = '[[ $symbol ($version) ](fg:#a7c080 bg:#212736)]($style)'
+
+[golang]
+symbol = "ﳑ"
+style = "bg:#212736"
+format = '[[ $symbol ($version) ](fg:#a7c080 bg:#212736)]($style)'
+
+[php]
+symbol = ""
+style = "bg:#212736"
+format = '[[ $symbol ($version) ](fg:#a7c080 bg:#212736)]($style)'
+
+[time]
+disabled = false
+time_format = "%R" # Hour:Minute Format
+style = "bg:#2b3339"
+format = '[[  $time ](fg:#565c62 bg:#2b3339)]($style)'
diff --git a/.config/sway/config b/.config/sway/config
new file mode 100644
index 0000000..59b6307
--- /dev/null
+++ b/.config/sway/config
@@ -0,0 +1,156 @@
+font pango: Noto Sans Regular 10
+
+set $mod Mod4
+set $ws1 "1"
+set $ws2 "2"
+set $ws3 "3"
+set $ws4 "4"
+set $ws5 "5"
+set $ws6 "6"
+set $ws7 "7"
+set $ws8 "8"
+set $ws9 "9"
+set $ws10 "10"
+
+workspace_layout default
+default_border pixel 2
+client.focused "#ffffff" "#d699b6" "#ffffff"
+
+gaps inner 6
+gaps outer 3
+
+# use mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+# switch/iterate between workspaces
+bindsym $mod+Tab workspace next
+bindsym $mod+Shift+Tab workspace prev
+
+xwayland enable
+
+# border
+for_window [class="."] border pixel 2
+smart_borders on
+
+# layout container
+bindsym $mod+b split h
+bindsym $mod+v split v
+bindsym $mod+f fullscreen toggle
+bindsym $mod+s layout stacking
+bindsym $mod+g layout tabbed
+bindsym $mod+e layout toggle split
+bindsym $mod+Shift+space floating toggle
+bindsym $mod+space focus mode_toggle
+bindsym $mod+a focus parent
+
+# change focus
+bindsym $mod+h focus left
+bindsym $mod+j focus down
+bindsym $mod+k focus up
+bindsym $mod+l focus right
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# move focused window
+bindsym $mod+Shift+h move left
+bindsym $mod+Shift+j move down
+bindsym $mod+Shift+k move up
+bindsym $mod+Shift+l move right
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right
+
+# switch to workspace
+bindsym $mod+1    workspace  $ws1
+bindsym $mod+2    workspace  $ws2
+bindsym $mod+3    workspace  $ws3
+bindsym $mod+4    workspace  $ws4
+bindsym $mod+5    workspace  $ws5
+bindsym $mod+6    workspace  $ws6
+bindsym $mod+7    workspace  $ws7
+bindsym $mod+8    workspace  $ws8
+bindsym $mod+9    workspace  $ws9
+bindsym $mod+0    workspace  $ws10
+
+# move focused container to workspace
+bindsym $mod+Shift+1    move container to workspace  $ws1
+bindsym $mod+Shift+2    move container to workspace  $ws2
+bindsym $mod+Shift+3    move container to workspace  $ws3
+bindsym $mod+Shift+4    move container to workspace  $ws4
+bindsym $mod+Shift+5    move container to workspace  $ws5
+bindsym $mod+Shift+6    move container to workspace  $ws6
+bindsym $mod+Shift+7    move container to workspace  $ws7
+bindsym $mod+Shift+8    move container to workspace  $ws8
+bindsym $mod+Shift+9    move container to workspace  $ws9
+bindsym $mod+Shift+0    move container to workspace  $ws10
+
+# resize mode
+bindsym $mod+r mode "resize"
+mode "resize" {
+        bindsym h resize shrink width 5 px or 5 ppt
+        bindsym j resize grow height 5 px or 5 ppt
+        bindsym k resize shrink height 5 px or 5 ppt
+        bindsym l resize grow width 5 px or 5 ppt
+
+        bindsym Left resize shrink width 10 px or 10 ppt
+        bindsym Down resize grow height 10 px or 10 ppt
+        bindsym Up resize shrink height 10 px or 10 ppt
+        bindsym Right resize grow width 10 px or 10 ppt
+
+        bindsym Return mode "default"
+        bindsym Escape mode "default"
+        bindsym q mode "default"
+}
+
+bindsym $mod+q kill
+
+# apps and window manager
+bindsym $mod+d exec rofi -modi drun -show drun -config ~/.config/rofi/rofidmenu.rasi
+bindsym $mod+t exec rofi -show window -config ~/.config/rofi/rofidmenu.rasi
+
+bindsym $mod+Shift+t exec thunderbird
+bindsym $mod+Shift+w exec qutebrowser
+bindsym $mod+Return exec alacritty
+bindsym $mod+Shift+e exec ~/.config/waybar/scripts/powermenu
+bindsym $mod+p exec ~/.config/waybar/scripts/blur-lock
+
+bindsym $mod+Shift+c reload
+bindsym $mod+Shift+r restart
+
+# multimedia
+bindsym XF86MonBrightnessUp exec --no-startup-id ~/.config/waybar/scripts/volume_brightness.sh brightness_up
+bindsym XF86MonBrightnessDown exec --no-startup-id ~/.config/waybar/scripts/volume_brightness.sh brightness_down
+bindsym XF86AudioRaiseVolume exec --no-startup-id ~/.config/waybar/scripts/volume_brightness.sh volume_up
+bindsym XF86AudioLowerVolume exec --no-startup-id ~/.config/waybar/scripts/volume_brightness.sh volume_down
+bindsym XF86AudioMute exec --no-startup-id ~/.config/waybar/scripts/volume_brightness.sh volume_mute
+bindsym XF86AudioMicMute exec amixer sset Capture toggle
+bindsym XF86AudioPlay exec playerctl play-pause
+bindsym XF86AudioPause exec playerctl play-pause
+bindsym XF86AudioNext exec playerctl next
+bindsym XF86AudioPrev exec playerctl previous
+bindsym $mod+Ctrl+s exec screenshot
+
+# custom scripts
+bindsym $mod+Shift+i exec dmonitors
+bindsym $mod+Shift+o exec zathura-fzf /home/chris/uni/
+bindsym $mod+Shift+b exec bluetooth-devices
+bindsym $mod+w exec qtb-load-session
+bindsym $mod+Shift+s exec run-spotify-player
+bindsym $mod+Shift+p exec passmenu
+bindsym $mod+Ctrl+w exec random-wallpaper
+
+# autostart
+exec --no-startup-id /usr/bin/dunst
+exec --no-startup-id random-wallpaper
+
+input * { 
+    xkb_layout "eu" 
+}
+
+bar {
+	swaybar_command 	waybar
+	workspace_buttons 	yes
+}
diff --git a/.config/systemd/user/mbsync.service b/.config/systemd/user/mbsync.service
new file mode 100755
index 0000000..03beacf
--- /dev/null
+++ b/.config/systemd/user/mbsync.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Mailbox synchronization service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/mbsync -Va
+
+[Install]
+WantedBy=default.target
diff --git a/.config/systemd/user/mbsync.timer b/.config/systemd/user/mbsync.timer
new file mode 100755
index 0000000..8625e78
--- /dev/null
+++ b/.config/systemd/user/mbsync.timer
@@ -0,0 +1,10 @@
+[Unit]
+Description=Mailbox synchronization timer
+
+[Timer]
+OnBootSec=20s
+OnUnitActiveSec=15s
+Unit=mbsync.service
+
+[Install]
+WantedBy=timers.target
diff --git a/.config/systemd/user/timers.target.wants/mbsync.timer b/.config/systemd/user/timers.target.wants/mbsync.timer
new file mode 120000
index 0000000..2364b5c
--- /dev/null
+++ b/.config/systemd/user/timers.target.wants/mbsync.timer
@@ -0,0 +1 @@
+/home/chris/.config/systemd/user/mbsync.timer
\ No newline at end of file
diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs
new file mode 100644
index 0000000..bec3f1a
--- /dev/null
+++ b/.config/user-dirs.dirs
@@ -0,0 +1,9 @@
+# This file is written by xdg-user-dirs-update
+# If you want to change or add directories, just edit the line you're
+# interested in. All local changes will be retained on the next run.
+# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
+# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
+# absolute path. No other format is supported.
+# 
+XDG_DOWNLOAD_DIR="$HOME/downloads"
+XDG_DOCUMENTS_DIR="$HOME/documents"
diff --git a/.config/waybar/colors.css b/.config/waybar/colors.css
new file mode 100644
index 0000000..c3631a6
--- /dev/null
+++ b/.config/waybar/colors.css
@@ -0,0 +1,12 @@
+@define-color background-darker #2b3339;
+@define-color background #2b3339;
+@define-color selection #44475a;
+@define-color foreground #d3c6aa;
+@define-color comment #445055;
+@define-color cyan #7fbbb3;
+@define-color green #83c092;
+@define-color orange #ffb86c;
+@define-color pink #ff79c6;
+@define-color purple #d699b6;
+@define-color red #e67e80;
+@define-color yellow #f1fa8c;
diff --git a/.config/waybar/config b/.config/waybar/config
new file mode 100644
index 0000000..66d74ff
--- /dev/null
+++ b/.config/waybar/config
@@ -0,0 +1,166 @@
+{
+    // "layer": "top", // Waybar at top layer
+    "position": "bottom", // Waybar position (top|bottom|left|right)
+    "height": 20, // Waybar height (to be removed for auto height)
+    "spacing": 2, // Gaps between modules (4px)
+    "modules-left": ["sway/workspaces", "sway/mode", "sway/scratchpad", "custom/media"],
+    "modules-right": ["custom/mail", "custom/pacman", "mpd", "backlight", "pulseaudio", "network", "cpu", "memory", "disk", "temperature", "battery", "clock", "tray"],
+
+
+    "keyboard-state": {
+        "numlock": true,
+        "capslock": true,
+        "format": "{name} {icon}",
+        "format-icons": {
+            "locked": "",
+            "unlocked": ""
+        }
+    },
+    "sway/mode": {
+        "format": "<span style=\"italic\">{}</span>"
+    },
+    "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": "<span color=\"#f53c3c\"></span> ",
+            "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": "Europe/Berlin",
+        "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+        "format": "{:%d %h %Y - %R}",
+    },
+    "cpu": {
+        "format": " {usage}%",
+        "tooltip": false
+    },
+    "memory": {
+        "format": "  {avail}GiB",
+        "tooltip": false
+    },
+    "disk": {
+        "format": "  {free}",
+    },
+    "temperature": {
+        // "thermal-zone": 2,
+        // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+        "critical-threshold": 80,
+        "format": "{icon} {temperatureC}°C",
+        "format-icons": ["", "", ""],
+        "tooltip": false
+    },
+    "backlight": {
+        // "device": "acpi_video1",
+        "format": "{icon} {percent}%",
+        "format-icons": ["", "", "", "", "", "", "", "", ""],
+        "tooltip": false
+    },
+    "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": [" ", " ", " ", " ", " "],
+       //"exec": "~/.config/waybar/scripts/battery"
+        "interval": 5 
+    },
+    "network": {
+        // "interface": "wlp2*", // (Optional) To force the use of this interface
+        "format-wifi": "  {signalStrength}%",
+        "format-ethernet": "  {ipaddr}/{cidr}",
+        "format-linked": "  {ifname} (No IP)",
+        "format-disconnected": " ⚠",
+        "on-click": "nm-connection-editor",
+        "tooltip": false
+    },
+    "pulseaudio": {
+        // "scroll-step": 1, // %, can be a float
+        "format": "{icon} {volume}%",
+        "format-bluetooth": "{volume}% {icon}",
+        "format-bluetooth-muted": " {icon}",
+        "format-muted": " ",
+        "format-icons": {
+            "headphone": "",
+            "hands-free": "",
+            "headset": "",
+            "phone": "",
+            "portable": "",
+            "car": "",
+            "default": ["", "", ""]
+        },
+        "on-click": "pavucontrol"
+    },
+    "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
+    },
+    "custom/pacman": {
+        "format": "  {}",
+        "interval": 3600,                     // every hour
+        "exec": "checkupdates | wc -l",       // # of updates
+        "exec-if": "exit 0",                  // always run; consider advanced run conditions
+        "on-click": "alacritty -e sudo pacman -Syu; pkill -SIGRTMIN+8 waybar", // update system
+        "signal": 8,
+        "tooltip": false
+    },	
+    "custom/mail": {
+        "format": "  {}",
+		"exec": "find $HOME/.local/share/mail/*/INBOX/new/ -type f | wc -l",
+		"interval": 60,
+        "on-click": "thunderbird"
+	}
+}
+
diff --git a/.config/waybar/i3blocks.conf b/.config/waybar/i3blocks.conf
new file mode 100755
index 0000000..d6ed217
--- /dev/null
+++ b/.config/waybar/i3blocks.conf
@@ -0,0 +1,69 @@
+# icons from:
+# https://fontawesome.com/v4.7/cheatsheet/
+
+separator=false
+markup=pango
+color=#d3c6aa
+
+[e-mail]
+label= 
+command=~/.config/i3/scripts/mail.sh
+interval=5
+
+[disk]
+label= 
+instance=/
+command=~/.config/i3/scripts/disk
+interval=30
+
+[memory]
+label= 
+command=~/.config/i3/scripts/memory
+interval=2
+
+[cpu_usage]
+label= 
+command=~/.config/i3/scripts/cpu_usage
+interval=2
+
+[CPU-temperature]
+label=
+command=~/.config/i3/scripts/temperature
+interval=30
+
+[battery]
+command=~/.config/i3/scripts/battery2
+label=
+interval=3
+
+[simple-2]
+full_text=: :
+
+[pavucontrol]
+full_text=
+command=pavucontrol
+
+[volume-pulseaudio]
+command=~/.config/i3/scripts/volume
+instance=Master
+interval=1
+
+[ppd_menu]
+full_text=
+command=~/.config/i3/scripts/power-profiles
+color=#83c092
+
+[ppd-status]
+command=~/.config/i3/scripts/ppd-status
+interval=5
+
+[time]
+command=date '+%a %d %b %H:%M:%S'
+interval=1
+
+[shutdown_menu]
+full_text=
+command=~/.config/i3/scripts/powermenu
+
+[simple-2]
+full_text=" "
diff --git a/.config/waybar/scripts/blur-lock b/.config/waybar/scripts/blur-lock
new file mode 100755
index 0000000..7b5aa6a
--- /dev/null
+++ b/.config/waybar/scripts/blur-lock
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+PICTURE=/tmp/swaylock.png
+SCREENSHOT="grim $PICTURE"
+
+BLUR="5x4"
+
+$SCREENSHOT
+convert $PICTURE -blur $BLUR $PICTURE
+swaylock -i $PICTURE
+rm $PICTURE
diff --git a/.config/waybar/scripts/cpu_usage b/.config/waybar/scripts/cpu_usage
new file mode 100755
index 0000000..8d8a267
--- /dev/null
+++ b/.config/waybar/scripts/cpu_usage
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+#
+# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
+# Copyright 2014 Vivien Didelot <vivien@didelot.org>
+# Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com>
+#
+# Licensed under the terms of the GNU GPL v3, or any later version.
+
+use strict;
+use warnings;
+use utf8;
+use Getopt::Long;
+
+# default values
+my $t_warn = $ENV{T_WARN} // 50;
+my $t_crit = $ENV{T_CRIT} // 80;
+my $cpu_usage = -1;
+my $decimals = $ENV{DECIMALS} // 0;
+my $label = $ENV{LABEL} // "";
+
+sub help {
+    print "Usage: cpu_usage [-w <warning>] [-c <critical>] [-d <decimals>]\n";
+    print "-w <percent>: warning threshold to become yellow\n";
+    print "-c <percent>: critical threshold to become red\n";
+    print "-d <decimals>:  Use <decimals> decimals for percentage (default is $decimals) \n"; 
+    exit 0;
+}
+
+GetOptions("help|h" => \&help,
+           "w=i"    => \$t_warn,
+           "c=i"    => \$t_crit,
+           "d=i"    => \$decimals,
+);
+
+# Get CPU usage
+$ENV{LC_ALL}="en_US"; # if mpstat is not run under en_US locale, things may break, so make sure it is
+open (MPSTAT, 'mpstat 1 1 |') or die;
+while (<MPSTAT>) {
+    if (/^.*\s+(\d+\.\d+)[\s\x00]?$/) {
+        $cpu_usage = 100 - $1; # 100% - %idle
+        last;
+    }
+}
+close(MPSTAT);
+
+$cpu_usage eq -1 and die 'Can\'t find CPU information';
+
+# Print short_text, full_text
+print "${label}";
+printf "%02.${decimals}f%%\n", $cpu_usage;
+print "${label}";
+printf "%02.${decimals}f%%\n", $cpu_usage;
+
+# Print color, if needed
+if ($cpu_usage >= $t_crit) {
+    print "#FF0000\n";
+    exit 33;
+} elsif ($cpu_usage >= $t_warn) {
+    print "#FFFC00\n";
+}
+
+exit 0;
diff --git a/.config/waybar/scripts/disk b/.config/waybar/scripts/disk
new file mode 100755
index 0000000..e18c7aa
--- /dev/null
+++ b/.config/waybar/scripts/disk
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+DIR="${DIR:-$BLOCK_INSTANCE}"
+DIR="${DIR:-$HOME}"
+ALERT_LOW="${ALERT_LOW:-$1}"
+ALERT_LOW="${ALERT_LOW:-10}" # color will turn red under this value (default: 10%)
+
+LOCAL_FLAG="-l"
+if [ "$1" = "-n" ] || [ "$2" = "-n" ]; then
+    LOCAL_FLAG=""
+fi
+
+df -h -P $LOCAL_FLAG "$DIR" | awk -v label="$LABEL" -v alert_low=$ALERT_LOW '
+/\/.*/ {
+	# full text
+	print label $4
+
+	# short text
+	print label $4
+
+	use=$5
+
+	# no need to continue parsing
+	exit 0
+}
+
+END {
+	gsub(/%$/,"",use)
+	if (100 - use < alert_low) {
+		# color
+		print "#FF0000"
+	}
+}
+'
diff --git a/.config/waybar/scripts/get_weather.sh b/.config/waybar/scripts/get_weather.sh
new file mode 100755
index 0000000..5b89549
--- /dev/null
+++ b/.config/waybar/scripts/get_weather.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+for i in {1..5}
+do
+    text=$(curl -s "https://wttr.in/$1?format=1")
+    if [[ $? == 0 ]]
+    then
+        text=$(echo "$text" | sed -E "s/\s+/ /g")
+        tooltip=$(curl -s "https://wttr.in/$1?format=4")
+        if [[ $? == 0 ]]
+        then
+            tooltip=$(echo "$tooltip" | sed -E "s/\s+/ /g")
+            echo "{\"text\":\"$text\", \"tooltip\":\"$tooltip\"}"
+            exit
+        fi
+    fi
+    sleep 2
+done
+echo "{\"text\":\"error\", \"tooltip\":\"error\"}"
diff --git a/.config/waybar/scripts/mail.sh b/.config/waybar/scripts/mail.sh
new file mode 100755
index 0000000..8272af2
--- /dev/null
+++ b/.config/waybar/scripts/mail.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo $(find $HOME/.cache/mail/*/INBOX/new/ -type f | wc -l)
diff --git a/.config/waybar/scripts/memory b/.config/waybar/scripts/memory
new file mode 100755
index 0000000..6a69a6f
--- /dev/null
+++ b/.config/waybar/scripts/memory
@@ -0,0 +1,69 @@
+#!/usr/bin/env bash
+# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+TYPE="${BLOCK_INSTANCE:-mem}"
+
+awk -v type=$TYPE '
+/^MemTotal:/ {
+	mem_total=$2
+}
+/^MemFree:/ {
+	mem_free=$2
+}
+/^Buffers:/ {
+	mem_free+=$2
+}
+/^Cached:/ {
+	mem_free+=$2
+}
+/^SwapTotal:/ {
+	swap_total=$2
+}
+/^SwapFree:/ {
+	swap_free=$2
+}
+END {
+	if (type == "swap") {
+		free=swap_free/1024/1024
+		used=(swap_total-swap_free)/1024/1024
+		total=swap_total/1024/1024
+	} else {
+		free=mem_free/1024/1024
+		used=(mem_total-mem_free)/1024/1024
+		total=mem_total/1024/1024
+	}
+
+	pct=0
+	if (total > 0) {
+		pct=used/total*100
+	}
+
+	# full text
+	# printf("%.1fG/%.1fG (%.f%%)\n", used, total, pct)
+
+	# short text
+	printf("%.f%%\n", pct)
+
+	# color
+	if (pct > 90) {
+		print("#FF0000")
+	} else if (pct > 80) {
+		print("#FFAE00")
+	} else if (pct > 70) {
+		print("#FFF600")
+	}
+}
+' /proc/meminfo
diff --git a/.config/waybar/scripts/power-profiles b/.config/waybar/scripts/power-profiles
new file mode 100755
index 0000000..feb63dc
--- /dev/null
+++ b/.config/waybar/scripts/power-profiles
@@ -0,0 +1,190 @@
+#!/usr/bin/env bash
+#
+# Use rofi/zenity to change system runstate thanks to systemd.
+#
+# Note: this currently relies on associative array support in the shell.
+#
+# Inspired from i3pystatus wiki:
+# https://github.com/enkore/i3pystatus/wiki/Shutdown-Menu
+#
+# Copyright 2015 Benjamin Chrétien <chretien at lirmm dot fr>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# power-profiles-daemon implementation:
+# needs package power-profiles-daemon installed and the service running see here:
+# https://wiki.archlinux.org/title/CPU_frequency_scaling#power-profiles-daemon
+# used in i3-blocks: ~/.config/i3/i3blocks.conf together with: ~/.config/i3/scripts/ppd-status
+
+
+#######################################################################
+#                            BEGIN CONFIG                             #
+#######################################################################
+
+# Use a custom lock script
+#LOCKSCRIPT="i3lock-extra -m pixelize"
+
+# Colors: FG (foreground), BG (background), HL (highlighted)
+FG_COLOR="#bbbbbb"
+BG_COLOR="#111111"
+HLFG_COLOR="#111111"
+HLBG_COLOR="#bbbbbb"
+BORDER_COLOR="#222222"
+
+# Options not related to colors
+#ROFI_TEXT=":"
+#ROFI_OPTIONS=(-width -11 -location 0 -hide-scrollbar -bw 30 -color-window "#dd310027,#dd0310027,#dd310027" -padding 5)
+#ROFI_OPTIONS=(-width -18 -location 4 -hide-scrollbar -color-window "#cc310027,#00a0009a,#cc310027" -padding 5 -font "Sourcecode Pro Regular 10, FontAwesome 9")
+ROFI_OPTIONS=(-theme ~/.config/rofi/power-profiles.rasi)
+# Zenity options
+ZENITY_TITLE="Power Profiles"
+ZENITY_TEXT="Set Profiles:"
+ZENITY_OPTIONS=(--column= --hide-header)
+
+#######################################################################
+#                             END CONFIG                              #
+#######################################################################
+
+# Whether to ask for user's confirmation
+enable_confirmation=false
+
+# Preferred launcher if both are available
+preferred_launcher="rofi"
+
+usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc.
+
+where:
+    -h  show this help text
+    -c  ask for user confirmation
+    -p  preferred launcher (rofi or zenity)
+
+This script depends on:
+  - systemd,
+  - i3,
+  - rofi or zenity."
+
+# Check whether the user-defined launcher is valid
+launcher_list=(rofi zenity)
+function check_launcher() {
+  if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then
+    echo "Supported launchers: ${launcher_list[*]}"
+    exit 1
+  else
+    # Get array with unique elements and preferred launcher first
+    # Note: uniq expects a sorted list, so we cannot use it
+    i=1
+    launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \
+      | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' '))
+  fi
+}
+
+# Parse CLI arguments
+while getopts "hcp:" option; do
+  case "${option}" in
+    h) echo "${usage}"
+       exit 0
+       ;;
+    c) enable_confirmation=true
+       ;;
+    p) preferred_launcher="${OPTARG}"
+       check_launcher "${preferred_launcher}"
+       ;;
+    *) exit 1
+       ;;
+  esac
+done
+
+# Check whether a command exists
+function command_exists() {
+  command -v "$1" &> /dev/null 2>&1
+}
+
+# systemctl required
+if ! command_exists systemctl ; then
+  exit 1
+fi
+
+# menu defined as an associative array
+typeset -A menu
+
+# Menu with keys/commands
+
+menu=(
+  [ Performance]="powerprofilesctl set performance"
+  [ Balanced]="powerprofilesctl set balanced"
+  [ Power Saver]="powerprofilesctl set power-saver"
+  [ Cancel]=""
+)
+
+menu_nrows=${#menu[@]}
+
+# Menu entries that may trigger a confirmation message
+menu_confirm="Shutdown Reboot Hibernate Suspend Halt Logout"
+
+launcher_exe=""
+launcher_options=""
+rofi_colors=""
+
+function prepare_launcher() {
+  if [[ "$1" == "rofi" ]]; then
+    rofi_colors=(-bc "${BORDER_COLOR}" -bg "${BG_COLOR}" -fg "${FG_COLOR}" \
+        -hlfg "${HLFG_COLOR}" -hlbg "${HLBG_COLOR}")
+    launcher_exe="rofi"
+    launcher_options=(-dmenu -i -lines "${menu_nrows}" -p "${ROFI_TEXT}" \
+        "${rofi_colors}" "${ROFI_OPTIONS[@]}")
+  elif [[ "$1" == "zenity" ]]; then
+    launcher_exe="zenity"
+    launcher_options=(--list --title="${ZENITY_TITLE}" --text="${ZENITY_TEXT}" \
+        "${ZENITY_OPTIONS[@]}")
+  fi
+}
+
+for l in "${launcher_list[@]}"; do
+  if command_exists "${l}" ; then
+    prepare_launcher "${l}"
+    break
+  fi
+done
+
+# No launcher available
+if [[ -z "${launcher_exe}" ]]; then
+  exit 1
+fi
+
+launcher=(${launcher_exe} "${launcher_options[@]}")
+selection="$(printf '%s\n' "${!menu[@]}" | sort | "${launcher[@]}")"
+
+function ask_confirmation() {
+  if [ "${launcher_exe}" == "rofi" ]; then
+    confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \
+      "${rofi_colors}" "${ROFI_OPTIONS[@]}")
+    [ "${confirmed}" == "Yes" ] && confirmed=0
+  elif [ "${launcher_exe}" == "zenity" ]; then
+    zenity --question --text "Are you sure you want to ${selection,,}?"
+    confirmed=$?
+  fi
+
+  if [ "${confirmed}" == 0 ]; then
+    i3-msg -q "exec --no-startup-id ${menu[${selection}]}"
+  fi
+}
+
+if [[ $? -eq 0 && ! -z ${selection} ]]; then
+  if [[ "${enable_confirmation}" = true && \
+        ${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then
+    ask_confirmation
+  else
+    i3-msg -q "exec --no-startup-id ${menu[${selection}]}"
+  fi
+fi
diff --git a/.config/waybar/scripts/powermenu b/.config/waybar/scripts/powermenu
new file mode 100755
index 0000000..ac1d677
--- /dev/null
+++ b/.config/waybar/scripts/powermenu
@@ -0,0 +1,186 @@
+#!/usr/bin/env bash
+#
+# Use rofi/zenity to change system runstate thanks to systemd.
+#
+# Note: this currently relies on associative array support in the shell.
+#
+# Inspired from i3pystatus wiki:
+# https://github.com/enkore/i3pystatus/wiki/Shutdown-Menu
+#
+# Copyright 2015 Benjamin Chrétien <chretien at lirmm dot fr>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# modified to work with latest rofi update by joekamprad <joekamprad@endeavouros.com>
+
+#######################################################################
+#                            BEGIN CONFIG                             #
+#######################################################################
+
+# Use a custom lock script
+#LOCKSCRIPT="i3lock-extra -m pixelize"
+
+# Colors: FG (foreground), BG (background), HL (highlighted)
+FG_COLOR="#bbbbbb"
+BG_COLOR="#111111"
+HLFG_COLOR="#111111"
+HLBG_COLOR="#bbbbbb"
+BORDER_COLOR="#222222"
+
+# Options not related to colors (most rofi options do not work anymore)
+ROFI_OPTIONS=(-theme ~/.config/rofi/powermenu.rasi)
+# Zenity options
+ZENITY_TITLE="Power Menu"
+ZENITY_TEXT="Action:"
+ZENITY_OPTIONS=(--column= --hide-header)
+
+#######################################################################
+#                             END CONFIG                              #
+#######################################################################
+
+# Whether to ask for user's confirmation
+enable_confirmation=false
+
+# Preferred launcher if both are available
+preferred_launcher="rofi"
+
+usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc.
+
+where:
+    -h  show this help text
+    -c  ask for user confirmation
+    -p  preferred launcher (rofi or zenity)
+
+This script depends on:
+  - systemd,
+  - sway,
+  - rofi or zenity."
+
+# Check whether the user-defined launcher is valid
+launcher_list=(rofi zenity)
+function check_launcher() {
+  if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then
+    echo "Supported launchers: ${launcher_list[*]}"
+    exit 1
+  else
+    # Get array with unique elements and preferred launcher first
+    # Note: uniq expects a sorted list, so we cannot use it
+    i=1
+    launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \
+      | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' '))
+  fi
+}
+
+# Parse CLI arguments
+while getopts "hcp:" option; do
+  case "${option}" in
+    h) echo "${usage}"
+       exit 0
+       ;;
+    c) enable_confirmation=true
+       ;;
+    p) preferred_launcher="${OPTARG}"
+       check_launcher "${preferred_launcher}"
+       ;;
+    *) exit 1
+       ;;
+  esac
+done
+
+# Check whether a command exists
+function command_exists() {
+  command -v "$1" &> /dev/null 2>&1
+}
+
+# systemctl required
+if ! command_exists systemctl ; then
+  exit 1
+fi
+
+# menu defined as an associative array
+typeset -A menu
+
+# Menu with keys/commands
+
+menu=(
+  [  Shutdown]="systemctl poweroff"
+  [  Reboot]="systemctl reboot"
+  [  Suspend]="systemctl suspend"
+  [  Hibernate]="systemctl hibernate"
+  [  Lock]="~/.config/waybar/scripts/blur-lock"
+  [  Logout]="swaymsg exit"
+  [  Cancel]=""
+)
+
+menu_nrows=${#menu[@]}
+
+# Menu entries that may trigger a confirmation message
+menu_confirm="Shutdown Reboot Hibernate Suspend Halt Logout"
+
+launcher_exe=""
+launcher_options=""
+rofi_colors=""
+
+function prepare_launcher() {
+  if [[ "$1" == "rofi" ]]; then
+    rofi_colors=(-bc "${BORDER_COLOR}" -bg "${BG_COLOR}" -fg "${FG_COLOR}" \
+        -hlfg "${HLFG_COLOR}" -hlbg "${HLBG_COLOR}")
+    launcher_exe="rofi"
+    launcher_options=(-dmenu -i -lines "${menu_nrows}" -p "${ROFI_TEXT}" \
+        "${rofi_colors}" "${ROFI_OPTIONS[@]}")
+  elif [[ "$1" == "zenity" ]]; then
+    launcher_exe="zenity"
+    launcher_options=(--list --title="${ZENITY_TITLE}" --text="${ZENITY_TEXT}" \
+        "${ZENITY_OPTIONS[@]}")
+  fi
+}
+
+for l in "${launcher_list[@]}"; do
+  if command_exists "${l}" ; then
+    prepare_launcher "${l}"
+    break
+  fi
+done
+
+# No launcher available
+if [[ -z "${launcher_exe}" ]]; then
+  exit 1
+fi
+
+launcher=(${launcher_exe} "${launcher_options[@]}")
+selection="$(printf '%s\n' "${!menu[@]}" | sort | "${launcher[@]}")"
+
+function ask_confirmation() {
+  if [ "${launcher_exe}" == "rofi" ]; then
+    confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \
+      "${rofi_colors}" "${ROFI_OPTIONS[@]}")
+    [ "${confirmed}" == "Yes" ] && confirmed=0
+  elif [ "${launcher_exe}" == "zenity" ]; then
+    zenity --question --text "Are you sure you want to ${selection,,}?"
+    confirmed=$?
+  fi
+
+  if [ "${confirmed}" == 0 ]; then
+    swaymsg -q "exec --no-startup-id ${menu[${selection}]}"
+  fi
+}
+
+if [[ $? -eq 0 && ! -z ${selection} ]]; then
+  if [[ "${enable_confirmation}" = true && \
+        ${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then
+    ask_confirmation
+  else
+    swaymsg -q "exec --no-startup-id ${menu[${selection}]}"
+  fi
+fi
diff --git a/.config/waybar/scripts/ppd-status b/.config/waybar/scripts/ppd-status
new file mode 100755
index 0000000..8e6eb7b
--- /dev/null
+++ b/.config/waybar/scripts/ppd-status
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+#
+# power-profiles-daemon implementation:
+# needs package power-profiles-daemon installed and the service running see here:
+# https://wiki.archlinux.org/title/CPU_frequency_scaling#power-profiles-daemon
+# used in i3-blocks: ~/.config/i3/i3blocks.conf together with: ~/.config/i3/scripts/power-profiles
+
+# script to show current power profile
+
+current_profile=$(/usr/bin/powerprofilesctl get)
+echo "$current_profile"
diff --git a/.config/waybar/scripts/temperature b/.config/waybar/scripts/temperature
new file mode 100755
index 0000000..4e31610
--- /dev/null
+++ b/.config/waybar/scripts/temperature
@@ -0,0 +1,86 @@
+#!/usr/bin/env perl
+# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
+# Copyright 2014 Vivien Didelot <vivien@didelot.org>
+# Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com>
+# Copyright 2014 Benjamin Chretien <chretien at lirmm dot fr>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Edited by Andreas Lindlbauer <endeavouros.mousily@aleeas.com>
+
+use strict;
+use warnings;
+use utf8;
+use Getopt::Long;
+
+binmode(STDOUT, ":utf8");
+
+# default values
+my $t_warn = $ENV{T_WARN} || 70;
+my $t_crit = $ENV{T_CRIT} || 90;
+my $chip = $ENV{SENSOR_CHIP} || "";
+my $temperature = -9999;
+my $label = "😀 ";
+
+sub help {
+    print "Usage: temperature [-w <warning>] [-c <critical>] [--chip <chip>]\n";
+    print "-w <percent>: warning threshold to become yellow\n";
+    print "-c <percent>: critical threshold to become red\n";
+    print "--chip <chip>: sensor chip\n";
+    exit 0;
+}
+
+GetOptions("help|h" => \&help,
+           "w=i"    => \$t_warn,
+           "c=i"    => \$t_crit,
+           "chip=s" => \$chip);
+
+# Get chip temperature
+open (SENSORS, "sensors -u $chip |") or die;
+while (<SENSORS>) {
+    if (/^\s+temp1_input:\s+[\+]*([\-]*\d+\.\d)/) {
+        $temperature = $1;
+        last;
+    }
+}
+close(SENSORS);
+
+$temperature eq -9999 and die 'Cannot find temperature';
+
+if ($temperature < 45) {
+  $label = '';
+} elsif ($temperature < 55) {
+  $label = '';
+} elsif ($temperature < 65) {
+  $label = '';
+} elsif ($temperature < 75) {
+  $label = '';
+} else {
+  $label = '';
+}
+# Print short_text, full_text
+print "${label}";
+print " $temperature°C\n";
+print "${label}";
+print " $temperature°C\n";
+
+# Print color, if needed
+if ($temperature >= $t_crit) {
+    print "#FF0000\n";
+    exit 33;
+} elsif ($temperature >= $t_warn) {
+    print "#FFFC00\n";
+}
+
+exit 0;
diff --git a/.config/waybar/scripts/volume b/.config/waybar/scripts/volume
new file mode 100755
index 0000000..39618e1
--- /dev/null
+++ b/.config/waybar/scripts/volume
@@ -0,0 +1,93 @@
+#!/usr/bin/env bash
+# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
+# Copyright (C) 2014 Alexander Keller <github@nycroth.com>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# original source: https://github.com/vivien/i3blocks-contrib/tree/master/volume
+# check the readme: https://github.com/vivien/i3blocks-contrib/blob/master/volume/README.md
+#------------------------------------------------------------------------
+
+# The second parameter overrides the mixer selection
+# For PulseAudio users, eventually use "pulse"
+# For Jack/Jack2 users, use "jackplug"
+# For ALSA users, you may use "default" for your primary card
+# or you may use hw:# where # is the number of the card desired
+if [[ -z "$MIXER" ]] ; then
+    MIXER="default"
+    if command -v pulseaudio >/dev/null 2>&1 && pulseaudio --check ; then
+        # pulseaudio is running, but not all installations use "pulse"
+        if amixer -D pulse info >/dev/null 2>&1 ; then
+            MIXER="pulse"
+        fi
+    fi
+    [ -n "$(lsmod | grep jack)" ] && MIXER="jackplug"
+    MIXER="${2:-$MIXER}"
+fi
+
+# The instance option sets the control to report and configure
+# This defaults to the first control of your selected mixer
+# For a list of the available, use `amixer -D $Your_Mixer scontrols`
+if [[ -z "$SCONTROL" ]] ; then
+    SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols |
+                      sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" |
+                      head -n1
+                    )}"
+fi
+
+# The first parameter sets the step to change the volume by (and units to display)
+# This may be in in % or dB (eg. 5% or 3dB)
+if [[ -z "$STEP" ]] ; then
+    STEP="${1:-5%}"
+fi
+
+# AMIXER(1):
+# "Use the mapped volume for evaluating the percentage representation like alsamixer, to be
+# more natural for human ear."
+NATURAL_MAPPING=${NATURAL_MAPPING:-0}
+if [[ "$NATURAL_MAPPING" != "0" ]] ; then
+    AMIXER_PARAMS="-M"
+fi
+
+#------------------------------------------------------------------------
+
+capability() { # Return "Capture" if the device is a capture device
+  amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL |
+    sed -n "s/  Capabilities:.*cvolume.*/Capture/p"
+}
+
+volume() {
+  amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL $(capability)
+}
+
+format() {
+  
+  perl_filter='if (/.*\[(\d+%)\] (\[(-?\d+.\d+dB)\] )?\[(on|off)\]/)'
+  perl_filter+='{CORE::say $4 eq "off" ? "MUTE" : "'
+  # If dB was selected, print that instead
+  perl_filter+=$([[ $STEP = *dB ]] && echo '$3' || echo '$1')
+  perl_filter+='"; exit}'
+  output=$(perl -ne "$perl_filter")
+  echo "$LABEL$output"
+}
+
+#------------------------------------------------------------------------
+
+case $BLOCK_BUTTON in
+  3) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) toggle ;;  # right click, mute/unmute
+  4) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) ${STEP}+ unmute ;; # scroll up, increase
+  5) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) ${STEP}- unmute ;; # scroll down, decrease
+esac
+
+volume | format
diff --git a/.config/waybar/scripts/volume_brightness.sh b/.config/waybar/scripts/volume_brightness.sh
new file mode 100755
index 0000000..8527b62
--- /dev/null
+++ b/.config/waybar/scripts/volume_brightness.sh
@@ -0,0 +1,96 @@
+#!/bin/bash
+# original source: https://gitlab.com/Nmoleo/i3-volume-brightness-indicator
+
+# taken from here: https://gitlab.com/Nmoleo/i3-volume-brightness-indicator
+
+# See README.md for usage instructions
+bar_color="#d3c6aa"
+volume_step=2
+brightness_step=2.5
+max_volume=100
+
+# Uses regex to get volume from pactl
+function get_volume {
+    pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '[0-9]{1,3}(?=%)' | head -1
+}
+
+# Uses regex to get mute status from pactl
+function get_mute {
+    pactl get-sink-mute @DEFAULT_SINK@ | grep -Po '(?<=Mute: )(yes|no)'
+}
+
+# Uses regex to get brightness from xbacklight
+function get_brightness {
+    brightnessctl | grep "Current brightness" | cut -d '(' -f 2 | cut -d '%' -f 1 
+}
+
+# Returns a mute icon, a volume-low icon, or a volume-high icon, depending on the volume
+function get_volume_icon {
+    volume=$(get_volume)
+    mute=$(get_mute)
+    if [ "$volume" -eq 0 ] || [ "$mute" == "yes" ] ; then
+        volume_icon="  " 
+    elif [ "$volume" -lt 50 ]; then
+        volume_icon="  "
+    else
+        volume_icon="  "
+    fi
+}
+
+# Always returns the same icon - I couldn't get the brightness-low icon to work with fontawesome
+function get_brightness_icon {
+    brightness_icon="  "
+}
+
+# Displays a volume notification using dunstify
+function show_volume_notif {
+    volume=$(get_mute)
+    get_volume_icon
+    dunstify -t 1000 -r 2593 -u normal "$volume_icon $volume%" -h int:value:$volume -h string:hlcolor:$bar_color
+}
+
+# Displays a brightness notification using dunstify
+function show_brightness_notif {
+    brightness=$(get_brightness)
+    get_brightness_icon
+    dunstify -t 1000 -r 2593 -u normal "$brightness_icon $brightness%" -h int:value:$brightness -h string:hlcolor:$bar_color
+}
+
+# Main function - Takes user input, "volume_up", "volume_down", "brightness_up", or "brightness_down"
+case $1 in
+    volume_up)
+    # Unmutes and increases volume, then displays the notification
+    pactl set-sink-mute @DEFAULT_SINK@ 0
+    volume=$(get_volume)
+    if [ $(( "$volume" + "$volume_step" )) -gt $max_volume ]; then
+        pactl set-sink-volume @DEFAULT_SINK@ $max_volume%
+    else
+        pactl set-sink-volume @DEFAULT_SINK@ +$volume_step%
+    fi
+    show_volume_notif
+    ;;
+
+    volume_down)
+    # Raises volume and displays the notification
+    pactl set-sink-volume @DEFAULT_SINK@ -$volume_step%
+    show_volume_notif
+    ;;
+
+    volume_mute)
+    # Toggles mute and displays the notification
+    pactl set-sink-mute @DEFAULT_SINK@ toggle
+    show_volume_notif
+    ;;
+
+    brightness_up)
+    # Increases brightness and displays the notification
+    brightnessctl set +$brightness_step% 
+    show_brightness_notif
+    ;;
+
+    brightness_down)
+    # Decreases brightness and displays the notification
+    brightnessctl set $brightness_step%- 
+    show_brightness_notif
+    ;;
+esac
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..1c00e07
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,270 @@
+@import url("./colors.css");
+* {
+    /* `otf-font-awesome` is required to be installed for icons */
+    font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+    font-size: 13px;
+}
+
+window#waybar {
+    background-color: @background;
+    /*border-bottom: 3px solid rgba(100, 114, 125, 0.5);*/
+    color: @foreground;
+    transition-property: background-color;
+    transition-duration: .5s;
+}
+
+window#waybar.hidden {
+    opacity: 0.2;
+}
+
+window#waybar.termite {
+    background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+    background-color: #000000;
+    border: none;
+}
+
+button {
+    border: none;
+    border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+    background: inherit;
+    box-shadow: inset 0 -3px @foreground;
+}
+
+#workspaces button {
+    padding: 0 2px;
+    background-color: transparent;
+    color: @foreground;
+}
+
+#workspaces button:hover {
+    background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused {
+    background-color: @cyan;
+    color: @background;
+    /*box-shadow: inset 0 -3px #ffffff;*/
+}
+
+#workspaces button.urgent {
+    background-color: #eb4d4b;
+}
+
+#mode {
+    color: @background;
+    background-color: @purple;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#mpd, 
+#custom-mail,
+#custom-pacman {
+    padding: 0 4px;
+}
+
+#window,
+#workspaces {
+    margin: 0 4px;
+}
+
+/* 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 {
+    /* background-color: #64727D; */
+}
+
+#battery {
+    /* background-color: #ffffff; */
+    /* color: #000000; */
+}
+
+#battery.charging, #battery.plugged {
+    /* color: #ffffff; */
+    /* background-color: #26A65B; */
+}
+
+@keyframes blink {
+    to {
+        color: @foreground;
+        background-color: @background;
+    }
+}
+
+#battery.critical:not(.charging) {
+    background-color: @background;
+    color: @red;
+    animation-name: blink;
+    animation-duration: 2s;
+    animation-timing-function: linear;
+    animation-iteration-count: infinite;
+    animation-direction: alternate;
+}
+
+label:focus {
+    /* background-color: #000000; */
+}
+
+#cpu {
+    /* background-color: #2ecc71; */
+    /* color: #000000; */
+}
+
+#memory {
+    /* background-color: #9b59b6; */
+}
+
+#disk {
+    /* background-color: #964B00; */
+}
+
+#backlight {
+    /* background-color: #90b1b1; */
+}
+
+#network {
+    /* background-color: #2980b9; */
+}
+
+#network.disconnected {
+    /* background-color: #f53c3c; */
+}
+
+#pulseaudio {
+    /* background-color: #f1c40f; */
+    /* color: #000000; */
+}
+
+#pulseaudio.muted {
+    /* background-color: #90b1b1; */
+    /* color: #2a5c45; */
+}
+
+#wireplumber {
+    /* background-color: #fff0f5; */
+    /* color: #000000; */
+}
+
+#wireplumber.muted {
+    /* background-color: #f53c3c; */
+}
+
+#custom-media {
+    background-color: #66cc99;
+    color: #2a5c45;
+    min-width: 100px;
+}
+
+#custom-media.custom-spotify {
+    background-color: #66cc99;
+}
+
+#custom-media.custom-vlc {
+    background-color: #ffa000;
+}
+
+#temperature {
+    /* background-color: #f0932b; */
+}
+
+#temperature.critical {
+    background-color: #eb4d4b;
+}
+
+#tray {
+    background-color: #2980b9;
+}
+
+#tray > .passive {
+    -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+    -gtk-icon-effect: highlight;
+    background-color: #eb4d4b;
+}
+
+#idle_inhibitor {
+    background-color: #2d3436;
+}
+
+#idle_inhibitor.activated {
+    background-color: #ecf0f1;
+    color: #2d3436;
+}
+
+#mpd {
+    background-color: #66cc99;
+    color: #2a5c45;
+}
+
+#mpd.disconnected {
+    background-color: #f53c3c;
+}
+
+#mpd.stopped {
+    background-color: #90b1b1;
+}
+
+#mpd.paused {
+    background-color: #51a37a;
+}
+
+#language {
+    /* background: #00b093; */
+    /* color: #740864; */
+    padding: 0 4px;
+    min-width: 10px;
+}
+
+#keyboard-state {
+    background: #97e1ad;
+    color: #000000;
+    padding: 0 0px;
+    margin: 0 5px;
+    min-width: 16px;
+}
+
+#keyboard-state > label {
+    padding: 0 5px;
+}
+
+#keyboard-state > label.locked {
+    background: rgba(0, 0, 0, 0.2);
+}
+
+#scratchpad {
+    background: rgba(0, 0, 0, 0.2);
+}
+
+#scratchpad.empty {
+	background-color: transparent;
+}
diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc
new file mode 100755
index 0000000..10ed5b0
--- /dev/null
+++ b/.config/zathura/zathurarc
@@ -0,0 +1,56 @@
+set window-title-basename "true"
+set selection-clipboard "clipboard"
+
+# Dracula color theme for Zathura
+# Swaps Foreground for Background to get a light version if the user prefers
+
+#
+# Dracula color theme
+#
+
+set notification-error-bg       "#ff5555" # Red
+set notification-error-fg       "#d3c6aa" # Foreground
+set notification-warning-bg     "#ffb86c" # Orange
+set notification-warning-fg     "#44475a" # Selection
+set notification-bg             "#2b3339" # Background
+set notification-fg             "#d3c6aa" # Foreground
+
+set completion-bg               "#2b3339" # Background
+set completion-fg               "#6272a4" # Comment
+set completion-group-bg         "#2b3339" # Background
+set completion-group-fg         "#6272a4" # Comment
+set completion-highlight-bg     "#44475a" # Selection
+set completion-highlight-fg     "#d3c6aa" # Foreground
+
+set index-bg                    "#2b3339" # Background
+set index-fg                    "#d3c6aa" # Foreground
+set index-active-bg             "#44475a" # Current Line
+set index-active-fg             "#d3c6aa" # Foreground
+
+set inputbar-bg                 "#2b3339" # Background
+set inputbar-fg                 "#d3c6aa" # Foreground
+set statusbar-bg                "#2b3339" # Background
+set statusbar-fg                "#d3c6aa" # Foreground
+
+set highlight-color             "#ffb86c" # Orange
+set highlight-active-color      "#ff79c6" # Pink
+
+set default-bg                  "#2b3339" # Background
+set default-fg                  "#d3c6aa" # Foreground
+
+set render-loading              true
+set render-loading-fg           "#2b3339" # Background
+set render-loading-bg           "#d3c6aa" # Foreground
+
+#
+# Recolor mode settings
+#
+
+set recolor-lightcolor          "#2b3339" # Background
+set recolor-darkcolor           "#d3c6aa" # Foreground
+
+#
+# Startup options
+#
+set adjust-open width
+set recolor true
diff --git a/.mbsyncrc b/.mbsyncrc
new file mode 100755
index 0000000..41b7413
--- /dev/null
+++ b/.mbsyncrc
@@ -0,0 +1,49 @@
+IMAPStore christian.krinitsin_tum.de-remote
+Host xmail.mwn.de
+Port 993
+User ge87liq
+PassCmd "pass tum.de/ge87liq"
+AuthMechs LOGIN
+SSLType IMAPS
+CertificateFile /etc/ssl/certs/ca-certificates.crt
+
+MaildirStore christian.krinitsin_tum.de-local
+Subfolders Verbatim
+Path /home/chris/.local/share/mail/christian.krinitsin@tum.de/
+Inbox /home/chris/.local/share/mail/christian.krinitsin@tum.de/INBOX
+
+Channel christian.krinitsin_tum.de
+Far :christian.krinitsin_tum.de-remote:
+Near :christian.krinitsin_tum.de-local:
+Patterns INBOX
+Expunge Both
+Create Both
+SyncState *
+MaxMessages 0
+ExpireUnread no
+# End profile
+
+IMAPStore christian_krinitsin.xyz-remote
+Host imap.ionos.de
+Port 993
+User christian@krinitsin.xyz
+PassCmd "pass ionos.de/christian@krinitsin.xyz"
+AuthMechs LOGIN
+SSLType IMAPS
+CertificateFile /etc/ssl/certs/ca-certificates.crt
+
+MaildirStore christian_krinitsin.xyz-local
+Subfolders Verbatim
+Path /home/chris/.local/share/mail/christian@krinitsin.xyz
+Inbox /home/chris/.local/share/mail/christian@krinitsin.xyz/INBOX
+
+Channel christian_krinitsin.xyz
+Expunge Both
+Far :christian_krinitsin.xyz-remote:
+Near :christian_krinitsin.xyz-local:
+Patterns INBOX 
+Create Both
+SyncState *
+MaxMessages 0
+ExpireUnread no
+# End profile
diff --git a/.profile b/.profile
new file mode 100755
index 0000000..ff67372
--- /dev/null
+++ b/.profile
@@ -0,0 +1,4 @@
+export GPG_TTY=$(tty)
+export PATH=/home/chris/.local/bin:$PATH
+export ELECTRON_OZONE_PLATFORM_HINT=auto
+#export QT_QPA_PLATFORMTHEME=qt5ct