diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 0000000..4ff9f16
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,32 @@
+[global]
+ monitor = 0
+
+ follow = none
+ sort = yes
+
+ width = (0,400)
+ height = 300
+ transparency = 30
+ padding = 6
+ horizontal_padding = 6
+ frame_width = 2
+ frame_color = "#00c0b0"
+ separator_height = 3
+ separator_color = frame
+ gap_size = 5
+
+ origin = top-right
+
+ offset = 20x20
+
+ scale = 0
+
+ notification_limit = 0
+
+ progress_bar = true
+ progress_bar_height = 5
+ progress_bar_frame_width = 1
+ progress_bar_min_width = 150
+ progress_bar_max_width = 250
+
+ font = HurmitNerdFont 12
diff --git a/.config/hypr/apps.conf b/.config/hypr/apps.conf
new file mode 100644
index 0000000..c068edb
--- /dev/null
+++ b/.config/hypr/apps.conf
@@ -0,0 +1,8 @@
+# Set programs that you use
+# $terminal = alacritty -e tmux
+$terminal = kitty
+$fileManager = dolphin
+$menu = wofi --show drun
+$appLauncher = tofi-drun | xargs hyprctl dispatch exec --
+$lockscreen = hyprlock
+$nextcloud = nextcloud --background
diff --git a/.config/hypr/autostart b/.config/hypr/autostart
new file mode 100755
index 0000000..e810e4c
--- /dev/null
+++ b/.config/hypr/autostart
@@ -0,0 +1,29 @@
+#!/usr/bin/bash
+
+# variables
+config=$HOME/.config/hypr
+
+# wallpaper
+hyprpaper &
+
+# notification daemon
+dunst &
+
+# secrets manager
+kwalletd6 &
+
+# waybar
+waybar &
+
+# syncronisation
+syncthing &
+nextcloud --background &
+
+# network-manager tray icon
+NetworkManager &
+nm-applet &
+# other
+polkit-kde-authentication-agent-1 &
+dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &
+hypridle &
+polkit-qt6 &
diff --git a/.config/hypr/background.conf b/.config/hypr/background.conf
new file mode 100644
index 0000000..8bdbe82
--- /dev/null
+++ b/.config/hypr/background.conf
@@ -0,0 +1,2 @@
+$w1 = hyprctl hyprpaper wallpaper "DP-1, ~/Pictures/backgrounds/transistor.jpg"
+$w1 = hyprctl hyprpaper wallpaper "DP-2, ~/Pictures/backgrounds/transistor.jpg"
diff --git a/.config/hypr/gamemode.sh b/.config/hypr/gamemode.sh
new file mode 100644
index 0000000..b89b5c4
--- /dev/null
+++ b/.config/hypr/gamemode.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env sh
+HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
+if [ "$HYPRGAMEMODE" = 1 ] ; then
+ hyprctl --batch "\
+ keyword animations:enabled 0;\
+ keyword decoration:drop_shadow 0;\
+ keyword decoration:blur:enabled 0;\
+ keyword general:gaps_in 0;\
+ keyword general:gaps_out 0;\
+ keyword general:border_size 1;\
+ keyword decoration:rounding 0"
+ exit
+fi
+hyprctl reload
diff --git a/.config/hypr/hyprbindings.conf b/.config/hypr/hyprbindings.conf
new file mode 100644
index 0000000..bbb484b
--- /dev/null
+++ b/.config/hypr/hyprbindings.conf
@@ -0,0 +1,144 @@
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+source = ~/.config/hypr/apps.conf
+$mainMod = SUPER
+
+# Switch Keyboard Layout
+# bind = $mainMod ALT_L, K, exec, hyprctl switchxkblayout holtek-usb-hid-keyboard next && hyprctl switchxkblayout at-translated-set-2-keyboard next
+bind = $mainMod ALT_L, K, exec, hyprctl switchxkblayout holtek-usb-hid-keyboard next; hyprctl switchxkblayout holtek-usb-hid-keyboard-1 next; hyprctl switchxkblayout at-translated-set-2-keyboard next
+
+# change volume with Volume Keys
+# units: None(1% increases), dB, %(works as you'd expect on laptop, but on PC↓)
+# percent increases (1%+-) lead to jumps to 10% or 90% on PC with Sharkoon
+# keyboard, depending on whether you pressed VolUp or VolDown
+# % is needed for the DragonFly, because it is too finegrained with 65k steps
+binde = ,XF86AudioLowerVolume, exec, amixer -M -- set Master Playback Switch 1%-
+binde = ,XF86AudioRaiseVolume, exec, amixer -M -- set Master Playback Switch 1%+
+
+# Reduce effects for performance
+bind = WIN, F1, exec, ~/.config/hypr/gamemode.sh
+
+# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+bind = $mainMod, Q, exec, $terminal
+bind = $mainMod, M, exit,
+bind = $mainMod, E, exec, $fileManager
+bind = $mainMod, V, togglefloating,
+bind = $mainMod, R, exec, $menu
+bind = $mainMod, P, pseudo, # dwindle
+bind = $mainMod, C, killactive,
+bind = $mainMod, D, togglesplit, # dwindle
+bind = ALT_L, F4, killactive
+bind = ALT_L, SPACE, exec, $appLauncher
+bind = ALT_L, F11, fullscreenstate, 0
+bind = $mainMod, F11, fullscreenstate, 2 # maximize # fullscreen window w/o fullscreen mode
+bind = $mainMod, up, fullscreenstate, 3 # maximize # fullscreen window w/o fullscreen mode
+bind = ALT_L, TAB, cyclenext
+
+# Move focus with mainMod + arrow keys
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, j, movefocus, d
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, l, movefocus, r
+
+# Maximise / Minimise workaround
+#bind = $mainMod, up, movetoworkspace, empty
+bind = $mainMod, O, fullscreenstate, 1
+
+# lock
+bind = $mainMod, F12, exec, $lockscreen
+
+# Move window in direction
+bind = $mainMod SHIFT, h, swapwindow, l
+bind = $mainMod SHIFT, j, swapwindow, d
+bind = $mainMod SHIFT, k, swapwindow, u
+bind = $mainMod SHIFT, l, swapwindow, r
+
+# Move window to other screen
+bind = $mainMod SHIFT, left, movewindow, mon:-1
+bind = $mainMod SHIFT, right, movewindow, mon:+1
+
+# Resize Window in direction
+binde = $mainMod CTRL, h, resizeactive, -25 0
+binde = $mainMod CTRL, j, resizeactive, 0 25
+binde = $mainMod CTRL, k, resizeactive, 0 -25
+binde = $mainMod CTRL, l, resizeactive, 25 0
+
+# Switch workspaces with mainMod + [0-9]
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 2, workspace, 2
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 4, workspace, 4
+bind = $mainMod, 5, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 7, workspace, 7
+bind = $mainMod, 8, workspace, 8
+bind = $mainMod, 9, workspace, 9
+bind = $mainMod, 0, workspace, 10
+
+# Move active window to a workspace with mainMod + SHIFT + [0-9]
+bind = $mainMod SHIFT, 1, movetoworkspace, 1
+bind = $mainMod SHIFT, 2, movetoworkspace, 2
+bind = $mainMod SHIFT, 3, movetoworkspace, 3
+bind = $mainMod SHIFT, 4, movetoworkspace, 4
+bind = $mainMod SHIFT, 5, movetoworkspace, 5
+bind = $mainMod SHIFT, 6, movetoworkspace, 6
+bind = $mainMod SHIFT, 7, movetoworkspace, 7
+bind = $mainMod SHIFT, 8, movetoworkspace, 8
+bind = $mainMod SHIFT, 9, movetoworkspace, 9
+bind = $mainMod SHIFT, 0, movetoworkspace, 10
+
+# Move Window to new virtual workspace/ desktop
+bind = $mainMod ALT_L, h, movetoworkspace, r-1
+bind = $mainMod ALT_L, l, movetoworkspace, r+1
+
+# Switch to next/previous virtual workspace/ desktop, ignore empty
+bind = ALT_L, h, workspace, e-1
+bind = ALT_L, l, workspace, e+1
+
+# ----
+# Example special workspace (scratchpad)
+bind = $mainMod, S, togglespecialworkspace, S
+bind = $mainMod SHIFT, S, movetoworkspace, special:S
+
+bind = $mainMod, A, togglespecialworkspace, A
+bind = $mainMod SHIFT, A, movetoworkspace, special:A
+
+bind = $mainMod, X, togglespecialworkspace, X
+bind = $mainMod SHIFT, X, movetoworkspace, special:X
+# ----
+
+# Scroll through existing workspaces with mainMod + scroll
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# Move/resize windows with mainMod + LMB/RMB and dragging
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
+bind = SHIFT_LALT_L, h, changegroupactive, b
+bind = SHIFT_LALT_L, l, changegroupactive, f
+#--------------------
+# will switch to a submap called groups
+bind = $mainMod, G, submap, groups
+
+# will start a submap called "groups"
+submap = groups
+
+# move window into a group according to vim-motion key
+bind = , h, moveintogroup, l
+bind = , j, moveintogroup, d
+bind = , k, moveintogroup, u
+bind = , l, moveintogroup, r
+
+# get window out of group
+bind = , G, moveoutofgroup,
+# Toggle a group on the current window
+bind = $mainMod, t, togglegroup
+# lock window group
+bind = , L, lockactivegroup
+
+# use reset to go backc to the global submap
+bind = , escape, submap, reset
+
+# will reset the submap, which will return to the global submap
+submap = reset
+#--------------------
diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf
new file mode 100644
index 0000000..ba3ecba
--- /dev/null
+++ b/.config/hypr/hypridle.conf
@@ -0,0 +1,34 @@
+general {
+ lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
+ before_sleep_cmd = loginctl lock-session # lock before suspend.
+ after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
+}
+
+listener {
+ timeout = 300 # 5min.
+ on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
+ on-resume = brightnessctl -r # monitor backlight restor.
+}
+
+# turn off keyboard backlight, uncomment this section if have keyboard backlight.
+listener {
+ timeout = 60 # 1min.
+ on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
+ on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
+}
+
+listener {
+ timeout = 900 # 15min
+ on-timeout = loginctl lock-session # lock screen when timeout has passed
+}
+
+listener {
+ timeout = 1800 # 30min
+ on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
+ on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
+}
+
+listener {
+ timeout = 2800 # 45min
+ on-timeout = systemctl suspend-then-hibernate # suspend pc, hibernate with delay
+}
diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..97c711c
--- /dev/null
+++ b/.config/hypr/hyprland.conf
@@ -0,0 +1,184 @@
+#
+# Please note not all available settings / options are set here.
+# For a full list, see the wiki
+#
+
+autogenerated = 0 # remove this line to remove the warning
+
+# See https://wiki.hyprland.org/Configuring/Monitors/
+#monitor=name,resolution,offset, scale
+#offset scales with scale XC
+#monitor=DP-2,3840x2160,-2560x0,auto, bitdepth, 10, vrr, 1
+#monitor=DP-1,3840x2160@144,auto,auto, bitdepth, 10, vrr, 1
+monitor=DP-1,3840x2160@60,320x-1440,auto, bitdepth, 10, vrr, 1 #320=(2560-1920)/2
+monitor=DP-1,3840x2160@144,auto,auto, bitdepth, 10, vrr, 1
+monitor=DP-2,3840x2160,-2560x0,auto, bitdepth, 10, vrr, 1
+monitor=eDP-1,1920x1080,0x0,1
+monitor=HDMI-A-1,2560x1440@60.00,0x-1440,1
+monitor=HDMI-A-2,1920x1080@74.97,0x-1080,1
+#monitor=HDMI-A-2,2560x1440@60.00,0x-1440,1
+#monitor=HDMI-A-2,3840x2160@60.00,0x-2160,auto
+#monitor=HDMI-A-2,3840x2160,0x-1080,2,bitdepth, 10, vrr, 1
+
+
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more
+
+# Execute your favorite apps at launch
+# exec-once = waybar & hyprpaper & dunst & syncthing & $nextcloud & $terminal
+exec-once = $HOME/.config/hypr/autostart
+exec-once = /usr/lib/polkit-kde-authentication-agent-1
+exec-once = gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" # for GTK3 apps
+exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" # for GTK4 apps
+
+# Source a file (multi-file configs)
+# source = ~/.config/hypr/myColors.conf
+source = ~/.config/hypr/background.conf
+source = ~/.config/hypr/hyprbindings.conf
+source = ~/.config/hypr/apps.conf
+
+# Some default env vars.
+env = XCURSOR_SIZE,32
+env = QT_QPA_PLATFORM,wayland # here for calibre, with debatable effect
+env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+env = GSK_RENDERER,ngl
+env = GTK_THEME,Adwaita-dark
+
+# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
+input {
+ kb_layout = gb,de
+ #kb_layout = de,gb
+ kb_variant = nodeadkeys
+ kb_model = pc105
+ kb_options = caps:escape
+ kb_rules =
+ numlock_by_default = true
+ repeat_rate = 35
+ repeat_delay = 300
+
+ # Follow mouse 1 2 3 :
+ follow_mouse = 2
+
+ touchpad {
+ natural_scroll = yes
+ }
+ scroll_factor = 1.0
+
+ # PC with mouse: now as device specific setting
+ # sensitivity = -0.4 # -1.0 - 1.0, 0 means no modification.
+ # accel_profile = flat
+ # Laptop with touchpad
+ sensitivity = 0
+ accel_profile = adaptive
+}
+
+general {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ gaps_in = 2
+ gaps_out = 1
+ border_size = 1
+ col.active_border = rgba(33ccffee) rgba(00ff99ee) 30deg
+ col.inactive_border = rgba(595959aa)
+
+ layout = dwindle
+
+ # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+ allow_tearing = false
+}
+
+decoration {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ rounding = 3
+
+ blur {
+ enabled = true
+ size = 1
+ passes = 3
+ popups = true
+ vibrancy = 0.3
+ vibrancy_darkness = 0.8
+ }
+
+ drop_shadow = no
+ shadow_range = 4
+ shadow_render_power = 3
+ col.shadow = rgba(1a1a1aee)
+}
+group {
+ groupbar{
+ enabled = true
+ font_family = "Hurmit Nerd Font Regular"
+ font_size = 11
+ gradients = false
+ scrolling = false
+ col.active = rgba(ea1d4e77)
+ }
+ col.border_active = rgba(ea1d4ebb) rgba(fd7000bb) 45deg
+}
+
+animations {
+ enabled = yes
+
+ # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+
+ animation = windows, 1, 5, myBezier
+ animation = windowsOut, 1, 5, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 5, default
+}
+
+dwindle {
+ # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
+ pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+ preserve_split = yes # you probably want this
+}
+
+master {
+ # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+ # new_status = master
+}
+
+gestures {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ workspace_swipe = on
+}
+
+misc {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
+}
+
+# Example per-device config
+# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
+device {
+ name = roccat-roccat-leadr-mouse
+ sensitivity = -0.4
+ accel_profile = flat
+}
+device {
+ name = razer-razer-taipan-1
+ sensitivity = 0.4
+ accel_profile = flat
+}
+
+# Example windowrule v1
+# windowrule = float, ^(kitty)$
+# Example windowrule v2
+# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+# now invalid: # windowrulev2 = nomaximizerequest, class:.* # You'll probably like this.
+windowrule = float, pinned, ^(dunst)$
+windowrule = float, pinned, ^(notification)$
+windowrulev2 = float, pinned, title:^(Nextcloud)$
+windowrulev2 = float, title:^(Volume Control)$
+windowrulev2 = float, title:^(Network Connections)$
+windowrulev2 = float, stayfocused, dimaround, fullscreenstate, 0, title:^(Bitwarden - Vivaldi)$
+windowrulev2 = float, pin, workspace unset, noinitialfocus, suppressevents [fullscreen, maximize, activate, activatefocus], title:^(notificationtoasts)
+windowrulev2 = workspace 6, noinitialfocus, class:^(steam)$
+windowrulev2 = noinitialfocus, class: ^(steam)$
diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..a264553
--- /dev/null
+++ b/.config/hypr/hyprlock.conf
@@ -0,0 +1,57 @@
+disable_loading_bar = false
+
+background {
+ monitor = # empty for all monitors
+ #path = /home/felix/Pictures/backgrounds/arch_linux_bg.png
+ path = screenshot
+ # color = rgba(20,20,20,80)
+
+ blur_passes = 3
+ blur_size = 1
+ noise = 0.2117
+ contrast = 0.8916
+ brightness = 0.5172
+ vibrancy = 0.1696
+ vibrancy_darkness = 1.0
+}
+
+input-field {
+ monitor =
+ size = 600, 50
+ outline_thickness = 1
+ dots_size = 0.25 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = true
+ dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
+ outer_color = rgba(15, 15, 15, 180)
+ inner_color = rgba(30, 30, 30, 180)
+ font_color = rgb(200, 200, 200)
+ fade_on_empty = true
+ fade_timeout = 500 # Milliseconds before fade_on_empty is triggered.
+ placeholder_text = Input Password... # Text rendered in the input box when it's empty.
+ hide_input = false
+ rounding = -1 # -1 means complete rounding (circle/oval)
+ check_color = rgba(204, 136, 34, 80)
+ fail_color = rgba(204, 34, 34, 80) # if authentication failed, changes outer_color and fail message color
+ fail_text = $FAIL ($ATTEMPTS) # can be set to empty
+ fail_transition = 300 # transition time in ms between normal outer_color and fail_color
+ capslock_color = -1
+ numlock_color = -1
+ bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
+ invert_numlock = false # change color if numlock is off
+
+ position = 0, -250
+ halign = center
+ valign = center
+}
+ label {
+ monitor =
+ text = $TIME '
+ color = hsla(50, 60%, 50%, 0.8)
+ font_size = 35
+ font_family = Z003
+
+ position = 0, 250
+ halign = center
+ valign = center
+}
diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf
new file mode 100644
index 0000000..b456ff6
--- /dev/null
+++ b/.config/hypr/hyprpaper.conf
@@ -0,0 +1,6 @@
+preload=~/Pictures/backgrounds/transistor.jpg
+preload=~/Pictures/backgrounds/pexels-eberhardgross-lakemountainstars.jpg
+
+#wallpaper=,~/Pictures/backgrounds/transistor.jpg
+#wallpaper=,~/Pictures/backgrounds/pexels-eberhardgross.jpg
+wallpaper=,~/Pictures/backgrounds/pexels-eberhardgross-lakemountainstars.jpg
diff --git a/.config/hypr/monitors.rep b/.config/hypr/monitors.rep
new file mode 100644
index 0000000..4ef85b1
--- /dev/null
+++ b/.config/hypr/monitors.rep
@@ -0,0 +1,33 @@
+Monitor DP-1 (ID 0):
+ 3840x2160@143.98199 at 0x0
+ description: Advanced Micro Peripherals Ltd ES07D03 EVE213400622 (DP-1)
+ make: Advanced Micro Peripherals Ltd
+ model: ES07D03
+ serial: EVE213400622
+ active workspace: 1 (1)
+ special workspace: 0 ()
+ reserved: 0 0 0 0
+ scale: 1.50
+ transform: 0
+ focused: yes
+ dpmsStatus: 1
+ vrr: 0
+ activelyTearing: false
+
+Monitor DP-2 (ID 1):
+ 3840x2160@59.99700 at 2560x0
+ description: Iiyama North America PLG2888UH 0x01010101 (DP-2)
+ make: Iiyama North America
+ model: PLG2888UH
+ serial: 0x01010101
+ active workspace: 2 (2)
+ special workspace: 0 ()
+ reserved: 0 0 0 0
+ scale: 1.50
+ transform: 0
+ focused: no
+ dpmsStatus: 1
+ vrr: 0
+ activelyTearing: false
+
+
diff --git a/.config/tofi/config b/.config/tofi/config
new file mode 100644
index 0000000..2f4ed94
--- /dev/null
+++ b/.config/tofi/config
@@ -0,0 +1,323 @@
+# Default config for tofi
+#
+# Copy this file to ~/.config/tofi/config and get customising!
+#
+# A complete reference of available options can be found in `man 5 tofi`.
+
+#
+### Fonts
+#
+ # Font to use, either a path to a font file or a name.
+ #
+ # If a path is given, tofi will startup much quicker, but any
+ # characters not in the chosen font will fail to render.
+ #
+ # Otherwise, fonts are interpreted in Pango format.
+ # font = "Nimbus Mono PS"
+ # font = "hurmit nerd font"
+ font = /usr/share/fonts/OTF/HurmitNerdFont-Light.otf
+ # font = /usr/share/fonts/OTF/HurmitNerdFont-Regular.otf
+
+ # Point size of text.
+ font-size = 19
+
+ # Comma separated list of OpenType font feature settings to apply,
+ # if supported by the chosen font. The format is similar to the CSS
+ # "font-feature-settings" property.
+ #
+ # Examples:
+ #
+ # font-features = "smcp, c2sc" (all small caps)
+ # font-features = "liga 0" (disable ligatures)
+ font-features = "smcp"
+
+ # Comma separated list of OpenType font variation settings to apply
+ # to variable fonts. The format is similar to the CSS
+ # "font-variation-settings" property.
+ #
+ # Examples:
+ #
+ # font-variations = "wght 900" (Extra bold)
+ # font-variations = "wdth 25, slnt -10" (Narrow and slanted)
+ font-variations = ""
+
+ # Perform font hinting. Only applies when a path to a font has been
+ # specified via `font`. Disabling font hinting speeds up text
+ # rendering appreciably, but will likely look poor at small font pixel
+ # sizes.
+ hint-font = true
+
+#
+### Text theming
+#
+ # Default text color
+ #
+ # All text defaults to this color if not otherwise specified.
+ text-color = #FFFFFF
+
+ # All pieces of text have the same theming attributes available:
+ #
+ # *-color
+ # Foreground color
+ #
+ # *-background
+ # Background color
+ #
+ # *-background-padding
+ # Background padding in pixels (comma-delimited, CSS-style list).
+ # See "DIRECTIONAL VALUES" under `man 5 tofi` for more info.
+ #
+ # *-background-corner-radius
+ # Radius of background box corners in pixels
+
+ # Prompt text theme
+ # prompt-color = #FFFFFF
+ prompt-background = #00000000
+ prompt-background-padding = 0
+ prompt-background-corner-radius = 0
+
+ # Placeholder text theme
+ placeholder-color = #FFFFFFA8
+ placeholder-background = #00000000
+ placeholder-background-padding = 0
+ placeholder-background-corner-radius = 15
+
+ # Input text theme
+ # input-color = #FFFFFF
+ input-background = #00000000
+ input-background-padding = 0
+ input-background-corner-radius = 15
+
+ # Default result text theme
+ # default-result-color = #FFFFFF
+ default-result-background = #00000000
+ default-result-background-padding = 0
+ default-result-background-corner-radius = 15
+
+ # Alternate (even-numbered) result text theme
+ #
+ # If unspecified, these all default to the corresponding
+ # default-result-* attribute.
+ #
+ # alternate-result-color = #FFFFFF
+ # alternate-result-background = #00000000
+ # alternate-result-background-padding = 0
+ # alternate-result-background-corner-radius = 0
+
+ # Selection text
+ selection-color = #33ccff
+ selection-background = #00000000
+ selection-background-padding = 0
+ selection-background-corner-radius = 15
+
+ # Matching portion of selection text
+ selection-match-color = #00ff99
+
+
+#
+### Text cursor theme
+#
+ # Style of the optional text cursor.
+ #
+ # Supported values: bar, block, underscore
+ text-cursor-style = bar
+
+ # Color of the text cursor
+ #
+ # If unspecified, defaults to the same as input-color
+ # text-cursor-color = #FFFFFF
+
+ # Color of text behind the text cursor when text-cursor-style = block
+ #
+ # If unspecified, defaults to the same as background-color
+ # text-cursor-background = #000000
+
+ # Corner radius of the text cursor
+ text-cursor-corner-radius = 0
+
+ # Thickness of the bar and underscore text cursors.
+ #
+ # If unspecified, defaults to a font-dependent value when
+ # text-cursor-style = underscore, or to 2 otherwise.
+ # text-cursor-thickness = 2
+
+#
+### Text layout
+#
+ # Prompt to display.
+ prompt-text = "> "
+
+ # Extra horizontal padding between prompt and input.
+ prompt-padding = 0
+
+ # Placeholder input text.
+ placeholder-text = ""
+
+ # Maximum number of results to display.
+ # If 0, tofi will draw as many results as it can fit in the window.
+ num-results = 5
+
+ # Spacing between results in pixels. Can be negative.
+ result-spacing = 0
+
+ # List results horizontally.
+ horizontal = false
+
+ # Minimum width of input in horizontal mode.
+ min-input-width = 0
+
+#
+### Window theming
+#
+ # Width and height of the window. Can be pixels or a percentage.
+ width = 540
+ height = 270
+
+ # Window background color
+ background-color = #191A1CA0
+
+ # Width of the border outlines in pixels.
+ outline-width = 1
+
+ # Border outline color
+ outline-color = #080800
+
+ # Width of the border in pixels.
+ border-width = 2
+
+ # Border color
+ border-color = #00ff99
+
+ # Radius of window corners in pixels.
+ corner-radius = 10
+
+ # Padding between borders and text. Can be pixels or a percentage.
+ padding-top = 8
+ padding-bottom = 8
+ padding-left = 8
+ padding-right = 8
+
+ # Whether to clip text drawing to be within the specified padding. This
+ # is mostly important for allowing text to be inset from the border,
+ # while still allowing text backgrounds to reach right to the edge.
+ clip-to-padding = true
+
+ # Whether to scale the window by the output's scale factor.
+ scale = true
+
+#
+### Window positioning
+#
+ # The name of the output to appear on. An empty string will use the
+ # default output chosen by the compositor.
+ output = ""
+
+ # Location on screen to anchor the window to.
+ #
+ # Supported values: top-left, top, top-right, right, bottom-right,
+ # bottom, bottom-left, left, center.
+ anchor = top-right
+
+ # Set the size of the exclusive zone.
+ #
+ # A value of -1 means ignore exclusive zones completely.
+ # A value of 0 will move tofi out of the way of other windows' zones.
+ # A value greater than 0 will set that much space as an exclusive zone.
+ #
+ # Values greater than 0 are only meaningful when tofi is anchored to a
+ # single edge.
+ exclusive-zone = -1
+
+ # Window offset from edge of screen. Only has an effect when anchored
+ # to the relevant edge. Can be pixels or a percentage.
+ margin-top = 20%
+ margin-bottom = 0
+ margin-left = 0
+ margin-right = 3%
+
+#
+### Behaviour
+#
+ # Hide the mouse cursor.
+ hide-cursor = true
+
+ # Show a text cursor in the input field.
+ text-cursor = false
+
+ # Sort results by number of usages in run and drun modes.
+ history = true
+
+ # Specify an alternate file to read and store history information
+ # from / to. This shouldn't normally be needed, and is intended to
+ # facilitate the creation of custom modes.
+ # history-file = /path/to/histfile
+
+ # Select the matching algorithm used. If normal, substring matching is
+ # used, weighted to favour matches closer to the beginning of the
+ # string. If prefix, only substrings at the beginning of the string are
+ # matched. If fuzzy, searching is performed via a simple fuzzy matching
+ # algorithm.
+ #
+ # Supported values: normal, prefix, fuzzy
+ matching-algorithm = normal
+
+ # If true, require a match to allow a selection to be made. If false,
+ # making a selection with no matches will print input to stdout.
+ # In drun mode, this is always true.
+ require-match = true
+
+ # If true, automatically accept a result if it is the only one
+ # remaining. If there's only one result on startup, window creation is
+ # skipped altogether.
+ auto-accept-single = false
+
+ # If true, typed input will be hidden, and what is displayed (if
+ # anything) is determined by the hidden-character option.
+ hide-input = false
+
+ # Replace displayed input characters with a character. If the empty
+ # string is given, input will be completely hidden.
+ # This option only has an effect when hide-input is set to true.
+ hidden-character = "*"
+
+ # If true, use physical keys for shortcuts, regardless of the current
+ # keyboard layout. If false, use the current layout's keys.
+ physical-keybindings = true
+
+ # Instead of printing the selected entry, print the 1-based index of
+ # the selection. This option has no effect in run or drun mode. If
+ # require-match is set to false, non-matching input will still result
+ # in the input being printed.
+ print-index = false
+
+ # If true, directly launch applications on selection when in drun mode.
+ # Otherwise, just print the command line to stdout.
+ drun-launch = false
+
+ # The terminal to run terminal programs in when in drun mode.
+ # This option has no effect if drun-launch is set to true.
+ # Defaults to the value of the TERMINAL environment variable.
+ # terminal = foot
+
+ # Delay keyboard initialisation until after the first draw to screen.
+ # This option is experimental, and will cause tofi to miss keypresses
+ # for a short time after launch. The only reason to use this option is
+ # performance on slow systems.
+ late-keyboard-init = false
+
+ # If true, allow multiple simultaneous processes.
+ # If false, create a lock file on startup to prevent multiple instances
+ # from running simultaneously.
+ multi-instance = false
+
+ # Assume input is plain ASCII, and disable some Unicode handling
+ # functions. This is faster, but means e.g. a search for "e" will not
+ # match "é".
+ ascii-input = false
+
+#
+### Inclusion
+#
+ # Configs can be split between multiple files, and then included
+ # within each other.
+ # include = /path/to/config
diff --git a/.config/waybar/config b/.config/waybar/config
new file mode 100644
index 0000000..72e42c1
--- /dev/null
+++ b/.config/waybar/config
@@ -0,0 +1,127 @@
+{
+ "layer": "bottom", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ //"height": 30, // Waybar height (to be removed for auto height)
+ "height": 25,
+ "mode": "dock", // (dock|hide|invisible|overlay)
+ "exclusive": "false",
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["hyprland/window", "custom/media"],
+ "modules-center": ["hyprland/workspaces"],
+ "modules-right": ["pulseaudio", "cpu", "memory", "temperature", "backlight", "hyprland/language", "battery", "clock", "tray"],
+ "hyprland/workspaces": {
+ "disable-scroll": false,
+ "all-outputs": false,
+ "warp-on-scroll": true,
+ "format": "{name}",
+ "show-special": true,
+ "persistent-workspaces": {
+ "*": 5,
+ }
+ },
+ "hyprland/window": {
+ "format": "{title}"
+ },
+ "hyprland/language": {
+ "format-en": "UK",
+ "format-de": "DE",
+ "on-click": "hyprctl switchxkblayout at-translated-set-2-keyboard next"
+ },
+ "keyboard-state": {
+ // "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ "clock": {
+ // "timezone": "America/New_York",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%Y-%m-%d}"
+ },
+ "cpu": {
+ "format": "{usage}% ",
+ "tooltip": false
+ },
+ "memory": {
+ "format": "{used}GB",
+ "format-alt": "{}% "
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+ "critical-threshold": 80,
+ // "format-critical": "{temperatureC}°C {icon}",
+ "format": "{temperatureC}°C", // {icon}",
+ "format-icons": ["", "", ""]
+ },
+ "backlight": {
+ // "device": "acpi_video1",
+ "format": "{percent}%",// {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", ""]
+ },
+ "battery": {
+ "states": {
+ "good": 95,
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{time} {icon}",
+ "format-alt": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""],
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ // "format-wifi": "{essid} ({signalStrength}%) ",
+ // "format-ethernet": "{ipaddr}/{cidr} ",
+ // "tooltip-format": "{ifname} via {gwaddr} ",
+ // "format-linked": "{ifname} (No IP) ",
+ // "format-disconnected": "Disconnected ⚠",
+ // "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ "scroll-step": 0.25, // %, can be a float
+ "format": "{volume}% {icon} {format_source}",
+ "format-bluetooth": "{volume}% {icon} {format_source}",
+ "format-bluetooth-muted": "{icon} {format_source}",
+ "format-muted": "{format_source}",
+ "format-source": "{volume}% ",
+ "format-source-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", ""]
+ },
+ "on-click": "pavucontrol-qt -t 3",
+ "on-click-middle": "amixer set Master Playback Switch toggle --quiet",
+ },
+ "custom/media": {
+ "format": "{icon} {}",
+ "return-type": "json",
+ "max-length": 40,
+ "format-icons": {
+ "spotify": "",
+ "default": "🎜"
+ },
+ "escape": true,
+ "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
+ // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
+ }
+}
+
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..11732c9
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,300 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: "Hurmit Nerd Font", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 1.1rem;
+}
+
+window#waybar {
+ background-color: rgba(43, 48, 59, 0.0);
+ /*border-bottom: 3px solid rgba(100, 114, 125, 0.5);*/
+ color: rgb(204,204,204);
+ /*padding-top: 2px;
+ margin-top: 2px;*/
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window#waybar.hidden {
+ opacity: 0.0;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ /* box-shadow: inset 0 -3px transparent; */
+ /* Avoid rounded borders under each button name */
+ border: 0px;
+ border-radius: 0px;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 3px #ffffff;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ border: 1px solid transparent; /*avoid jumping by always having a border*/
+ background-color: transparent;
+ color: #ffffff;
+ border-radius: 8px;
+ transition: linear .1s;
+}
+
+#workspaces button.empty {
+ color: rgba(255, 255, 255, .4);
+}
+
+#workspaces button:hover {
+ border: 1px solid rgba(40, 220, 255, 0.8);
+ box-shadow: inset 0 0 0 0 transparent;
+ transition: linear 0s;
+}
+#workspaces button.active {
+ color: rgba(40, 240, 255, 0.9);
+ transition: linear .1s;
+}
+
+/*#workspaces button.active {
+ border-top: 2px solid white;
+ padding-top: 1px;
+}*/
+
+#workspaces button.special.active,
+#workspaces button.special {
+ background-color: transparent;
+}
+
+#workspaces button.urgent {
+ background-color: rgba(250, 17, 55, 0.6);
+}
+
+#workspaces {
+ background-color: rgba(255, 255, 255, .1);
+ border: 1px solid;
+ border-radius: 8px;
+ padding: 1px;
+}
+
+#mode {
+ background-color: #64727D;
+ /*border-bottom: 3px solid #ffffff;*/
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#language,
+#mpd {
+ padding: 0 8px;
+ color: #909090;
+ border-radius: 0px;
+ border-top: 1rem;
+ border: solid;
+}
+#backlight,
+#battery,
+#clock,
+#tray {
+ color: #eeeeee;
+}
+
+#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;
+ border-radius: 5px;
+ margin: 2px 0;
+}
+
+#battery {
+ border-top: 2px #ffffff;
+}
+
+#battery.charging, #battery.plugged {
+ background-color: #26A65B;
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: #ffffff;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+label:focus {
+ background-color: #000000;
+}
+
+#cpu {
+ border-top: solid 2px #1de8d1;
+}
+
+/*#memory {
+ border-top: solid 2px #9b59b6;
+}*/
+
+#disk {
+ background-color: #964B00;
+}
+
+#backlight {
+ border-top: solid 2px #d1f2f2;
+}
+
+#network {
+ border-top: solid 2px #2980b9;
+}
+
+#network.disconnected {
+ border-top: 2px #f53c3c;
+}
+
+#pulseaudio {
+ border-top: 2px #f1c40f;
+ color: #1acbc4;
+}
+
+#pulseaudio.muted {
+ border-top: 2px #90b1b1;
+ color: #01534c;
+}
+
+#wireplumber {
+ color: #000000;
+}
+
+#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 {
+ border-top: 2px #f0932b;
+}
+
+#temperature.critical {
+ background-color: #eb4d4b;
+}
+
+#tray {
+ border-top: 2px #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 {
+ border-top: 2px #df73cf;
+ color: #909090;
+ padding: 0 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#keyboard-state {
+ border-top: 2px #97e1ad;
+ 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;
+}