diff --git a/configs/dotfiles/espanso/match/base.yml b/configs/dotfiles/espanso/match/base.yml
index 20dda8b..390d897 100644
--- a/configs/dotfiles/espanso/match/base.yml
+++ b/configs/dotfiles/espanso/match/base.yml
@@ -60,7 +60,11 @@ matches:
replace: "#\n#\n# Author: GibbyB (Gabriel Brown)\n#\n\nfrom typing import List\n\n\ndef main():\npass\n\n\nif __name__ == \"__main__\":\nmain()"
- trigger: ":tsblock"
- replace: "```TypeScript\n\n```"
+ replace: "```ts\n\n```"
+ force_clipboard: true
+
+ - trigger: ":tsxblock"
+ replace: "```tsx\n\n```"
force_clipboard: true
# Frequent Misspellings
@@ -76,6 +80,102 @@ matches:
- trigger: "updaet"
replace: "update"
+ - trigger: "lenght"
+ replace: "length"
+
+ - trigger: "whiel"
+ replace: "while"
+
+ - trigger: "heigth"
+ replace: "height"
+
+ - trigger: "compsoe"
+ replace: "compose"
+
+ - trigger: "compseo"
+ replace: "compose"
+
+ - trigger: "comspoe"
+ replace: "compose"
+
+ - trigger: "ocmpose"
+ replace: "compose"
+
+ - trigger: "copmose"
+ replace: "compose"
+
+ - trigger: "cmopose"
+ replace: "compose"
+
+ - trigger: "cmopoes"
+ replace: "compose"
+
+ - trigger: "compoes"
+ replace: "compose"
+
+ - trigger: "dcoker"
+ replace: "docker"
+
+ - trigger: "dcoekr"
+ replace: "docker"
+
+ - trigger: "dockre"
+ replace: "docker"
+
+ - trigger: "dokcre"
+ replace: "docker"
+
+ - trigger: "dokcer"
+ replace: "docker"
+
+ - trigger: "gborwn"
+ replace: "gbrown"
+
+ - trigger: "gbrwon"
+ replace: "gbrown"
+
+ - trigger: "gbronw"
+ replace: "gbrown"
+
+ - trigger: "grbown"
+ replace: "gbrown"
+
+ - trigger: "restrat"
+ replace: "restart"
+
+ - trigger: "resatrt"
+ replace: "restart"
+
+ - trigger: "retsart"
+ replace: "restart"
+
+ - trigger: "restatr"
+ replace: "restart"
+
+ - trigger: "restrta"
+ replace: "restart"
+
+ - trigger: "updaet"
+ replace: "update"
+
+ - trigger: "updtae"
+ replace: "update"
+
+ - trigger: "udpate"
+ replace: "update"
+
+ - trigger: "upadte"
+ replace: "update"
+
+ - trigger: "suod"
+ replace: "sudo"
+
+ - trigger: "sduo"
+ replace: "sudo"
+
+ - trigger: "sodu"
+ replace: "sudo"
+
# Good Emojis
- trigger: ":happy:"
replace: "\U0001F603"
diff --git a/configs/dotfiles/forge/config/.windows.json.~260c6b69 b/configs/dotfiles/forge/config/.windows.json.~260c6b69
new file mode 100644
index 0000000..eb4b694
--- /dev/null
+++ b/configs/dotfiles/forge/config/.windows.json.~260c6b69
@@ -0,0 +1,72 @@
+{
+ "overrides": [
+ {
+ "wmClass": "jetbrains-toolbox",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.amezin.ddterm",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.donadigo.eddy",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Conky",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Gnome-initial-setup",
+ "mode": "float"
+ },
+ {
+ "wmClass": "org.gnome.Calculator",
+ "mode": "float"
+ },
+ {
+ "wmClass": "gnome-terminal-preferences",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Guake",
+ "mode": "float"
+ },
+ {
+ "wmClass": "zoom",
+ "mode": "float"
+ },
+ {
+ "wmClass": "mpv",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Bitwarden",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Hidamari",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.mattjakeman.ExtensionManager",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Cider",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Ulauncher",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.nextcloud.desktopclient.nextcloud",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Emulator",
+ "mode": "float"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/forge/config/.windows.json.~318f7cf9 b/configs/dotfiles/forge/config/.windows.json.~318f7cf9
new file mode 100644
index 0000000..eb4b694
--- /dev/null
+++ b/configs/dotfiles/forge/config/.windows.json.~318f7cf9
@@ -0,0 +1,72 @@
+{
+ "overrides": [
+ {
+ "wmClass": "jetbrains-toolbox",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.amezin.ddterm",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.donadigo.eddy",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Conky",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Gnome-initial-setup",
+ "mode": "float"
+ },
+ {
+ "wmClass": "org.gnome.Calculator",
+ "mode": "float"
+ },
+ {
+ "wmClass": "gnome-terminal-preferences",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Guake",
+ "mode": "float"
+ },
+ {
+ "wmClass": "zoom",
+ "mode": "float"
+ },
+ {
+ "wmClass": "mpv",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Bitwarden",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Hidamari",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.mattjakeman.ExtensionManager",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Cider",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Ulauncher",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.nextcloud.desktopclient.nextcloud",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Emulator",
+ "mode": "float"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/forge/config/.windows.json.~38323208 b/configs/dotfiles/forge/config/.windows.json.~38323208
new file mode 100644
index 0000000..eb4b694
--- /dev/null
+++ b/configs/dotfiles/forge/config/.windows.json.~38323208
@@ -0,0 +1,72 @@
+{
+ "overrides": [
+ {
+ "wmClass": "jetbrains-toolbox",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.amezin.ddterm",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.donadigo.eddy",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Conky",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Gnome-initial-setup",
+ "mode": "float"
+ },
+ {
+ "wmClass": "org.gnome.Calculator",
+ "mode": "float"
+ },
+ {
+ "wmClass": "gnome-terminal-preferences",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Guake",
+ "mode": "float"
+ },
+ {
+ "wmClass": "zoom",
+ "mode": "float"
+ },
+ {
+ "wmClass": "mpv",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Bitwarden",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Hidamari",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.mattjakeman.ExtensionManager",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Cider",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Ulauncher",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.nextcloud.desktopclient.nextcloud",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Emulator",
+ "mode": "float"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/forge/config/.windows.json.~42767d6d b/configs/dotfiles/forge/config/.windows.json.~42767d6d
new file mode 100644
index 0000000..eb4b694
--- /dev/null
+++ b/configs/dotfiles/forge/config/.windows.json.~42767d6d
@@ -0,0 +1,72 @@
+{
+ "overrides": [
+ {
+ "wmClass": "jetbrains-toolbox",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.amezin.ddterm",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.donadigo.eddy",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Conky",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Gnome-initial-setup",
+ "mode": "float"
+ },
+ {
+ "wmClass": "org.gnome.Calculator",
+ "mode": "float"
+ },
+ {
+ "wmClass": "gnome-terminal-preferences",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Guake",
+ "mode": "float"
+ },
+ {
+ "wmClass": "zoom",
+ "mode": "float"
+ },
+ {
+ "wmClass": "mpv",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Bitwarden",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Hidamari",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.mattjakeman.ExtensionManager",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Cider",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Ulauncher",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.nextcloud.desktopclient.nextcloud",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Emulator",
+ "mode": "float"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/forge/config/.windows.json.~63ed4469 b/configs/dotfiles/forge/config/.windows.json.~63ed4469
new file mode 100644
index 0000000..eb4b694
--- /dev/null
+++ b/configs/dotfiles/forge/config/.windows.json.~63ed4469
@@ -0,0 +1,72 @@
+{
+ "overrides": [
+ {
+ "wmClass": "jetbrains-toolbox",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.amezin.ddterm",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.donadigo.eddy",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Conky",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Gnome-initial-setup",
+ "mode": "float"
+ },
+ {
+ "wmClass": "org.gnome.Calculator",
+ "mode": "float"
+ },
+ {
+ "wmClass": "gnome-terminal-preferences",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Guake",
+ "mode": "float"
+ },
+ {
+ "wmClass": "zoom",
+ "mode": "float"
+ },
+ {
+ "wmClass": "mpv",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Bitwarden",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Hidamari",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.mattjakeman.ExtensionManager",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Cider",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Ulauncher",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.nextcloud.desktopclient.nextcloud",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Emulator",
+ "mode": "float"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/forge/config/.windows.json.~68bf2ae6 b/configs/dotfiles/forge/config/.windows.json.~68bf2ae6
new file mode 100644
index 0000000..eb4b694
--- /dev/null
+++ b/configs/dotfiles/forge/config/.windows.json.~68bf2ae6
@@ -0,0 +1,72 @@
+{
+ "overrides": [
+ {
+ "wmClass": "jetbrains-toolbox",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.amezin.ddterm",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Com.github.donadigo.eddy",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Conky",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Gnome-initial-setup",
+ "mode": "float"
+ },
+ {
+ "wmClass": "org.gnome.Calculator",
+ "mode": "float"
+ },
+ {
+ "wmClass": "gnome-terminal-preferences",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Guake",
+ "mode": "float"
+ },
+ {
+ "wmClass": "zoom",
+ "mode": "float"
+ },
+ {
+ "wmClass": "mpv",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Bitwarden",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Hidamari",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.mattjakeman.ExtensionManager",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Cider",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Ulauncher",
+ "mode": "float"
+ },
+ {
+ "wmClass": "com.nextcloud.desktopclient.nextcloud",
+ "mode": "float"
+ },
+ {
+ "wmClass": "Emulator",
+ "mode": "float"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/forge/config/windows.json b/configs/dotfiles/forge/config/windows.json
index 258d825..eb4b694 100644
--- a/configs/dotfiles/forge/config/windows.json
+++ b/configs/dotfiles/forge/config/windows.json
@@ -36,6 +36,10 @@
"wmClass": "zoom",
"mode": "float"
},
+ {
+ "wmClass": "mpv",
+ "mode": "float"
+ },
{
"wmClass": "Bitwarden",
"mode": "float"
@@ -61,11 +65,7 @@
"mode": "float"
},
{
- "wmClass": "mpv",
- "mode": "float"
- },
- {
- "wmClass": "Spotify",
+ "wmClass": "Emulator",
"mode": "float"
}
]
diff --git a/configs/dotfiles/ghostty/config b/configs/dotfiles/ghostty/config
new file mode 100644
index 0000000..9511962
--- /dev/null
+++ b/configs/dotfiles/ghostty/config
@@ -0,0 +1,31 @@
+
+# Theme
+
+theme = tokyonight_moon
+font-family = "VictorMono Nerd Font Mono"
+font-family-bold = "VictorMono Nerd Font Mono, Bold"
+font-family-italic = "VictorMono Nerd Font Mono, Regular Italic"
+font-family-bold-italic = "VictorMono Nerd Font Mono, Bold Italic"
+font-size = 15
+background-opacity = 0.92
+background-blur = true
+
+# Keybindings
+keybind = ctrl+shift+r=reload_config
+
+## Tabs
+keybind = ctrl+shift+h=previous_tab
+keybind = ctrl+shift+l=next_tab
+keybind = ctrl+shift+j=move_tab:-1
+keybind = ctrl+shift+k=move_tab:1
+keybind = ctrl+shift+q=close_tab
+
+## Splits
+keybind = ctrl+shift+b=new_split:right
+keybind = ctrl+shift+d=new_split:down
+keybind = ctrl+shift+,=goto_split:previous
+keybind = ctrl+shift+.=goto_split:next
+keybind = ctrl+shift+up=goto_split:up
+keybind = ctrl+shift+down=goto_split:down
+keybind = ctrl+shift+left=goto_split:left
+keybind = ctrl+shift+right=goto_split:right
diff --git a/configs/dotfiles/hyprland/desktop/.config/Xresources b/configs/dotfiles/hyprland/desktop/.config/Xresources
new file mode 100644
index 0000000..6a1c856
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/Xresources
@@ -0,0 +1 @@
+Xcursor.theme: Bibata-Modern-Ice
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/app.ts b/configs/dotfiles/hyprland/desktop/.config/ags/app.ts
new file mode 100644
index 0000000..26c6a1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/app.ts
@@ -0,0 +1,11 @@
+import { App, Widget } from "astal/gtk3"
+import Calendar from "./widget/Calendar"
+import Sidebar from "./widget/Sidebar"
+
+App.start({
+ css: "./style.css",
+ main() {
+ Sidebar();
+ Calendar();
+ }
+})
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/application-exit-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/application-exit-symbolic.svg
new file mode 100644
index 0000000..66e44f1
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/application-exit-symbolic.svg
@@ -0,0 +1,4 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg
new file mode 100644
index 0000000..b1ce05f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/fileview-preview-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/fileview-preview-symbolic.svg
new file mode 100644
index 0000000..167090d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/fileview-preview-symbolic.svg
@@ -0,0 +1,13 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/image-loading-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/image-loading-symbolic.svg
new file mode 100644
index 0000000..b445ad1
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/image-loading-symbolic.svg
@@ -0,0 +1,6 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/media-playback-paused-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/media-playback-paused-symbolic.svg
new file mode 100644
index 0000000..16d5de7
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/media-playback-paused-symbolic.svg
@@ -0,0 +1,13 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/padlock2-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/padlock2-symbolic.svg
new file mode 100644
index 0000000..0d51118
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/padlock2-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg
new file mode 100644
index 0000000..541721c
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg
@@ -0,0 +1,5 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/turn-off-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/turn-off-symbolic.svg
new file mode 100644
index 0000000..db109c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/turn-off-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg
new file mode 100644
index 0000000..4536935
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg
@@ -0,0 +1,3 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-dotfiles-settings.png b/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-dotfiles-settings.png
new file mode 100644
index 0000000..938b6f7
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-dotfiles-settings.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-hyprland-settings.png b/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-hyprland-settings.png
new file mode 100644
index 0000000..c7e8e29
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-hyprland-settings.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-welcome.png b/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-welcome.png
new file mode 100644
index 0000000..7d4efe7
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ags/assets/ml4w-welcome.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/env.d.ts b/configs/dotfiles/hyprland/desktop/.config/ags/env.d.ts
new file mode 100644
index 0000000..4e7e508
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/env.d.ts
@@ -0,0 +1,21 @@
+const SRC: string
+
+declare module "inline:*" {
+ const content: string
+ export default content
+}
+
+declare module "*.scss" {
+ const content: string
+ export default content
+}
+
+declare module "*.blp" {
+ const content: string
+ export default content
+}
+
+declare module "*.css" {
+ const content: string
+ export default content
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/scripts/run_themeswitcher.sh b/configs/dotfiles/hyprland/desktop/.config/ags/scripts/run_themeswitcher.sh
new file mode 100644
index 0000000..7c20589
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/scripts/run_themeswitcher.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/waybar/themeswitcher.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/scripts/run_wallpapereffects.sh b/configs/dotfiles/hyprland/desktop/.config/ags/scripts/run_wallpapereffects.sh
new file mode 100644
index 0000000..78dcaaf
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/scripts/run_wallpapereffects.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/hypr/scripts/wallpaper-effects.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/style.css b/configs/dotfiles/hyprland/desktop/.config/ags/style.css
new file mode 100644
index 0000000..6cf06e8
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/style.css
@@ -0,0 +1,211 @@
+@import url('../../.cache/wal/colors-waybar.css');
+
+* {
+ all:unset;
+ font-size: 14px;
+ font-family: "Fira Sans", sans-serif;
+ font-weight: normal;
+}
+
+.calendar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+ min-width:320px;
+}
+
+calendar:selected {
+ background-color:@color11;
+ padding:0px;
+}
+
+.sidebar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+}
+
+.group {
+ padding:16px;
+ background-color: rgba(116, 116, 116, 0.1);
+ border-radius: 20px;
+}
+
+.ml4wwelcomeicon {
+ background:url("assets/ml4w-welcome.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4wsettingsicon {
+ background:url("assets/ml4w-dotfiles-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4whyprlandicon {
+ background:url("assets/ml4w-hyprland-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.btnbar {
+ border: 1px solid #222222;
+ padding:5px;
+ min-height:24px;
+ border-radius: 24px;
+ min-width: 24px;
+ margin:0px 2px 0px 2px;
+}
+
+.btnbar.statusbar {
+ background:url("assets/icons/image-loading-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+ background-size:20px;
+}
+
+.btnbar.wallpaper {
+ background:url("assets/icons/fileview-preview-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+ background-size:20px;
+}
+
+.btnbar.wallpapereffects {
+ background:url("assets/icons/xapp-prefs-preview-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.lock {
+ background:url("assets/icons/padlock2-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.logout {
+ background:url("assets/icons/application-exit-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.restart {
+ background:url("assets/icons/arrow-circular-top-right-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.suspend {
+ background:url("assets/icons/media-playback-paused-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.exit {
+ background:url("assets/icons/turn-off-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.midbtn {
+ background-color: @color11;
+ font-size: 12px;
+ padding:10px;
+ border-radius: 20px;
+}
+
+.AudioSlider {
+ background-color:@color11;
+ border-radius:12px;
+ margin-bottom:10px;
+}
+
+.AudioSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.AudioSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.AudioSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider {
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.MicrophoneSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.MicrophoneSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/tsconfig.json b/configs/dotfiles/hyprland/desktop/.config/ags/tsconfig.json
new file mode 100644
index 0000000..b239e15
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "compilerOptions": {
+ "experimentalDecorators": true,
+ "strict": true,
+ "target": "ES2022",
+ "module": "ES2022",
+ "moduleResolution": "Bundler",
+ // "checkJs": true,
+ // "allowJs": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "/usr/share/astal/gjs/gtk3",
+ "paths": {
+ "astal": [
+ "/usr/share/astal/gjs"
+ ],
+ "astal/*": [
+ "/usr/share/astal/gjs/*"
+ ]
+ },
+ }
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/widget/Bar.tsx b/configs/dotfiles/hyprland/desktop/.config/ags/widget/Bar.tsx
new file mode 100644
index 0000000..ed1d845
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/widget/Bar.tsx
@@ -0,0 +1,29 @@
+import { App, Astal, Gtk, Gdk } from "astal/gtk3"
+import { Variable } from "astal"
+
+const time = Variable("").poll(1000, "date")
+
+export default function Bar(gdkmonitor: Gdk.Monitor) {
+ return
+
+
+
+
+
+
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/widget/Brightness.tsx b/configs/dotfiles/hyprland/desktop/.config/ags/widget/Brightness.tsx
new file mode 100644
index 0000000..86214f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/widget/Brightness.tsx
@@ -0,0 +1,72 @@
+// Thanks to https://gitlab.com/filippoaceto/
+import GObject, { register, property } from "astal/gobject"
+import { monitorFile, readFileAsync } from "astal/file"
+import { exec, execAsync } from "astal/process"
+
+const get = (args: string) => Number(exec(`brightnessctl ${args}`))
+const screen = exec(`bash -c "ls -w1 /sys/class/backlight | head -1"`)
+const kbd = exec(`bash -c "ls -w1 /sys/class/leds | head -1"`)
+
+@register({ GTypeName: "Brightness" })
+export default class Brightness extends GObject.Object {
+ static instance: Brightness
+ static get_default() {
+ if (!this.instance)
+ this.instance = new Brightness()
+
+ return this.instance
+ }
+
+ #kbdMax = get(`--device ${kbd} max`)
+ #kbd = get(`--device ${kbd} get`)
+ #screenMax = get("max")
+ #screen = get("get") / (get("max") || 1)
+
+ @property(Number)
+ get kbd() { return this.#kbd }
+
+ set kbd(value) {
+ if (value < 0 || value > this.#kbdMax)
+ return
+ execAsync(`brightnessctl -d ${kbd} s ${value} -q`).then(() => {
+ this.#kbd = value
+ this.notify("kbd")
+ })
+ }
+
+ @property(Number)
+ get screen() { return this.#screen }
+
+ set screen(percent) {
+ if (percent < 0)
+ percent = 0
+
+ if (percent > 1)
+ percent = 1
+
+ if (Math.floor(percent * 100) > 1)
+ execAsync(`brightnessctl set ${Math.floor(percent * 100)}% -q`).then(() => {
+ this.#screen = percent
+ this.notify("screen")
+ })
+ }
+
+ constructor() {
+ super()
+
+ const screenPath = `/sys/class/backlight/${screen}/brightness`
+ const kbdPath = `/sys/class/leds/${kbd}/brightness`
+
+ monitorFile(screenPath, async f => {
+ const v = await readFileAsync(f)
+ this.#screen = Number(v) / this.#screenMax
+ this.notify("screen")
+ })
+
+ monitorFile(kbdPath, async f => {
+ const v = await readFileAsync(f)
+ this.#kbd = Number(v) / this.#kbdMax
+ this.notify("kbd")
+ })
+ }
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/widget/Calendar.tsx b/configs/dotfiles/hyprland/desktop/.config/ags/widget/Calendar.tsx
new file mode 100644
index 0000000..263a77e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/widget/Calendar.tsx
@@ -0,0 +1,42 @@
+import { GObject } from "astal";
+import { astalify, ConstructProps, App, Astal, Gdk, Gtk } from "astal/gtk3"
+
+class CalendarGtk extends astalify(Gtk.Calendar) {
+ static {
+ GObject.registerClass(this);
+ }
+
+ constructor(
+ props: ConstructProps,
+ ) {
+ super(props as any);
+ }
+}
+
+export default function Calendar() {
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+ {new CalendarGtk({
+ hexpand: true,
+ vexpand: true,
+ showDayNames: true,
+ showDetails: false,
+ showHeading: true,
+ showWeekNumbers: true
+ })}
+
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/ags/widget/Sidebar.tsx b/configs/dotfiles/hyprland/desktop/.config/ags/widget/Sidebar.tsx
new file mode 100644
index 0000000..d2672ba
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ags/widget/Sidebar.tsx
@@ -0,0 +1,167 @@
+import { App } from "astal/gtk3"
+import Apps from "gi://AstalApps"
+import Wp from "gi://AstalWp"
+import { Variable, GLib, bind } from "astal"
+import { subprocess, exec, execAsync } from "astal/process"
+import { Astal, Gtk, Gdk } from "astal/gtk3"
+import Brightness from "./Brightness"
+
+function BrightnessSlider() {
+ const brightness = Brightness.get_default()
+
+ return
+ brightness.screen = value}
+ />
+
+}
+
+function AudioSlider() {
+ const speaker = Wp.get_default()?.audio.defaultSpeaker!
+
+ return
+ speaker.volume = value}
+ value={bind(speaker, "volume")}
+ />
+
+}
+
+function MicrophoneSlider() {
+ const microphone = Wp.get_default()?.audio.defaultMicrophone!
+
+ return
+ microphone.volume = value}
+ value={bind(microphone, "volume")}
+ />
+
+}
+
+function openwelcomeapp() {
+ execAsync("com.ml4w.welcome")
+ App.get_window("sidebar")!.hide()
+}
+
+function opensettingsapp() {
+ execAsync("com.ml4w.dotfilessettings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openhyprlandapp() {
+ execAsync("com.ml4w.hyprland.settings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpaper() {
+ const proc = subprocess(["bash", "-c", "waypaper"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpapereffects() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/wallpaper-effects.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwaybarthemes() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/waybar/themeswitcher.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerlock() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh lock"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerlogout() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh exit"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powersuspend() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh suspend"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerrestart() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh reboot"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerexit() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh shutdown"])
+ App.get_window("sidebar")!.hide()
+}
+
+export default function Sidebar() {
+
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/dunst/dunstrc b/configs/dotfiles/hyprland/desktop/.config/dunst/dunstrc
new file mode 100644
index 0000000..ed3be7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/dunst/dunstrc
@@ -0,0 +1,469 @@
+# _ _
+# __| |_ _ _ __ ___| |_
+# / _` | | | | '_ \/ __| __|
+# | (_| | |_| | | | \__ \ |_
+# \__,_|\__,_|_| |_|___/\__|
+#
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# 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 = (0,300)
+
+ # Position the notification in the top right corner
+ origin = top-center
+
+ # Offset from the origin
+ offset = 30x30
+
+ # Scale factor. It is auto-detected if value is 0.
+ scale = 0
+
+ # Maximum number of notification (0 means no limit)
+ notification_limit = 20
+
+ ### 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
+
+ # Corner radius for the progress bar. 0 disables rounded corners.
+ progress_bar_corner_radius = 10
+
+ # Corner radius for the icon image.
+ icon_corner_radius = 0
+
+ # 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 = 30
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ # If gap_size is greater than 0, this setting will be ignored.
+ 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 = "#ffffff"
+
+ # Size of gap to display between notifications - requires a compositor.
+ # If value is greater than 0, separator_height will be ignored and a border
+ # of size frame_width will be drawn around each notification instead.
+ # Click events on gaps do not currently propagate to applications below.
+ gap_size = 0
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ # A client can set the 'transient' hint to bypass this. See the rules
+ # section for how to disable this if necessary
+ # idle_threshold = 120
+
+ ### Text ###
+
+ font = "Fira Sans Semibold" 9
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
+ line_height = 1
+
+ # Possible values are:
+ # full: Allow a small subset of html markup in notifications:
+ # bold
+ # italic
+ # strikethrough
+ # underline
+ #
+ # For a complete reference see
+ # .
+ #
+ # strip: This setting is provided for compatibility with some broken
+ # clients that send markup even though it's not enabled on the
+ # server. Dunst will try to strip the markup but the parsing is
+ # simplistic so using this option outside of matching rules for
+ # specific applications *IS GREATLY DISCOURAGED*.
+ #
+ # no: Disable markup parsing, incoming notifications will be treated as
+ # plain text. Dunst will not advertise that it has the body-markup
+ # capability if this is set as a global setting.
+ #
+ # It's important to note that markup inside the format option will be parsed
+ # regardless of what this is set to.
+ markup = full
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "%s\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 = false
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = yes
+
+ ### Icons ###
+
+ # Recursive icon lookup. You can set a single theme, instead of having to
+ # define all lookup paths.
+ enable_recursive_icon_lookup = true
+
+ # Set icon theme (only used for recursive icon lookup)
+ icon_theme = "Papirus-Dark,Adwaita"
+ # You can also set multiple icon themes, with the leftmost one being used first.
+ # icon_theme = "Adwaita, breeze"
+
+ # Align icons left/right/top/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 = 32
+
+ # Scale larger icons down to this size, set to 0 to disable
+ max_icon_size = 128
+
+ # Paths to default icons (only neccesary when not using recursive icon lookup)
+ icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+ ### History ###
+
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = yes
+
+ # Maximum amount of notifications kept in history
+ history_length = 20
+
+ ### Misc/Advanced ###
+
+ # dmenu path.
+ dmenu = /usr/bin/dmenu -p dunst:
+
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/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 = 10
+
+ # Ignore the dbus closeNotification message.
+ # Useful to enforce the timeout set by dunst configuration. Without this
+ # parameter, an application may close the notification sent before the
+ # user defined timeout.
+ ignore_dbusclose = false
+
+ ### Wayland ###
+ # These settings are Wayland-specific. They have no effect when using X11
+
+ # Uncomment this if you want to let notications appear under fullscreen
+ # applications (default: overlay)
+ # layer = top
+
+ # Set this to true to use X11 output on Wayland.
+ force_xwayland = false
+
+ ### Legacy
+
+ # Use the Xinerama extension instead of RandR for multi-monitor support.
+ # This setting is provided for compatibility with older nVidia drivers that
+ # do not support RandR and using it on systems that support RandR is highly
+ # discouraged.
+ #
+ # By enabling this setting dunst will not be able to detect when a monitor
+ # is connected or disconnected which might break follow mode if the screen
+ # layout changes.
+ force_xinerama = false
+
+ ### mouse
+
+ # Defines list of actions for each mouse event
+ # Possible values are:
+ # * none: Don't do anything.
+ # * do_action: Invoke the action determined by the action_name rule. If there is no
+ # such action, open the context menu.
+ # * open_url: If the notification has exactly one url, open it. If there are multiple
+ # ones, open the context menu.
+ # * close_current: Close current notification.
+ # * close_all: Close all notifications.
+ # * context: Open context menu for the notification.
+ # * context_all: Open context menu for all notifications.
+ # These values can be strung together for each mouse event, and
+ # will be executed in sequence.
+ mouse_left_click = close_current
+ mouse_middle_click = do_action, close_current
+ mouse_right_click = close_all
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+ # Calculate the dpi to use on a per-monitor basis.
+ # If this setting is enabled the Xft.dpi value will be ignored and instead
+ # dunst will attempt to calculate an appropriate dpi value for each monitor
+ # using the resolution and physical size. This might be useful in setups
+ # where there are multiple screens with very different dpi values.
+ per_monitor_dpi = false
+
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#000000CC"
+ foreground = "#888888"
+ timeout = 6
+ # Icon for notifications with low urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_normal]
+ background = "#000000CC"
+ foreground = "#ffffff"
+ timeout = 6
+ # Icon for notifications with normal urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_critical]
+ background = "#900000CC"
+ foreground = "#ffffff"
+ frame_color = "#ffffff"
+ timeout = 6
+ # Icon for notifications with critical urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+#
+# Messages can be matched by
+# appname (discouraged, see desktop_entry)
+# body
+# category
+# desktop_entry
+# icon
+# match_transient
+# msg_urgency
+# stack_tag
+# summary
+#
+# and you can override the
+# background
+# foreground
+# format
+# frame_color
+# fullscreen
+# new_icon
+# set_stack_tag
+# set_transient
+# set_category
+# timeout
+# urgency
+# icon_position
+# skip_display
+# history_ignore
+# action_name
+# word_wrap
+# ellipsize
+# alignment
+# hide_text
+#
+# 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/configs/dotfiles/hyprland/desktop/.config/fastfetch/config.jsonc b/configs/dotfiles/hyprland/desktop/.config/fastfetch/config.jsonc
new file mode 100644
index 0000000..658682c
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/fastfetch/config.jsonc
@@ -0,0 +1,104 @@
+// Thanks to Bina
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "padding": {
+ "top": 2
+ }
+ },
+ "display": {
+ "separator": " ➜ "
+ },
+ "modules": [
+ "break",
+ "break",
+ "break",
+ {
+ "type": "os",
+ "key": "OS ",
+ "keyColor": "31", // = color1
+ },
+ {
+ "type": "kernel",
+ "key": " ├ ",
+ "keyColor": "31",
+ },
+ {
+ "type": "shell",
+ "key": " └ ",
+ "keyColor": "31",
+ },
+ "break",
+ {
+ "type": "wm",
+ "key": "WM ",
+ "keyColor": "32",
+ },
+ {
+ "type": "wmtheme",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "icons",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "cursor",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminal",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminalfont",
+ "key": " └ ",
+ "keyColor": "32",
+ },
+ "break",
+ {
+ "type": "host",
+ "format": "{5} {1} Type {2}",
+ "key": "PC ",
+ "keyColor": "33",
+ },
+ {
+ "type": "cpu",
+ "format": "{1} ({3}) @ {7} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "gpu",
+ "format": "{1} {2} @ {12} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "memory",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "swap",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "disk",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "monitor",
+ "key": " └ ",
+ "keyColor": "33",
+ },
+ "break",
+ "break",
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/animation.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/animation.conf
new file mode 100644
index 0000000..5909926
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/animation.conf
@@ -0,0 +1,125 @@
+# -----------------------------------------------------
+# "Dynamic" (default)
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, once
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
+# -----------------------------------------------------
+# "Disabled"
+# -----------------------------------------------------
+#animations {
+ #enabled = false
+#}
+# -----------------------------------------------------
+# "Standard"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ #animation = windows, 1, 7, myBezier
+ #animation = windowsOut, 1, 7, default, popin 80%
+ #animation = border, 1, 10, default
+ #animation = borderangle, 1, 8, default
+ #animation = fade, 1, 7, default
+ #animation = workspaces, 1, 6, default
+#}
+# -----------------------------------------------------
+# "Dynamic"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = wind, 0.05, 0.9, 0.1, 1.05
+ #bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ #bezier = winOut, 0.3, -0.3, 0, 1
+ #bezier = liner, 1, 1, 1, 1
+ #animation = windows, 1, 6, wind, slide
+ #animation = windowsIn, 1, 6, winIn, slide
+ #animation = windowsOut, 1, 5, winOut, slide
+ #animation = windowsMove, 1, 5, wind, slide
+ #animation = border, 1, 1, liner
+ #animation = borderangle, 1, 30, liner, loop
+ #animation = fade, 1, 10, default
+ #animation = workspaces, 1, 5, wind
+#}
+# -----------------------------------------------------
+# "Classic"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ #animation = windows, 1, 7, myBezier
+ #animation = windowsOut, 1, 7, default, popin 80%
+ #animation = border, 1, 10, default
+ #animation = borderangle, 1, 8, default
+ #animation = fade, 1, 7, default
+ #animation = workspaces, 1, 6, default
+#}
+# -----------------------------------------------------
+# "Fast"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = linear, 0, 0, 1, 1
+ #bezier = md3_standard, 0.2, 0, 0, 1
+ #bezier = md3_decel, 0.05, 0.7, 0.1, 1
+ #bezier = md3_accel, 0.3, 0, 0.8, 0.15
+ #bezier = overshot, 0.05, 0.9, 0.1, 1.1
+ #bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
+ #bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
+ #bezier = fluent_decel, 0.1, 1, 0, 1
+ #bezier = easeInOutCirc, 0.85, 0, 0.15, 1
+ #bezier = easeOutCirc, 0, 0.55, 0.45, 1
+ #bezier = easeOutExpo, 0.16, 1, 0.3, 1
+ #animation = windows, 1, 3, md3_decel, popin 60%
+ #animation = border, 1, 10, default
+ #animation = fade, 1, 2.5, md3_decel
+ #animation = workspaces, 1, 3.5, easeOutExpo, slide
+ #animation = specialWorkspace, 1, 3, md3_decel, slidevert
+#}
+# -----------------------------------------------------
+# "High"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = wind, 0.05, 0.9, 0.1, 1.05
+ #bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ #bezier = winOut, 0.3, -0.3, 0, 1
+ #bezier = liner, 1, 1, 1, 1
+ #animation = windows, 1, 6, wind, slide
+ #animation = windowsIn, 1, 6, winIn, slide
+ #animation = windowsOut, 1, 5, winOut, slide
+ #animation = windowsMove, 1, 5, wind, slide
+ #animation = border, 1, 1, liner
+ #animation = borderangle, 1, 30, liner, loop
+ #animation = fade, 1, 10, default
+ #animation = workspaces, 1, 5, wind
+#}
+# -----------------------------------------------------
+# "Moving"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = overshot, 0.05, 0.9, 0.1, 1.05
+ #bezier = smoothOut, 0.5, 0, 0.99, 0.99
+ #bezier = smoothIn, 0.5, -0.5, 0.68, 1.5
+ #animation = windows, 1, 5, overshot, slide
+ #animation = windowsOut, 1, 3, smoothOut
+ #animation = windowsIn, 1, 3, smoothOut
+ #animation = windowsMove, 1, 4, smoothIn, slide
+ #animation = border, 1, 5, default
+ #animation = fade, 1, 5, smoothIn
+ #animation = fadeDim, 1, 5, smoothIn
+ #animation = workspaces, 1, 6, default
+#}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/autostart.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/autostart.conf
new file mode 100644
index 0000000..34205a6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/autostart.conf
@@ -0,0 +1,48 @@
+# ___ __ __ __
+# / _ |__ __/ /____ ___ / /____ _____/ /_
+# / __ / // / __/ _ \(_- __/ _ `/ __/ __/
+# /_/ |_\_,_/\__/\___/___/\__/\_,_/_/ \__/
+#
+
+# Setup XDG for screen sharing and start waypaper and waybar
+exec-once = ~/.config/hypr/scripts/xdg.sh
+
+# Load Wallpaper
+exec-once = ~/.config/hypr/scripts/wallpaper-restore.sh
+
+# Start Polkit
+exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+
+# Load Notification Daemon
+exec-once = ~/.config/ml4w/settings/notification.sh
+
+# Load GTK settings
+exec-once = ~/.config/hypr/scripts/gtk.sh
+
+# Using hypridle to start hyprlock
+exec-once = hypridle
+
+# Load cliphist history
+exec-once = wl-paste --watch cliphist store
+
+# Autostart ML4W App
+exec-once = ~/.config/ml4w/scripts/ml4w-autostart.sh
+
+# Start ags
+exec-once = ~/.config/ml4w/scripts/ags.sh
+
+# Start autostart cleanup
+exec-once = ~/.config/hypr/scripts/cleanup.sh
+
+# Load configuration from ML4W Hyprland Settings App
+exec = ~/.config/ml4w-hyprland-settings/hyprctl.sh
+
+# Dock
+exec-once = ~/.config/nwg-dock-hyprland/launch.sh
+
+# Apps
+exec-once = nextcloud --background
+exec-once = bitwarden
+exec-once = startsunshine
+exec-once = /home/gib/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox --minimize
+exec-once = flatpak run app.bluebubbles.BlueBubbles minimized
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/custom.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/custom.conf
new file mode 100644
index 0000000..1e24aae
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/custom.conf
@@ -0,0 +1,24 @@
+# Add your additional Hyprland configurations here
+#
+# This is an additional key binding
+# bind = $mainMod CTRL, up, workspace, empty
+#
+# Example for xwayland
+# xwayland {
+# force_zero_scaling = true
+# }
+
+# qt5ct environment variable
+# env = QT_QPA_PLATFORMTHEME,qt5ct
+
+# SDL version
+env = SDL_VIDEODRIVER,wayland
+# env = SDL_VIDEODRIVER,x11
+
+# No Hardware Cursor
+# cursor {
+# no_hardware_cursors = false
+# }
+
+# Blur for waybar
+#layerrule = blur, waybar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/decoration.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/decoration.conf
new file mode 100644
index 0000000..177914e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/decoration.conf
@@ -0,0 +1,168 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
+# -----------------------------------------------------
+# Rounding
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 1.0
+ #inactive_opacity = 0.8
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 6
+ #passes = 2
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding All Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 0.9
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 0.9
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 4
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ #blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding, All Blur No Shadows
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 0.9
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 0.9
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 4
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ #blurls = waybar
+ #}
+ #shadow {
+ #enabled = false
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding, More Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 1.0
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 6
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# No Rounding
+# -----------------------------------------------------
+#decoration {
+ #rounding = 0
+ #active_opacity = 1.0
+ #inactive_opacity = 0.8
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 6
+ #passes = 2
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# No Rounding, More Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 0
+ #active_opacity = 1.0
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 6
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/keybinding.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/keybinding.conf
new file mode 100644
index 0000000..b133ecb
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/keybinding.conf
@@ -0,0 +1,122 @@
+# -----------------------------------------------------
+# Keybingings
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# SUPER KEY
+# -----------------------------------------------------
+$mainMod = SUPER
+
+# -----------------------------------------------------
+# VARIABLES
+# -----------------------------------------------------
+$HYPRSCRIPTS = ~/.config/hypr/scripts
+$SCRIPTS = ~/.config/ml4w/scripts
+
+# -----------------------------------------------------
+# DEFAULT APPLICATIONS
+# -----------------------------------------------------
+$terminal = kitty
+$fileManager = nautilus
+$browser = firefox
+$menu = pkill rofi || rofi -show drun -replace
+$calculator = gnome-calculator
+
+# -----------------------------------------------------
+# DEFAULT COMMANDS
+# -----------------------------------------------------
+$quitwindow = killactive
+$forcequit = hyprctl activewindow | grep pid | tr -d 'pid:' | xargs kill
+
+# -----------------------------------------------------
+# DEFAULT APPLICATION BINDINGS
+# -----------------------------------------------------
+bind = $mainMod, T, exec, $terminal
+bind = $mainMod, W, exec, $browser
+bind = $mainMod, F, exec, $fileManager
+bind = $mainMod, C, exec, $calculator
+bind = $mainMod, D, exec, $menu
+
+# -----------------------------------------------------
+# DEFAULT WINDOW BINDINGS
+# -----------------------------------------------------
+bind = $mainMod, Q, $quitwindow
+bind = $mainMod SHIFT, Q, exec, $forcequit
+bind = $mainMod, M, fullscreen, 1
+bind = $mainMod SHIFT, M, fullscreen, 0
+bind = $mainMod, E, togglefloating
+bind = $mainMod SHIFT, E, exec, $HYPRSCRIPTS/toggleallfloat.sh
+bind = $mainMod, X, togglesplit
+bind = $mainMod, Z, swapsplit
+bind = $mainMod, H, movefocus, l
+bind = $mainMod, L, movefocus, r
+bind = $mainMod, K, movefocus, u
+bind = $mainMod, J, movefocus, d
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+bind = $mainMod CTRL, L, resizeactive, 100 0
+bind = $mainMod CTRL, H, resizeactive, -100 0
+bind = $mainMod CTRL, J, resizeactive, 0 100
+bind = $mainMod CTRL, K, resizeactive, 0 -100
+bind = $mainMod, G, togglegroup
+
+# -----------------------------------------------------
+# ACTIONS
+# -----------------------------------------------------
+bind = $mainMod SHIFT, A, exec, $HYPRSCRIPTS/toggle-animations.sh
+bind = $mainMod, PRINT, exec, $HYPRSCRIPTS/screenshot.sh
+bind = $mainMod SHIFT, S, exec, $HYPRSCRIPTS/screenshot.sh
+bind = $mainMod CTRL, Q, exec, ~/.config/ml4w/scripts/wlogout.sh
+bind = $mainMod SHIFT, W, exec, waypaper --random
+bind = $mainMod CTRL, W, exec, waypaper
+bind = $mainMod ALT, W, exec, $HYPERSCRIPTS/wallpaper-automation.sh
+bind = $mainMod SHIFT, R, exec, $HYPRSCRIPTS/loadconfig.sh
+bind = $mainMod, V, exec, $SCRIPTS/cliphist.sh
+bind = $mainMod SHIFT, B, exec, ~/.config/waybar/launch.sh
+bind = $mainMod CTRL, B, exec, ~/.config/waybar/toggle.sh
+bind = $mainMod CTRL, T, exec, ~/.config/waybar/themeswitcher.sh
+bind = $mainMod CTRL, S, exec, ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
+
+# -----------------------------------------------------
+# WORKSPACES
+# -----------------------------------------------------
+# Move to workspace from left to right
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace,
+bind = $mainMod CTRL, down, workspace, empty
+# Open workspace by number
+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
+# Move active window to workspace from left to right
+bind = $mainMod SHIFT, H, movetoworkspace, -1
+bind = $mainMod SHIFT, L, movetoworkspace, +1
+# Move active window to workspace by number
+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
+
+# -----------------------------------------------------
+# Fn Keys
+# -----------------------------------------------------
+bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%-
+bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
+bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
+bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
+bind = , XF86AudioPlay, exec, playerctl play-pause
+bind = , XF86AudioPause, exec, playerctl pause
+bind = , XF86AudioNext, exec, playerctl next
+bind = , XF86AudioPrev, exec, playerctl previous
+bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
+bind = , XF86Calculator, exec, $calculator
+bind = , XF86Lock, exec, hyprlock
+
+bind = , code:238, exec, brightnessctl -d smc::kbd_backlight s +10
+bind = , code:237, exec, brightnessctl -d smc::kbd_backlight s 10-
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/keyboard.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/keyboard.conf
new file mode 100644
index 0000000..1b57d6f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/keyboard.conf
@@ -0,0 +1,35 @@
+# -----------------------------------------------------
+# Keyboard Layout
+# https://wiki.hyprland.org/Configuring/Variables/#input
+# -----------------------------------------------------
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ numlock_by_default = true
+ mouse_refocus = false
+
+ # For United States
+ # kb_layout = us
+ # kb_variant = intl
+ # kb_model = pc105
+ # kb_options =
+
+ follow_mouse = 1
+ touchpad {
+ # for desktop
+ natural_scroll = false
+
+ # for laptop
+ # natural_scroll = yes
+ # middle_button_emulation = true
+ # clickfinger_behavior = false
+ scroll_factor = 1.0 # Touchpad scroll factor
+ }
+ sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification.
+}
+
+gestures {
+ workspace_swipe = true
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/layout.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/layout.conf
new file mode 100644
index 0000000..0ecfff8
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/layout.conf
@@ -0,0 +1,45 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+master {
+ # Commented out due to compatibility reasons
+ # new_status = master
+}
+gestures {
+ workspace_swipe = false
+}
+binds {
+ workspace_back_and_forth = true
+ allow_workspace_cycles = true
+ pass_mouse_when_bound = false
+}
+# -----------------------------------------------------
+# Laptop
+# -----------------------------------------------------
+#dwindle {
+ #pseudotile = true
+ #preserve_split = true
+#}
+#master {
+ ## Commented out due to compatibility reasons
+ ## new_status = master
+#}
+#gestures {
+ #workspace_swipe = true
+ #workspace_swipe_fingers = 3
+ #workspace_swipe_distance = 500
+ #workspace_swipe_invert = true
+ #workspace_swipe_min_speed_to_force = 30
+ #workspace_swipe_cancel_ratio = 0.5
+ #workspace_swipe_create_new = true
+ #workspace_swipe_forever = true
+#}
+#binds {
+ #workspace_back_and_forth = true
+ #allow_workspace_cycles = true
+ #pass_mouse_when_bound = false
+#}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/misc.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/misc.conf
new file mode 100644
index 0000000..f287a4b
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/misc.conf
@@ -0,0 +1,8 @@
+# -----------------------------------------------------
+# Misc settings
+# -----------------------------------------------------
+misc {
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ initial_workspace_tracking = 1
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/ml4w.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/ml4w.conf
new file mode 100644
index 0000000..813390a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/ml4w.conf
@@ -0,0 +1,124 @@
+# __ _____ _____ __ _____ ___
+# / |/ / / / / / | /| / / / ___/__ ___ / _/
+# / /|_/ / /_/_ _/ |/ |/ / / /__/ _ \/ _ \/ _/
+# /_/ /_/____//_/ |__/|__/ \___/\___/_//_/_/
+#
+
+# Pavucontrol floating
+windowrulev2 = float,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = size 700 600,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = center,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = pin,class:(.*org.pulseaudio.pavucontrol.*)
+
+# OpenAI ChatGPT floating
+windowrulev2 = float,title:(ChatGPT.*)
+windowrulev2 = float,title:(.*chat.gibbyb.com.*)
+windowrulev2 = size 500 50%,title:(.*chat.gibbyb.com.*)
+windowrulev2 = move 20 70,title:(.*chat.gibbyb.com.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(.*waypaper.*)
+windowrulev2 = size 900 700,class:(.*waypaper.*)
+windowrulev2 = center,class:(.*waypaper.*)
+windowrulev2 = pin,class:(.*waypaper.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(com.ml4w.welcome)
+windowrulev2 = size 700 600,class:(com.ml4w.welcome)
+windowrulev2 = center,class:(com.ml4w.welcome)
+windowrulev2 = pin,class:(com.ml4w.welcome)
+
+windowrulev2 = float,class:(ml4w-welcome.py)
+windowrulev2 = size 400 500,class:(ml4w-welcome.py)
+windowrulev2 = center,class:(ml4w-welcome.py)
+windowrulev2 = pin,class:(ml4w-welcome.py)
+
+# ML4W Settings App floating
+windowrulev2 = float,class:(com.ml4w.dotfilessettings)
+windowrulev2 = size 700 600,class:(com.ml4w.dotfilessettings)
+windowrulev2 = move 10% 20%,class:(com.ml4w.dotfilessettings)
+windowrulev2 = pin,class:(com.ml4w.dotfilessettings)
+
+windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = pin,class:(ml4w-dotfiles-settings.py)
+
+# ML4W Hyprland App floating
+windowrulev2 = float,class:(com.ml4w.hyprland.settings)
+windowrulev2 = size 700 600,class:(com.ml4w.hyprland.settings)
+windowrulev2 = center,class:(com.ml4w.hyprland.settings)
+windowrulev2 = pin,class:(com.ml4w.hyprland.settings)
+
+windowrulev2 = float,class:(ml4w-hyprland-settings.py)
+windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py)
+windowrulev2 = center,class:(ml4w-hyprland-settings.py)
+windowrulev2 = pin,class:(ml4w-hyprland-settings.py)
+
+# System Mission Center
+windowrulev2 = float, class:(io.missioncenter.MissionCenter)
+windowrulev2 = pin, class:(io.missioncenter.MissionCenter)
+windowrulev2 = center, class:(io.missioncenter.MissionCenter)
+windowrulev2 = size 900 600, class:(io.missioncenter.MissionCenter)
+
+# System Mission Center Preference Window
+windowrulev2 = float, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = pin, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = center, class:(missioncenter), title:^(Preferences)$
+
+# Gnome Calculator
+windowrulev2 = float,class:(org.gnome.Calculator)
+windowrulev2 = size 700 600,class:(org.gnome.Calculator)
+windowrulev2 = center,class:(org.gnome.Calculator)
+
+# Emoji Picker Smile
+windowrulev2 = float,class:(it.mijorus.smile)
+windowrulev2 = pin, class:(it.mijorus.smile)
+windowrulev2 = move 100%-w-40 90,class:(it.mijorus.smile)
+
+# Hyprland Share Picker
+windowrulev2 = float, class:(hyprland-share-picker)
+windowrulev2 = pin, class:(hyprland-share-picker)
+windowrulev2 = center, title:class:(hyprland-share-picker)
+windowrulev2 = size 600 400,class:(hyprland-share-picker)
+
+# General floating
+windowrulev2 = float,class:(dotfiles-floating)
+windowrulev2 = size 1000 700,class:(dotfiles-floating)
+windowrulev2 = center,class:(dotfiles-floating)
+windowrulev2 = pin, class:(dotfiles-floating)
+
+# XDG Desktop Portal
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+
+# QT
+env = QT_QPA_PLATFORM,wayland;xcb
+env = QT_QPA_PLATFORMTHEME,qt6ct
+env = QT_QPA_PLATFORMTHEME,qt5ct
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+
+# GDK
+env = GDK_SCALE,1
+
+# Toolkit Backend
+env = GDK_BACKEND,wayland,x11,*
+env = CLUTTER_BACKEND,wayland
+
+# Mozilla
+env = MOZ_ENABLE_WAYLAND,1
+
+# Set the cursor size for xcursor
+env = XCURSOR_SIZE,24
+
+# Disable appimage launcher by default
+env = APPIMAGELAUNCHER_DISABLE,1
+
+# Ozone
+env = OZONE_PLATFORM,wayland
+env = ELECTRON_OZONE_PLATFORM_HINT,wayland
+
+# Python
+# env = PYTHONPATH,/usr/lib/python3.12/site-packages:/usr/lib/python3.13/site-packages:$PYTHONPATH
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/nvidia.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/nvidia.conf
new file mode 100644
index 0000000..a0616c9
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/nvidia.conf
@@ -0,0 +1,20 @@
+# -----------------------------------------------------
+# NVIDIA Environment Variables
+# https://wiki.hyprland.org/Nvidia/
+# -----------------------------------------------------
+env = GBM_BACKEND,nvidia-drm
+env = LIBVA_DRIVER_NAME,nvidia
+env = SDL_VIDEODRIVER,wayland
+env = WLR_DRM_NO_ATOMIC,1
+env = __GL_VRR_ALLOWED,1
+env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+env = __NV_PRIME_RENDER_OFFLOAD,1
+env = __VK_LAYER_NV_optimus,NVIDIA_only
+# FOR VM and POSSIBLY NVIDIA
+env = WLR_NO_HARDWARE_CURSORS,1 # On hyprland >v0.41, now configured on variable cursor section
+env = WLR_RENDERER_ALLOW_SOFTWARE,1
+# nvidia firefox (for hardware acceleration on FF)?
+# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration
+env = MOZ_DISABLE_RDD_SANDBOX,1
+env = EGL_PLATFORM,wayland
+env = ELECTRON_OZONE_PLATFORM_HINT,auto
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/conf/window.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/window.conf
new file mode 100644
index 0000000..9f998bd
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/conf/window.conf
@@ -0,0 +1,49 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
+# -----------------------------------------------------
+# No Border
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 0
+ #col.active_border = $color11
+ #col.inactive_border = rgba(ffffffff)
+ #layout = dwindle
+ #resize_on_border = true
+#}
+# -----------------------------------------------------
+# Border 1
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 1
+ #col.active_border = $color11
+ #col.inactive_border = rgba(ffffffff)
+ #layout = dwindle
+ #resize_on_border = true
+#}
+# -----------------------------------------------------
+# Border 1 Reverse
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 1
+ #col.active_border = rgba(ffffffff)
+ #col.inactive_border = $color11
+ #layout = dwindle
+ #resize_on_border = true
+#}
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite
new file mode 100644
index 0000000..0f985b3
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite
@@ -0,0 +1 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-blur b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-blur
new file mode 100644
index 0000000..85a5a51
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-blur
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness40 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness40
new file mode 100644
index 0000000..97cafb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness60 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness60
new file mode 100644
index 0000000..3dc7788
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness80 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness80
new file mode 100644
index 0000000..67bb0ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blackwhite-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1
new file mode 100644
index 0000000..f401e1a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1
@@ -0,0 +1 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness40 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness40
new file mode 100644
index 0000000..d79704a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness60 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness60
new file mode 100644
index 0000000..73028f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness80 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness80
new file mode 100644
index 0000000..c1984aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur1-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur2 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur2
new file mode 100644
index 0000000..cb13630
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/blur2
@@ -0,0 +1 @@
+magick $wallpaper -blur "10x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate
new file mode 100644
index 0000000..971c7aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate
@@ -0,0 +1 @@
+magick $wallpaper -negate $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness40 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness40
new file mode 100644
index 0000000..f6b8bd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness60 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness60
new file mode 100644
index 0000000..bf45cd6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness80 b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness80
new file mode 100644
index 0000000..2d342c1
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/effects/wallpaper/negate-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/hypridle.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/hypridle.conf
new file mode 100644
index 0000000..d02b4ea
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/hypridle.conf
@@ -0,0 +1,47 @@
+# _ _ _ _
+# | |__ _ _ _ __ _ __(_) __| | | ___
+# | '_ \| | | | '_ \| '__| |/ _` | |/ _ \
+# | | | | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+# Version 2.8.3
+# DO NOT REMOVE THE REPLACEMENT COMMENTS
+# REQUIRED BY THE ML4W SETTINGS APP
+# https://wiki.hyprland.org/Hypr-Ecosystem/hypridle/
+
+# general {
+# ignore_dbus_inhibit = false
+# }
+
+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.
+}
+
+# Screenlock
+listener {
+ # HYPRLOCK TIMEOUT
+ timeout = 600
+ # HYPRLOCK ONTIMEOUT
+ on-timeout = loginctl lock-session
+}
+
+# dpms
+listener {
+ # DPMS TIMEOUT
+ timeout = 660
+ # DPMS ONTIMEOUT
+ on-timeout = hyprctl dispatch dpms off
+ # DPMS ONRESUME
+ on-resume = hyprctl dispatch dpms on
+}
+
+# Suspend
+listener {
+ # SUSPEND TIMEOUT
+ timeout = 1800
+ #SUSPEND ONTIMEOUT
+ on-timeout = systemctl suspend
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/hyprland.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..297d3d4
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/hyprland.conf
@@ -0,0 +1,125 @@
+# -----------------------------------------------------
+# | | | |Gib's _ __ _ __| | __ _ _ __ __| |
+# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` |
+# | _ | |_| | |_) | | | | (_| | | | | (_| |
+# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_|
+# |___/|_| Config
+# -----------------------------------------------------
+# MONITORS
+# See https://wiki.hyprland.org/Configuring/Monitors/
+# -----------------------------------------------------
+monitor=DP-2,2560x1440@144,0x0,1
+monitor=HDMI-1,3840x2160@75,2560x0,1.5
+
+# -----------------------------------------------------
+# WORKSPACE RULES
+# https://wiki.hyprland.org/Configuring/Workspace-Rules/
+# -----------------------------------------------------
+workspace = 1, monitor:DP-2, default:true
+workspace = 2, monitor:HDMI-A-1, default:true
+workspace = 3, monitor:DP-2
+workspace = 4, monitor:HDMI-A-1
+workspace = 5, monitor:DP-2
+workspace = 6, monitor:HDMI-A-1
+
+# -----------------------------------------------------
+# WINDOW RULES
+# https://wiki.hyprland.org/Configuring/Window-Rules/
+# -----------------------------------------------------
+windowrule = tile,^(gnome-connections)$
+windowrule = tile,^(jumpclient.exe)$
+windowrule = tile,^(Microsoft-edge)$
+windowrule = tile,^(kitty)$
+windowrule = tile,^(firefox)$
+windowrule = tile,^(Chromium)$
+windowrule = float,^(Bitwarden)$
+windowrule = float,^(Cider)$
+windowrule = float,^(pavucontrol)$
+windowrule = float,^(blueman-manager)$
+windowrule = float,^(nm-connection-editor)$
+windowrule = float,^(qalculate-gtk)$
+# Browser Picture in Picture
+windowrulev2 = float, title:^(Picture-in-Picture)$
+windowrulev2 = pin, title:^(Picture-in-Picture)$
+windowrulev2 = move 69.5% 4%, title:^(Picture-in-Picture)$
+
+# -----------------------------------------------------
+# CURSOR
+# -----------------------------------------------------
+exec-once = hyprctl setcursor Bibata-Modern-Ice 24
+
+cursor {
+ no_hardware_cursors = true
+}
+
+# -----------------------------------------------------
+# NVIDIA
+# https://wiki.hyprland.org/Nvidia/
+# -----------------------------------------------------
+#source = ~/.config/hypr/conf/nvidia.conf
+
+# -----------------------------------------------------
+# KEYBOARD
+# https://wiki.hyprland.org/Configuring/Variables/#input
+# -----------------------------------------------------
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ numlock_by_default = true
+ mouse_refocus = false
+ follow_mouse = 1
+ touchpad {
+ # FOR DESKTOP/MOUSE
+ natural_scroll = false
+ # FOR LAPTOP/TOUCHPAD
+ # natural_scroll = yes
+ # middle_button_emulation = true
+ # clickfinger_behavior = false
+ scroll_factor = 1.0 # Touchpad scroll factor
+ }
+ sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification.
+}
+gestures {
+ workspace_swipe = true
+}
+
+# -----------------------------------------------------
+# Load pywal color file
+# -----------------------------------------------------
+source = ~/.cache/wal/colors-hyprland.conf
+
+# -----------------------------------------------------
+# Autostart
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/autostart.conf
+
+# -----------------------------------------------------
+# Load configuration files
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/window.conf
+source = ~/.config/hypr/conf/decoration.conf
+source = ~/.config/hypr/conf/layout.conf
+source = ~/.config/hypr/conf/misc.conf
+source = ~/.config/hypr/conf/keybinding.conf
+
+# -----------------------------------------------------
+# Animation
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/animation.conf
+
+# -----------------------------------------------------
+# Custom
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/custom.conf
+
+# -----------------------------------------------------
+# ML4W Configuration
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/ml4w.conf
+
+# -----------------------------------------------------
+# Environment for xdg-desktop-portal-hyprland
+# -----------------------------------------------------
+exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/hyprlock.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..d7e0fda
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/hyprlock.conf
@@ -0,0 +1,88 @@
+# _ _ _
+# | |__ _ _ _ __ _ __| | ___ ___| | __
+# | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ /
+# | | | | |_| | |_) | | | | (_) | (__| <
+# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
+# |___/|_|
+#
+
+general {
+ ignore_empty_input = true
+}
+
+background {
+ monitor =
+ path = $HOME/.config/ml4w/cache/blurred_wallpaper.png # only png supported for now
+}
+
+input-field {
+ monitor =
+ size = 200, 50
+ outline_thickness = 3
+ dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15 # 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 = rgb(151515)
+ inner_color = rgb(FFFFFF)
+ font_color = rgb(10, 10, 10)
+ fade_on_empty = true
+ fade_timeout = 1000 # 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 = rgb(204, 136, 34)
+ fail_color = rgb(204, 34, 34) # 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
+ swap_font_color = false # see below
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ #clock
+ text = cmd[update:1000] echo "$TIME"
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 55
+ font_family = Fira Semibold
+ position = -100, 70
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+label {
+ monitor =
+ text = $USER
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 20
+ font_family = Fira Semibold
+ position = -100, 160
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+image {
+ monitor =
+ path = $HOME/.config/ml4w/cache/square_wallpaper.png
+ size = 280 # lesser side if not 1:1 ratio
+ rounding = -1 # negative values mean circle
+ border_size = 4
+ border_color = rgb(221, 221, 221)
+ rotate = 0 # degrees, counter-clockwise
+ reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
+# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
+ position = 0, 200
+ halign = center
+ valign = center
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/hyprpaper.conf b/configs/dotfiles/hyprland/desktop/.config/hypr/hyprpaper.conf
new file mode 100644
index 0000000..7004a5e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/hyprpaper.conf
@@ -0,0 +1,6 @@
+preload = /home/gib/Pictures/Wallpapers/faroe_islands.jpg
+preload = /home/gib/Pictures/Wallpapers/mt_rainier.jpg
+
+wallpaper = DP-2,/home/gib/Pictures/Wallpapers/faroe_islands.jpg
+wallpaper = HDMI-A-1,/home/gib/Pictures/Wallpapers/mt_rainier.jpg
+splash = false
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/cleanup.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/cleanup.sh
new file mode 100644
index 0000000..af4196d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/cleanup.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ____ _
+# / ___| | ___ __ _ _ __ _ _ _ __
+# | | | |/ _ \/ _` | '_ \| | | | '_ \
+# | |___| | __/ (_| | | | | |_| | |_) |
+# \____|_|\___|\__,_|_| |_|\__,_| .__/
+# |_|
+#
+
+# Remove gamemode flag
+if [ -f ~/.cache/gamemode ] ;then
+ rm ~/.cache/gamemode
+ echo ":: ~/.cache/gamemode removed"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/disabledm.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/disabledm.sh
new file mode 100644
index 0000000..ee5e612
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/disabledm.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+clear
+figlet -f smslant "Disable DM"
+echo "Hyprland recommends the start with the tty login."
+echo "You can deactivate the current display manager (if exists)."
+echo ""
+echo "-> Do you really want to deactivate the display manager?"
+while true; do
+ read -p "Do you want to enable the sddm display manager and setup theme? (Yy/Nn): " yn
+ case $yn in
+ [Yy]* )
+ if [ -f /etc/systemd/system/display-manager.service ]; then
+ sudo rm /etc/systemd/system/display-manager.service
+ echo "Current display manager removed."
+ else
+ echo "No active display manager found."
+ fi
+ break;;
+ [Nn]* )
+ exit
+ break;;
+ * ) echo "Please answer yes or no.";;
+ esac
+done
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/gamemode.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/gamemode.sh
new file mode 100644
index 0000000..09708fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/gamemode.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ____ _
+# / ___| __ _ _ __ ___ ___ _ __ ___ ___ __| | ___
+# | | _ / _` | '_ ` _ \ / _ \ '_ ` _ \ / _ \ / _` |/ _ \
+# | |_| | (_| | | | | | | __/ | | | | | (_) | (_| | __/
+# \____|\__,_|_| |_| |_|\___|_| |_| |_|\___/ \__,_|\___|
+#
+#
+
+if [ -f ~/.cache/gamemode ] ;then
+ hyprctl reload
+ rm ~/.cache/gamemode
+ notify-send "Gamemode deactivated" "Animations and blur enabled"
+else
+ 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"
+ touch ~/.cache/gamemode
+ notify-send "Gamemode activated" "Animations and blur disabled"
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/gtk.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/gtk.sh
new file mode 100644
index 0000000..1b080de
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/gtk.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# ____ _____ _ __
+# / ___|_ _| |/ /
+# | | _ | | | ' /
+# | |_| | | | | . \
+# \____| |_| |_|\_\
+#
+# Source: https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
+
+config="$HOME/.config/gtk-3.0/settings.ini"
+if [ ! -f "$config" ]; then exit 1; fi
+
+gnome_schema="org.gnome.desktop.interface"
+gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_size="$(grep 'gtk-cursor-theme-size' "$config" | sed 's/.*\s*=\s*//')"
+font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
+terminal=$(cat $HOME/.config/ml4w/settings/terminal.sh)
+
+echo $gtk_theme
+echo $icon_theme
+echo $cursor_theme
+echo $cursor_size
+echo $font_name
+echo $terminal
+
+gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
+gsettings set "$gnome_schema" icon-theme "$icon_theme"
+gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
+gsettings set "$gnome_schema" font-name "$font_name"
+gsettings set "$gnome_schema" color-scheme "prefer-dark"
+
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal "$terminal"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal use-generic-terminal-name "true"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal keybindings "t"
+
+if [ -f ~/.config/hypr/conf/cursor.conf ] ;then
+ echo "exec-once = hyprctl setcursor $cursor_theme $cursor_size" > ~/.config/hypr/conf/cursor.conf
+ hyprctl setcursor $cursor_theme $cursor_size
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/hypridle.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/hypridle.sh
new file mode 100644
index 0000000..6296fa0
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/hypridle.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | | |_ _ _ __ _ __(_) __| | | ___
+# | |_| | | | | '_ \| '__| |/ _` | |/ _ \
+# | _ | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+
+SERVICE="hypridle"
+if [[ "$1" == "status" ]]; then
+ sleep 1
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ echo '{"text": "RUNNING", "class": "active", "tooltip": "Screen locking active\nLeft: Deactivate\nRight: Lock Screen"}'
+ else
+ echo '{"text": "NOT RUNNING", "class": "notactive", "tooltip": "Screen locking deactivated\nLeft: Activate\nRight: Lock Screen"}'
+ fi
+fi
+if [[ "$1" == "toggle" ]]; then
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ killall hypridle
+ else
+ hypridle
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/hyprshade.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/hyprshade.sh
new file mode 100644
index 0000000..037441c
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/hyprshade.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ _ _ __ _ __ ___| |__ __ _ __| | ___
+# | |_| | | | | '_ \| '__/ __| '_ \ / _` |/ _` |/ _ \
+# | _ | |_| | |_) | | \__ \ | | | (_| | (_| | __/
+# |_| |_|\__, | .__/|_| |___/_| |_|\__,_|\__,_|\___|
+# |___/|_|
+#
+
+if [[ "$1" == "rofi" ]]; then
+
+ # Open rofi to select the Hyprshade filter for toggle
+ options="$(hyprshade ls)\noff"
+
+ # Open rofi
+ choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-hyprshade.rasi -i -no-show-icons -l 4 -width 30 -p "Hyprshade")
+ if [ ! -z $choice ] ;then
+ echo "hyprshade_filter=\"$choice\"" > ~/.config/ml4w/settings/hyprshade.sh
+ if [ "$choice" == "off" ] ;then
+ hyprshade off
+ notify-send "Hyprshade deactivated"
+ echo ":: hyprshade turned off"
+ else
+ notify-send "Changing Hyprshade to $choice" "Toggle shader with SUPER+SHIFT+S"
+ fi
+ fi
+
+else
+
+ # Toggle Hyprshade based on the selected filter
+ hyprshade_filter="blue-light-filter-50"
+
+ # Check if hyprshade.sh settings file exists and load
+ if [ -f ~/.config/ml4w/settings/hyprshade.sh ] ;then
+ source ~/.config/ml4w/settings/hyprshade.sh
+ fi
+
+ # Toggle Hyprshade
+ if [ "$hyprshade_filter" != "off" ] ;then
+ if [ -z $(hyprshade current) ] ;then
+ echo ":: hyprshade is not running"
+ hyprshade on $hyprshade_filter
+ notify-send "Hyprshade activated" "with $(hyprshade current)"
+ echo ":: hyprshade started with $(hyprshade current)"
+ else
+ notify-send "Hyprshade deactivated"
+ echo ":: Current hyprshade $(hyprshade current)"
+ echo ":: Switching hyprshade off"
+ hyprshade off
+ fi
+ else
+ hyprshade off
+ echo ":: hyprshade turned off"
+ fi
+
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/init-wallpaper-engine.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/init-wallpaper-engine.sh
new file mode 100644
index 0000000..6751156
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/init-wallpaper-engine.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# __ ______ _____ _
+# \ \ / / _ \ | ____|_ __ __ _(_)_ __ ___
+# \ \ /\ / /| |_) | | _| | '_ \ / _` | | '_ \ / _ \
+# \ V V / | __/ | |___| | | | (_| | | | | | __/
+# \_/\_/ |_| |_____|_| |_|\__, |_|_| |_|\___|
+# |___/
+#
+
+wallpaper_engine=$(cat $HOME/.config/ml4w/settings/wallpaper-engine.sh)
+if [ "$wallpaper_engine" == "swww" ] ;then
+ # swww
+ echo ":: Using swww"
+ swww init
+ swww-daemon --format xrgb
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+elif [ "$wallpaper_engine" == "hyprpaper" ] ;then
+ # hyprpaper
+ echo ":: Using hyprpaper"
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+else
+ echo ":: Wallpaper Engine disabled"
+ ~/.config/hypr/scripts/wallpaper.sh init
+fi
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/keybindings.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/keybindings.sh
new file mode 100644
index 0000000..d0b9150
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/keybindings.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | _____ _ _| |__ (_)_ __ __| (_)_ __ __ _ ___
+# | |/ / _ \ | | | '_ \| | '_ \ / _` | | '_ \ / _` / __|
+# | < __/ |_| | |_) | | | | | (_| | | | | | (_| \__ \
+# |_|\_\___|\__, |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___/
+# |___/ |___/
+#
+# -----------------------------------------------------
+# Get keybindings location based on variation
+# -----------------------------------------------------
+config_file=$(cat ~/.config/hypr/conf/keybinding.conf)
+config_file=${config_file/source = ~/}
+config_file=${config_file/source=~/}
+
+# -----------------------------------------------------
+# Path to keybindings config file
+# -----------------------------------------------------
+config_file="/home/$USER$config_file"
+echo "Reading from: $config_file"
+
+keybinds=""
+
+# Detect Start String
+while read -r line
+do
+ if [[ "$line" == "bind"* ]]; then
+
+ line="$(echo "$line" | sed 's/$mainMod/SUPER/g')"
+ line="$(echo "$line" | sed 's/bind = //g')"
+ line="$(echo "$line" | sed 's/bindm = //g')"
+
+ IFS='#'
+ read -a strarr <<<"$line"
+ kb_str=${strarr[0]}
+ cm_str=${strarr[1]}
+
+ IFS=','
+ read -a kbarr <<<"$kb_str"
+
+ item="${kbarr[0]} + ${kbarr[1]}"$'\r'"${cm_str:1}"
+ keybinds=$keybinds$item$'\n'
+ fi
+done < "$config_file"
+
+sleep 0.2
+rofi -dmenu -i -markup -eh 2 -replace -p "Keybinds" -config ~/.config/rofi/config-compact.rasi <<< "$keybinds"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/loadconfig.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/loadconfig.sh
new file mode 100644
index 0000000..a51ce6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/loadconfig.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+hyprctl reload
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/moveTo.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/moveTo.sh
new file mode 100644
index 0000000..de2492b
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/moveTo.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# __ __ _
+# | \/ | _____ _____ | |_ ___
+# | |\/| |/ _ \ \ / / _ \ | __/ _ \
+# | | | | (_) \ V / __/ | || (_) |
+# |_| |_|\___/ \_/ \___| \__\___/
+#
+
+# Function to log messages (useful for debugging)
+log_message() {
+ # echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> ~/moveto_log.txt
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
+}
+
+# Get the target workspace from the argument
+target_workspace=$1
+
+# Check if a target workspace was provided
+if [ -z "$target_workspace" ]; then
+ log_message "Error: No target workspace provided"
+ exit 1
+fi
+
+# Get the current active workspace
+current_workspace=$(hyprctl activewindow -j | jq '.workspace.id')
+
+if [ -z "$current_workspace" ]; then
+ log_message "Error: Couldn't determine current workspace"
+ exit 1
+fi
+
+log_message "Moving from workspace $current_workspace to $target_workspace"
+
+# Get all window addresses in the current workspace
+window_addresses=$(hyprctl clients -j | jq -r ".[] | select(.workspace.id == $current_workspace) | .address")
+
+# Move each window to the target workspace
+for address in $window_addresses; do
+ log_message "Moving window $address to workspace $target_workspace"
+ hyprctl dispatch movetoworkspacesilent "$target_workspace,address:$address"
+done
+
+log_message "Finished moving windows"
+
+# Switch to the target workspace
+hyprctl dispatch workspace "$target_workspace"
+
+log_message "Switched to workspace $target_workspace"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/power.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/power.sh
new file mode 100644
index 0000000..8037fbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/power.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# ____
+# | _ \ _____ _____ _ __
+# | |_) / _ \ \ /\ / / _ \ '__|
+# | __/ (_) \ V V / __/ |
+# |_| \___/ \_/\_/ \___|_|
+#
+
+# Check if eww is open
+FILE="$HOME/.cache/ml4w_sidebar"
+
+if [[ "$1" == "exit" ]]; then
+ echo ":: Exit"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ killall -9 Hyprland
+ sleep 2
+fi
+
+if [[ "$1" == "lock" ]]; then
+ echo ":: Lock"
+ sleep 0.5
+ hyprlock
+fi
+
+if [[ "$1" == "reboot" ]]; then
+ echo ":: Reboot"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl reboot
+fi
+
+if [[ "$1" == "shutdown" ]]; then
+ echo ":: Shutdown"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl poweroff
+fi
+
+if [[ "$1" == "suspend" ]]; then
+ echo ":: Suspend"
+ sleep 0.5
+ systemctl suspend
+fi
+
+if [[ "$1" == "hibernate" ]]; then
+ echo ":: Hibernate"
+ sleep 1;
+ systemctl hibernate
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/restart-hypridle.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/restart-hypridle.sh
new file mode 100644
index 0000000..fe29461
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/restart-hypridle.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+killall hypridle
+sleep 1
+hypridle &
+notify-send "hypridle has been restarted."
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/screenshot.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/screenshot.sh
new file mode 100644
index 0000000..d08557a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/screenshot.sh
@@ -0,0 +1,224 @@
+#!/bin/bash
+# ____ _ _
+# / ___| ___ _ __ ___ ___ _ __ ___| |__ ___ | |_
+# \___ \ / __| '__/ _ \/ _ \ '_ \/ __| '_ \ / _ \| __|
+# ___) | (__| | | __/ __/ | | \__ \ | | | (_) | |_
+# |____/ \___|_| \___|\___|_| |_|___/_| |_|\___/ \__|
+#
+# Based on https://github.com/hyprwm/contrib/blob/main/grimblast/screenshot.sh
+# -----------------------------------------------------
+
+# Screenshots will be stored in $HOME by default.
+# The screenshot will be moved into the screenshot directory
+
+# Add this to ~/.config/user-dirs.dirs to save screenshots in a custom folder:
+# XDG_SCREENSHOTS_DIR="$HOME/Screenshots"
+
+prompt='Screenshot'
+mesg="DIR: ~/Screenshots"
+
+# Screenshot Filename
+source ~/.config/ml4w/settings/screenshot-filename.sh
+
+# Screenshot Folder
+source ~/.config/ml4w/settings/screenshot-folder.sh
+
+# Screenshot Editor
+export GRIMBLAST_EDITOR="$(cat ~/.config/ml4w/settings/screenshot-editor.sh)"
+
+# Example for keybindings
+# bind = SUPER, p, exec, grimblast save active
+# bind = SUPER SHIFT, p, exec, grimblast save area
+# bind = SUPER ALT, p, exec, grimblast save output
+# bind = SUPER CTRL, p, exec, grimblast save screen
+
+# Options
+option_1="Immediate"
+option_2="Delayed"
+
+option_capture_1="Capture Everything"
+option_capture_2="Capture Active Display"
+option_capture_3="Capture Selection"
+
+option_time_1="5s"
+option_time_2="10s"
+option_time_3="20s"
+option_time_4="30s"
+option_time_5="60s"
+#option_time_4="Custom (in seconds)" # Roadmap or someone contribute :)
+
+list_col='1'
+list_row='2'
+
+copy='Copy'
+save='Save'
+copy_save='Copy & Save'
+edit='Edit'
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 2 -width 30 -p "Take screenshot"
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$option_1\n$option_2" | rofi_cmd
+}
+
+####
+# Choose Timer
+# CMD
+timer_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 5 -width 30 -p "Choose timer"
+}
+
+# Ask for confirmation
+timer_exit() {
+ echo -e "$option_time_1\n$option_time_2\n$option_time_3\n$option_time_4\n$option_time_5" | timer_cmd
+}
+
+# Confirm and execute
+timer_run() {
+ selected_timer="$(timer_exit)"
+ if [[ "$selected_timer" == "$option_time_1" ]]; then
+ countdown=5
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_2" ]]; then
+ countdown=10
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_3" ]]; then
+ countdown=20
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_4" ]]; then
+ countdown=30
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_5" ]]; then
+ countdown=60
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Chose Screenshot Type
+# CMD
+type_screenshot_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 3 -width 30 -p "Type of screenshot"
+}
+
+# Ask for confirmation
+type_screenshot_exit() {
+ echo -e "$option_capture_1\n$option_capture_2\n$option_capture_3" | type_screenshot_cmd
+}
+
+# Confirm and execute
+type_screenshot_run() {
+ selected_type_screenshot="$(type_screenshot_exit)"
+ if [[ "$selected_type_screenshot" == "$option_capture_1" ]]; then
+ option_type_screenshot=screen
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_2" ]]; then
+ option_type_screenshot=output
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_3" ]]; then
+ option_type_screenshot=area
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Choose to save or copy photo
+# CMD
+copy_save_editor_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 4 -width 30 -p "How to save"
+}
+
+# Ask for confirmation
+copy_save_editor_exit() {
+ echo -e "$copy\n$save\n$copy_save\n$edit" | copy_save_editor_cmd
+}
+
+# Confirm and execute
+copy_save_editor_run() {
+ selected_chosen="$(copy_save_editor_exit)"
+ if [[ "$selected_chosen" == "$copy" ]]; then
+ option_chosen=copy
+ ${1}
+ elif [[ "$selected_chosen" == "$save" ]]; then
+ option_chosen=save
+ ${1}
+ elif [[ "$selected_chosen" == "$copy_save" ]]; then
+ option_chosen=copysave
+ ${1}
+ elif [[ "$selected_chosen" == "$edit" ]]; then
+ option_chosen=edit
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+timer() {
+ if [[ $countdown -gt 10 ]]; then
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown_less_10=$((countdown - 10))
+ sleep $countdown_less_10
+ countdown=10
+ fi
+ while [[ $countdown -ne 0 ]]; do
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown=$((countdown - 1))
+ sleep 1
+ done
+}
+
+# take shots
+takescreenshot() {
+ sleep 1
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+takescreenshot_timer() {
+ sleep 1
+ timer
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+# Execute Command
+run_cmd() {
+ if [[ "$1" == '--opt1' ]]; then
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot"
+ elif [[ "$1" == '--opt2' ]]; then
+ timer_run
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot_timer"
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+$option_1)
+ run_cmd --opt1
+ ;;
+$option_2)
+ run_cmd --opt2
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/toggle-animations.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/toggle-animations.sh
new file mode 100644
index 0000000..7eedb1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/toggle-animations.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+cache_file="$HOME/.cache/toggle_animation"
+if [[ $(cat $HOME/.config/hypr/conf/animation.conf) == *"disabled"* ]]; then
+ echo ":: Toggle blocked by disabled.conf variation."
+else
+ if [ -f $cache_file ] ;then
+ hyprctl keyword animations:enabled true
+ rm $cache_file
+ else
+ hyprctl keyword animations:enabled false
+ touch $cache_file
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/toggleallfloat.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/toggleallfloat.sh
new file mode 100644
index 0000000..3fc12e2
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/toggleallfloat.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+# _ _ _ __ _ _
+# / \ | | |/ _| | ___ __ _| |_
+# / _ \ | | | |_| |/ _ \ / _` | __|
+# / ___ \| | | _| | (_) | (_| | |_
+# /_/ \_\_|_|_| |_|\___/ \__,_|\__|
+#
+
+hyprctl dispatch workspaceopt allfloat
+notify-send "Windows on this workspace toggled to floating/tiling"
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-automation.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-automation.sh
new file mode 100644
index 0000000..e3d1f1e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-automation.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# _ _ __ ______
+# / \ _ _| |_ ___ \ \ / / _ \
+# / _ \| | | | __/ _ \ \ \ /\ / /| |_) |
+# / ___ \ |_| | || (_) | \ V V / | __/
+# /_/ \_\__,_|\__\___/ \_/\_/ |_|
+#
+
+sec=$(cat ~/.config/ml4w/settings/wallpaper-automation.sh)
+_setWallpaperRandomly() {
+ waypaper --random
+ echo ":: Next wallpaper in 60 seconds..."
+ sleep $sec
+ _setWallpaperRandomly
+}
+
+if [ ! -f ~/.config/ml4w/cache/wallpaper-automation ] ;then
+ touch ~/.config/ml4w/cache/wallpaper-automation
+ echo ":: Start wallpaper automation script"
+ notify-send "Wallpaper automation process started" "Wallpaper will be changed every $sec seconds."
+ _setWallpaperRandomly
+else
+ rm ~/.config/ml4w/cache/wallpaper-automation
+ notify-send "Wallpaper automation process stopped."
+ echo ":: Wallpaper automation script process $wp stopped"
+ wp=$(pgrep -f wallpaper-automation.sh)
+ kill -KILL $wp
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-cache.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-cache.sh
new file mode 100644
index 0000000..899a06a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-cache.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+generated_versions="$HOME/.config/ml4w/cache/wallpaper-generated"
+rm $generated_versions/*
+echo ":: Wallpaper cache cleared"
+notify-send "Wallpaper cache cleared"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-effects.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-effects.sh
new file mode 100644
index 0000000..83dbca8
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-effects.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ ______ _____ __ __ _
+# \ \ / / _ \ | ____|/ _|/ _| ___ ___| |_ ___
+# \ \ /\ / /| |_) | | _| | |_| |_ / _ \/ __| __/ __|
+# \ V V / | __/ | |___| _| _| __/ (__| |_\__ \
+# \_/\_/ |_| |_____|_| |_| \___|\___|\__|___/
+#
+
+# Get current wallpaper
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# Open rofi to select the Hyprshade filter for toggle
+options="$(ls ~/.config/hypr/effects/wallpaper/)\noff"
+
+# Open rofi
+choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-themes.rasi -i -no-show-icons -l 5 -width 30 -p "Hyprshade")
+if [ ! -z $choice ] ;then
+ echo "$choice" > ~/.config/ml4w/settings/wallpaper-effect.sh
+ notify-send "Changing Wallpaper Effect to " "$choice"
+ waypaper --wallpaper $(cat $cache_file)
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-restore.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-restore.sh
new file mode 100644
index 0000000..b875400
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper-restore.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Restore last wallpaper
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+defaultwallpaper="$HOME/Pictures/Wallpapers/faroe_islands.jpg"
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# -----------------------------------------------------
+# Get current wallpaper
+# -----------------------------------------------------
+
+if [ -f "$cachefile" ]; then
+ sed -i "s|~|$HOME|g" "$cachefile"
+ wallpaper=$(cat $cachefile)
+ if [ -f $wallpaper ]; then
+ echo ":: Wallpaper $wallpaper exists"
+ else
+ echo ":: Wallpaper $wallpaper does not exist. Using default."
+ wallpaper=$defaultwallpaper
+ fi
+else
+ echo ":: $cachefile does not exist. Using default wallpaper."
+ wallpaper=$defaultwallpaper
+fi
+
+# -----------------------------------------------------
+# Set wallpaper
+# -----------------------------------------------------
+
+echo ":: Setting wallpaper with source image $wallpaper"
+waypaper --wallpaper "$wallpaper"
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper.sh
new file mode 100644
index 0000000..1045429
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/wallpaper.sh
@@ -0,0 +1,172 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Check to use wallpaper cache
+# -----------------------------------------------------
+
+if [ -f ~/.config/ml4w/settings/wallpaper_cache ]; then
+ use_cache=1
+ echo ":: Using Wallpaper Cache"
+else
+ use_cache=0
+ echo ":: Wallpaper Cache disabled"
+fi
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+force_generate=0
+generatedversions="$HOME/.config/ml4w/cache/wallpaper-generated"
+waypaperrunning=$HOME/.config/ml4w/cache/waypaper-running
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+blurredwallpaper="$HOME/.config/ml4w/cache/blurred_wallpaper.png"
+squarewallpaper="$HOME/.config/ml4w/cache/square_wallpaper.png"
+rasifile="$HOME/.config/ml4w/cache/current_wallpaper.rasi"
+blurfile="$HOME/.config/ml4w/settings/blur.sh"
+defaultwallpaper="$HOME/Pictures/Wallpapers/faroe_islands.jpg"
+wallpapereffect="$HOME/.config/ml4w/settings/wallpaper-effect.sh"
+blur="50x30"
+blur=$(cat $blurfile)
+
+# Ensures that the script only run once if wallpaper effect enabled
+if [ -f $waypaperrunning ]; then
+ rm $waypaperrunning
+ exit
+fi
+
+# Create folder with generated versions of wallpaper if not exists
+if [ ! -d $generatedversions ]; then
+ mkdir $generatedversions
+fi
+
+# -----------------------------------------------------
+# Get selected wallpaper
+# -----------------------------------------------------
+
+if [ -z $1 ]; then
+ if [ -f $cachefile ]; then
+ wallpaper=$(cat $cachefile)
+ else
+ wallpaper=$defaultwallpaper
+ fi
+else
+ wallpaper=$1
+fi
+used_wallpaper=$wallpaper
+echo ":: Setting wallpaper with source image $wallpaper"
+tmpwallpaper=$wallpaper
+
+# -----------------------------------------------------
+# Copy path of current wallpaper to cache file
+# -----------------------------------------------------
+
+if [ ! -f $cachefile ]; then
+ touch $cachefile
+fi
+echo "$wallpaper" > $cachefile
+echo ":: Path of current wallpaper copied to $cachefile"
+
+# -----------------------------------------------------
+# Get wallpaper filename
+# -----------------------------------------------------
+wallpaperfilename=$(basename $wallpaper)
+echo ":: Wallpaper Filename: $wallpaperfilename"
+
+# -----------------------------------------------------
+# Wallpaper Effects
+# -----------------------------------------------------
+
+if [ -f $wallpapereffect ]; then
+ effect=$(cat $wallpapereffect)
+ if [ ! "$effect" == "off" ]; then
+ used_wallpaper=$generatedversions/$effect-$wallpaperfilename
+ if [ -f $generatedversions/$effect-$wallpaperfilename ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper $effect-$wallpaperfilename"
+ else
+ echo ":: Generate new cached wallpaper $effect-$wallpaperfilename with effect $effect"
+ notify-send --replace-id=1 "Using wallpaper effect $effect..." "with image $wallpaperfilename" -h int:value:33
+ source $HOME/.config/hypr/effects/wallpaper/$effect
+ fi
+ echo ":: Loading wallpaper $generatedversions/$effect-$wallpaperfilename with effect $effect"
+ echo ":: Setting wallpaper with $used_wallpaper"
+ touch $waypaperrunning
+ waypaper --wallpaper $used_wallpaper
+ else
+ echo ":: Wallpaper effect is set to off"
+ fi
+else
+ effect="off"
+fi
+
+# -----------------------------------------------------
+# Execute pywal
+# -----------------------------------------------------
+
+echo ":: Execute pywal with $used_wallpaper"
+wal -q -i "$used_wallpaper"
+source "$HOME/.cache/wal/colors.sh"
+
+# -----------------------------------------------------
+# Reload Waybar
+# -----------------------------------------------------
+
+killall -SIGUSR2 waybar
+
+# -----------------------------------------------------
+# Pywalfox
+# -----------------------------------------------------
+
+if type pywalfox > /dev/null 2>&1; then
+ pywalfox update
+fi
+
+# -----------------------------------------------------
+# Created blurred wallpaper
+# -----------------------------------------------------
+
+if [ -f $generatedversions/blur-$blur-$effect-$wallpaperfilename.png ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper blur-$blur-$effect-$wallpaperfilename"
+else
+ echo ":: Generate new cached wallpaper blur-$blur-$effect-$wallpaperfilename with blur $blur"
+ # notify-send --replace-id=1 "Generate new blurred version" "with blur $blur" -h int:value:66
+ magick $used_wallpaper -resize 75% $blurredwallpaper
+ echo ":: Resized to 75%"
+ if [ ! "$blur" == "0x0" ]; then
+ magick $blurredwallpaper -blur $blur $blurredwallpaper
+ cp $blurredwallpaper $generatedversions/blur-$blur-$effect-$wallpaperfilename.png
+ echo ":: Blurred"
+ fi
+fi
+cp $generatedversions/blur-$blur-$effect-$wallpaperfilename.png $blurredwallpaper
+
+# -----------------------------------------------------
+# Create rasi file
+# -----------------------------------------------------
+
+if [ ! -f $rasifile ]; then
+ touch $rasifile
+fi
+echo "* { current-image: url(\"$blurredwallpaper\", height); }" > "$rasifile"
+
+# -----------------------------------------------------
+# Created square wallpaper
+# -----------------------------------------------------
+
+echo ":: Generate new cached wallpaper square-$wallpaperfilename"
+magick $tmpwallpaper -gravity Center -extent 1:1 $squarewallpaper
+cp $squarewallpaper $generatedversions/square-$wallpaperfilename.png
+
+# -----------------------------------------------------
+# Reload AGS
+# -----------------------------------------------------
+
+ags quit &
+sleep 0.2
+ags run &
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/xdg.sh b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/xdg.sh
new file mode 100644
index 0000000..f7d0fec
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/scripts/xdg.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# __ ______ ____
+# \ \/ / _ \ / ___|
+# \ /| | | | | _
+# / \| |_| | |_| |
+# /_/\_\____/ \____|
+#
+
+# Setup Timers
+_sleep1="0.1"
+_sleep2="0.5"
+_sleep3="2"
+
+# Kill all possible running xdg-desktop-portals
+killall -e xdg-desktop-portal-hyprland
+killall -e xdg-desktop-portal-gnome
+killall -e xdg-desktop-portal-kde
+killall -e xdg-desktop-portal-lxqt
+killall -e xdg-desktop-portal-wlr
+killall -e xdg-desktop-portal-gtk
+killall -e xdg-desktop-portal
+
+# Set required environment variables
+dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=hyprland
+
+# Stop all services
+systemctl --user stop pipewire
+systemctl --user stop wireplumber
+systemctl --user stop xdg-desktop-portal
+systemctl --user stop xdg-desktop-portal-gnome
+systemctl --user stop xdg-desktop-portal-kde
+systemctl --user stop xdg-desktop-portal-wlr
+systemctl --user stop xdg-desktop-portal-hyprland
+sleep $_sleep1
+
+# Start xdg-desktop-portal-hyprland
+/usr/lib/xdg-desktop-portal-hyprland &
+sleep $_sleep1
+
+# Start xdg-desktop-portal-gtk
+if [ -f /usr/lib/xdg-desktop-portal-gtk ] ;then
+ /usr/lib/xdg-desktop-portal-gtk &
+ sleep $_sleep1
+fi
+
+# Start xdg-desktop-portal
+/usr/lib/xdg-desktop-portal &
+sleep $_sleep2
+
+# Start required services
+systemctl --user start pipewire
+systemctl --user start wireplumber
+systemctl --user start xdg-desktop-portal
+systemctl --user start xdg-desktop-portal-hyprland
+
+# Run waybar
+sleep $_sleep3
+~/.config/waybar/launch.sh
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-25.glsl b/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-25.glsl
new file mode 100644
index 0000000..149b143
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-25.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.25;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-50.glsl b/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-50.glsl
new file mode 100644
index 0000000..ac5ea21
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-50.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.5;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-75.glsl b/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-75.glsl
new file mode 100644
index 0000000..c8c1b23
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/blue-light-filter-75.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.75;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/invert-colors.glsl b/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/invert-colors.glsl
new file mode 100644
index 0000000..a504901
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/hypr/shaders/invert-colors.glsl
@@ -0,0 +1,8 @@
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+ gl_FragColor = vec4(1.0 - pixColor.r, 1.0 - pixColor.g, 1.0 - pixColor.b, pixColor.a);
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w-hyprland-settings/hyprctl.json b/configs/dotfiles/hyprland/desktop/.config/ml4w-hyprland-settings/hyprctl.json
new file mode 100644
index 0000000..3b0d272
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w-hyprland-settings/hyprctl.json
@@ -0,0 +1,14 @@
+[
+ {
+ "key": "general:col.active_border",
+ "value": "rgb(82aaff)"
+ },
+ {
+ "key": "general:border_size",
+ "value": 4
+ },
+ {
+ "key": "general:gaps_out",
+ "value": 12
+ }
+]
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w-hyprland-settings/hyprctl.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w-hyprland-settings/hyprctl.sh
new file mode 100644
index 0000000..9fffc49
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w-hyprland-settings/hyprctl.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# _ _ _
+# | |__ _ _ _ __ _ __ ___| |_| |
+# | '_ \| | | | '_ \| '__/ __| __| |
+# | | | | |_| | |_) | | | (__| |_| |
+# |_| |_|\__, | .__/|_| \___|\__|_|
+# |___/|_|
+#
+# Execute this file in the hyprland.conf with exec-always
+sleep 3
+script=$(readlink -f $0)
+path=$(dirname $script)
+if [ ! -f $path/hyprctl.json ] ;then
+ echo ":: ERROR: hyprctl.json not found"
+ exit 1
+fi
+
+jq -c '.[]' $path/hyprctl.json | while read i; do
+ _val() {
+ echo $1 | jq -r '.value'
+ }
+ _key() {
+ echo $1 | jq -r '.key'
+ }
+ key=$(_key $i)
+ val=$(_val $i)
+ echo ":: Execute: hyprctl keyword $key $val"
+ hyprctl keyword $key $val
+done
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/assets/blank.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/assets/blank.png
new file mode 100644
index 0000000..f7aa3f8
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/assets/blank.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/blurred_wallpaper.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/blurred_wallpaper.png
new file mode 100644
index 0000000..faded9e
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/blurred_wallpaper.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/current_wallpaper b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/current_wallpaper
new file mode 100644
index 0000000..ee48877
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/current_wallpaper
@@ -0,0 +1 @@
+/home/gib/Pictures/Wallpapers/faroe_islands.jpg
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/current_wallpaper.rasi b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/current_wallpaper.rasi
new file mode 100644
index 0000000..d0e0201
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/current_wallpaper.rasi
@@ -0,0 +1 @@
+* { current-image: url("/home/gib/.config/ml4w/cache/blurred_wallpaper.png", height); }
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/square_wallpaper.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/square_wallpaper.png
new file mode 100644
index 0000000..2c08e7b
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/square_wallpaper.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png
new file mode 100644
index 0000000..be2ade3
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png
new file mode 100644
index 0000000..efbc525
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png
new file mode 100644
index 0000000..63665f9
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png
new file mode 100644
index 0000000..faded9e
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground.png.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground.png.png
new file mode 100644
index 0000000..eb8fdae
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground.png.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-pink_sky.png.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-pink_sky.png.png
new file mode 100644
index 0000000..c0673f7
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-pink_sky.png.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-snow-mountain-peaks.jpg.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-snow-mountain-peaks.jpg.png
new file mode 100644
index 0000000..25f7be8
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-snow-mountain-peaks.jpg.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-.png
new file mode 100644
index 0000000..f9dad8e
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png
new file mode 100644
index 0000000..f9dad8e
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png
new file mode 100644
index 0000000..b2fa847
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png
new file mode 100644
index 0000000..2c08e7b
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-ogbackground.png.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-ogbackground.png.png
new file mode 100644
index 0000000..a09040d
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-ogbackground.png.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-pink_sky.png.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-pink_sky.png.png
new file mode 100644
index 0000000..cdf1328
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-pink_sky.png.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-snow-mountain-peaks.jpg.png b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-snow-mountain-peaks.jpg.png
new file mode 100644
index 0000000..f9dad8e
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/ml4w/cache/wallpaper-generated/square-snow-mountain-peaks.jpg.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/login/issue b/configs/dotfiles/hyprland/desktop/.config/ml4w/login/issue
new file mode 100644
index 0000000..d3f99f3
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/login/issue
@@ -0,0 +1,11 @@
+ _ _
+ | | ___ __ _(_)_ __
+ | | / _ \\ / _' | | '_ \\
+ | |__| (_) | (_| | | | | |
+ |_____\\___/ \\__, |_|_| |_|
+ |___/
+
+Today is \d \t @ \n
+--------------------------------------------------------------
+\r (\l)
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/ags.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/ags.sh
new file mode 100644
index 0000000..8c1ba75
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/ags.sh
@@ -0,0 +1 @@
+ags run
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/cleanup.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/cleanup.sh
new file mode 100644
index 0000000..3e509c9
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/cleanup.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+clear
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+figlet -f smslant "Cleanup"
+echo
+$aur_helper -Scc
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/installprinters.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/installprinters.sh
new file mode 100644
index 0000000..67812c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/installprinters.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _____ __
+# | __ \ (_) | | / ____| / _|
+# | |__) | __ _ _ __ | |_ ___ _ __ | | ___ _ __ | |_
+# | ___/ '__| | '_ \| __/ _ \ '__| | | / _ \| '_ \| _|
+# | | | | | | | | | || __/ | | |___| (_) | | | | |
+# |_| |_| |_|_| |_|\__\___|_| \_____\___/|_| |_|_|
+#
+# By @krystalsavage
+
+sleep 1
+clear
+figlet -f smslant "Printers"
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START TO INSTALL PRINTER SYSTEM NOW?" ;then
+ echo
+ echo ":: Install started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Install canceled."
+ exit;
+fi
+
+if [[ $(_isInstalledYay "timeshift") == "0" ]] ;then
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot canceled."
+ exit 130
+ else
+ echo ":: Snapshot canceled."
+ fi
+ echo
+fi
+
+yay -S cups cups-pdf cups-filters nss-mdns system-config-printer foomatic-db footmatic-db-engine foomatic-db-nonfree doomatic-db-nonfree-ppds foomatic-db-ppds cups-browsed libusb ipp-usb xdg-utils colord logrotate
+
+notify-send "Installing printer system complete"
+echo
+echo ":: Installing printer system complete"
+sleep 2
+
+if [ -f ~/.config/ml4w/settings/printer-drivers.sh ] ;then
+ if gum confirm "DO YOU WANT TO INSTALL PRINTER DRIVERS NOW?" ;then
+ echo
+ echo ":: Install started."
+ elif [ $? -eq 130 ]; then
+ exit 130
+ else
+ echo
+ echo ":: Install cancelled."
+ exit;
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/installtimeshift.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/installtimeshift.sh
new file mode 100644
index 0000000..06265ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/installtimeshift.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _____ _ _ _ __ _
+# |_ _(_)_ __ ___ ___ ___| |__ (_)/ _| |_
+# | | | | '_ ` _ \ / _ \/ __| '_ \| | |_| __|
+# | | | | | | | | | __/\__ \ | | | | _| |_
+# |_| |_|_| |_| |_|\___||___/_| |_|_|_| \__|
+#
+
+sleep 1
+clear
+figlet -f smslant "Timeshift"
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+_isInstalledAUR() {
+ package="$1";
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+timeshift_installed=$(_isInstalledAUR "timeshift")
+grubbtrfs_installed=$(_isInstalledAUR "grub-btrfs")
+
+if [[ $timeshift_installed == "0" ]] ;then
+ echo ":: Timeshift is already installed"
+else
+ if gum confirm "DO YOU WANT TO INSTALL Timeshift now?" ;then
+ $aur_helper -S timeshift
+ fi
+fi
+if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "0" ]] ;then
+ echo ":: grub-btrfs is already installed"
+else
+ echo ":: grub-btrfs is required to select a snapshot on grub bootloader."
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ fi
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/lid-improvements.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/lid-improvements.sh
new file mode 100644
index 0000000..2ffad61
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/lid-improvements.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+while IFS= read -r line; do
+ # If the line starts with # and the next line is not the lines to be added
+ if [[ $line == \#HandleLidSwitchDocked=ignore ]]; then
+ # Add the new lines
+ echo "HandleLidSwitchDocked=ignore" | sudo tee -a /etc/systemd/logind.conf > /dev/null
+ fi
+ if [[ $line == \#HoldoffTimeoutSec=5s ]]; then
+ # Add the new lines
+ echo "HoldoffTimeoutSec=5s" | sudo tee -a /etc/systemd/logind.conf > /dev/null
+ fi
+done < /etc/systemd/logind.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/pacman.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/pacman.sh
new file mode 100644
index 0000000..d6a2903
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/pacman.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# ____
+# | _ \ __ _ ___ _ __ ___ __ _ _ __
+# | |_) / _` |/ __| '_ ` _ \ / _` | '_ \
+# | __/ (_| | (__| | | | | | (_| | | | |
+# |_| \__,_|\___|_| |_| |_|\__,_|_| |_|
+#
+
+sleep 1
+clear
+figlet -f smslant "pacman.conf"
+echo
+echo ":: This script will activate or deactivate additions for your pacman.conf."
+echo
+if grep -Fq "#ParallelDownloads" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate parallel downloads?" ;then
+ sudo sed -i 's/^#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf
+ else
+ echo ":: Activation of parallel downloads skipped."
+ fi
+else
+ echo ":: Parallel downloads are already activated."
+fi
+
+if grep -Fxq "#Color" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate colors?" ;then
+ sudo sed -i 's/^#Color/Color/' /etc/pacman.conf
+ else
+ echo ":: Activation of Color skipped."
+ fi
+else
+ echo ":: Color is already activated."
+fi
+
+if grep -Fxq "#VerbosePkgLists" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate VerbosePkgLists?" ;then
+ sudo sed -i 's/^#VerbosePkgLists/VerbosePkgLists/' /etc/pacman.conf
+ else
+ echo ":: Activation of VerbosePkgLists skipped."
+ fi
+else
+ echo ":: VerbosePkgLists is already activated."
+fi
+
+if grep -Fxq "ILoveCandy" /etc/pacman.conf
+then
+ echo ":: ILoveCandy is already activated."
+else
+ if gum confirm "Do you want to activate ILoveCandy?" ;then
+ sudo sed -i '/^ParallelDownloads = .*/a ILoveCandy' /etc/pacman.conf
+ else
+ echo ":: Activation of ILoveCandy skipped."
+ fi
+fi
+echo
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/snapshot.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/snapshot.sh
new file mode 100644
index 0000000..7ce1acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/snapshot.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+# ____ _ _
+# / ___| _ __ __ _ _ __ ___| |__ ___ | |_
+# \___ \| '_ \ / _` | '_ \/ __| '_ \ / _ \| __|
+# ___) | | | | (_| | |_) \__ \ | | | (_) | |_
+# |____/|_| |_|\__,_| .__/|___/_| |_|\___/ \__|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+sleep 1
+clear
+figlet -f smslant "Snapshot"
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+_isInstalledAUR() {
+ package="$1";
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+timeshift_installed=$(_isInstalledAUR "timeshift")
+grubbtrfs_installed=$(_isInstalledAUR "grub-btrfs")
+
+if [[ $timeshift_installed == "0" ]] ;then
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ if [[ -d /boot/grub ]] ;then
+ if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "1" ]] ;then
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ else
+ exit
+ fi
+ fi
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ fi
+ echo "DONE. Snapshot $c created!"
+else
+ echo "ERROR: Timeshift is not installed."
+ if gum confirm "DO YOU WANT TO INSTALL Timeshift now?" ;then
+ $aur_helper -S timeshift
+ echo
+ echo ":: Timeshift has been installed. Please restart this script."
+ if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "1" ]] ;then
+ echo ":: grub-btrfs is required to select a snapshot on grub bootloader."
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ else
+ exit
+ fi
+ fi
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/unlock-pacman.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/unlock-pacman.sh
new file mode 100644
index 0000000..33b7de0
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/arch/unlock-pacman.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+sleep 1
+if [ -f /var/lib/pacman/db.lck ]; then
+ sudo rm /var/lib/pacman/db.lck
+ echo ":: Unlock complete"
+else
+ echo ":: Pacman database is not locked"
+fi
+sleep 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/cliphist.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/cliphist.sh
new file mode 100644
index 0000000..b9a2acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/cliphist.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# ____ _ _ _ _ _
+# / ___| (_)_ __ | |__ (_)___| |_
+# | | | | | '_ \| '_ \| / __| __|
+# | |___| | | |_) | | | | \__ \ |_
+# \____|_|_| .__/|_| |_|_|___/\__|
+# |_|
+#
+
+case $1 in
+ d) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist delete
+ ;;
+
+ w) if [ `echo -e "Clear\nCancel" | rofi -dmenu -config ~/.config/rofi/config-short.rasi` == "Clear" ] ; then
+ cliphist wipe
+ fi
+ ;;
+
+ *) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist decode | wl-copy
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/figlet.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/figlet.sh
new file mode 100644
index 0000000..7a5ff4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/figlet.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+figlet -f smslant "Figlet"
+echo
+# ------------------------------------------------
+# Script to create ascii font based header on user input
+# and copy the result to the clipboard
+# -----------------------------------------------------
+
+read -p "Enter the text for ascii encoding: " mytext
+
+if [ -f ~/figlet.txt ]; then
+ touch ~/figlet.txt
+fi
+
+echo "cat <<\"EOF\"" > ~/figlet.txt
+figlet -f smslant "$mytext" >> ~/figlet.txt
+echo "" >> ~/figlet.txt
+echo "EOF" >> ~/figlet.txt
+
+lines=$( cat ~/figlet.txt )
+wl-copy "$lines"
+xclip -sel clip ~/figlet.txt
+
+echo "Text copied to clipboard!"
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/installupdates.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/installupdates.sh
new file mode 100644
index 0000000..b4605b5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/installupdates.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# ____ __ ____ __ __
+# / _/__ ___ / /____ _/ / / __ _____ ___/ /__ _/ /____ ___
+# _/ // _ \(_- __/ _ `/ / / / // / _ \/ _ / _ `/ __/ -_|_-<
+# /___/_//_/___/\__/\_,_/_/_/ \_,_/ .__/\_,_/\_,_/\__/\__/___/
+# /_/
+#
+
+sleep 1
+clear
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+figlet -f smslant "Updates"
+echo
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START THE UPDATE NOW?" ;then
+ echo
+ echo ":: Update started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Update canceled."
+ exit;
+fi
+
+_isInstalled() {
+ package="$1";
+ case $install_platform in
+ arch)
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ ;;
+ fedora)
+ check="$(dnf repoquery --quiet --installed ""${package}*"")"
+ ;;
+ *)
+ ;;
+ esac
+
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+echo 1; #'1' means 'false' in Bash
+return; #false
+}
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ if [[ $(_isInstalled "timeshift") == "0" ]] ;then
+ echo
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot skipped."
+ exit 130
+ else
+ echo ":: Snapshot skipped."
+ fi
+ echo
+ fi
+
+ $aur_helper
+
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ fedora)
+ sudo dnf upgrade
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ *)
+ echo ":: ERROR - Platform not supported"
+ echo "Press [ENTER] to close."
+ read
+ ;;
+esac
+
+notify-send "Update complete"
+echo
+echo ":: Update complete"
+echo
+echo
+
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/ml4w-autostart.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/ml4w-autostart.sh
new file mode 100644
index 0000000..d153c4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/ml4w-autostart.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# Compare installed version with running dotfiles
+if [ -f ~/.config/ml4w/version/compare.sh ] ;then
+ $HOME/.config/ml4w/version/compare.sh
+fi
+
+# Start ML4W Welcome App
+if [ ! -f $HOME/.cache/ml4w-welcome-autostart ] ;then
+ echo ":: Starting ML4W Welcome App ..."
+ sleep 2
+ com.ml4w.welcome
+else
+ echo ":: Autostart of ML4W Welcome App disabled."
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/nm-applet.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/nm-applet.sh
new file mode 100644
index 0000000..52af715
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/nm-applet.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ __
+# ___ __ _ ___ ____ ___ / /__ / /_
+# / _ \/ ' \/ _ `/ _ \/ _ \/ / -_) __/
+# /_//_/_/_/_/\_,_/ .__/ .__/_/\__/\__/
+# /_/ /_/
+#
+if [[ "$1" == "stop" ]]; then
+ killall nm-applet
+elif [[ "$1" == "toggle" ]]; then
+ if pgrep -x "nm-applet" > /dev/null
+ then
+ echo "Running"
+ killall nm-applet
+ else
+ echo "Stopped"
+ nm-applet --indicator &
+ fi
+else
+ nm-applet --indicator &
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/sddm-wallpaper.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/sddm-wallpaper.sh
new file mode 100644
index 0000000..eccad59
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/sddm-wallpaper.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# _ _ _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___ __| | __| |_ __ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \ / __|/ _` |/ _` | '_ ` _ \
+# | |_| | |_) | (_| | (_| | || __/ \__ \ (_| | (_| | | | | | |
+# \___/| .__/ \__,_|\__,_|\__\___| |___/\__,_|\__,_|_| |_| |_|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+sleep 1
+clear
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+current_wallpaper=$(cat "$cache_file")
+extension="${current_wallpaper##*.}"
+
+echo -e "${GREEN}"
+figlet -f smslant "SDDM Wallpaper"
+echo -e "${NONE}"
+
+sddm_theme_name="sequoia"
+sddm_asset_folder="/usr/share/sddm/themes/$sddm_theme_name/backgrounds"
+
+sddm_theme_tpl="/usr/share/ml4w-hyprland/sddm/theme.conf"
+if [ -f $HOME/.config/ml4w/settings/sddm/theme.conf ]; then
+ sddm_theme_tpl="$HOME/.config/ml4w/settings/sddm/theme.conf"
+ echo ":: Using custum theme.conf"
+fi
+
+
+if [ ! -f $current_wallpaper ]; then
+ gum spin --spinner dot --title "File $current_wallpaper does not exist" -- sleep 3
+ exit
+fi
+
+echo ":: Set the current wallpaper $current_wallpaper as SDDM wallpaper."
+echo
+
+if [ ! -d /etc/sddm.conf.d/ ]; then
+ sudo mkdir /etc/sddm.conf.d
+ echo ":: Folder /etc/sddm.conf.d created."
+fi
+
+sudo cp /usr/share/ml4w-hyprland/sddm/sddm.conf /etc/sddm.conf.d/
+echo ":: File /etc/sddm.conf.d/sddm.conf updated."
+
+sudo cp $current_wallpaper $sddm_asset_folder/current_wallpaper.$extension
+echo ":: Current wallpaper copied into $sddm_asset_folder"
+
+sudo cp $sddm_theme_tpl /usr/share/sddm/themes/$sddm_theme_name/
+sudo sed -i 's/CURRENTWALLPAPER/'"current_wallpaper.$extension"'/' /usr/share/sddm/themes/$sddm_theme_name/theme.conf
+echo ":: File theme.conf updated in /usr/share/sddm/themes/$sddm_theme_name/"
+echo
+
+echo ":: You can preview your updated SDDM Login screen. (Close it with SUPER+Q)"
+echo
+if gum confirm "Do you want to preview the result?"; then
+ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sequoia
+fi
+
+echo
+gum spin --spinner dot --title "Please logout to see the result." -- sleep 3
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/shell.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/shell.sh
new file mode 100644
index 0000000..9cb6a94
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/shell.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+# ____ _ _ _
+# / ___|| |__ ___| | |
+# \___ \| '_ \ / _ \ | |
+# ___) | | | | __/ | |
+# |____/|_| |_|\___|_|_|
+#
+
+sleep 1
+
+_isInstalledYay() {
+ package="$1";
+ check="$(yay -Qs --color always "${package}" | grep "local" | grep "\." | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+clear
+figlet -f smslant "Shell"
+
+echo ":: Please select your preferred shell"
+echo
+shell=$(gum choose "bash" "zsh" "Cancel")
+# -----------------------------------------------------
+# Activate bash
+# -----------------------------------------------------
+if [[ $shell == "bash" ]] ;then
+
+ # Change shell to bash
+ while ! chsh -s $(which bash); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now bash."
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Activate zsh
+# -----------------------------------------------------
+elif [[ $shell == "zsh" ]] ;then
+
+ # Change shell to shh
+ while ! chsh -s $(which zsh); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now zsh."
+
+ # Installing oh-my-posh
+ yay -S oh-my-posh-bin
+
+ # Installing oh-my-zsh
+ if [ ! -d "$HOME/.oh-my-zsh" ]; then
+ echo ":: Installing oh-my-zsh"
+ sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
+ cp ~/.config/ml4w/tpl/.zshrc ~/
+ else
+ echo ":: oh-my-zsh already installed"
+ fi
+
+ # Installing zsh-autosuggestions
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
+ echo ":: Installing zsh-autosuggestions"
+ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
+ else
+ echo ":: zsh-autosuggestions already installed"
+ fi
+
+ # Installing zsh-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
+ echo ":: Installing zsh-syntax-highlighting"
+ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
+ else
+ echo ":: zsh-syntax-highlighting already installed"
+ fi
+
+ # Installing fast-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/fast-syntax-highlighting" ]; then
+ echo ":: Installing fast-syntax-highlighting"
+ git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
+ else
+ echo ":: fast-syntax-highlighting already installed"
+ fi
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Cencel
+# -----------------------------------------------------
+else
+ echo ":: Changing shell canceled"
+ exit
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/thunarterminal.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/thunarterminal.sh
new file mode 100644
index 0000000..777be5f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/thunarterminal.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+clear
+if [ -f ~/.config/ml4w/settings/terminal.sh ]; then
+ terminal="$(cat ~/.config/ml4w/settings/terminal.sh)"
+ echo ":: Installing $terminal"
+ if [ -d ~/.config/xfce4 ]; then
+ if [ ! -f ~/.config/xfce4/helpers.rc ]; then
+ touch ~/.config/xfce4/helpers.rc
+ fi
+ echo "TerminalEmulator=$terminal" > ~/.config/xfce4/helpers.rc
+ echo ":: $terminal defined as Thunar Terminal Emulator."
+ else
+ echo "ERROR: ~/.config/xfce4 not found. Please open Thunar once to create it."
+ echo "Then start this script again."
+ fi
+else
+ echo "ERROR: ~/.config/ml4w/settings/terminal.sh not found"
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/updates.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/updates.sh
new file mode 100644
index 0000000..505d126
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/updates.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \/ __|
+# | |_| | |_) | (_| | (_| | || __/\__ \
+# \___/| .__/ \__,_|\__,_|\__\___||___/
+# |_|
+#
+
+# -----------------------------------------------------
+# Define threshholds for color indicators
+# -----------------------------------------------------
+
+threshhold_green=0
+threshhold_yellow=25
+threshhold_red=100
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ # -----------------------------------------------------
+ # Calculate available updates
+ # -----------------------------------------------------
+
+ # flatpak remote-ls --updates
+
+ updates=$(checkupdates-with-aur | wc -l)
+ ;;
+ fedora)
+ updates=$(dnf check-update -q|grep -c ^[a-z0-9])
+ ;;
+ *)
+ updates=0
+ ;;
+esac
+
+# -----------------------------------------------------
+# Output in JSON format for Waybar Module custom-updates
+# -----------------------------------------------------
+
+css_class="green"
+
+if [ "$updates" -gt $threshhold_yellow ]; then
+ css_class="yellow"
+fi
+
+if [ "$updates" -gt $threshhold_red ]; then
+ css_class="red"
+fi
+
+if [ "$updates" -gt $threshhold_green ]; then
+ printf '{"text": "%s", "alt": "%s", "tooltip": "Click to update your system", "class": "%s"}' "$updates" "$updates" "$css_class"
+else
+ printf '{"text": "0", "alt": "0", "tooltip": "No updates available", "class": "green"}'
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/wlogout.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/wlogout.sh
new file mode 100644
index 0000000..2b540eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/scripts/wlogout.sh
@@ -0,0 +1,5 @@
+res_w=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width')
+res_h=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .height')
+h_scale=$(hyprctl -j monitors | jq '.[] | select (.focused == true) | .scale' | sed 's/\.//')
+w_margin=$(( res_h * 27 / h_scale ))
+wlogout -b 5 -T $w_margin -B $w_margin
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/ai.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/ai.sh
new file mode 100644
index 0000000..36937a2
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/ai.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/browser.sh) --new-window https://chat.gibbyb.com
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/blur.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/blur.sh
new file mode 100644
index 0000000..4ffc966
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/blur.sh
@@ -0,0 +1 @@
+50x30
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/browser.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/browser.sh
new file mode 100644
index 0000000..dbfb8f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/browser.sh
@@ -0,0 +1 @@
+firefox
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/calculator.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/calculator.sh
new file mode 100644
index 0000000..7321b2e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/calculator.sh
@@ -0,0 +1 @@
+gnome-calculator
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/dotfiles-folder.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/dotfiles-folder.sh
new file mode 100644
index 0000000..b1b1c85
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/dotfiles-folder.sh
@@ -0,0 +1 @@
+Documents/Configs/hyprland/desktop
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/dunst_position.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/dunst_position.sh
new file mode 100644
index 0000000..181d3ca
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/dunst_position.sh
@@ -0,0 +1 @@
+top-center
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/editor.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/editor.sh
new file mode 100644
index 0000000..732ff53
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/editor.sh
@@ -0,0 +1 @@
+nvim
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/emojipicker.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/emojipicker.sh
new file mode 100644
index 0000000..36d697f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/emojipicker.sh
@@ -0,0 +1 @@
+smile
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/eww-monitor.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/eww-monitor.sh
new file mode 100644
index 0000000..4d18c3e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/eww-monitor.sh
@@ -0,0 +1 @@
+auto
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/filemanager.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/filemanager.sh
new file mode 100644
index 0000000..9f0175d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/filemanager.sh
@@ -0,0 +1 @@
+nautilus
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_dpms_timeout.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_dpms_timeout.sh
new file mode 100644
index 0000000..9ecf271
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_dpms_timeout.sh
@@ -0,0 +1 @@
+660
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_hyprlock_timeout.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
new file mode 100644
index 0000000..73623d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
@@ -0,0 +1 @@
+600
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_suspend_timeout.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_suspend_timeout.sh
new file mode 100644
index 0000000..2974009
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hypridle_suspend_timeout.sh
@@ -0,0 +1 @@
+1800
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hyprpaper.tpl b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hyprpaper.tpl
new file mode 100644
index 0000000..3033ff3
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hyprpaper.tpl
@@ -0,0 +1,8 @@
+# Preload Wallpapers
+preload = WALLPAPER
+
+# Set Wallpapers
+wallpaper = ,WALLPAPER
+
+# Disable Splash
+splash = false
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hyprshade.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hyprshade.sh
new file mode 100644
index 0000000..1865560
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/hyprshade.sh
@@ -0,0 +1 @@
+hyprshade_filter="blue-light-filter-50"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/ml4w-sidebar.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/ml4w-sidebar.sh
new file mode 100644
index 0000000..b1ab0ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/ml4w-sidebar.sh
@@ -0,0 +1 @@
+ags toggle sidebar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/networkmanager.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/networkmanager.sh
new file mode 100644
index 0000000..b2a0141
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/networkmanager.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e nmtui
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/notification.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/notification.sh
new file mode 100644
index 0000000..936c7eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/notification.sh
@@ -0,0 +1 @@
+dunst
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/platform.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/platform.sh
new file mode 100644
index 0000000..35a143b
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/platform.sh
@@ -0,0 +1 @@
+fedora
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/printer-drivers.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/printer-drivers.sh
new file mode 100644
index 0000000..444839f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/printer-drivers.sh
@@ -0,0 +1,4 @@
+# Installation of Printer Drivers
+# Please add your drivers to the package list
+# Example:
+# yay -S brother-hll2360dw-lpr-bin brother-hll2360dw-cups-bin brother-mfc-l3770cdw brscan-skey brscan4 skanpage
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-border-radius.rasi b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-border-radius.rasi
new file mode 100644
index 0000000..7cbaeeb
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-border-radius.rasi
@@ -0,0 +1 @@
+* { border-radius: 2em; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-border.rasi b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-border.rasi
new file mode 100644
index 0000000..e533468
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-border.rasi
@@ -0,0 +1 @@
+* { border-width: 3px; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-font.rasi b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-font.rasi
new file mode 100644
index 0000000..a2497c3
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi-font.rasi
@@ -0,0 +1 @@
+configuration { font: "Fira Sans 11"; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi_bordersize.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi_bordersize.sh
new file mode 100644
index 0000000..e440e5c
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/rofi_bordersize.sh
@@ -0,0 +1 @@
+3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-editor.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-editor.sh
new file mode 100644
index 0000000..5f0900f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-editor.sh
@@ -0,0 +1 @@
+pinta
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-filename.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-filename.sh
new file mode 100644
index 0000000..f81ad3c
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-filename.sh
@@ -0,0 +1 @@
+NAME="screenshot_$(date +%d%m%Y_%H%M%S).jpg"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-folder.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-folder.sh
new file mode 100644
index 0000000..a1bf821
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/screenshot-folder.sh
@@ -0,0 +1 @@
+screenshot_folder="$HOME/Pictures"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/sddm/theme.tpl b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/sddm/theme.tpl
new file mode 100644
index 0000000..f4ae01f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/sddm/theme.tpl
@@ -0,0 +1,132 @@
+[General]
+
+# Set to your screen resolution for better results
+width=1680
+height=1050
+
+backgroundColour="black"
+
+wallpaper="backgrounds/CURRENTWALLPAPER"
+
+# Whether to scale the image to fit on the screen, might leave some blank spaces
+# will scale and crop the wallpaper if left false
+fitWallpaper=false
+
+# Main font
+fontFamily="Noto Sans"
+
+# Set to a patched NerdFont if some icons don't display properly
+# or leave empty to use the main font family
+iconFont=""
+
+# Set this if fonts are the wrong size for your resolution
+fontSize=14
+
+# Whether to show icons inside menus
+iconsInMenus=true
+
+
+# [Colour_Palette]
+
+# The main colour for text and icons
+primaryColour="white"
+
+# The background colour of popup panels
+popupsBackgroundColour="white"
+
+# Used for the text and icons inside popup panels
+popupsForegroundColour="black"
+
+# Colour used for selected and focused items
+accentColour="#a7d9ea"
+
+
+# [Greeting_Screen]
+
+# Set true to be taken directly to the login screen
+skipToLogin=false
+
+# Supports Markdown formatting, leave empty to not display any text
+greeting="Welcome back!"
+
+# Adjusts the font size for the greeting message, clock and date
+fontSizeMultiplier=2
+
+# For help with date and time formatting see https://doc.qt.io/qt-5/qml-qtqml-date.html#format-strings
+clockFormat="HH:mm"
+dateFormat="dddd, dd MMMM"
+
+# Set this in case the date isn't in your system locale or you wish to use a different one
+locale=""
+
+# Styles the clock font
+# Set to 'outline' for alternate style
+clockStyle=fill
+
+# Anchor the clock to a side or corner of the screen, horizontal position is susceptible to layout mirroring
+# Syntax: vertical | horizontal
+# possible vertical values: top - center - bottom
+# and horizontal: left - center - right
+dateTimePosition="bottom right"
+
+# Defines how far away the date and time are from the edges of the screen
+dateTimePadding=55
+
+# Defines the behaviour of the sliding transition from greeting to login form
+# Set to +/- x or y
+transitionDirection="x"
+
+# [Login_Screen]
+
+# The maximum radius allowed is 16 per loop
+blurRadius=10
+blurRecursiveLoops=5
+
+# Used to dim the background
+darkenWallpaper=0.3
+
+# Purely cosmetic, has no effect on login credentials
+capitaliseUsername=false
+
+# 'mask' - hides your password by replacing the characters with something else
+# 'off' - also hides the length of your password by disabling echoing
+passwordEchoStyle=mask
+
+allowEmptyPassword=false
+
+# Set false to hide the selected session's name next to the menu icon
+displaySession=true
+
+
+# [Translations]
+# SDDM may not have translations for every element, or you might want to change some text to something else
+# setting these will override the text constants
+
+virtualKeyboard=""
+poweroff=""
+reboot=""
+suspend=""
+hibernate=""
+password=""
+username=""
+loginFailed=""
+
+
+# [Accessibility]
+
+# Set false to set all transition durations to 0
+enableAnimations=true
+
+# 'auto' - activates mirroring based on the system locale
+# 'false' - never mirror layout
+# 'true' - always mirrors
+mirrorLayout=auto
+
+# Whether the on-screen keyboard should be activated by default
+# It can always be de/activated through the accessibility panel
+virtualKeyboardStartActive=false
+
+# Normally the on-screen keyboard only shows up when text fields are focused
+# Set this true to have the keyboard always be visible once activated
+# This will render the hide button on the keyboard non-functional
+forceKeyboardVisible=false
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/software.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/software.sh
new file mode 100644
index 0000000..d10bc37
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/software.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e pacseek
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/system-monitor.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/system-monitor.sh
new file mode 100644
index 0000000..a7b1e4f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/system-monitor.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e htop
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/terminal.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/terminal.sh
new file mode 100644
index 0000000..659fb6b
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/terminal.sh
@@ -0,0 +1 @@
+kitty
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-automation.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-automation.sh
new file mode 100644
index 0000000..2b82dfe
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-automation.sh
@@ -0,0 +1 @@
+60
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-effect.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-effect.sh
new file mode 100644
index 0000000..cfb931e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-effect.sh
@@ -0,0 +1 @@
+off
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-engine.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-engine.sh
new file mode 100644
index 0000000..b6923b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-engine.sh
@@ -0,0 +1 @@
+hyprpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-folder.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-folder.sh
new file mode 100644
index 0000000..8d138d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wallpaper-folder.sh
@@ -0,0 +1,2 @@
+# Enter the path to the folder that includes your wallpapers
+wallpaper_folder=$HOME/wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar-quicklinks.json b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar-quicklinks.json
new file mode 100644
index 0000000..7d61906
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar-quicklinks.json
@@ -0,0 +1,45 @@
+{
+ "custom/quicklink1": {
+ "format": "",
+ "on-click": "chromium",
+ "tooltip-format": "Open Chromium"
+ },
+ "custom/quicklink2": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip-format": "Open Firefox"
+ },
+ "custom/quicklink3": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/filemanager.sh",
+ "tooltip-format": "Open filemanager"
+ },
+ "custom/quicklink4": {
+ "format": "",
+ "on-click": "betterbird",
+ "tooltip-format": "Open Betterbird"
+ },
+ "custom/quicklink5": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/calculator.sh",
+ "tooltip-format": "Open calculator"
+ },
+ "custom/quicklink6": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/emojipicker.sh",
+ "tooltip-format": "Open emoji picker"
+ },
+ "custom/quicklinkempty": {
+ },
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/quicklink2",
+ "custom/quicklink3",
+ /*
+ "custom/quicklink4",
+ */
+ "custom/quicklinkempty"
+ ]
+ }
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar-theme.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar-theme.sh
new file mode 100644
index 0000000..ed8366b
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar-theme.sh
@@ -0,0 +1 @@
+/ml4w;/ml4w/colored
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_appmenu.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_appmenu.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_appmenu.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_backlight.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_backlight.sh
new file mode 100644
index 0000000..c1f22fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_backlight.sh
@@ -0,0 +1 @@
+False
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_chatgpt.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_chatgpt.sh
new file mode 100644
index 0000000..0ca9514
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_chatgpt.sh
@@ -0,0 +1 @@
+True
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_custom_timedateformat.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_custom_timedateformat.sh
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_dateformat.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_dateformat.sh
new file mode 100644
index 0000000..05696fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_dateformat.sh
@@ -0,0 +1 @@
+%a
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_network.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_network.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_network.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_quicklinks.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_quicklinks.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_quicklinks.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_screenlock.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_screenlock.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_screenlock.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_settings.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_settings.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_settings.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_systray.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_systray.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_systray.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_taskbar.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_taskbar.sh
new file mode 100644
index 0000000..bc59c12
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_taskbar.sh
@@ -0,0 +1 @@
+False
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_timeformat.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_timeformat.sh
new file mode 100644
index 0000000..3d87f12
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_timeformat.sh
@@ -0,0 +1 @@
+%H:%M
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_timezone.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_timezone.sh
new file mode 100644
index 0000000..c7aac92
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_timezone.sh
@@ -0,0 +1 @@
+America/Chicago
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_toggle.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_toggle.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_toggle.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_window.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_window.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_window.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_workspaces.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_workspaces.sh
new file mode 100644
index 0000000..1e8b314
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/waybar_workspaces.sh
@@ -0,0 +1 @@
+6
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wlogout-parameters.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wlogout-parameters.sh
new file mode 100644
index 0000000..50e2452
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/settings/wlogout-parameters.sh
@@ -0,0 +1 @@
+-b 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/tpl/.zshrc b/configs/dotfiles/hyprland/desktop/.config/ml4w/tpl/.zshrc
new file mode 100644
index 0000000..9968f7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/tpl/.zshrc
@@ -0,0 +1,23 @@
+# _
+# _______| |__ _ __ ___
+# |_ / __| '_ \| '__/ __|
+# _ / /\__ \ | | | | | (__
+# (_)___|___/_| |_|_| \___|
+#
+# -----------------------------------------------------
+# ML4W zshrc loader
+# -----------------------------------------------------
+
+# DON'T CHANGE THIS FILE
+
+# You can define your custom configuration by adding
+# files in ~/.config/zshrc
+# or by creating a folder ~/.config/zshrc/custom
+# with you own zshrc configuration
+# -----------------------------------------------------
+
+if [ -d ~/.config/zshrc/custom ] ;then
+ for f in ~/.config/zshrc/custom/*; do source $f; done
+else
+ for f in ~/.config/zshrc/*; do source $f; done
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/version/compare.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/version/compare.sh
new file mode 100644
index 0000000..1b18b98
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/version/compare.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Compare installed version with used version
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+if [ -f /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name ] ;then
+ installed_version=$(cat /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name)
+ used_version=$(cat ~/.config/ml4w/version/name)
+ if [[ $(testvercomp $used_version $installed_version "<") == "0" ]] ;then
+ notify-send "Please run ml4w-hyprland-setup" "Installed version is newer then the version you're currently using."
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/version/library.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/version/library.sh
new file mode 100644
index 0000000..94e5fbe
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/version/library.sh
@@ -0,0 +1,42 @@
+vercomp () {
+ if [[ $1 == $2 ]]
+ then
+ return 0
+ fi
+ local IFS=.
+ local i ver1=($1) ver2=($2)
+ # fill empty fields in ver1 with zeros
+ for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
+ do
+ ver1[i]=0
+ done
+ for ((i=0; i<${#ver1[@]}; i++))
+ do
+ if ((10#${ver1[i]:=0} > 10#${ver2[i]:=0}))
+ then
+ return 1
+ fi
+ if ((10#${ver1[i]} < 10#${ver2[i]}))
+ then
+ return 2
+ fi
+ done
+ return 0
+}
+
+testvercomp () {
+ vercomp $1 $2
+ case $? in
+ 0) op='=';;
+ 1) op='>';;
+ 2) op='<';;
+ esac
+ if [[ $op != $3 ]]
+ then
+ # No update available
+ echo "1"
+ else
+ # Update available
+ echo "0"
+ fi
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/version/name b/configs/dotfiles/hyprland/desktop/.config/ml4w/version/name
new file mode 100644
index 0000000..92db042
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/version/name
@@ -0,0 +1 @@
+2.9.7.4
diff --git a/configs/dotfiles/hyprland/desktop/.config/ml4w/version/update.sh b/configs/dotfiles/hyprland/desktop/.config/ml4w/version/update.sh
new file mode 100644
index 0000000..efe9403
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ml4w/version/update.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Check for updates
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+# Get latest tag from GitHub
+get_latest_release() {
+ v_online=$(curl --silent "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=ml4w-hyprland")
+ v_full_online=$(grep -m 1 'pkgver' <<< $v_online | sed 's/^$/pkgver/')
+ echo ${v_full_online/pkgver=/}
+}
+
+# Check for internet connection
+if ping -q -c 1 -W 1 google.com >/dev/null; then
+
+ version=$(cat ~/.config/ml4w/version/name)
+ online=$(get_latest_release "mylinuxforwork/hyprland-dotfiles")
+ echo $version "<" $online
+ testvercomp $version $online "<"
+else
+ # Network is down
+ echo "1"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/nwg-dock-hyprland/launch.sh b/configs/dotfiles/hyprland/desktop/.config/nwg-dock-hyprland/launch.sh
new file mode 100644
index 0000000..9f52df8
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/nwg-dock-hyprland/launch.sh
@@ -0,0 +1,6 @@
+# ___ __
+# / _ \___ ____/ /__
+# / // / _ \/ __/ '_/
+# /____/\___/\__/_/\_\
+#
+nwg-dock-hyprland -i 48 -w 6 -mb 10 -ml 10 -mr 10 -x -lp "start" -c "rofi -show drun"
diff --git a/configs/dotfiles/hyprland/desktop/.config/nwg-dock-hyprland/style.css b/configs/dotfiles/hyprland/desktop/.config/nwg-dock-hyprland/style.css
new file mode 100644
index 0000000..5777e41
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/nwg-dock-hyprland/style.css
@@ -0,0 +1,43 @@
+window {
+ background: rgba(46,47,61,0.96);
+ border-radius: 14px;
+ border-style: solid;
+ border-width: 3px;
+ border-color: #82aaff;
+ opacity:0.8;
+}
+
+#box {
+ /* Define attributes of the box surrounding icons here */
+ padding: 10px
+}
+
+#active {
+ /* This is to underline the button representing the currently active window */
+ border-bottom: solid 0px;
+ border-color: #FFFFFF
+}
+
+button, image {
+ background: none;
+ border-style: none;
+ box-shadow: none;
+ color: #999
+}
+
+button {
+ padding: 4px;
+ margin-left: 4px;
+ margin-right: 4px;
+ color: #eee;
+ font-size: 12px
+}
+
+button:hover {
+ background-color: rgba(255, 255, 255, 0.15);
+ border-radius: 10px;
+}
+
+button:focus {
+ box-shadow: none
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/ohmyposh/EDM115-newline.omp.json b/configs/dotfiles/hyprland/desktop/.config/ohmyposh/EDM115-newline.omp.json
new file mode 100644
index 0000000..78a53f7
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ohmyposh/EDM115-newline.omp.json
@@ -0,0 +1,192 @@
+{
+ "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
+ "transient_prompt": {
+ "template": " ❯❯ {{ .AbsolutePWD }} : ",
+ "foreground": "#f8f8f2",
+ "background": "transparent",
+ "newline": true
+ },
+ "blocks": [
+ {
+ "type": "prompt",
+ "alignment": "left",
+ "segments": [
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "\n\u256d\u2500",
+ "foreground": "#f8f8f2",
+ "type": "text",
+ "style": "plain"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "leading_diamond": "\ue0b6",
+ "template": "{{ .UserName }}@{{ .HostName }}",
+ "foreground": "#f8f8f2",
+ "background": "#282a36",
+ "type": "session",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "\udb85\udc0b",
+ "foreground": "#ff5555",
+ "powerline_symbol": "\ue0b0",
+ "background": "#282a36",
+ "type": "root",
+ "style": "powerline"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "{{ .Icon }} ",
+ "foreground": "#f8f8f2",
+ "powerline_symbol": "\ue0b0",
+ "background": "#282a36",
+ "type": "os",
+ "style": "powerline"
+ },
+ {
+ "properties": {
+ "cache_duration": "none",
+ "style": "full"
+ },
+ "trailing_diamond": "\ue0b4",
+ "template": " \udb80\ude56 {{ path .Path .Location }}",
+ "foreground": "#282a36",
+ "background": "#cccccc",
+ "type": "path",
+ "style": "diamond"
+ }
+ ]
+ },
+ {
+ "type": "prompt",
+ "alignment": "right",
+ "segments": [
+ {
+ "properties": {
+ "branch_icon": "",
+ "cache_duration": "none",
+ "display_changing_color": true,
+ "fetch_status": true,
+ "fetch_upstream_icon": true,
+ "full_branch_path": true
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue725 ({{ url .UpstreamIcon .UpstreamURL }} {{ url .HEAD .UpstreamURL }}){{ if gt .Ahead 0 }}<#50fa7b> +{{ .Ahead }}>{{ end }}{{ if gt .Behind 0 }}<#ff5555> -{{ .Behind }}>{{ end }}{{ if .Working.Changed }}<#f8f8f2> \uf044 {{ .Working.String }}>{{ end }}{{ if .Staging.Changed }}<#f8f8f2> \uf046 {{ .Staging.String }}>{{ end }}",
+ "foreground": "#282a36",
+ "background": "#ffb86c",
+ "type": "git",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue718 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#50fa7b",
+ "type": "node",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files",
+ "extensions": [
+ "package-lock.json"
+ ]
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue71e {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ff5555",
+ "type": "npm",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files",
+ "extensions": [
+ "pnpm-lock.yaml"
+ ]
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\udb80\udec1 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ffb86c",
+ "type": "pnpm",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files"
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue73c {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#50fa7b",
+ "type": "python",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue738 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ff79c6",
+ "type": "java",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\uf308 {{ .Context }}",
+ "foreground": "#282a36",
+ "background": "#8be9fd",
+ "type": "docker",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue73d {{ .Full }}",
+ "foreground": "#f8f8f2",
+ "background": "#6272a4",
+ "type": "php",
+ "style": "diamond"
+ }
+ ]
+ },
+ {
+ "type": "prompt",
+ "alignment": "left",
+ "segments": [
+ {
+ "properties": {
+ "always_enabled": true,
+ "cache_duration": "none"
+ },
+ "template": "\u2570\u2500 ❯❯",
+ "foreground": "#f8f8f2",
+ "type": "text",
+ "style": "diamond"
+ }
+ ],
+ "newline": true
+ }
+ ],
+ "version": 3,
+ "patch_pwsh_bleed": true,
+ "final_space": true
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/ohmyposh/zen.toml b/configs/dotfiles/hyprland/desktop/.config/ohmyposh/zen.toml
new file mode 100644
index 0000000..832848d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/ohmyposh/zen.toml
@@ -0,0 +1,74 @@
+#:schema https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
+
+version = 2
+final_space = true
+console_title_template = '{{ .Shell }} in {{ .Folder }}'
+
+[[blocks]]
+ type = 'prompt'
+ alignment = 'left'
+ newline = true
+
+ [[blocks.segments]]
+ type = 'path'
+ style = 'plain'
+ background = 'transparent'
+ foreground = 'blue'
+ template = '{{ .Path }}'
+
+ [blocks.segments.properties]
+ style = 'full'
+
+ [[blocks.segments]]
+ type = 'git'
+ style = 'plain'
+ foreground = 'p:grey'
+ background = 'transparent'
+ template = ' {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}*{{ end }} {{ if gt .Behind 0 }}⇣{{ end }}{{ if gt .Ahead 0 }}⇡{{ end }}>'
+
+ [blocks.segments.properties]
+ branch_icon = ''
+ commit_icon = '@'
+ fetch_status = true
+
+[[blocks]]
+ type = 'rprompt'
+ overflow = 'hidden'
+
+ [[blocks.segments]]
+ type = 'executiontime'
+ style = 'plain'
+ foreground = 'yellow'
+ background = 'transparent'
+ template = '{{ .FormattedMs }}'
+
+ [blocks.segments.properties]
+ threshold = 5000
+
+[[blocks]]
+ type = 'prompt'
+ alignment = 'left'
+ newline = true
+
+ [[blocks.segments]]
+ type = 'text'
+ style = 'plain'
+ foreground_templates = [
+ "{{if gt .Code 0}}red{{end}}",
+ "{{if eq .Code 0}}magenta{{end}}",
+ ]
+ background = 'transparent'
+ template = '❯'
+
+[transient_prompt]
+ foreground_templates = [
+ "{{if gt .Code 0}}red{{end}}",
+ "{{if eq .Code 0}}magenta{{end}}",
+ ]
+ background = 'transparent'
+ template = '❯ '
+
+[secondary_prompt]
+ foreground = 'magenta'
+ background = 'transparent'
+ template = '❯❯ '
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/qt6ct/qt6ct.conf b/configs/dotfiles/hyprland/desktop/.config/qt6ct/qt6ct.conf
new file mode 100644
index 0000000..9caa16e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/qt6ct/qt6ct.conf
@@ -0,0 +1,32 @@
+[Appearance]
+color_scheme_path=/usr/share/qt6ct/colors/darker.conf
+custom_palette=true
+icon_theme=breeze-dark
+standard_dialogs=default
+style=Fusion
+
+[Fonts]
+fixed="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+general="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=0
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+gui_effects=@Invalid()
+keyboard_scheme=2
+menus_have_icons=true
+show_shortcuts_in_context_menus=true
+stylesheets=@Invalid()
+toolbutton_style=4
+underline_shortcut=1
+wheel_scroll_lines=3
+
+[SettingsWindow]
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x4\xe1\0\0\x5\x2\0\0\0\0\0\0\0\0\0\0\t\xfd\0\0\x5\x43\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x4\xe1\0\0\x5\x2)
+
+[Troubleshooting]
+force_raster_widgets=1
+ignored_applications=@Invalid()
diff --git a/configs/dotfiles/hyprland/desktop/.config/rofi/config-cliphist.rasi b/configs/dotfiles/hyprland/desktop/.config/rofi/config-cliphist.rasi
new file mode 100644
index 0000000..a2cbd7a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/rofi/config-cliphist.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/rofi/config-compact.rasi b/configs/dotfiles/hyprland/desktop/.config/rofi/config-compact.rasi
new file mode 100644
index 0000000..4e59ac5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/rofi/config-compact.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/rofi/config-hyprshade.rasi b/configs/dotfiles/hyprland/desktop/.config/rofi/config-hyprshade.rasi
new file mode 100644
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/rofi/config-hyprshade.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/rofi/config-old.rasi b/configs/dotfiles/hyprland/desktop/.config/rofi/config-old.rasi
new file mode 100644
index 0000000..06fb55f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/rofi/config-old.rasi
@@ -0,0 +1,266 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: "APPS";
+ display-run: "RUN";
+ display-filebrowser: "FILES";
+ display-window: "WINDOW";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@import "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+/* ---- Window ---- */
+window {
+ width: 900px;
+ x-offset: 0px;
+ y-offset: 0px;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: #FFFFFF;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+/* ---- Mainbox ---- */
+mainbox {
+ enabled: true;
+ orientation: horizontal;
+ spacing: 0px;
+ margin: 0px;
+ background-color: @background;
+ background-image: @current-image;
+ children: ["imagebox","listbox"];
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 18px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "inputbar", "dummy", "mode-switcher" ];
+}
+
+/* ---- Listbox ---- */
+listbox {
+ spacing: 20px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "message", "listview" ];
+}
+
+/* ---- Dummy ---- */
+dummy {
+ background-color: transparent;
+}
+
+/* ---- Inputbar ---- */
+inputbar {
+ enabled: true;
+ text-color: @foreground;
+ spacing: 10px;
+ padding: 15px;
+ border-radius: 10px;
+ border-color: @foreground;
+ background-color: @background;
+ children: [ "textbox-prompt-colon", "entry" ];
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "";
+ padding: 0px 5px 0px 0px;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+entry {
+ enabled: true;
+ background-color: transparent;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+/* ---- Mode Switcher ---- */
+mode-switcher{
+ enabled: true;
+ spacing: 20px;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+button {
+ padding: 10px;
+ border-radius: 10px;
+ background-color: @background;
+ text-color: inherit;
+ cursor: pointer;
+ border: 0px;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+/* ---- Listview ---- */
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ spacing: 0px;
+ padding: 10px;
+ margin: 0px;
+ background-color: @background;
+ border:0px;
+}
+
+/* ---- Element ---- */
+element {
+ enabled: true;
+ padding: 10px;
+ margin: 5px;
+ cursor: pointer;
+ background-color: @background;
+ border-radius: 10px;
+ border: @border-width;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 32px;
+ cursor: inherit;
+}
+
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border:0px;
+ margin:20px 0px 0px 0px;
+ padding:0px;
+ spacing:0px;
+ border-radius: 10px;
+}
+
+textbox {
+ padding: 15px;
+ margin: 0px;
+ border-radius: 0px;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 15px;
+ border-radius: 20px;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/rofi/config-screenshot.rasi b/configs/dotfiles/hyprland/desktop/.config/rofi/config-screenshot.rasi
new file mode 100644
index 0000000..d4e70ed
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/rofi/config-screenshot.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 0em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/rofi/config-short.rasi b/configs/dotfiles/hyprland/desktop/.config/rofi/config-short.rasi
new file mode 100644
index 0000000..dcb8cd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/rofi/config-short.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 20em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 2;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/rofi/config-themes.rasi b/configs/dotfiles/hyprland/desktop/.config/rofi/config-themes.rasi
new file mode 100644
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/rofi/config-themes.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/rofi/config.rasi b/configs/dotfiles/hyprland/desktop/.config/rofi/config.rasi
new file mode 100644
index 0000000..50b759b
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/rofi/config.rasi
@@ -0,0 +1,241 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ height: 35em;
+ width: 56em;
+ transparency: "real";
+ fullscreen: false;
+ enabled: true;
+ cursor: "default";
+ spacing: 0em;
+ padding: 0em;
+ border: @border-width;
+ border-color: @color11;
+ border-radius: @border-radius;
+ background-color: @background;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: vertical;
+ children: [ "inputbar" , "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 5em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 0em 0em 1em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: horizontal;
+ children: [ "listview" , "mode-switcher" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1.5em;
+ spacing: 0.5em;
+ enabled: true;
+ columns: 2;
+ lines: 3;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ spacing: 0em;
+ padding: 0.5em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 3em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.1;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+// Error message //
+error-message {
+ text-color: @foreground;
+ background-color: @background;
+ text-transform: capitalize;
+ children: [ "textbox" ];
+}
+
+textbox {
+ text-color: inherit;
+ background-color: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-hyprland.conf b/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-hyprland.conf
new file mode 100644
index 0000000..84e2394
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-hyprland.conf
@@ -0,0 +1,18 @@
+$background = rgb({background.strip})
+$foreground = rgb({foreground.strip})
+$color0 = rgb({color0.strip})
+$color1 = rgb({color1.strip})
+$color2 = rgb({color2.strip})
+$color3 = rgb({color3.strip})
+$color4 = rgb({color4.strip})
+$color5 = rgb({color5.strip})
+$color6 = rgb({color6.strip})
+$color7 = rgb({color7.strip})
+$color8 = rgb({color8.strip})
+$color9 = rgb({color9.strip})
+$color10 = rgb({color10.strip})
+$color11 = rgb({color11.strip})
+$color12 = rgb({color12.strip})
+$color13 = rgb({color13.strip})
+$color14 = rgb({color14.strip})
+$color15 = rgb({color15.strip})
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-rofi-pywal.rasi b/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-rofi-pywal.rasi
new file mode 100644
index 0000000..f0b1665
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-rofi-pywal.rasi
@@ -0,0 +1,20 @@
+* {{
+ background: rgba(0,0,1,0.5);
+ foreground: #FFFFFF;
+ color0: {color0};
+ color1: {color1};
+ color2: {color2};
+ color3: {color3};
+ color4: {color4};
+ color5: {color5};
+ color6: {color6};
+ color7: {color7};
+ color8: {color8};
+ color9: {color9};
+ color10: {color10};
+ color11: {color11};
+ color12: {color12};
+ color13: {color13};
+ color14: {color14};
+ color15: {color15};
+}}
diff --git a/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-waybar.css b/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-waybar.css
new file mode 100644
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-waybar.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-wlogout.css b/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-wlogout.css
new file mode 100644
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/wal/templates/colors-wlogout.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/launch.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/launch.sh
new file mode 100644
index 0000000..8ae9e4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/launch.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# ____ _ _ __ __ _
+# / ___|| |_ __ _ _ __| |_ \ \ / /_ _ _ _| |__ __ _ _ __
+# \___ \| __/ _` | '__| __| \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# ___) | || (_| | | | |_ \ V V / (_| | |_| | |_) | (_| | |
+# |____/ \__\__,_|_| \__| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Quit all running waybar instances
+# -----------------------------------------------------
+killall waybar
+pkill waybar
+sleep 0.5
+
+# -----------------------------------------------------
+# Default theme: /THEMEFOLDER;/VARIATION
+# -----------------------------------------------------
+themestyle="/ml4w;/ml4w/light"
+
+# -----------------------------------------------------
+# Get current theme information from ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ -f ~/.config/ml4w/settings/waybar-theme.sh ]; then
+ themestyle=$(cat ~/.config/ml4w/settings/waybar-theme.sh)
+else
+ touch ~/.config/ml4w/settings/waybar-theme.sh
+ echo "$themestyle" > ~/.config/ml4w/settings/waybar-theme.sh
+fi
+
+IFS=';' read -ra arrThemes <<< "$themestyle"
+echo ":: Theme: ${arrThemes[0]}"
+
+if [ ! -f ~/.config/waybar/themes${arrThemes[1]}/style.css ]; then
+ themestyle="/ml4w;/ml4w/light"
+fi
+
+# -----------------------------------------------------
+# Loading the configuration
+# -----------------------------------------------------
+config_file="config"
+style_file="style.css"
+
+# Standard files can be overwritten with an existing config-custom or style-custom.css
+if [ -f ~/.config/waybar/themes${arrThemes[0]}/config-custom ] ;then
+ config_file="config-custom"
+fi
+if [ -f ~/.config/waybar/themes${arrThemes[1]}/style-custom.css ] ;then
+ style_file="style-custom.css"
+fi
+
+# Check if waybar-disabled file exists
+if [ ! -f $HOME/.cache/waybar-disabled ] ;then
+ waybar -c ~/.config/waybar/themes${arrThemes[0]}/$config_file -s ~/.config/waybar/themes${arrThemes[1]}/$style_file &
+fi
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/modules.json b/configs/dotfiles/hyprland/desktop/.config/waybar/modules.json
new file mode 100644
index 0000000..b87a7a4
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/modules.json
@@ -0,0 +1,379 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+{
+ // Workspaces
+ "hyprland/workspaces": {
+ "on-scroll-up": "hyprctl dispatch workspace r-1",
+ "on-scroll-down": "hyprctl dispatch workspace r+1",
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": ["Alacritty", "kitty"],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // Empty
+ "custom/empty": {
+ "format": ""
+ },
+
+ // Tools
+ "custom/tools": {
+ "format": "",
+ "tooltip-format": "Tools"
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip-format": "Left: Open clipboard Manager\nRight: Delete an entry\nMiddle: Clear list"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "interval": 1800,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "bash -c waypaper &",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip-format": "Left: Select a wallpaper\nRight: Select wallpaper effect"
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip-format": "Select a waybar theme"
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "sleep 0.1 && com.ml4w.dotfilessettings",
+ "tooltip-format": "ML4W Dotfiles Settings"
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": " ",
+ "on-click": "~/.config/ml4w/settings/ai.sh",
+ "tooltip-format": "AI Support"
+ },
+
+ // Calculator
+ "custom/calculator": {
+ "format": "",
+ "on-click": "qalculate-gtk",
+ "tooltip-format": "Open calculator"
+ },
+
+ // Windows VM
+ "custom/windowsvm": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/launchvm.sh",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ // START APPS LABEL
+ "format": "Apps",
+ // END APPS LABEL
+ "on-click": "sleep 0.2;pkill rofi || rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenuicon": {
+ "format": "",
+ "on-click": "sleep 0.2;rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/wlogout.sh",
+ "on-click-right": "hyprlock",
+ "tooltip-format": "Left: Power menu\nRight: Lock screen"
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "tooltip-format": "Toggle Screen Shader",
+ "on-click": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh rofi"
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle"
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "ags toggle calendar",
+ "timezone": "",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": ["custom/system", "disk", "cpu", "memory", "hyprland/language"]
+ },
+
+ // Group Tools
+ "group/tools": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/tools",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade"
+ ]
+ },
+
+ // Group Links
+ "group/links": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/chatgpt",
+ "custom/empty"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": true
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {essid} ({signalStrength}%)",
+ "format-ethernet": " {ifname}",
+ "format-disconnected": "Disconnected ⚠",
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}",
+ "tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "~/.config/ml4w/settings/networkmanager.sh",
+ "on-click-right": "~/.config/ml4w/scripts/nm-applet.sh toggle",
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format": " {status}",
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false
+ },
+
+ // backlight:
+ "backlight": {
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "scroll-step": 1
+ }
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ai-icon-20.png b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ai-icon-20.png
new file mode 100644
index 0000000..a070dd4
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ai-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ai-icon.png b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ai-icon.png
new file mode 100644
index 0000000..398379b
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ai-icon.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/hyprland-icon-20.png b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/hyprland-icon-20.png
new file mode 100644
index 0000000..0d36ec2
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/hyprland-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/hyprland-icon.png b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/hyprland-icon.png
new file mode 100644
index 0000000..c87b767
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/hyprland-icon.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-20.png b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-20.png
new file mode 100644
index 0000000..df25ccb
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-black.svg b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-black.svg
new file mode 100644
index 0000000..011b817
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-black.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-dark.png b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-dark.png
new file mode 100644
index 0000000..73ec085
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-dark.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-white.svg b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-white.svg
new file mode 100644
index 0000000..c19407d
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon-white.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon.png b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon.png
new file mode 100644
index 0000000..92a54e0
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon.svg b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon.svg
new file mode 100644
index 0000000..fa8e063
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/ml4w-icon.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai-black.svg b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai-black.svg
new file mode 100644
index 0000000..3b4eff9
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai-black.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai-white.svg b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai-white.svg
new file mode 100644
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai-white.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai.svg b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai.svg
new file mode 100644
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/assets/openai.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/config b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/config
new file mode 100644
index 0000000..b02f10e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/config
@@ -0,0 +1,161 @@
+{
+ // "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["hyprland/workspaces","custom/waybarthemes"],
+ "modules-center": ["hyprland/window"],
+ "modules-right": ["custom/ml4w-welcome","mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "sway/language", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip": false
+ },
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "Themes",
+ "on-click": "~/.config/ml4w/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ "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": "{}% "
+ },
+ "temperature": {
+ "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": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, 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"
+ },
+ "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/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/config.sh
new file mode 100644
index 0000000..71a3429
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Default Theme"
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/style.css
new file mode 100644
index 0000000..cafc802
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/default/style.css
@@ -0,0 +1,289 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+}
+
+window#waybar {
+ background-color: rgba(43, 48, 59, 0.5);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+window#waybar.termite {
+ background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+ background-color: #000000;
+ border: none;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 15px;
+ background-image: url("../assets/ml4w-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 20px;
+ margin-right: 0px;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background-color: transparent;
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button.urgent {
+ background-color: #eb4d4b;
+}
+
+#mode {
+ background-color: #64727D;
+ border-bottom: 3px solid #ffffff;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#mpd {
+ padding: 0 10px;
+ color: #ffffff;
+}
+
+#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 {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+#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 {
+ 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 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#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/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/black/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
new file mode 100644
index 0000000..cea609a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/black/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/black/style.css
new file mode 100644
index 0000000..129c909
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/black/style.css
@@ -0,0 +1,29 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
new file mode 100644
index 0000000..7f55337
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/colored/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
new file mode 100644
index 0000000..de0b369
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/config b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/config
new file mode 100644
index 0000000..ea2b0cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
new file mode 100644
index 0000000..df6f8c2
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/dark/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
new file mode 100644
index 0000000..54e8317
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/light/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
new file mode 100644
index 0000000..da067d2
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Light"
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/light/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/light/style.css
new file mode 100644
index 0000000..5caa16a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
new file mode 100644
index 0000000..dea299a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
new file mode 100644
index 0000000..fe8dbb3
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/white/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
new file mode 100644
index 0000000..1592654
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/white/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/white/style.css
new file mode 100644
index 0000000..a0ba4a7
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur-bottom/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/black/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/black/config.sh
new file mode 100644
index 0000000..5c6fb05
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/black/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/black/style.css
new file mode 100644
index 0000000..b8a549a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/black/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/colored/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/colored/config.sh
new file mode 100644
index 0000000..7338fef
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/colored/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/config b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/config
new file mode 100644
index 0000000..fcd29ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/dark/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/dark/config.sh
new file mode 100644
index 0000000..a3b9e88
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/dark/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/dark/style.css
new file mode 100644
index 0000000..8470788
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/light/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/light/config.sh
new file mode 100644
index 0000000..ca5fe11
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Light"
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/light/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/mixed/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/mixed/config.sh
new file mode 100644
index 0000000..eb698ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/mixed/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/style.css
new file mode 100644
index 0000000..12734d3
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/style.css
@@ -0,0 +1,478 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left:14px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 8px 15px 8px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 14px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 20px;
+}
+
+#custom-settings {
+ margin-right:12px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+ opacity: 0.8;
+}
+
+#custom-chatgpt {
+ margin-right: 12px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 16px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 17px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 8px 16px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+ color: @textcolor3;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/white/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/white/config.sh
new file mode 100644
index 0000000..e458b19
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/white/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/white/style.css
new file mode 100644
index 0000000..f50cb7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-blur/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/black/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/black/config.sh
new file mode 100644
index 0000000..5837eb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/black/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/black/style.css
new file mode 100644
index 0000000..6bae0cd
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/colored/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/colored/config.sh
new file mode 100644
index 0000000..0a31bac
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/colored/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/colored/style.css
new file mode 100644
index 0000000..53bf65c
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/config b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/config
new file mode 100644
index 0000000..8e55c1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 14,
+ "layer": "top",
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/dark/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/dark/config.sh
new file mode 100644
index 0000000..a6fe8ff
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/dark/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/dark/style.css
new file mode 100644
index 0000000..2179f76
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/light/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/light/config.sh
new file mode 100644
index 0000000..e016502
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/light/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/light/style.css
new file mode 100644
index 0000000..833b8c4
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/mixed/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/mixed/config.sh
new file mode 100644
index 0000000..e5bc67e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/mixed/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/mixed/style.css
new file mode 100644
index 0000000..f3ee832
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/white/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/white/config.sh
new file mode 100644
index 0000000..71dd9f5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/white/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/white/style.css
new file mode 100644
index 0000000..704bfbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-bottom/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/config b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/config
new file mode 100644
index 0000000..4614d63
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/config
@@ -0,0 +1,88 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenuicon",
+ "hyprland/workspaces",
+ "group/links",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+ "custom/exit",
+ "clock",
+"tray",
+ "custom/ml4w-welcome"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/config.sh
new file mode 100644
index 0000000..eac2047
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Minimal"
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/style.css
new file mode 100644
index 0000000..be884b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-minimal/style.css
@@ -0,0 +1,431 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.4);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left: 10px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+ #workspaces {
+ margin: 3px 7px 3px 3px;
+ border: 0px;
+ font-size: 14px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ border: 0px;
+ margin:4px 5px 4px 0px;
+ padding:0px 4px 0px 4px;
+ color: @textcolor3;
+ transition: all 0.5s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 0px 15px 0px 0px;
+ border-radius: 12px;
+ color:@textcolor;
+ font-size:14px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 14px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-settings {
+ margin-right: 15px;
+}
+
+#custom-browser {
+ margin-right: 12px;
+}
+
+#custom-wallpaper {
+ margin-right: 14px;
+}
+
+#custom-chatgpt {
+ margin-right: 10px;
+ background-image: url("../assets/ai-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 23px;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-ml4w-hyprland-settings {
+ margin-right: 12px;
+ background-image: url("../assets/hyprland-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 16px;
+}
+
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 16px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 14px;
+ font-weight: bold;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenuicon {
+ font-size: 20px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:16px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#custom-updates.green {
+}
+
+#custom-updates.yellow {
+ color: #ff9a3c;
+}
+
+#custom-updates.red {
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Youtube
+ * ----------------------------------------------------- */
+
+#custom-youtube {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:14px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ font-size: 15px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+ background-color: transparent;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+ #pulseaudio {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#pulseaudio.muted {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#network.ethernet {
+ color: @textcolor;
+}
+
+#network.wifi {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/black/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/black/config.sh
new file mode 100644
index 0000000..63c42a1
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/black/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/black/style.css
new file mode 100644
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/colored/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/colored/config.sh
new file mode 100644
index 0000000..61e80a5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/colored/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/config b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/config
new file mode 100644
index 0000000..f570e02
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 14,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "hyprland/workspaces",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/dark/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/dark/config.sh
new file mode 100644
index 0000000..e6f8d5b
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/dark/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/dark/style.css
new file mode 100644
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/light/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/light/config.sh
new file mode 100644
index 0000000..0c6cdb1
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Light"
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/light/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/mixed/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/mixed/config.sh
new file mode 100644
index 0000000..46f3eb5
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/mixed/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/style.css
new file mode 100644
index 0000000..12943e1
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/style.css
@@ -0,0 +1,470 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+ * {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 18px 3px 1px;
+ padding: 0px 2px;
+ border-radius: 5px 5px 5px 5px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 6px;
+ margin: 3px 2px;
+ border-radius: 3px 3px 3px 3px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.1s linear;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 3px 3px 3px 3px;
+ min-width: 30px;
+ transition: all 0.1s linear;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 5px 5px 5px 5px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 3px 15px 3px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 5px 5px 5px 5px;
+ color:white;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 5px 5px 5px 5px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 10px 0px 10px;
+ margin: 2px 17px 2px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 3px 5px 3px 5px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 15px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/white/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/white/config.sh
new file mode 100644
index 0000000..efe0528
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/white/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/white/style.css
new file mode 100644
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w-modern/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/black/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/black/config.sh
new file mode 100644
index 0000000..39e19cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/black/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/black/style.css
new file mode 100644
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/colored/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/colored/config.sh
new file mode 100644
index 0000000..25dbee7
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/colored/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/config b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/config
new file mode 100644
index 0000000..78e05fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/config
@@ -0,0 +1,56 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 8,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+ "hyprland/workspaces",
+//"custom/appmenu",
+ //"group/links",
+//"wlr/taskbar",
+ //"group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "clock"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+"custom/ml4w-welcome",
+ ]
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/dark/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/dark/config.sh
new file mode 100644
index 0000000..6c2cf9f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/dark/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/dark/style.css
new file mode 100644
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/light/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/light/config.sh
new file mode 100644
index 0000000..55e4ffd
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light"
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/light/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/mixed/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/mixed/config.sh
new file mode 100644
index 0000000..c00e231
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/mixed/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/style.css
new file mode 100644
index 0000000..68a179c
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/style.css
@@ -0,0 +1,471 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 1px 3px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 5px 15px 5px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 3px 17px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/white/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/white/config.sh
new file mode 100644
index 0000000..685088f
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/white/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/white/style.css
new file mode 100644
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/ml4w/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/config b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/config
new file mode 100644
index 0000000..6084f60
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/config
@@ -0,0 +1,66 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+
+ // Position TOP
+ "layer": "top",
+ "margin-bottom": 0,
+
+ // Position BOTTOM
+ // "position": "bottom",
+ // "margin-top": 0,
+ // "margin-bottom": 14,
+
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/themes/starter/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "custom/settings",
+ //"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/starter"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/config.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/config.sh
new file mode 100644
index 0000000..a9399f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Starter"
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/modules.json b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/modules.json
new file mode 100644
index 0000000..51e0add
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/modules.json
@@ -0,0 +1,351 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // Workspaces
+ "hyprland/workspaces" : {
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": [
+ "Alacritty"
+ ],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip": false
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "on-click": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh rofi",
+ "tooltip": false
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle",
+ "on-click-right": "hyprlock"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "tooltip-format": "{}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "alacritty -e ~/.config/ml4w/scripts/installupdates.sh",
+ "tooltip": false
+ },
+
+ // Theme Starter Label
+ "custom/starter": {
+ "format": "THEME STARTER",
+ "tooltip": false
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "waypaper",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip": false
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage",
+ "tooltip": false
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Filemanager Launcher
+ "custom/filemanager": {
+ "format": "",
+ "on-click": "nautilus",
+ "tooltip": false
+ },
+
+ // Browser Launcher
+ "custom/browser": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip": false
+ },
+
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip-format": "Open Sidebar"
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": "",
+ "on-click": "chromium --app=https://chat.openai.com",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ "format": "Apps",
+ "on-click": "rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "wlogout",
+ "tooltip": false
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "ags -t calendar",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "alacritty -e htop"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/system",
+ "disk",
+ "cpu",
+ "memory",
+ "hyprland/language"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Group Quicklinks
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/filemanager",
+ "custom/browser"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {signalStrength}%",
+ "format-ethernet": " {ipaddr}",
+ "format-disconnected": "Not connected", //An empty format will hide the module.
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {essid} ({signalStrength}%)",
+ "tooltip-format-ethernet": " {ifname} ({ipaddr}/{cidr})",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "alacritty -e nmtui"
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false,
+ },
+
+ // Idle Inhibator
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "tooltip": true,
+ "format-icons":{
+ "activated": "",
+ "deactivated": ""
+ },
+ "on-click-right": "hyprlock"
+ }
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/style.css b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/style.css
new file mode 100644
index 0000000..21fdcfa
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themes/starter/style.css
@@ -0,0 +1,457 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor3;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 10px 15px 10px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 23px;
+ font-size: 20px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 24px;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 10px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+/* -----------------------------------------------------
+ * Other
+ * ----------------------------------------------------- */
+
+label:focus {
+ background-color: #000000;
+}
+
+#backlight {
+ background-color: #90b1b1;
+}
+
+#network {
+ background-color: #2980b9;
+}
+
+#network.disconnected {
+ background-color: #f53c3c;
+}
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/themeswitcher.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/themeswitcher.sh
new file mode 100644
index 0000000..f3e4734
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/themeswitcher.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _ _
+# |_ _| |__ ___ _ __ ___ ___ _____ _(_) |_ ___| |__ ___ _ __
+# | | | '_ \ / _ \ '_ ` _ \ / _ \/ __\ \ /\ / / | __/ __| '_ \ / _ \ '__|
+# | | | | | | __/ | | | | | __/\__ \\ V V /| | || (__| | | | __/ |
+# |_| |_| |_|\___|_| |_| |_|\___||___/ \_/\_/ |_|\__\___|_| |_|\___|_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Default theme folder
+# -----------------------------------------------------
+themes_path="$HOME/.config/waybar/themes"
+
+# -----------------------------------------------------
+# Initialize arrays
+# -----------------------------------------------------
+listThemes=""
+listNames=""
+listNames2=""
+
+# -----------------------------------------------------
+# Read theme folder
+# -----------------------------------------------------
+sleep 0.2
+options=$(find $themes_path -maxdepth 2 -type d)
+for value in $options
+do
+ if [ ! $value == "$HOME/.config/waybar/themes/assets" ]; then
+ if [ ! $value == "$themes_path" ]; then
+ if [ $(find $value -maxdepth 1 -type d | wc -l) = 1 ]; then
+ result=$(echo $value | sed "s#$HOME/.config/waybar/themes/#/#g")
+ IFS='/' read -ra arrThemes <<< "$result"
+ listThemes[${#listThemes[@]}]="/${arrThemes[1]};$result"
+ if [ -f $themes_path$result/config.sh ]; then
+ source $themes_path$result/config.sh
+ listNames+="$theme_name\n"
+ listNames2+="$theme_name~"
+ else
+ listNames+="/${arrThemes[1]};$result\n"
+ listNames2+="/${arrThemes[1]};$result~"
+ fi
+ fi
+ fi
+ fi
+done
+
+# -----------------------------------------------------
+# Show rofi dialog
+# -----------------------------------------------------
+listNames=${listNames::-2}
+choice=$(echo -e "$listNames" | rofi -dmenu -replace -i -config ~/.config/rofi/config-themes.rasi -no-show-icons -width 30 -p "Themes" -format i)
+IFS="~"
+input=$listNames2
+read -ra array <<< "$input"
+
+# -----------------------------------------------------
+# Set new theme by writing the theme information to ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ "$choice" ]; then
+ echo "Loading waybar theme..."
+ echo "${listThemes[$choice+1]}" > ~/.config/ml4w/settings/waybar-theme.sh
+ ~/.config/waybar/launch.sh
+ notify-send "Waybar Theme changed" "to ${array[$choice]}"
+fi
diff --git a/configs/dotfiles/hyprland/desktop/.config/waybar/toggle.sh b/configs/dotfiles/hyprland/desktop/.config/waybar/toggle.sh
new file mode 100644
index 0000000..0d49a4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waybar/toggle.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# _____ _ __ __ _
+# |_ _|__ __ _ __ _| | ___ \ \ / /_ _ _ _| |__ __ _ _ __
+# | |/ _ \ / _` |/ _` | |/ _ \ \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# | | (_) | (_| | (_| | | __/ \ V V / (_| | |_| | |_) | (_| | |
+# |_|\___/ \__, |\__, |_|\___| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/ |___/ |___/
+#
+
+if [ -f ~/.cache/waybar-disabled ] ;then
+ rm ~/.cache/waybar-disabled
+else
+ touch ~/.cache/waybar-disabled
+fi
+~/.config/waybar/launch.sh &
diff --git a/configs/dotfiles/hyprland/desktop/.config/waypaper/config.ini b/configs/dotfiles/hyprland/desktop/.config/waypaper/config.ini
new file mode 100644
index 0000000..c4e24d3
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/waypaper/config.ini
@@ -0,0 +1,22 @@
+[Settings]
+language = en
+folder = ~/Pictures/Wallpapers
+wallpaper = ~/Pictures/Wallpapers/faroe_islands.jpg
+backend = hyprpaper
+monitors = All
+fill = fill
+sort = name
+color = #ffffff
+subfolders = False
+show_hidden = False
+show_gifs_only = False
+post_command = ~/.config/hypr/scripts/wallpaper.sh "$wallpaper"
+number_of_columns = 3
+swww_transition_type = any
+swww_transition_step = 90
+swww_transition_angle = 0
+swww_transition_duration = 2
+swww_transition_fps = 60
+use_xdg_state = False
+show_transition_options = True
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/README.txt b/configs/dotfiles/hyprland/desktop/.config/wlogout/README.txt
new file mode 100644
index 0000000..4ceecd7
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/wlogout/README.txt
@@ -0,0 +1,8 @@
+Select Logout Command depending on your setup:
+
+Use for Display Manager e.g., sddm (DEFAULT)
+sleep 1; hyprctl dispatch exit
+
+Use for Arch Linux text based login
+sleep 1; loginctl terminate-user $USER
+
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/hibernate.png b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/hibernate.png
new file mode 100644
index 0000000..bf2b001
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/hibernate.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/lock.png b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/lock.png
new file mode 100644
index 0000000..da59b10
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/lock.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/logout.png b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/logout.png
new file mode 100644
index 0000000..8a25922
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/logout.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/reboot.png b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/reboot.png
new file mode 100644
index 0000000..e5fd221
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/reboot.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/shutdown.png b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/shutdown.png
new file mode 100644
index 0000000..663ca03
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/shutdown.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/suspend.png b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/suspend.png
new file mode 100644
index 0000000..af099b9
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/wlogout/icons/suspend.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/layout b/configs/dotfiles/hyprland/desktop/.config/wlogout/layout
new file mode 100644
index 0000000..0dfb38a
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/wlogout/layout
@@ -0,0 +1,30 @@
+{
+ "label" : "lock",
+ "action" : "~/.config/hypr/scripts/power.sh lock",
+ "text" : "Lock",
+ "keybind" : "l"
+}
+{
+ "label" : "logout",
+ "action" : "~/.config/hypr/scripts/power.sh exit",
+ "text" : "Log Out",
+ "keybind" : "e"
+}
+{
+ "label" : "suspend",
+ "action" : "~/.config/hypr/scripts/power.sh suspend",
+ "text" : "Suspend",
+ "keybind" : "u"
+}
+{
+ "label" : "reboot",
+ "action" : "~/.config/hypr/scripts/power.sh reboot",
+ "text" : "Restart",
+ "keybind" : "r"
+}
+{
+ "label" : "shutdown",
+ "action" : "~/.config/hypr/scripts/power.sh shutdown",
+ "text" : "Power Off",
+ "keybind" : "s"
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/noise.png b/configs/dotfiles/hyprland/desktop/.config/wlogout/noise.png
new file mode 100644
index 0000000..028b188
Binary files /dev/null and b/configs/dotfiles/hyprland/desktop/.config/wlogout/noise.png differ
diff --git a/configs/dotfiles/hyprland/desktop/.config/wlogout/style.css b/configs/dotfiles/hyprland/desktop/.config/wlogout/style.css
new file mode 100644
index 0000000..f533d11
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/wlogout/style.css
@@ -0,0 +1,107 @@
+/*
+ _ _
+__ _| | ___ __ _ ___ _ _| |_
+\ \ /\ / / |/ _ \ / _` |/ _ \| | | | __|
+ \ V V /| | (_) | (_| | (_) | |_| | |_
+ \_/\_/ |_|\___/ \__, |\___/ \__,_|\__|
+ |___/
+
+by Stephan Raabe (2023)
+-----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../.cache/wal/colors-wlogout.css';
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ background-image: none;
+ transition: 20ms;
+ box-shadow: none;
+}
+
+window {
+ background: url("../ml4w/cache/blurred_wallpaper.png");
+ background-size: cover;
+ font-size: 16pt;
+ color: #cdd6f4;
+}
+
+button {
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 20%;
+ background-color: rgba(200, 220, 255, 0);
+ animation: gradient_f 20s ease-in infinite;
+ border-radius: 80px; /* Increased border radius for a more rounded look */
+ border:0px;
+ transition: all 0.3s cubic-bezier(.55, 0.0, .28, 1.682), box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
+}
+
+button:focus {
+ background-size: 22%;
+ border: 0px;
+}
+
+button:hover {
+ background-color: @color11;
+ opacity: 0.8;
+ color: #cdd6f4;
+ background-size: 30%;
+ margin: 30px;
+ border-radius: 80px;
+ box-shadow: 0 0 50px @color7;
+}
+
+/* Adjust the size of the icon or content inside the button */
+button span {
+ font-size: 1.2em; /* Increase the font size */
+}
+
+/*
+-----------------------------------------------------
+Buttons
+-----------------------------------------------------
+*/
+
+#lock {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/lock.png"));
+}
+
+#logout {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/logout.png"));
+}
+
+#suspend {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/suspend.png"));
+}
+
+#hibernate {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/hibernate.png"));
+}
+
+#shutdown {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/shutdown.png"));
+}
+
+#reboot {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/reboot.png"));
+}
diff --git a/configs/dotfiles/hyprland/desktop/.config/xsettingsd/xsettingsd.conf b/configs/dotfiles/hyprland/desktop/.config/xsettingsd/xsettingsd.conf
new file mode 100644
index 0000000..3b651dd
--- /dev/null
+++ b/configs/dotfiles/hyprland/desktop/.config/xsettingsd/xsettingsd.conf
@@ -0,0 +1,9 @@
+Net/ThemeName "Adwaita"
+Net/IconThemeName "Adwaita"
+Gtk/CursorThemeName "Bibata-Modern-Ice"
+Net/EnableEventSounds 1
+EnableInputFeedbackSounds 0
+Xft/Antialias 1
+Xft/Hinting 1
+Xft/HintStyle "hintslight"
+Xft/RGBA "rgb"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/Xresources b/configs/dotfiles/hyprland/gulfport/.config/Xresources
new file mode 100644
index 0000000..6a1c856
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/Xresources
@@ -0,0 +1 @@
+Xcursor.theme: Bibata-Modern-Ice
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/app.ts b/configs/dotfiles/hyprland/gulfport/.config/ags/app.ts
new file mode 100644
index 0000000..26c6a1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/app.ts
@@ -0,0 +1,11 @@
+import { App, Widget } from "astal/gtk3"
+import Calendar from "./widget/Calendar"
+import Sidebar from "./widget/Sidebar"
+
+App.start({
+ css: "./style.css",
+ main() {
+ Sidebar();
+ Calendar();
+ }
+})
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-dotfiles-settings.png b/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-dotfiles-settings.png
new file mode 100644
index 0000000..938b6f7
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-dotfiles-settings.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-hyprland-settings.png b/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-hyprland-settings.png
new file mode 100644
index 0000000..c7e8e29
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-hyprland-settings.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-welcome.png b/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-welcome.png
new file mode 100644
index 0000000..7d4efe7
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ags/assets/ml4w-welcome.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/env.d.ts b/configs/dotfiles/hyprland/gulfport/.config/ags/env.d.ts
new file mode 100644
index 0000000..4e7e508
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/env.d.ts
@@ -0,0 +1,21 @@
+const SRC: string
+
+declare module "inline:*" {
+ const content: string
+ export default content
+}
+
+declare module "*.scss" {
+ const content: string
+ export default content
+}
+
+declare module "*.blp" {
+ const content: string
+ export default content
+}
+
+declare module "*.css" {
+ const content: string
+ export default content
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/scripts/run_themeswitcher.sh b/configs/dotfiles/hyprland/gulfport/.config/ags/scripts/run_themeswitcher.sh
new file mode 100644
index 0000000..7c20589
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/scripts/run_themeswitcher.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/waybar/themeswitcher.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/scripts/run_wallpapereffects.sh b/configs/dotfiles/hyprland/gulfport/.config/ags/scripts/run_wallpapereffects.sh
new file mode 100644
index 0000000..78dcaaf
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/scripts/run_wallpapereffects.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/hypr/scripts/wallpaper-effects.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/style.css b/configs/dotfiles/hyprland/gulfport/.config/ags/style.css
new file mode 100644
index 0000000..5801922
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/style.css
@@ -0,0 +1,144 @@
+@import url('../../.cache/wal/colors-waybar.css');
+
+* {
+ all:unset;
+ font-size: 14px;
+ font-family: "Fira Sans", sans-serif;
+ font-weight: normal;
+}
+
+.calendar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+ min-width:320px;
+}
+
+calendar:selected {
+ background-color:@color11;
+ padding:0px;
+}
+
+.sidebar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+}
+
+.group {
+ padding:16px;
+ background-color: rgba(116, 116, 116, 0.1);
+ border-radius: 20px;
+}
+
+.ml4wwelcomeicon {
+ background:url("assets/ml4w-welcome.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4wsettingsicon {
+ background:url("assets/ml4w-dotfiles-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4whyprlandicon {
+ background:url("assets/ml4w-hyprland-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.midbtn {
+ background-color: @color11;
+ font-size: 12px;
+ padding:10px;
+ border-radius: 20px;
+}
+
+.AudioSlider {
+ background-color:@color11;
+ border-radius:12px;
+ margin-bottom:10px;
+}
+
+.AudioSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.AudioSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.AudioSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider {
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.MicrophoneSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.MicrophoneSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/tsconfig.json b/configs/dotfiles/hyprland/gulfport/.config/ags/tsconfig.json
new file mode 100644
index 0000000..b239e15
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "compilerOptions": {
+ "experimentalDecorators": true,
+ "strict": true,
+ "target": "ES2022",
+ "module": "ES2022",
+ "moduleResolution": "Bundler",
+ // "checkJs": true,
+ // "allowJs": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "/usr/share/astal/gjs/gtk3",
+ "paths": {
+ "astal": [
+ "/usr/share/astal/gjs"
+ ],
+ "astal/*": [
+ "/usr/share/astal/gjs/*"
+ ]
+ },
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Bar.tsx b/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Bar.tsx
new file mode 100644
index 0000000..ed1d845
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Bar.tsx
@@ -0,0 +1,29 @@
+import { App, Astal, Gtk, Gdk } from "astal/gtk3"
+import { Variable } from "astal"
+
+const time = Variable("").poll(1000, "date")
+
+export default function Bar(gdkmonitor: Gdk.Monitor) {
+ return
+
+
+
+
+
+
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Brightness.tsx b/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Brightness.tsx
new file mode 100644
index 0000000..86214f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Brightness.tsx
@@ -0,0 +1,72 @@
+// Thanks to https://gitlab.com/filippoaceto/
+import GObject, { register, property } from "astal/gobject"
+import { monitorFile, readFileAsync } from "astal/file"
+import { exec, execAsync } from "astal/process"
+
+const get = (args: string) => Number(exec(`brightnessctl ${args}`))
+const screen = exec(`bash -c "ls -w1 /sys/class/backlight | head -1"`)
+const kbd = exec(`bash -c "ls -w1 /sys/class/leds | head -1"`)
+
+@register({ GTypeName: "Brightness" })
+export default class Brightness extends GObject.Object {
+ static instance: Brightness
+ static get_default() {
+ if (!this.instance)
+ this.instance = new Brightness()
+
+ return this.instance
+ }
+
+ #kbdMax = get(`--device ${kbd} max`)
+ #kbd = get(`--device ${kbd} get`)
+ #screenMax = get("max")
+ #screen = get("get") / (get("max") || 1)
+
+ @property(Number)
+ get kbd() { return this.#kbd }
+
+ set kbd(value) {
+ if (value < 0 || value > this.#kbdMax)
+ return
+ execAsync(`brightnessctl -d ${kbd} s ${value} -q`).then(() => {
+ this.#kbd = value
+ this.notify("kbd")
+ })
+ }
+
+ @property(Number)
+ get screen() { return this.#screen }
+
+ set screen(percent) {
+ if (percent < 0)
+ percent = 0
+
+ if (percent > 1)
+ percent = 1
+
+ if (Math.floor(percent * 100) > 1)
+ execAsync(`brightnessctl set ${Math.floor(percent * 100)}% -q`).then(() => {
+ this.#screen = percent
+ this.notify("screen")
+ })
+ }
+
+ constructor() {
+ super()
+
+ const screenPath = `/sys/class/backlight/${screen}/brightness`
+ const kbdPath = `/sys/class/leds/${kbd}/brightness`
+
+ monitorFile(screenPath, async f => {
+ const v = await readFileAsync(f)
+ this.#screen = Number(v) / this.#screenMax
+ this.notify("screen")
+ })
+
+ monitorFile(kbdPath, async f => {
+ const v = await readFileAsync(f)
+ this.#kbd = Number(v) / this.#kbdMax
+ this.notify("kbd")
+ })
+ }
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Calendar.tsx b/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Calendar.tsx
new file mode 100644
index 0000000..263a77e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Calendar.tsx
@@ -0,0 +1,42 @@
+import { GObject } from "astal";
+import { astalify, ConstructProps, App, Astal, Gdk, Gtk } from "astal/gtk3"
+
+class CalendarGtk extends astalify(Gtk.Calendar) {
+ static {
+ GObject.registerClass(this);
+ }
+
+ constructor(
+ props: ConstructProps,
+ ) {
+ super(props as any);
+ }
+}
+
+export default function Calendar() {
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+ {new CalendarGtk({
+ hexpand: true,
+ vexpand: true,
+ showDayNames: true,
+ showDetails: false,
+ showHeading: true,
+ showWeekNumbers: true
+ })}
+
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Sidebar.tsx b/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Sidebar.tsx
new file mode 100644
index 0000000..540bbe4
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ags/widget/Sidebar.tsx
@@ -0,0 +1,131 @@
+import { App } from "astal/gtk3"
+import Apps from "gi://AstalApps"
+import Wp from "gi://AstalWp"
+import { Variable, GLib, bind } from "astal"
+import { subprocess, exec, execAsync } from "astal/process"
+import { Astal, Gtk, Gdk } from "astal/gtk3"
+import Brightness from "./Brightness"
+
+function BrightnessSlider() {
+ const brightness = Brightness.get_default()
+
+ return
+ brightness.screen = value}
+ />
+
+}
+
+function AudioSlider() {
+ const speaker = Wp.get_default()?.audio.defaultSpeaker!
+
+ return
+ speaker.volume = value}
+ value={bind(speaker, "volume")}
+ />
+
+}
+
+function MicrophoneSlider() {
+ const microphone = Wp.get_default()?.audio.defaultMicrophone!
+
+ return
+ microphone.volume = value}
+ value={bind(microphone, "volume")}
+ />
+
+}
+
+function openwelcomeapp() {
+ execAsync("com.ml4w.welcome")
+ App.get_window("sidebar")!.hide()
+}
+
+function opensettingsapp() {
+ execAsync("com.ml4w.dotfilessettings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openhyprlandapp() {
+ execAsync("com.ml4w.hyprland.settings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openwaypaper() {
+ const proc = subprocess(["bash", "-c", "waypaper"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpapereffects() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/wallpaper-effects.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwaybarthemes() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/waybar/themeswitcher.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+export default function Sidebar() {
+
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/dunst/dunstrc b/configs/dotfiles/hyprland/gulfport/.config/dunst/dunstrc
new file mode 100644
index 0000000..8be626b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/dunst/dunstrc
@@ -0,0 +1,469 @@
+# _ _
+# __| |_ _ _ __ ___| |_
+# / _` | | | | '_ \/ __| __|
+# | (_| | |_| | | | \__ \ |_
+# \__,_|\__,_|_| |_|___/\__|
+#
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# See dunst(5) for all configuration options
+
+[global]
+ ### Display ###
+
+ # Which monitor should the notifications be displayed on.
+ monitor = 1
+
+ # 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 = (0,300)
+
+ # Position the notification in the top right corner
+ origin = top-center
+
+ # Offset from the origin
+ offset = 30x30
+
+ # Scale factor. It is auto-detected if value is 0.
+ scale = 0
+
+ # Maximum number of notification (0 means no limit)
+ notification_limit = 20
+
+ ### 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
+
+ # Corner radius for the progress bar. 0 disables rounded corners.
+ progress_bar_corner_radius = 10
+
+ # Corner radius for the icon image.
+ icon_corner_radius = 0
+
+ # 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 = 30
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ # If gap_size is greater than 0, this setting will be ignored.
+ 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 = "#ffffff"
+
+ # Size of gap to display between notifications - requires a compositor.
+ # If value is greater than 0, separator_height will be ignored and a border
+ # of size frame_width will be drawn around each notification instead.
+ # Click events on gaps do not currently propagate to applications below.
+ gap_size = 0
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ # A client can set the 'transient' hint to bypass this. See the rules
+ # section for how to disable this if necessary
+ # idle_threshold = 120
+
+ ### Text ###
+
+ font = "Fira Sans Semibold" 9
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
+ line_height = 1
+
+ # Possible values are:
+ # full: Allow a small subset of html markup in notifications:
+ # bold
+ # italic
+ # strikethrough
+ # underline
+ #
+ # For a complete reference see
+ # .
+ #
+ # strip: This setting is provided for compatibility with some broken
+ # clients that send markup even though it's not enabled on the
+ # server. Dunst will try to strip the markup but the parsing is
+ # simplistic so using this option outside of matching rules for
+ # specific applications *IS GREATLY DISCOURAGED*.
+ #
+ # no: Disable markup parsing, incoming notifications will be treated as
+ # plain text. Dunst will not advertise that it has the body-markup
+ # capability if this is set as a global setting.
+ #
+ # It's important to note that markup inside the format option will be parsed
+ # regardless of what this is set to.
+ markup = full
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "%s\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 = false
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = yes
+
+ ### Icons ###
+
+ # Recursive icon lookup. You can set a single theme, instead of having to
+ # define all lookup paths.
+ enable_recursive_icon_lookup = true
+
+ # Set icon theme (only used for recursive icon lookup)
+ icon_theme = "Papirus-Dark,Adwaita"
+ # You can also set multiple icon themes, with the leftmost one being used first.
+ # icon_theme = "Adwaita, breeze"
+
+ # Align icons left/right/top/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 = 32
+
+ # Scale larger icons down to this size, set to 0 to disable
+ max_icon_size = 128
+
+ # Paths to default icons (only neccesary when not using recursive icon lookup)
+ icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+ ### History ###
+
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = yes
+
+ # Maximum amount of notifications kept in history
+ history_length = 20
+
+ ### Misc/Advanced ###
+
+ # dmenu path.
+ dmenu = /usr/bin/dmenu -p dunst:
+
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/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 = 10
+
+ # Ignore the dbus closeNotification message.
+ # Useful to enforce the timeout set by dunst configuration. Without this
+ # parameter, an application may close the notification sent before the
+ # user defined timeout.
+ ignore_dbusclose = false
+
+ ### Wayland ###
+ # These settings are Wayland-specific. They have no effect when using X11
+
+ # Uncomment this if you want to let notications appear under fullscreen
+ # applications (default: overlay)
+ # layer = top
+
+ # Set this to true to use X11 output on Wayland.
+ force_xwayland = false
+
+ ### Legacy
+
+ # Use the Xinerama extension instead of RandR for multi-monitor support.
+ # This setting is provided for compatibility with older nVidia drivers that
+ # do not support RandR and using it on systems that support RandR is highly
+ # discouraged.
+ #
+ # By enabling this setting dunst will not be able to detect when a monitor
+ # is connected or disconnected which might break follow mode if the screen
+ # layout changes.
+ force_xinerama = false
+
+ ### mouse
+
+ # Defines list of actions for each mouse event
+ # Possible values are:
+ # * none: Don't do anything.
+ # * do_action: Invoke the action determined by the action_name rule. If there is no
+ # such action, open the context menu.
+ # * open_url: If the notification has exactly one url, open it. If there are multiple
+ # ones, open the context menu.
+ # * close_current: Close current notification.
+ # * close_all: Close all notifications.
+ # * context: Open context menu for the notification.
+ # * context_all: Open context menu for all notifications.
+ # These values can be strung together for each mouse event, and
+ # will be executed in sequence.
+ mouse_left_click = close_current
+ mouse_middle_click = do_action, close_current
+ mouse_right_click = close_all
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+ # Calculate the dpi to use on a per-monitor basis.
+ # If this setting is enabled the Xft.dpi value will be ignored and instead
+ # dunst will attempt to calculate an appropriate dpi value for each monitor
+ # using the resolution and physical size. This might be useful in setups
+ # where there are multiple screens with very different dpi values.
+ per_monitor_dpi = false
+
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#000000CC"
+ foreground = "#888888"
+ timeout = 6
+ # Icon for notifications with low urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_normal]
+ background = "#000000CC"
+ foreground = "#ffffff"
+ timeout = 6
+ # Icon for notifications with normal urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_critical]
+ background = "#900000CC"
+ foreground = "#ffffff"
+ frame_color = "#ffffff"
+ timeout = 6
+ # Icon for notifications with critical urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+#
+# Messages can be matched by
+# appname (discouraged, see desktop_entry)
+# body
+# category
+# desktop_entry
+# icon
+# match_transient
+# msg_urgency
+# stack_tag
+# summary
+#
+# and you can override the
+# background
+# foreground
+# format
+# frame_color
+# fullscreen
+# new_icon
+# set_stack_tag
+# set_transient
+# set_category
+# timeout
+# urgency
+# icon_position
+# skip_display
+# history_ignore
+# action_name
+# word_wrap
+# ellipsize
+# alignment
+# hide_text
+#
+# 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/configs/dotfiles/hyprland/gulfport/.config/fastfetch/config.jsonc b/configs/dotfiles/hyprland/gulfport/.config/fastfetch/config.jsonc
new file mode 100644
index 0000000..658682c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/fastfetch/config.jsonc
@@ -0,0 +1,104 @@
+// Thanks to Bina
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "padding": {
+ "top": 2
+ }
+ },
+ "display": {
+ "separator": " ➜ "
+ },
+ "modules": [
+ "break",
+ "break",
+ "break",
+ {
+ "type": "os",
+ "key": "OS ",
+ "keyColor": "31", // = color1
+ },
+ {
+ "type": "kernel",
+ "key": " ├ ",
+ "keyColor": "31",
+ },
+ {
+ "type": "shell",
+ "key": " └ ",
+ "keyColor": "31",
+ },
+ "break",
+ {
+ "type": "wm",
+ "key": "WM ",
+ "keyColor": "32",
+ },
+ {
+ "type": "wmtheme",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "icons",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "cursor",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminal",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminalfont",
+ "key": " └ ",
+ "keyColor": "32",
+ },
+ "break",
+ {
+ "type": "host",
+ "format": "{5} {1} Type {2}",
+ "key": "PC ",
+ "keyColor": "33",
+ },
+ {
+ "type": "cpu",
+ "format": "{1} ({3}) @ {7} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "gpu",
+ "format": "{1} {2} @ {12} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "memory",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "swap",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "disk",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "monitor",
+ "key": " └ ",
+ "keyColor": "33",
+ },
+ "break",
+ "break",
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/animation.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/animation.conf
new file mode 100644
index 0000000..5909926
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/animation.conf
@@ -0,0 +1,125 @@
+# -----------------------------------------------------
+# "Dynamic" (default)
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, once
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
+# -----------------------------------------------------
+# "Disabled"
+# -----------------------------------------------------
+#animations {
+ #enabled = false
+#}
+# -----------------------------------------------------
+# "Standard"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ #animation = windows, 1, 7, myBezier
+ #animation = windowsOut, 1, 7, default, popin 80%
+ #animation = border, 1, 10, default
+ #animation = borderangle, 1, 8, default
+ #animation = fade, 1, 7, default
+ #animation = workspaces, 1, 6, default
+#}
+# -----------------------------------------------------
+# "Dynamic"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = wind, 0.05, 0.9, 0.1, 1.05
+ #bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ #bezier = winOut, 0.3, -0.3, 0, 1
+ #bezier = liner, 1, 1, 1, 1
+ #animation = windows, 1, 6, wind, slide
+ #animation = windowsIn, 1, 6, winIn, slide
+ #animation = windowsOut, 1, 5, winOut, slide
+ #animation = windowsMove, 1, 5, wind, slide
+ #animation = border, 1, 1, liner
+ #animation = borderangle, 1, 30, liner, loop
+ #animation = fade, 1, 10, default
+ #animation = workspaces, 1, 5, wind
+#}
+# -----------------------------------------------------
+# "Classic"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ #animation = windows, 1, 7, myBezier
+ #animation = windowsOut, 1, 7, default, popin 80%
+ #animation = border, 1, 10, default
+ #animation = borderangle, 1, 8, default
+ #animation = fade, 1, 7, default
+ #animation = workspaces, 1, 6, default
+#}
+# -----------------------------------------------------
+# "Fast"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = linear, 0, 0, 1, 1
+ #bezier = md3_standard, 0.2, 0, 0, 1
+ #bezier = md3_decel, 0.05, 0.7, 0.1, 1
+ #bezier = md3_accel, 0.3, 0, 0.8, 0.15
+ #bezier = overshot, 0.05, 0.9, 0.1, 1.1
+ #bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
+ #bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
+ #bezier = fluent_decel, 0.1, 1, 0, 1
+ #bezier = easeInOutCirc, 0.85, 0, 0.15, 1
+ #bezier = easeOutCirc, 0, 0.55, 0.45, 1
+ #bezier = easeOutExpo, 0.16, 1, 0.3, 1
+ #animation = windows, 1, 3, md3_decel, popin 60%
+ #animation = border, 1, 10, default
+ #animation = fade, 1, 2.5, md3_decel
+ #animation = workspaces, 1, 3.5, easeOutExpo, slide
+ #animation = specialWorkspace, 1, 3, md3_decel, slidevert
+#}
+# -----------------------------------------------------
+# "High"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = wind, 0.05, 0.9, 0.1, 1.05
+ #bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ #bezier = winOut, 0.3, -0.3, 0, 1
+ #bezier = liner, 1, 1, 1, 1
+ #animation = windows, 1, 6, wind, slide
+ #animation = windowsIn, 1, 6, winIn, slide
+ #animation = windowsOut, 1, 5, winOut, slide
+ #animation = windowsMove, 1, 5, wind, slide
+ #animation = border, 1, 1, liner
+ #animation = borderangle, 1, 30, liner, loop
+ #animation = fade, 1, 10, default
+ #animation = workspaces, 1, 5, wind
+#}
+# -----------------------------------------------------
+# "Moving"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = overshot, 0.05, 0.9, 0.1, 1.05
+ #bezier = smoothOut, 0.5, 0, 0.99, 0.99
+ #bezier = smoothIn, 0.5, -0.5, 0.68, 1.5
+ #animation = windows, 1, 5, overshot, slide
+ #animation = windowsOut, 1, 3, smoothOut
+ #animation = windowsIn, 1, 3, smoothOut
+ #animation = windowsMove, 1, 4, smoothIn, slide
+ #animation = border, 1, 5, default
+ #animation = fade, 1, 5, smoothIn
+ #animation = fadeDim, 1, 5, smoothIn
+ #animation = workspaces, 1, 6, default
+#}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/autostart.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/autostart.conf
new file mode 100644
index 0000000..34205a6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/autostart.conf
@@ -0,0 +1,48 @@
+# ___ __ __ __
+# / _ |__ __/ /____ ___ / /____ _____/ /_
+# / __ / // / __/ _ \(_- __/ _ `/ __/ __/
+# /_/ |_\_,_/\__/\___/___/\__/\_,_/_/ \__/
+#
+
+# Setup XDG for screen sharing and start waypaper and waybar
+exec-once = ~/.config/hypr/scripts/xdg.sh
+
+# Load Wallpaper
+exec-once = ~/.config/hypr/scripts/wallpaper-restore.sh
+
+# Start Polkit
+exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+
+# Load Notification Daemon
+exec-once = ~/.config/ml4w/settings/notification.sh
+
+# Load GTK settings
+exec-once = ~/.config/hypr/scripts/gtk.sh
+
+# Using hypridle to start hyprlock
+exec-once = hypridle
+
+# Load cliphist history
+exec-once = wl-paste --watch cliphist store
+
+# Autostart ML4W App
+exec-once = ~/.config/ml4w/scripts/ml4w-autostart.sh
+
+# Start ags
+exec-once = ~/.config/ml4w/scripts/ags.sh
+
+# Start autostart cleanup
+exec-once = ~/.config/hypr/scripts/cleanup.sh
+
+# Load configuration from ML4W Hyprland Settings App
+exec = ~/.config/ml4w-hyprland-settings/hyprctl.sh
+
+# Dock
+exec-once = ~/.config/nwg-dock-hyprland/launch.sh
+
+# Apps
+exec-once = nextcloud --background
+exec-once = bitwarden
+exec-once = startsunshine
+exec-once = /home/gib/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox --minimize
+exec-once = flatpak run app.bluebubbles.BlueBubbles minimized
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/custom.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/custom.conf
new file mode 100644
index 0000000..1e24aae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/custom.conf
@@ -0,0 +1,24 @@
+# Add your additional Hyprland configurations here
+#
+# This is an additional key binding
+# bind = $mainMod CTRL, up, workspace, empty
+#
+# Example for xwayland
+# xwayland {
+# force_zero_scaling = true
+# }
+
+# qt5ct environment variable
+# env = QT_QPA_PLATFORMTHEME,qt5ct
+
+# SDL version
+env = SDL_VIDEODRIVER,wayland
+# env = SDL_VIDEODRIVER,x11
+
+# No Hardware Cursor
+# cursor {
+# no_hardware_cursors = false
+# }
+
+# Blur for waybar
+#layerrule = blur, waybar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/decoration.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/decoration.conf
new file mode 100644
index 0000000..177914e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/decoration.conf
@@ -0,0 +1,168 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
+# -----------------------------------------------------
+# Rounding
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 1.0
+ #inactive_opacity = 0.8
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 6
+ #passes = 2
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding All Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 0.9
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 0.9
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 4
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ #blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding, All Blur No Shadows
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 0.9
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 0.9
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 4
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ #blurls = waybar
+ #}
+ #shadow {
+ #enabled = false
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding, More Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 1.0
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 6
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# No Rounding
+# -----------------------------------------------------
+#decoration {
+ #rounding = 0
+ #active_opacity = 1.0
+ #inactive_opacity = 0.8
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 6
+ #passes = 2
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# No Rounding, More Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 0
+ #active_opacity = 1.0
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 6
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/keybinding.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/keybinding.conf
new file mode 100644
index 0000000..afb4d28
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/keybinding.conf
@@ -0,0 +1,134 @@
+# -----------------------------------------------------
+# Keybingings
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# SUPER KEY
+# -----------------------------------------------------
+$mainMod = SUPER
+$altMod = ALT
+
+# -----------------------------------------------------
+# VARIABLES
+# -----------------------------------------------------
+$HYPRSCRIPTS = ~/.config/hypr/scripts
+$SCRIPTS = ~/.config/ml4w/scripts
+
+# -----------------------------------------------------
+# DEFAULT APPLICATIONS
+# -----------------------------------------------------
+$terminal = kitty
+$fileManager = nautilus
+$browser = firefox
+$menu = pkill rofi || rofi -show drun -replace
+$calculator = gnome-calculator
+
+# -----------------------------------------------------
+# DEFAULT COMMANDS
+# -----------------------------------------------------
+$quitwindow = killactive
+$forcequit = hyprctl activewindow | grep pid | tr -d 'pid:' | xargs kill
+
+# -----------------------------------------------------
+# DEFAULT APPLICATION BINDINGS
+# -----------------------------------------------------
+bind = $mainMod, T, exec, $terminal
+bind = $mainMod, W, exec, $browser
+bind = $mainMod, F, exec, $fileManager
+bind = $mainMod, C, exec, $calculator
+bind = $mainMod, D, exec, $menu
+bind = $altMod, D, exec, nwg-dock-hyprland
+
+# -----------------------------------------------------
+# DEFAULT WINDOW BINDINGS
+# -----------------------------------------------------
+bind = $mainMod, Q, $quitwindow
+bind = $mainMod SHIFT, Q, exec, $forcequit
+bind = $mainMod, M, fullscreen, 1
+bind = $mainMod SHIFT, M, fullscreen, 0
+bind = $mainMod, E, togglefloating
+bind = $mainMod SHIFT, E, exec, $HYPRSCRIPTS/toggleallfloat.sh
+bind = $mainMod, X, togglesplit
+bind = $mainMod, Z, swapsplit
+bind = $mainMod, H, movefocus, l
+bind = $mainMod, L, movefocus, r
+bind = $mainMod, K, movefocus, u
+bind = $mainMod, J, movefocus, d
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+bind = $mainMod CTRL, L, resizeactive, 100 0
+bind = $mainMod CTRL, H, resizeactive, -100 0
+bind = $mainMod CTRL, J, resizeactive, 0 100
+bind = $mainMod CTRL, K, resizeactive, 0 -100
+
+# -----------------------------------------------------
+# ACTIONS
+# -----------------------------------------------------
+bind = $mainMod SHIFT, A, exec, $HYPRSCRIPTS/toggle-animations.sh
+bind = $mainMod, PRINT, exec, $HYPRSCRIPTS/screenshot.sh
+bind = $mainMod SHIFT, S, exec, $HYPRSCRIPTS/screenshot.sh
+bind = $mainMod CTRL, Q, exec, ~/.config/ml4w/scripts/wlogout.sh
+bind = $mainMod SHIFT, W, exec, waypaper --random
+bind = $mainMod CTRL, W, exec, waypaper
+bind = $mainMod ALT, W, exec, $HYPERSCRIPTS/wallpaper-automation.sh
+bind = $mainMod SHIFT, R, exec, $HYPRSCRIPTS/loadconfig.sh
+bind = $mainMod, V, exec, $SCRIPTS/cliphist.sh
+bind = $mainMod SHIFT, B, exec, ~/.config/waybar/launch.sh
+bind = $mainMod CTRL, B, exec, ~/.config/waybar/toggle.sh
+bind = $mainMod CTRL, T, exec, ~/.config/waybar/themeswitcher.sh
+bind = $mainMod CTRL, S, exec, ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
+
+# -----------------------------------------------------
+# WORKSPACES
+# -----------------------------------------------------
+# Move to workspace from left to right
+bind = $altMod, H, workspace, -3
+bind = $altMod, L, workspace, +3
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+# Open workspace by number
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 1, workspace, 2
+bind = $mainMod, 1, workspace, 3
+bind = $mainMod, 2, workspace, 3
+bind = $mainMod, 2, workspace, 4
+bind = $mainMod, 2, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 3, workspace, 7
+bind = $mainMod, 3, workspace, 8
+bind = $mainMod, 9, workspace, 9
+# Move active window to workspace from left to right
+bind = $mainMod SHIFT, H, movetoworkspace, -1
+bind = $mainMod SHIFT, L, movetoworkspace, +1
+bind = $altMod SHIFT, H, movetoworkspace, -3
+bind = $altMod SHIFT, L, movetoworkspace, +3
+# Move active window to workspace by number
+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
+
+# -----------------------------------------------------
+# Fn Keys
+# -----------------------------------------------------
+bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%-
+bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
+bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
+bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
+bind = , XF86AudioPlay, exec, playerctl play-pause
+bind = , XF86AudioPause, exec, playerctl pause
+bind = , XF86AudioNext, exec, playerctl next
+bind = , XF86AudioPrev, exec, playerctl previous
+bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
+bind = , XF86Calculator, exec, $calculator
+bind = , XF86Lock, exec, hyprlock
+
+bind = , code:238, exec, brightnessctl -d smc::kbd_backlight s +10
+bind = , code:237, exec, brightnessctl -d smc::kbd_backlight s 10-
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/keyboard.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/keyboard.conf
new file mode 100644
index 0000000..1b57d6f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/keyboard.conf
@@ -0,0 +1,35 @@
+# -----------------------------------------------------
+# Keyboard Layout
+# https://wiki.hyprland.org/Configuring/Variables/#input
+# -----------------------------------------------------
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ numlock_by_default = true
+ mouse_refocus = false
+
+ # For United States
+ # kb_layout = us
+ # kb_variant = intl
+ # kb_model = pc105
+ # kb_options =
+
+ follow_mouse = 1
+ touchpad {
+ # for desktop
+ natural_scroll = false
+
+ # for laptop
+ # natural_scroll = yes
+ # middle_button_emulation = true
+ # clickfinger_behavior = false
+ scroll_factor = 1.0 # Touchpad scroll factor
+ }
+ sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification.
+}
+
+gestures {
+ workspace_swipe = true
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/layout.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/layout.conf
new file mode 100644
index 0000000..0ecfff8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/layout.conf
@@ -0,0 +1,45 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+master {
+ # Commented out due to compatibility reasons
+ # new_status = master
+}
+gestures {
+ workspace_swipe = false
+}
+binds {
+ workspace_back_and_forth = true
+ allow_workspace_cycles = true
+ pass_mouse_when_bound = false
+}
+# -----------------------------------------------------
+# Laptop
+# -----------------------------------------------------
+#dwindle {
+ #pseudotile = true
+ #preserve_split = true
+#}
+#master {
+ ## Commented out due to compatibility reasons
+ ## new_status = master
+#}
+#gestures {
+ #workspace_swipe = true
+ #workspace_swipe_fingers = 3
+ #workspace_swipe_distance = 500
+ #workspace_swipe_invert = true
+ #workspace_swipe_min_speed_to_force = 30
+ #workspace_swipe_cancel_ratio = 0.5
+ #workspace_swipe_create_new = true
+ #workspace_swipe_forever = true
+#}
+#binds {
+ #workspace_back_and_forth = true
+ #allow_workspace_cycles = true
+ #pass_mouse_when_bound = false
+#}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/misc.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/misc.conf
new file mode 100644
index 0000000..f287a4b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/misc.conf
@@ -0,0 +1,8 @@
+# -----------------------------------------------------
+# Misc settings
+# -----------------------------------------------------
+misc {
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ initial_workspace_tracking = 1
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/ml4w.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/ml4w.conf
new file mode 100644
index 0000000..813390a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/ml4w.conf
@@ -0,0 +1,124 @@
+# __ _____ _____ __ _____ ___
+# / |/ / / / / / | /| / / / ___/__ ___ / _/
+# / /|_/ / /_/_ _/ |/ |/ / / /__/ _ \/ _ \/ _/
+# /_/ /_/____//_/ |__/|__/ \___/\___/_//_/_/
+#
+
+# Pavucontrol floating
+windowrulev2 = float,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = size 700 600,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = center,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = pin,class:(.*org.pulseaudio.pavucontrol.*)
+
+# OpenAI ChatGPT floating
+windowrulev2 = float,title:(ChatGPT.*)
+windowrulev2 = float,title:(.*chat.gibbyb.com.*)
+windowrulev2 = size 500 50%,title:(.*chat.gibbyb.com.*)
+windowrulev2 = move 20 70,title:(.*chat.gibbyb.com.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(.*waypaper.*)
+windowrulev2 = size 900 700,class:(.*waypaper.*)
+windowrulev2 = center,class:(.*waypaper.*)
+windowrulev2 = pin,class:(.*waypaper.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(com.ml4w.welcome)
+windowrulev2 = size 700 600,class:(com.ml4w.welcome)
+windowrulev2 = center,class:(com.ml4w.welcome)
+windowrulev2 = pin,class:(com.ml4w.welcome)
+
+windowrulev2 = float,class:(ml4w-welcome.py)
+windowrulev2 = size 400 500,class:(ml4w-welcome.py)
+windowrulev2 = center,class:(ml4w-welcome.py)
+windowrulev2 = pin,class:(ml4w-welcome.py)
+
+# ML4W Settings App floating
+windowrulev2 = float,class:(com.ml4w.dotfilessettings)
+windowrulev2 = size 700 600,class:(com.ml4w.dotfilessettings)
+windowrulev2 = move 10% 20%,class:(com.ml4w.dotfilessettings)
+windowrulev2 = pin,class:(com.ml4w.dotfilessettings)
+
+windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = pin,class:(ml4w-dotfiles-settings.py)
+
+# ML4W Hyprland App floating
+windowrulev2 = float,class:(com.ml4w.hyprland.settings)
+windowrulev2 = size 700 600,class:(com.ml4w.hyprland.settings)
+windowrulev2 = center,class:(com.ml4w.hyprland.settings)
+windowrulev2 = pin,class:(com.ml4w.hyprland.settings)
+
+windowrulev2 = float,class:(ml4w-hyprland-settings.py)
+windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py)
+windowrulev2 = center,class:(ml4w-hyprland-settings.py)
+windowrulev2 = pin,class:(ml4w-hyprland-settings.py)
+
+# System Mission Center
+windowrulev2 = float, class:(io.missioncenter.MissionCenter)
+windowrulev2 = pin, class:(io.missioncenter.MissionCenter)
+windowrulev2 = center, class:(io.missioncenter.MissionCenter)
+windowrulev2 = size 900 600, class:(io.missioncenter.MissionCenter)
+
+# System Mission Center Preference Window
+windowrulev2 = float, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = pin, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = center, class:(missioncenter), title:^(Preferences)$
+
+# Gnome Calculator
+windowrulev2 = float,class:(org.gnome.Calculator)
+windowrulev2 = size 700 600,class:(org.gnome.Calculator)
+windowrulev2 = center,class:(org.gnome.Calculator)
+
+# Emoji Picker Smile
+windowrulev2 = float,class:(it.mijorus.smile)
+windowrulev2 = pin, class:(it.mijorus.smile)
+windowrulev2 = move 100%-w-40 90,class:(it.mijorus.smile)
+
+# Hyprland Share Picker
+windowrulev2 = float, class:(hyprland-share-picker)
+windowrulev2 = pin, class:(hyprland-share-picker)
+windowrulev2 = center, title:class:(hyprland-share-picker)
+windowrulev2 = size 600 400,class:(hyprland-share-picker)
+
+# General floating
+windowrulev2 = float,class:(dotfiles-floating)
+windowrulev2 = size 1000 700,class:(dotfiles-floating)
+windowrulev2 = center,class:(dotfiles-floating)
+windowrulev2 = pin, class:(dotfiles-floating)
+
+# XDG Desktop Portal
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+
+# QT
+env = QT_QPA_PLATFORM,wayland;xcb
+env = QT_QPA_PLATFORMTHEME,qt6ct
+env = QT_QPA_PLATFORMTHEME,qt5ct
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+
+# GDK
+env = GDK_SCALE,1
+
+# Toolkit Backend
+env = GDK_BACKEND,wayland,x11,*
+env = CLUTTER_BACKEND,wayland
+
+# Mozilla
+env = MOZ_ENABLE_WAYLAND,1
+
+# Set the cursor size for xcursor
+env = XCURSOR_SIZE,24
+
+# Disable appimage launcher by default
+env = APPIMAGELAUNCHER_DISABLE,1
+
+# Ozone
+env = OZONE_PLATFORM,wayland
+env = ELECTRON_OZONE_PLATFORM_HINT,wayland
+
+# Python
+# env = PYTHONPATH,/usr/lib/python3.12/site-packages:/usr/lib/python3.13/site-packages:$PYTHONPATH
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/nvidia.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/nvidia.conf
new file mode 100644
index 0000000..de44f86
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/nvidia.conf
@@ -0,0 +1,23 @@
+# -----------------------------------------------------
+# NVIDIA Environment Variables
+# https://wiki.hyprland.org/Nvidia/
+# -----------------------------------------------------
+env = GBM_BACKEND,nvidia-drm
+env = LIBVA_DRIVER_NAME,nvidia
+env = SDL_VIDEODRIVER,wayland
+env = WLR_DRM_NO_ATOMIC,1
+env = __GL_VRR_ALLOWED,1
+env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+env = __NV_PRIME_RENDER_OFFLOAD,1
+env = __VK_LAYER_NV_optimus,NVIDIA_only
+# FOR VM and POSSIBLY NVIDIA
+env = WLR_NO_HARDWARE_CURSORS,1 # On hyprland >v0.41, now configured on variable cursor section
+env = WLR_RENDERER_ALLOW_SOFTWARE,1
+# nvidia firefox (for hardware acceleration on FF)?
+# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration
+env = MOZ_DISABLE_RDD_SANDBOX,1
+env = EGL_PLATFORM,wayland
+env = ELECTRON_OZONE_PLATFORM_HINT,auto
+cursor {
+ no_hardware_cursors = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/window.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/window.conf
new file mode 100644
index 0000000..9f998bd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/conf/window.conf
@@ -0,0 +1,49 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
+# -----------------------------------------------------
+# No Border
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 0
+ #col.active_border = $color11
+ #col.inactive_border = rgba(ffffffff)
+ #layout = dwindle
+ #resize_on_border = true
+#}
+# -----------------------------------------------------
+# Border 1
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 1
+ #col.active_border = $color11
+ #col.inactive_border = rgba(ffffffff)
+ #layout = dwindle
+ #resize_on_border = true
+#}
+# -----------------------------------------------------
+# Border 1 Reverse
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 1
+ #col.active_border = rgba(ffffffff)
+ #col.inactive_border = $color11
+ #layout = dwindle
+ #resize_on_border = true
+#}
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite
new file mode 100644
index 0000000..0f985b3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite
@@ -0,0 +1 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-blur b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-blur
new file mode 100644
index 0000000..85a5a51
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-blur
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness40 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness40
new file mode 100644
index 0000000..97cafb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness60 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness60
new file mode 100644
index 0000000..3dc7788
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness80 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness80
new file mode 100644
index 0000000..67bb0ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blackwhite-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1
new file mode 100644
index 0000000..f401e1a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1
@@ -0,0 +1 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness40 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness40
new file mode 100644
index 0000000..d79704a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness60 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness60
new file mode 100644
index 0000000..73028f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness80 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness80
new file mode 100644
index 0000000..c1984aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur1-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur2 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur2
new file mode 100644
index 0000000..cb13630
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/blur2
@@ -0,0 +1 @@
+magick $wallpaper -blur "10x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate
new file mode 100644
index 0000000..971c7aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate
@@ -0,0 +1 @@
+magick $wallpaper -negate $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness40 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness40
new file mode 100644
index 0000000..f6b8bd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness60 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness60
new file mode 100644
index 0000000..bf45cd6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness80 b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness80
new file mode 100644
index 0000000..2d342c1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/effects/wallpaper/negate-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/hypridle.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/hypridle.conf
new file mode 100644
index 0000000..d02b4ea
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/hypridle.conf
@@ -0,0 +1,47 @@
+# _ _ _ _
+# | |__ _ _ _ __ _ __(_) __| | | ___
+# | '_ \| | | | '_ \| '__| |/ _` | |/ _ \
+# | | | | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+# Version 2.8.3
+# DO NOT REMOVE THE REPLACEMENT COMMENTS
+# REQUIRED BY THE ML4W SETTINGS APP
+# https://wiki.hyprland.org/Hypr-Ecosystem/hypridle/
+
+# general {
+# ignore_dbus_inhibit = false
+# }
+
+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.
+}
+
+# Screenlock
+listener {
+ # HYPRLOCK TIMEOUT
+ timeout = 600
+ # HYPRLOCK ONTIMEOUT
+ on-timeout = loginctl lock-session
+}
+
+# dpms
+listener {
+ # DPMS TIMEOUT
+ timeout = 660
+ # DPMS ONTIMEOUT
+ on-timeout = hyprctl dispatch dpms off
+ # DPMS ONRESUME
+ on-resume = hyprctl dispatch dpms on
+}
+
+# Suspend
+listener {
+ # SUSPEND TIMEOUT
+ timeout = 1800
+ #SUSPEND ONTIMEOUT
+ on-timeout = systemctl suspend
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprland.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..563c38a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprland.conf
@@ -0,0 +1,123 @@
+# -----------------------------------------------------
+# | | | |Gib's _ __ _ __| | __ _ _ __ __| |
+# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` |
+# | _ | |_| | |_) | | | | (_| | | | | (_| |
+# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_|
+# |___/|_| Config - Gulfport Desktop
+# -----------------------------------------------------
+# Monitor
+# -----------------------------------------------------
+monitor=DP-3,1920x1080@60,0x0,1
+monitor=DP-1,1920x1080@60,1920x0,1
+monitor=DP-2,1920x1080@75,3840x0,1
+
+# -----------------------------------------------------
+# Workspaces
+# -----------------------------------------------------
+workspace = 1, monitor:DP-3, default:true
+workspace = 2, monitor:DP-1, default:true
+workspace = 3, monitor:DP-2, default:true
+workspace = 4, monitor:DP-3
+workspace = 5, monitor:DP-1
+workspace = 6, monitor:DP-2
+workspace = 7, monitor:DP-3
+workspace = 8, monitor:DP-1
+workspace = 9, monitor:DP-2
+
+# -----------------------------------------------------
+# WINDOW RULES
+# https://wiki.hyprland.org/Configuring/Window-Rules/
+# -----------------------------------------------------
+windowrule = tile,^(gnome-connections)$
+windowrule = tile,^(jumpclient.exe)$
+windowrule = tile,^(Microsoft-edge)$
+windowrule = tile,^(kitty)$
+windowrule = tile,^(firefox)$
+windowrule = tile,^(Chromium)$
+windowrule = float,^(Bitwarden)$
+windowrule = float,^(Cider)$
+windowrule = float,^(pavucontrol)$
+windowrule = float,^(blueman-manager)$
+windowrule = float,^(nm-connection-editor)$
+windowrule = float,^(qalculate-gtk)$
+# Browser Picture in Picture
+windowrulev2 = float, title:^(Picture-in-Picture)$
+windowrulev2 = pin, title:^(Picture-in-Picture)$
+windowrulev2 = move 69.5% 4%, title:^(Picture-in-Picture)$
+
+# -----------------------------------------------------
+# CURSOR
+# -----------------------------------------------------
+exec-once = hyprctl setcursor Bibata-Modern-Ice 24
+
+# -----------------------------------------------------
+# NVIDIA
+# https://wiki.hyprland.org/Nvidia/
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/nvidia.conf
+
+# -----------------------------------------------------
+# KEYBOARD
+# https://wiki.hyprland.org/Configuring/Variables/#input
+# -----------------------------------------------------
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ numlock_by_default = true
+ mouse_refocus = false
+ follow_mouse = 1
+ touchpad {
+ # FOR DESKTOP/MOUSE
+ natural_scroll = false
+ # FOR LAPTOP/TOUCHPAD
+ # natural_scroll = yes
+ # middle_button_emulation = true
+ # clickfinger_behavior = false
+ scroll_factor = 1.0 # Touchpad scroll factor
+ }
+ sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification.
+}
+gestures {
+ workspace_swipe = true
+}
+
+# -----------------------------------------------------
+# Load pywal color file
+# -----------------------------------------------------
+source = ~/.cache/wal/colors-hyprland.conf
+
+# -----------------------------------------------------
+# Autostart
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/autostart.conf
+
+# -----------------------------------------------------
+# Load configuration files
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/window.conf
+source = ~/.config/hypr/conf/decoration.conf
+source = ~/.config/hypr/conf/layout.conf
+source = ~/.config/hypr/conf/misc.conf
+source = ~/.config/hypr/conf/keybinding.conf
+
+# -----------------------------------------------------
+# Animation
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/animation.conf
+
+# -----------------------------------------------------
+# Custom
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/custom.conf
+
+# -----------------------------------------------------
+# ML4W Configuration
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/ml4w.conf
+
+# -----------------------------------------------------
+# Environment for xdg-desktop-portal-hyprland
+# -----------------------------------------------------
+exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprlock.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..d7e0fda
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprlock.conf
@@ -0,0 +1,88 @@
+# _ _ _
+# | |__ _ _ _ __ _ __| | ___ ___| | __
+# | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ /
+# | | | | |_| | |_) | | | | (_) | (__| <
+# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
+# |___/|_|
+#
+
+general {
+ ignore_empty_input = true
+}
+
+background {
+ monitor =
+ path = $HOME/.config/ml4w/cache/blurred_wallpaper.png # only png supported for now
+}
+
+input-field {
+ monitor =
+ size = 200, 50
+ outline_thickness = 3
+ dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15 # 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 = rgb(151515)
+ inner_color = rgb(FFFFFF)
+ font_color = rgb(10, 10, 10)
+ fade_on_empty = true
+ fade_timeout = 1000 # 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 = rgb(204, 136, 34)
+ fail_color = rgb(204, 34, 34) # 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
+ swap_font_color = false # see below
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ #clock
+ text = cmd[update:1000] echo "$TIME"
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 55
+ font_family = Fira Semibold
+ position = -100, 70
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+label {
+ monitor =
+ text = $USER
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 20
+ font_family = Fira Semibold
+ position = -100, 160
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+image {
+ monitor =
+ path = $HOME/.config/ml4w/cache/square_wallpaper.png
+ size = 280 # lesser side if not 1:1 ratio
+ rounding = -1 # negative values mean circle
+ border_size = 4
+ border_color = rgb(221, 221, 221)
+ rotate = 0 # degrees, counter-clockwise
+ reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
+# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
+ position = 0, 200
+ halign = center
+ valign = center
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprpaper.conf b/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprpaper.conf
new file mode 100644
index 0000000..7004a5e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/hyprpaper.conf
@@ -0,0 +1,6 @@
+preload = /home/gib/Pictures/Wallpapers/faroe_islands.jpg
+preload = /home/gib/Pictures/Wallpapers/mt_rainier.jpg
+
+wallpaper = DP-2,/home/gib/Pictures/Wallpapers/faroe_islands.jpg
+wallpaper = HDMI-A-1,/home/gib/Pictures/Wallpapers/mt_rainier.jpg
+splash = false
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/cleanup.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/cleanup.sh
new file mode 100644
index 0000000..af4196d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/cleanup.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ____ _
+# / ___| | ___ __ _ _ __ _ _ _ __
+# | | | |/ _ \/ _` | '_ \| | | | '_ \
+# | |___| | __/ (_| | | | | |_| | |_) |
+# \____|_|\___|\__,_|_| |_|\__,_| .__/
+# |_|
+#
+
+# Remove gamemode flag
+if [ -f ~/.cache/gamemode ] ;then
+ rm ~/.cache/gamemode
+ echo ":: ~/.cache/gamemode removed"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/disabledm.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/disabledm.sh
new file mode 100644
index 0000000..ee5e612
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/disabledm.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+clear
+figlet -f smslant "Disable DM"
+echo "Hyprland recommends the start with the tty login."
+echo "You can deactivate the current display manager (if exists)."
+echo ""
+echo "-> Do you really want to deactivate the display manager?"
+while true; do
+ read -p "Do you want to enable the sddm display manager and setup theme? (Yy/Nn): " yn
+ case $yn in
+ [Yy]* )
+ if [ -f /etc/systemd/system/display-manager.service ]; then
+ sudo rm /etc/systemd/system/display-manager.service
+ echo "Current display manager removed."
+ else
+ echo "No active display manager found."
+ fi
+ break;;
+ [Nn]* )
+ exit
+ break;;
+ * ) echo "Please answer yes or no.";;
+ esac
+done
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/gamemode.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/gamemode.sh
new file mode 100644
index 0000000..09708fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/gamemode.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ____ _
+# / ___| __ _ _ __ ___ ___ _ __ ___ ___ __| | ___
+# | | _ / _` | '_ ` _ \ / _ \ '_ ` _ \ / _ \ / _` |/ _ \
+# | |_| | (_| | | | | | | __/ | | | | | (_) | (_| | __/
+# \____|\__,_|_| |_| |_|\___|_| |_| |_|\___/ \__,_|\___|
+#
+#
+
+if [ -f ~/.cache/gamemode ] ;then
+ hyprctl reload
+ rm ~/.cache/gamemode
+ notify-send "Gamemode deactivated" "Animations and blur enabled"
+else
+ 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"
+ touch ~/.cache/gamemode
+ notify-send "Gamemode activated" "Animations and blur disabled"
+fi
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/gtk.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/gtk.sh
new file mode 100644
index 0000000..1b080de
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/gtk.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# ____ _____ _ __
+# / ___|_ _| |/ /
+# | | _ | | | ' /
+# | |_| | | | | . \
+# \____| |_| |_|\_\
+#
+# Source: https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
+
+config="$HOME/.config/gtk-3.0/settings.ini"
+if [ ! -f "$config" ]; then exit 1; fi
+
+gnome_schema="org.gnome.desktop.interface"
+gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_size="$(grep 'gtk-cursor-theme-size' "$config" | sed 's/.*\s*=\s*//')"
+font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
+terminal=$(cat $HOME/.config/ml4w/settings/terminal.sh)
+
+echo $gtk_theme
+echo $icon_theme
+echo $cursor_theme
+echo $cursor_size
+echo $font_name
+echo $terminal
+
+gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
+gsettings set "$gnome_schema" icon-theme "$icon_theme"
+gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
+gsettings set "$gnome_schema" font-name "$font_name"
+gsettings set "$gnome_schema" color-scheme "prefer-dark"
+
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal "$terminal"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal use-generic-terminal-name "true"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal keybindings "t"
+
+if [ -f ~/.config/hypr/conf/cursor.conf ] ;then
+ echo "exec-once = hyprctl setcursor $cursor_theme $cursor_size" > ~/.config/hypr/conf/cursor.conf
+ hyprctl setcursor $cursor_theme $cursor_size
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/hypridle.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/hypridle.sh
new file mode 100644
index 0000000..6296fa0
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/hypridle.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | | |_ _ _ __ _ __(_) __| | | ___
+# | |_| | | | | '_ \| '__| |/ _` | |/ _ \
+# | _ | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+
+SERVICE="hypridle"
+if [[ "$1" == "status" ]]; then
+ sleep 1
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ echo '{"text": "RUNNING", "class": "active", "tooltip": "Screen locking active\nLeft: Deactivate\nRight: Lock Screen"}'
+ else
+ echo '{"text": "NOT RUNNING", "class": "notactive", "tooltip": "Screen locking deactivated\nLeft: Activate\nRight: Lock Screen"}'
+ fi
+fi
+if [[ "$1" == "toggle" ]]; then
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ killall hypridle
+ else
+ hypridle
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/hyprshade.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/hyprshade.sh
new file mode 100644
index 0000000..037441c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/hyprshade.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ _ _ __ _ __ ___| |__ __ _ __| | ___
+# | |_| | | | | '_ \| '__/ __| '_ \ / _` |/ _` |/ _ \
+# | _ | |_| | |_) | | \__ \ | | | (_| | (_| | __/
+# |_| |_|\__, | .__/|_| |___/_| |_|\__,_|\__,_|\___|
+# |___/|_|
+#
+
+if [[ "$1" == "rofi" ]]; then
+
+ # Open rofi to select the Hyprshade filter for toggle
+ options="$(hyprshade ls)\noff"
+
+ # Open rofi
+ choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-hyprshade.rasi -i -no-show-icons -l 4 -width 30 -p "Hyprshade")
+ if [ ! -z $choice ] ;then
+ echo "hyprshade_filter=\"$choice\"" > ~/.config/ml4w/settings/hyprshade.sh
+ if [ "$choice" == "off" ] ;then
+ hyprshade off
+ notify-send "Hyprshade deactivated"
+ echo ":: hyprshade turned off"
+ else
+ notify-send "Changing Hyprshade to $choice" "Toggle shader with SUPER+SHIFT+S"
+ fi
+ fi
+
+else
+
+ # Toggle Hyprshade based on the selected filter
+ hyprshade_filter="blue-light-filter-50"
+
+ # Check if hyprshade.sh settings file exists and load
+ if [ -f ~/.config/ml4w/settings/hyprshade.sh ] ;then
+ source ~/.config/ml4w/settings/hyprshade.sh
+ fi
+
+ # Toggle Hyprshade
+ if [ "$hyprshade_filter" != "off" ] ;then
+ if [ -z $(hyprshade current) ] ;then
+ echo ":: hyprshade is not running"
+ hyprshade on $hyprshade_filter
+ notify-send "Hyprshade activated" "with $(hyprshade current)"
+ echo ":: hyprshade started with $(hyprshade current)"
+ else
+ notify-send "Hyprshade deactivated"
+ echo ":: Current hyprshade $(hyprshade current)"
+ echo ":: Switching hyprshade off"
+ hyprshade off
+ fi
+ else
+ hyprshade off
+ echo ":: hyprshade turned off"
+ fi
+
+fi
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/init-wallpaper-engine.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/init-wallpaper-engine.sh
new file mode 100644
index 0000000..6751156
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/init-wallpaper-engine.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# __ ______ _____ _
+# \ \ / / _ \ | ____|_ __ __ _(_)_ __ ___
+# \ \ /\ / /| |_) | | _| | '_ \ / _` | | '_ \ / _ \
+# \ V V / | __/ | |___| | | | (_| | | | | | __/
+# \_/\_/ |_| |_____|_| |_|\__, |_|_| |_|\___|
+# |___/
+#
+
+wallpaper_engine=$(cat $HOME/.config/ml4w/settings/wallpaper-engine.sh)
+if [ "$wallpaper_engine" == "swww" ] ;then
+ # swww
+ echo ":: Using swww"
+ swww init
+ swww-daemon --format xrgb
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+elif [ "$wallpaper_engine" == "hyprpaper" ] ;then
+ # hyprpaper
+ echo ":: Using hyprpaper"
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+else
+ echo ":: Wallpaper Engine disabled"
+ ~/.config/hypr/scripts/wallpaper.sh init
+fi
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/keybindings.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/keybindings.sh
new file mode 100644
index 0000000..d0b9150
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/keybindings.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | _____ _ _| |__ (_)_ __ __| (_)_ __ __ _ ___
+# | |/ / _ \ | | | '_ \| | '_ \ / _` | | '_ \ / _` / __|
+# | < __/ |_| | |_) | | | | | (_| | | | | | (_| \__ \
+# |_|\_\___|\__, |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___/
+# |___/ |___/
+#
+# -----------------------------------------------------
+# Get keybindings location based on variation
+# -----------------------------------------------------
+config_file=$(cat ~/.config/hypr/conf/keybinding.conf)
+config_file=${config_file/source = ~/}
+config_file=${config_file/source=~/}
+
+# -----------------------------------------------------
+# Path to keybindings config file
+# -----------------------------------------------------
+config_file="/home/$USER$config_file"
+echo "Reading from: $config_file"
+
+keybinds=""
+
+# Detect Start String
+while read -r line
+do
+ if [[ "$line" == "bind"* ]]; then
+
+ line="$(echo "$line" | sed 's/$mainMod/SUPER/g')"
+ line="$(echo "$line" | sed 's/bind = //g')"
+ line="$(echo "$line" | sed 's/bindm = //g')"
+
+ IFS='#'
+ read -a strarr <<<"$line"
+ kb_str=${strarr[0]}
+ cm_str=${strarr[1]}
+
+ IFS=','
+ read -a kbarr <<<"$kb_str"
+
+ item="${kbarr[0]} + ${kbarr[1]}"$'\r'"${cm_str:1}"
+ keybinds=$keybinds$item$'\n'
+ fi
+done < "$config_file"
+
+sleep 0.2
+rofi -dmenu -i -markup -eh 2 -replace -p "Keybinds" -config ~/.config/rofi/config-compact.rasi <<< "$keybinds"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/loadconfig.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/loadconfig.sh
new file mode 100644
index 0000000..a51ce6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/loadconfig.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+hyprctl reload
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/moveTo.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/moveTo.sh
new file mode 100644
index 0000000..de2492b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/moveTo.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# __ __ _
+# | \/ | _____ _____ | |_ ___
+# | |\/| |/ _ \ \ / / _ \ | __/ _ \
+# | | | | (_) \ V / __/ | || (_) |
+# |_| |_|\___/ \_/ \___| \__\___/
+#
+
+# Function to log messages (useful for debugging)
+log_message() {
+ # echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> ~/moveto_log.txt
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
+}
+
+# Get the target workspace from the argument
+target_workspace=$1
+
+# Check if a target workspace was provided
+if [ -z "$target_workspace" ]; then
+ log_message "Error: No target workspace provided"
+ exit 1
+fi
+
+# Get the current active workspace
+current_workspace=$(hyprctl activewindow -j | jq '.workspace.id')
+
+if [ -z "$current_workspace" ]; then
+ log_message "Error: Couldn't determine current workspace"
+ exit 1
+fi
+
+log_message "Moving from workspace $current_workspace to $target_workspace"
+
+# Get all window addresses in the current workspace
+window_addresses=$(hyprctl clients -j | jq -r ".[] | select(.workspace.id == $current_workspace) | .address")
+
+# Move each window to the target workspace
+for address in $window_addresses; do
+ log_message "Moving window $address to workspace $target_workspace"
+ hyprctl dispatch movetoworkspacesilent "$target_workspace,address:$address"
+done
+
+log_message "Finished moving windows"
+
+# Switch to the target workspace
+hyprctl dispatch workspace "$target_workspace"
+
+log_message "Switched to workspace $target_workspace"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/power.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/power.sh
new file mode 100644
index 0000000..8037fbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/power.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# ____
+# | _ \ _____ _____ _ __
+# | |_) / _ \ \ /\ / / _ \ '__|
+# | __/ (_) \ V V / __/ |
+# |_| \___/ \_/\_/ \___|_|
+#
+
+# Check if eww is open
+FILE="$HOME/.cache/ml4w_sidebar"
+
+if [[ "$1" == "exit" ]]; then
+ echo ":: Exit"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ killall -9 Hyprland
+ sleep 2
+fi
+
+if [[ "$1" == "lock" ]]; then
+ echo ":: Lock"
+ sleep 0.5
+ hyprlock
+fi
+
+if [[ "$1" == "reboot" ]]; then
+ echo ":: Reboot"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl reboot
+fi
+
+if [[ "$1" == "shutdown" ]]; then
+ echo ":: Shutdown"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl poweroff
+fi
+
+if [[ "$1" == "suspend" ]]; then
+ echo ":: Suspend"
+ sleep 0.5
+ systemctl suspend
+fi
+
+if [[ "$1" == "hibernate" ]]; then
+ echo ":: Hibernate"
+ sleep 1;
+ systemctl hibernate
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/restart-hypridle.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/restart-hypridle.sh
new file mode 100644
index 0000000..fe29461
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/restart-hypridle.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+killall hypridle
+sleep 1
+hypridle &
+notify-send "hypridle has been restarted."
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/screenshot.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/screenshot.sh
new file mode 100644
index 0000000..d08557a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/screenshot.sh
@@ -0,0 +1,224 @@
+#!/bin/bash
+# ____ _ _
+# / ___| ___ _ __ ___ ___ _ __ ___| |__ ___ | |_
+# \___ \ / __| '__/ _ \/ _ \ '_ \/ __| '_ \ / _ \| __|
+# ___) | (__| | | __/ __/ | | \__ \ | | | (_) | |_
+# |____/ \___|_| \___|\___|_| |_|___/_| |_|\___/ \__|
+#
+# Based on https://github.com/hyprwm/contrib/blob/main/grimblast/screenshot.sh
+# -----------------------------------------------------
+
+# Screenshots will be stored in $HOME by default.
+# The screenshot will be moved into the screenshot directory
+
+# Add this to ~/.config/user-dirs.dirs to save screenshots in a custom folder:
+# XDG_SCREENSHOTS_DIR="$HOME/Screenshots"
+
+prompt='Screenshot'
+mesg="DIR: ~/Screenshots"
+
+# Screenshot Filename
+source ~/.config/ml4w/settings/screenshot-filename.sh
+
+# Screenshot Folder
+source ~/.config/ml4w/settings/screenshot-folder.sh
+
+# Screenshot Editor
+export GRIMBLAST_EDITOR="$(cat ~/.config/ml4w/settings/screenshot-editor.sh)"
+
+# Example for keybindings
+# bind = SUPER, p, exec, grimblast save active
+# bind = SUPER SHIFT, p, exec, grimblast save area
+# bind = SUPER ALT, p, exec, grimblast save output
+# bind = SUPER CTRL, p, exec, grimblast save screen
+
+# Options
+option_1="Immediate"
+option_2="Delayed"
+
+option_capture_1="Capture Everything"
+option_capture_2="Capture Active Display"
+option_capture_3="Capture Selection"
+
+option_time_1="5s"
+option_time_2="10s"
+option_time_3="20s"
+option_time_4="30s"
+option_time_5="60s"
+#option_time_4="Custom (in seconds)" # Roadmap or someone contribute :)
+
+list_col='1'
+list_row='2'
+
+copy='Copy'
+save='Save'
+copy_save='Copy & Save'
+edit='Edit'
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 2 -width 30 -p "Take screenshot"
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$option_1\n$option_2" | rofi_cmd
+}
+
+####
+# Choose Timer
+# CMD
+timer_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 5 -width 30 -p "Choose timer"
+}
+
+# Ask for confirmation
+timer_exit() {
+ echo -e "$option_time_1\n$option_time_2\n$option_time_3\n$option_time_4\n$option_time_5" | timer_cmd
+}
+
+# Confirm and execute
+timer_run() {
+ selected_timer="$(timer_exit)"
+ if [[ "$selected_timer" == "$option_time_1" ]]; then
+ countdown=5
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_2" ]]; then
+ countdown=10
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_3" ]]; then
+ countdown=20
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_4" ]]; then
+ countdown=30
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_5" ]]; then
+ countdown=60
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Chose Screenshot Type
+# CMD
+type_screenshot_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 3 -width 30 -p "Type of screenshot"
+}
+
+# Ask for confirmation
+type_screenshot_exit() {
+ echo -e "$option_capture_1\n$option_capture_2\n$option_capture_3" | type_screenshot_cmd
+}
+
+# Confirm and execute
+type_screenshot_run() {
+ selected_type_screenshot="$(type_screenshot_exit)"
+ if [[ "$selected_type_screenshot" == "$option_capture_1" ]]; then
+ option_type_screenshot=screen
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_2" ]]; then
+ option_type_screenshot=output
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_3" ]]; then
+ option_type_screenshot=area
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Choose to save or copy photo
+# CMD
+copy_save_editor_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 4 -width 30 -p "How to save"
+}
+
+# Ask for confirmation
+copy_save_editor_exit() {
+ echo -e "$copy\n$save\n$copy_save\n$edit" | copy_save_editor_cmd
+}
+
+# Confirm and execute
+copy_save_editor_run() {
+ selected_chosen="$(copy_save_editor_exit)"
+ if [[ "$selected_chosen" == "$copy" ]]; then
+ option_chosen=copy
+ ${1}
+ elif [[ "$selected_chosen" == "$save" ]]; then
+ option_chosen=save
+ ${1}
+ elif [[ "$selected_chosen" == "$copy_save" ]]; then
+ option_chosen=copysave
+ ${1}
+ elif [[ "$selected_chosen" == "$edit" ]]; then
+ option_chosen=edit
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+timer() {
+ if [[ $countdown -gt 10 ]]; then
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown_less_10=$((countdown - 10))
+ sleep $countdown_less_10
+ countdown=10
+ fi
+ while [[ $countdown -ne 0 ]]; do
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown=$((countdown - 1))
+ sleep 1
+ done
+}
+
+# take shots
+takescreenshot() {
+ sleep 1
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+takescreenshot_timer() {
+ sleep 1
+ timer
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+# Execute Command
+run_cmd() {
+ if [[ "$1" == '--opt1' ]]; then
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot"
+ elif [[ "$1" == '--opt2' ]]; then
+ timer_run
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot_timer"
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+$option_1)
+ run_cmd --opt1
+ ;;
+$option_2)
+ run_cmd --opt2
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/toggle-animations.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/toggle-animations.sh
new file mode 100644
index 0000000..7eedb1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/toggle-animations.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+cache_file="$HOME/.cache/toggle_animation"
+if [[ $(cat $HOME/.config/hypr/conf/animation.conf) == *"disabled"* ]]; then
+ echo ":: Toggle blocked by disabled.conf variation."
+else
+ if [ -f $cache_file ] ;then
+ hyprctl keyword animations:enabled true
+ rm $cache_file
+ else
+ hyprctl keyword animations:enabled false
+ touch $cache_file
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/toggleallfloat.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/toggleallfloat.sh
new file mode 100644
index 0000000..3fc12e2
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/toggleallfloat.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+# _ _ _ __ _ _
+# / \ | | |/ _| | ___ __ _| |_
+# / _ \ | | | |_| |/ _ \ / _` | __|
+# / ___ \| | | _| | (_) | (_| | |_
+# /_/ \_\_|_|_| |_|\___/ \__,_|\__|
+#
+
+hyprctl dispatch workspaceopt allfloat
+notify-send "Windows on this workspace toggled to floating/tiling"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-automation.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-automation.sh
new file mode 100644
index 0000000..e3d1f1e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-automation.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# _ _ __ ______
+# / \ _ _| |_ ___ \ \ / / _ \
+# / _ \| | | | __/ _ \ \ \ /\ / /| |_) |
+# / ___ \ |_| | || (_) | \ V V / | __/
+# /_/ \_\__,_|\__\___/ \_/\_/ |_|
+#
+
+sec=$(cat ~/.config/ml4w/settings/wallpaper-automation.sh)
+_setWallpaperRandomly() {
+ waypaper --random
+ echo ":: Next wallpaper in 60 seconds..."
+ sleep $sec
+ _setWallpaperRandomly
+}
+
+if [ ! -f ~/.config/ml4w/cache/wallpaper-automation ] ;then
+ touch ~/.config/ml4w/cache/wallpaper-automation
+ echo ":: Start wallpaper automation script"
+ notify-send "Wallpaper automation process started" "Wallpaper will be changed every $sec seconds."
+ _setWallpaperRandomly
+else
+ rm ~/.config/ml4w/cache/wallpaper-automation
+ notify-send "Wallpaper automation process stopped."
+ echo ":: Wallpaper automation script process $wp stopped"
+ wp=$(pgrep -f wallpaper-automation.sh)
+ kill -KILL $wp
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-cache.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-cache.sh
new file mode 100644
index 0000000..899a06a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-cache.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+generated_versions="$HOME/.config/ml4w/cache/wallpaper-generated"
+rm $generated_versions/*
+echo ":: Wallpaper cache cleared"
+notify-send "Wallpaper cache cleared"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-effects.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-effects.sh
new file mode 100644
index 0000000..83dbca8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-effects.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ ______ _____ __ __ _
+# \ \ / / _ \ | ____|/ _|/ _| ___ ___| |_ ___
+# \ \ /\ / /| |_) | | _| | |_| |_ / _ \/ __| __/ __|
+# \ V V / | __/ | |___| _| _| __/ (__| |_\__ \
+# \_/\_/ |_| |_____|_| |_| \___|\___|\__|___/
+#
+
+# Get current wallpaper
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# Open rofi to select the Hyprshade filter for toggle
+options="$(ls ~/.config/hypr/effects/wallpaper/)\noff"
+
+# Open rofi
+choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-themes.rasi -i -no-show-icons -l 5 -width 30 -p "Hyprshade")
+if [ ! -z $choice ] ;then
+ echo "$choice" > ~/.config/ml4w/settings/wallpaper-effect.sh
+ notify-send "Changing Wallpaper Effect to " "$choice"
+ waypaper --wallpaper $(cat $cache_file)
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-restore.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-restore.sh
new file mode 100644
index 0000000..b875400
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper-restore.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Restore last wallpaper
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+defaultwallpaper="$HOME/Pictures/Wallpapers/faroe_islands.jpg"
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# -----------------------------------------------------
+# Get current wallpaper
+# -----------------------------------------------------
+
+if [ -f "$cachefile" ]; then
+ sed -i "s|~|$HOME|g" "$cachefile"
+ wallpaper=$(cat $cachefile)
+ if [ -f $wallpaper ]; then
+ echo ":: Wallpaper $wallpaper exists"
+ else
+ echo ":: Wallpaper $wallpaper does not exist. Using default."
+ wallpaper=$defaultwallpaper
+ fi
+else
+ echo ":: $cachefile does not exist. Using default wallpaper."
+ wallpaper=$defaultwallpaper
+fi
+
+# -----------------------------------------------------
+# Set wallpaper
+# -----------------------------------------------------
+
+echo ":: Setting wallpaper with source image $wallpaper"
+waypaper --wallpaper "$wallpaper"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper.sh
new file mode 100644
index 0000000..1045429
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/wallpaper.sh
@@ -0,0 +1,172 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Check to use wallpaper cache
+# -----------------------------------------------------
+
+if [ -f ~/.config/ml4w/settings/wallpaper_cache ]; then
+ use_cache=1
+ echo ":: Using Wallpaper Cache"
+else
+ use_cache=0
+ echo ":: Wallpaper Cache disabled"
+fi
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+force_generate=0
+generatedversions="$HOME/.config/ml4w/cache/wallpaper-generated"
+waypaperrunning=$HOME/.config/ml4w/cache/waypaper-running
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+blurredwallpaper="$HOME/.config/ml4w/cache/blurred_wallpaper.png"
+squarewallpaper="$HOME/.config/ml4w/cache/square_wallpaper.png"
+rasifile="$HOME/.config/ml4w/cache/current_wallpaper.rasi"
+blurfile="$HOME/.config/ml4w/settings/blur.sh"
+defaultwallpaper="$HOME/Pictures/Wallpapers/faroe_islands.jpg"
+wallpapereffect="$HOME/.config/ml4w/settings/wallpaper-effect.sh"
+blur="50x30"
+blur=$(cat $blurfile)
+
+# Ensures that the script only run once if wallpaper effect enabled
+if [ -f $waypaperrunning ]; then
+ rm $waypaperrunning
+ exit
+fi
+
+# Create folder with generated versions of wallpaper if not exists
+if [ ! -d $generatedversions ]; then
+ mkdir $generatedversions
+fi
+
+# -----------------------------------------------------
+# Get selected wallpaper
+# -----------------------------------------------------
+
+if [ -z $1 ]; then
+ if [ -f $cachefile ]; then
+ wallpaper=$(cat $cachefile)
+ else
+ wallpaper=$defaultwallpaper
+ fi
+else
+ wallpaper=$1
+fi
+used_wallpaper=$wallpaper
+echo ":: Setting wallpaper with source image $wallpaper"
+tmpwallpaper=$wallpaper
+
+# -----------------------------------------------------
+# Copy path of current wallpaper to cache file
+# -----------------------------------------------------
+
+if [ ! -f $cachefile ]; then
+ touch $cachefile
+fi
+echo "$wallpaper" > $cachefile
+echo ":: Path of current wallpaper copied to $cachefile"
+
+# -----------------------------------------------------
+# Get wallpaper filename
+# -----------------------------------------------------
+wallpaperfilename=$(basename $wallpaper)
+echo ":: Wallpaper Filename: $wallpaperfilename"
+
+# -----------------------------------------------------
+# Wallpaper Effects
+# -----------------------------------------------------
+
+if [ -f $wallpapereffect ]; then
+ effect=$(cat $wallpapereffect)
+ if [ ! "$effect" == "off" ]; then
+ used_wallpaper=$generatedversions/$effect-$wallpaperfilename
+ if [ -f $generatedversions/$effect-$wallpaperfilename ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper $effect-$wallpaperfilename"
+ else
+ echo ":: Generate new cached wallpaper $effect-$wallpaperfilename with effect $effect"
+ notify-send --replace-id=1 "Using wallpaper effect $effect..." "with image $wallpaperfilename" -h int:value:33
+ source $HOME/.config/hypr/effects/wallpaper/$effect
+ fi
+ echo ":: Loading wallpaper $generatedversions/$effect-$wallpaperfilename with effect $effect"
+ echo ":: Setting wallpaper with $used_wallpaper"
+ touch $waypaperrunning
+ waypaper --wallpaper $used_wallpaper
+ else
+ echo ":: Wallpaper effect is set to off"
+ fi
+else
+ effect="off"
+fi
+
+# -----------------------------------------------------
+# Execute pywal
+# -----------------------------------------------------
+
+echo ":: Execute pywal with $used_wallpaper"
+wal -q -i "$used_wallpaper"
+source "$HOME/.cache/wal/colors.sh"
+
+# -----------------------------------------------------
+# Reload Waybar
+# -----------------------------------------------------
+
+killall -SIGUSR2 waybar
+
+# -----------------------------------------------------
+# Pywalfox
+# -----------------------------------------------------
+
+if type pywalfox > /dev/null 2>&1; then
+ pywalfox update
+fi
+
+# -----------------------------------------------------
+# Created blurred wallpaper
+# -----------------------------------------------------
+
+if [ -f $generatedversions/blur-$blur-$effect-$wallpaperfilename.png ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper blur-$blur-$effect-$wallpaperfilename"
+else
+ echo ":: Generate new cached wallpaper blur-$blur-$effect-$wallpaperfilename with blur $blur"
+ # notify-send --replace-id=1 "Generate new blurred version" "with blur $blur" -h int:value:66
+ magick $used_wallpaper -resize 75% $blurredwallpaper
+ echo ":: Resized to 75%"
+ if [ ! "$blur" == "0x0" ]; then
+ magick $blurredwallpaper -blur $blur $blurredwallpaper
+ cp $blurredwallpaper $generatedversions/blur-$blur-$effect-$wallpaperfilename.png
+ echo ":: Blurred"
+ fi
+fi
+cp $generatedversions/blur-$blur-$effect-$wallpaperfilename.png $blurredwallpaper
+
+# -----------------------------------------------------
+# Create rasi file
+# -----------------------------------------------------
+
+if [ ! -f $rasifile ]; then
+ touch $rasifile
+fi
+echo "* { current-image: url(\"$blurredwallpaper\", height); }" > "$rasifile"
+
+# -----------------------------------------------------
+# Created square wallpaper
+# -----------------------------------------------------
+
+echo ":: Generate new cached wallpaper square-$wallpaperfilename"
+magick $tmpwallpaper -gravity Center -extent 1:1 $squarewallpaper
+cp $squarewallpaper $generatedversions/square-$wallpaperfilename.png
+
+# -----------------------------------------------------
+# Reload AGS
+# -----------------------------------------------------
+
+ags quit &
+sleep 0.2
+ags run &
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/xdg.sh b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/xdg.sh
new file mode 100644
index 0000000..f7d0fec
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/scripts/xdg.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# __ ______ ____
+# \ \/ / _ \ / ___|
+# \ /| | | | | _
+# / \| |_| | |_| |
+# /_/\_\____/ \____|
+#
+
+# Setup Timers
+_sleep1="0.1"
+_sleep2="0.5"
+_sleep3="2"
+
+# Kill all possible running xdg-desktop-portals
+killall -e xdg-desktop-portal-hyprland
+killall -e xdg-desktop-portal-gnome
+killall -e xdg-desktop-portal-kde
+killall -e xdg-desktop-portal-lxqt
+killall -e xdg-desktop-portal-wlr
+killall -e xdg-desktop-portal-gtk
+killall -e xdg-desktop-portal
+
+# Set required environment variables
+dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=hyprland
+
+# Stop all services
+systemctl --user stop pipewire
+systemctl --user stop wireplumber
+systemctl --user stop xdg-desktop-portal
+systemctl --user stop xdg-desktop-portal-gnome
+systemctl --user stop xdg-desktop-portal-kde
+systemctl --user stop xdg-desktop-portal-wlr
+systemctl --user stop xdg-desktop-portal-hyprland
+sleep $_sleep1
+
+# Start xdg-desktop-portal-hyprland
+/usr/lib/xdg-desktop-portal-hyprland &
+sleep $_sleep1
+
+# Start xdg-desktop-portal-gtk
+if [ -f /usr/lib/xdg-desktop-portal-gtk ] ;then
+ /usr/lib/xdg-desktop-portal-gtk &
+ sleep $_sleep1
+fi
+
+# Start xdg-desktop-portal
+/usr/lib/xdg-desktop-portal &
+sleep $_sleep2
+
+# Start required services
+systemctl --user start pipewire
+systemctl --user start wireplumber
+systemctl --user start xdg-desktop-portal
+systemctl --user start xdg-desktop-portal-hyprland
+
+# Run waybar
+sleep $_sleep3
+~/.config/waybar/launch.sh
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-25.glsl b/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-25.glsl
new file mode 100644
index 0000000..149b143
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-25.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.25;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-50.glsl b/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-50.glsl
new file mode 100644
index 0000000..ac5ea21
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-50.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.5;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-75.glsl b/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-75.glsl
new file mode 100644
index 0000000..c8c1b23
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/blue-light-filter-75.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.75;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/invert-colors.glsl b/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/invert-colors.glsl
new file mode 100644
index 0000000..a504901
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/hypr/shaders/invert-colors.glsl
@@ -0,0 +1,8 @@
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+ gl_FragColor = vec4(1.0 - pixColor.r, 1.0 - pixColor.g, 1.0 - pixColor.b, pixColor.a);
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w-hyprland-settings/hyprctl.json b/configs/dotfiles/hyprland/gulfport/.config/ml4w-hyprland-settings/hyprctl.json
new file mode 100644
index 0000000..d6870b7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w-hyprland-settings/hyprctl.json
@@ -0,0 +1,10 @@
+[
+ {
+ "key": "general:col.active_border",
+ "value": "rgb(82aaff)"
+ },
+ {
+ "key": "general:col.inactive_border",
+ "value": "rgb(99c1f1)"
+ }
+]
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w-hyprland-settings/hyprctl.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w-hyprland-settings/hyprctl.sh
new file mode 100644
index 0000000..9fffc49
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w-hyprland-settings/hyprctl.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# _ _ _
+# | |__ _ _ _ __ _ __ ___| |_| |
+# | '_ \| | | | '_ \| '__/ __| __| |
+# | | | | |_| | |_) | | | (__| |_| |
+# |_| |_|\__, | .__/|_| \___|\__|_|
+# |___/|_|
+#
+# Execute this file in the hyprland.conf with exec-always
+sleep 3
+script=$(readlink -f $0)
+path=$(dirname $script)
+if [ ! -f $path/hyprctl.json ] ;then
+ echo ":: ERROR: hyprctl.json not found"
+ exit 1
+fi
+
+jq -c '.[]' $path/hyprctl.json | while read i; do
+ _val() {
+ echo $1 | jq -r '.value'
+ }
+ _key() {
+ echo $1 | jq -r '.key'
+ }
+ key=$(_key $i)
+ val=$(_val $i)
+ echo ":: Execute: hyprctl keyword $key $val"
+ hyprctl keyword $key $val
+done
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/blurred_wallpaper.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/blurred_wallpaper.png
new file mode 100644
index 0000000..8b6ee60
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/blurred_wallpaper.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/current_wallpaper b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/current_wallpaper
new file mode 100644
index 0000000..498a16a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/current_wallpaper
@@ -0,0 +1 @@
+/home/gib/Pictures/Wallpapers/ogbackground.png
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/current_wallpaper.rasi b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/current_wallpaper.rasi
new file mode 100644
index 0000000..d0e0201
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/current_wallpaper.rasi
@@ -0,0 +1 @@
+* { current-image: url("/home/gib/.config/ml4w/cache/blurred_wallpaper.png", height); }
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/square_wallpaper.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/square_wallpaper.png
new file mode 100644
index 0000000..1fdd976
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/square_wallpaper.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-automation b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-automation
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png
new file mode 100644
index 0000000..a4923f5
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Oregon.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Oregon.png
new file mode 100644
index 0000000..aa32b12
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Oregon.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png
new file mode 100644
index 0000000..716a6f4
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png
new file mode 100644
index 0000000..d98d265
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-cliff_river_mountain.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-cliff_river_mountain.png.png
new file mode 100644
index 0000000..b5a8352
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-cliff_river_mountain.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-default.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-default.jpg.png
new file mode 100644
index 0000000..d23a126
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-default.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-erupting_volcano.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-erupting_volcano.jpg.png
new file mode 100644
index 0000000..5adad45
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-erupting_volcano.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-excellentbg.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-excellentbg.png.png
new file mode 100644
index 0000000..c06283f
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-excellentbg.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png
new file mode 100644
index 0000000..20d8dfa
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-gloomyroadcatbg.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-gloomyroadcatbg.png.png
new file mode 100644
index 0000000..4fa14a9
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-gloomyroadcatbg.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-island_beach.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-island_beach.jpg.png
new file mode 100644
index 0000000..aa5fedd
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-island_beach.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-lake_branch_reflection.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-lake_branch_reflection.jpg.png
new file mode 100644
index 0000000..89f993b
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-lake_branch_reflection.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-mt_rainier.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-mt_rainier.jpg.png
new file mode 100644
index 0000000..26ef8ce
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-mt_rainier.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-northern_lights.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-northern_lights.png.png
new file mode 100644
index 0000000..87b656a
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-northern_lights.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground.png.png
new file mode 100644
index 0000000..8b6ee60
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground_upscaled.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground_upscaled.png.png
new file mode 100644
index 0000000..6363a4c
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-ogbackground_upscaled.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-orange_mountains.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-orange_mountains.jpg.png
new file mode 100644
index 0000000..9d341c8
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-orange_mountains.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-rock_tower.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-rock_tower.png.png
new file mode 100644
index 0000000..ac3b0f3
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-rock_tower.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-winter_night.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-winter_night.jpg.png
new file mode 100644
index 0000000..fd7cd74
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-winter_night.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-.png
new file mode 100644
index 0000000..d90962e
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-Oregon.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-Oregon.png
new file mode 100644
index 0000000..425790d
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-Oregon.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png
new file mode 100644
index 0000000..2a08fcd
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png
new file mode 100644
index 0000000..f234f2d
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-cliff_river_mountain.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-cliff_river_mountain.png.png
new file mode 100644
index 0000000..e31d433
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-cliff_river_mountain.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-default.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-default.jpg.png
new file mode 100644
index 0000000..8eee118
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-default.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-erupting_volcano.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-erupting_volcano.jpg.png
new file mode 100644
index 0000000..cb6fdda
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-erupting_volcano.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-excellentbg.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-excellentbg.png.png
new file mode 100644
index 0000000..a6d194e
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-excellentbg.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png
new file mode 100644
index 0000000..d88dd29
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-gloomyroadcatbg.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-gloomyroadcatbg.png.png
new file mode 100644
index 0000000..ba379d5
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-gloomyroadcatbg.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-island_beach.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-island_beach.jpg.png
new file mode 100644
index 0000000..9477c9a
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-island_beach.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-lake_branch_reflection.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-lake_branch_reflection.jpg.png
new file mode 100644
index 0000000..425790d
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-lake_branch_reflection.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-mt_rainier.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-mt_rainier.jpg.png
new file mode 100644
index 0000000..1178678
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-mt_rainier.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-northern_lights.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-northern_lights.png.png
new file mode 100644
index 0000000..070f8c3
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-northern_lights.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-ogbackground.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-ogbackground.png.png
new file mode 100644
index 0000000..1fdd976
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-ogbackground.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-ogbackground_upscaled.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-ogbackground_upscaled.png.png
new file mode 100644
index 0000000..200edfb
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-ogbackground_upscaled.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-orange_mountains.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-orange_mountains.jpg.png
new file mode 100644
index 0000000..90764c1
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-orange_mountains.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-rock_tower.png.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-rock_tower.png.png
new file mode 100644
index 0000000..bd560d5
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-rock_tower.png.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-winter_night.jpg.png b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-winter_night.jpg.png
new file mode 100644
index 0000000..6703eac
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/ml4w/cache/wallpaper-generated/square-winter_night.jpg.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/login/issue b/configs/dotfiles/hyprland/gulfport/.config/ml4w/login/issue
new file mode 100644
index 0000000..d3f99f3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/login/issue
@@ -0,0 +1,11 @@
+ _ _
+ | | ___ __ _(_)_ __
+ | | / _ \\ / _' | | '_ \\
+ | |__| (_) | (_| | | | | |
+ |_____\\___/ \\__, |_|_| |_|
+ |___/
+
+Today is \d \t @ \n
+--------------------------------------------------------------
+\r (\l)
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/ags.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/ags.sh
new file mode 100644
index 0000000..8c1ba75
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/ags.sh
@@ -0,0 +1 @@
+ags run
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/cliphist.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/cliphist.sh
new file mode 100644
index 0000000..b9a2acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/cliphist.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# ____ _ _ _ _ _
+# / ___| (_)_ __ | |__ (_)___| |_
+# | | | | | '_ \| '_ \| / __| __|
+# | |___| | | |_) | | | | \__ \ |_
+# \____|_|_| .__/|_| |_|_|___/\__|
+# |_|
+#
+
+case $1 in
+ d) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist delete
+ ;;
+
+ w) if [ `echo -e "Clear\nCancel" | rofi -dmenu -config ~/.config/rofi/config-short.rasi` == "Clear" ] ; then
+ cliphist wipe
+ fi
+ ;;
+
+ *) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist decode | wl-copy
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/figlet.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/figlet.sh
new file mode 100644
index 0000000..7a5ff4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/figlet.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+figlet -f smslant "Figlet"
+echo
+# ------------------------------------------------
+# Script to create ascii font based header on user input
+# and copy the result to the clipboard
+# -----------------------------------------------------
+
+read -p "Enter the text for ascii encoding: " mytext
+
+if [ -f ~/figlet.txt ]; then
+ touch ~/figlet.txt
+fi
+
+echo "cat <<\"EOF\"" > ~/figlet.txt
+figlet -f smslant "$mytext" >> ~/figlet.txt
+echo "" >> ~/figlet.txt
+echo "EOF" >> ~/figlet.txt
+
+lines=$( cat ~/figlet.txt )
+wl-copy "$lines"
+xclip -sel clip ~/figlet.txt
+
+echo "Text copied to clipboard!"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/installupdates.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/installupdates.sh
new file mode 100644
index 0000000..b4605b5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/installupdates.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# ____ __ ____ __ __
+# / _/__ ___ / /____ _/ / / __ _____ ___/ /__ _/ /____ ___
+# _/ // _ \(_- __/ _ `/ / / / // / _ \/ _ / _ `/ __/ -_|_-<
+# /___/_//_/___/\__/\_,_/_/_/ \_,_/ .__/\_,_/\_,_/\__/\__/___/
+# /_/
+#
+
+sleep 1
+clear
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+figlet -f smslant "Updates"
+echo
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START THE UPDATE NOW?" ;then
+ echo
+ echo ":: Update started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Update canceled."
+ exit;
+fi
+
+_isInstalled() {
+ package="$1";
+ case $install_platform in
+ arch)
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ ;;
+ fedora)
+ check="$(dnf repoquery --quiet --installed ""${package}*"")"
+ ;;
+ *)
+ ;;
+ esac
+
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+echo 1; #'1' means 'false' in Bash
+return; #false
+}
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ if [[ $(_isInstalled "timeshift") == "0" ]] ;then
+ echo
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot skipped."
+ exit 130
+ else
+ echo ":: Snapshot skipped."
+ fi
+ echo
+ fi
+
+ $aur_helper
+
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ fedora)
+ sudo dnf upgrade
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ *)
+ echo ":: ERROR - Platform not supported"
+ echo "Press [ENTER] to close."
+ read
+ ;;
+esac
+
+notify-send "Update complete"
+echo
+echo ":: Update complete"
+echo
+echo
+
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/nm-applet.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/nm-applet.sh
new file mode 100644
index 0000000..52af715
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/nm-applet.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ __
+# ___ __ _ ___ ____ ___ / /__ / /_
+# / _ \/ ' \/ _ `/ _ \/ _ \/ / -_) __/
+# /_//_/_/_/_/\_,_/ .__/ .__/_/\__/\__/
+# /_/ /_/
+#
+if [[ "$1" == "stop" ]]; then
+ killall nm-applet
+elif [[ "$1" == "toggle" ]]; then
+ if pgrep -x "nm-applet" > /dev/null
+ then
+ echo "Running"
+ killall nm-applet
+ else
+ echo "Stopped"
+ nm-applet --indicator &
+ fi
+else
+ nm-applet --indicator &
+fi
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/sddm-wallpaper.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/sddm-wallpaper.sh
new file mode 100644
index 0000000..eccad59
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/sddm-wallpaper.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# _ _ _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___ __| | __| |_ __ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \ / __|/ _` |/ _` | '_ ` _ \
+# | |_| | |_) | (_| | (_| | || __/ \__ \ (_| | (_| | | | | | |
+# \___/| .__/ \__,_|\__,_|\__\___| |___/\__,_|\__,_|_| |_| |_|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+sleep 1
+clear
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+current_wallpaper=$(cat "$cache_file")
+extension="${current_wallpaper##*.}"
+
+echo -e "${GREEN}"
+figlet -f smslant "SDDM Wallpaper"
+echo -e "${NONE}"
+
+sddm_theme_name="sequoia"
+sddm_asset_folder="/usr/share/sddm/themes/$sddm_theme_name/backgrounds"
+
+sddm_theme_tpl="/usr/share/ml4w-hyprland/sddm/theme.conf"
+if [ -f $HOME/.config/ml4w/settings/sddm/theme.conf ]; then
+ sddm_theme_tpl="$HOME/.config/ml4w/settings/sddm/theme.conf"
+ echo ":: Using custum theme.conf"
+fi
+
+
+if [ ! -f $current_wallpaper ]; then
+ gum spin --spinner dot --title "File $current_wallpaper does not exist" -- sleep 3
+ exit
+fi
+
+echo ":: Set the current wallpaper $current_wallpaper as SDDM wallpaper."
+echo
+
+if [ ! -d /etc/sddm.conf.d/ ]; then
+ sudo mkdir /etc/sddm.conf.d
+ echo ":: Folder /etc/sddm.conf.d created."
+fi
+
+sudo cp /usr/share/ml4w-hyprland/sddm/sddm.conf /etc/sddm.conf.d/
+echo ":: File /etc/sddm.conf.d/sddm.conf updated."
+
+sudo cp $current_wallpaper $sddm_asset_folder/current_wallpaper.$extension
+echo ":: Current wallpaper copied into $sddm_asset_folder"
+
+sudo cp $sddm_theme_tpl /usr/share/sddm/themes/$sddm_theme_name/
+sudo sed -i 's/CURRENTWALLPAPER/'"current_wallpaper.$extension"'/' /usr/share/sddm/themes/$sddm_theme_name/theme.conf
+echo ":: File theme.conf updated in /usr/share/sddm/themes/$sddm_theme_name/"
+echo
+
+echo ":: You can preview your updated SDDM Login screen. (Close it with SUPER+Q)"
+echo
+if gum confirm "Do you want to preview the result?"; then
+ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sequoia
+fi
+
+echo
+gum spin --spinner dot --title "Please logout to see the result." -- sleep 3
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/shell.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/shell.sh
new file mode 100644
index 0000000..9cb6a94
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/shell.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+# ____ _ _ _
+# / ___|| |__ ___| | |
+# \___ \| '_ \ / _ \ | |
+# ___) | | | | __/ | |
+# |____/|_| |_|\___|_|_|
+#
+
+sleep 1
+
+_isInstalledYay() {
+ package="$1";
+ check="$(yay -Qs --color always "${package}" | grep "local" | grep "\." | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+clear
+figlet -f smslant "Shell"
+
+echo ":: Please select your preferred shell"
+echo
+shell=$(gum choose "bash" "zsh" "Cancel")
+# -----------------------------------------------------
+# Activate bash
+# -----------------------------------------------------
+if [[ $shell == "bash" ]] ;then
+
+ # Change shell to bash
+ while ! chsh -s $(which bash); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now bash."
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Activate zsh
+# -----------------------------------------------------
+elif [[ $shell == "zsh" ]] ;then
+
+ # Change shell to shh
+ while ! chsh -s $(which zsh); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now zsh."
+
+ # Installing oh-my-posh
+ yay -S oh-my-posh-bin
+
+ # Installing oh-my-zsh
+ if [ ! -d "$HOME/.oh-my-zsh" ]; then
+ echo ":: Installing oh-my-zsh"
+ sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
+ cp ~/.config/ml4w/tpl/.zshrc ~/
+ else
+ echo ":: oh-my-zsh already installed"
+ fi
+
+ # Installing zsh-autosuggestions
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
+ echo ":: Installing zsh-autosuggestions"
+ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
+ else
+ echo ":: zsh-autosuggestions already installed"
+ fi
+
+ # Installing zsh-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
+ echo ":: Installing zsh-syntax-highlighting"
+ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
+ else
+ echo ":: zsh-syntax-highlighting already installed"
+ fi
+
+ # Installing fast-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/fast-syntax-highlighting" ]; then
+ echo ":: Installing fast-syntax-highlighting"
+ git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
+ else
+ echo ":: fast-syntax-highlighting already installed"
+ fi
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Cencel
+# -----------------------------------------------------
+else
+ echo ":: Changing shell canceled"
+ exit
+fi
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/thunarterminal.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/thunarterminal.sh
new file mode 100644
index 0000000..777be5f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/thunarterminal.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+clear
+if [ -f ~/.config/ml4w/settings/terminal.sh ]; then
+ terminal="$(cat ~/.config/ml4w/settings/terminal.sh)"
+ echo ":: Installing $terminal"
+ if [ -d ~/.config/xfce4 ]; then
+ if [ ! -f ~/.config/xfce4/helpers.rc ]; then
+ touch ~/.config/xfce4/helpers.rc
+ fi
+ echo "TerminalEmulator=$terminal" > ~/.config/xfce4/helpers.rc
+ echo ":: $terminal defined as Thunar Terminal Emulator."
+ else
+ echo "ERROR: ~/.config/xfce4 not found. Please open Thunar once to create it."
+ echo "Then start this script again."
+ fi
+else
+ echo "ERROR: ~/.config/ml4w/settings/terminal.sh not found"
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/updates.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/updates.sh
new file mode 100644
index 0000000..505d126
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/updates.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \/ __|
+# | |_| | |_) | (_| | (_| | || __/\__ \
+# \___/| .__/ \__,_|\__,_|\__\___||___/
+# |_|
+#
+
+# -----------------------------------------------------
+# Define threshholds for color indicators
+# -----------------------------------------------------
+
+threshhold_green=0
+threshhold_yellow=25
+threshhold_red=100
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ # -----------------------------------------------------
+ # Calculate available updates
+ # -----------------------------------------------------
+
+ # flatpak remote-ls --updates
+
+ updates=$(checkupdates-with-aur | wc -l)
+ ;;
+ fedora)
+ updates=$(dnf check-update -q|grep -c ^[a-z0-9])
+ ;;
+ *)
+ updates=0
+ ;;
+esac
+
+# -----------------------------------------------------
+# Output in JSON format for Waybar Module custom-updates
+# -----------------------------------------------------
+
+css_class="green"
+
+if [ "$updates" -gt $threshhold_yellow ]; then
+ css_class="yellow"
+fi
+
+if [ "$updates" -gt $threshhold_red ]; then
+ css_class="red"
+fi
+
+if [ "$updates" -gt $threshhold_green ]; then
+ printf '{"text": "%s", "alt": "%s", "tooltip": "Click to update your system", "class": "%s"}' "$updates" "$updates" "$css_class"
+else
+ printf '{"text": "0", "alt": "0", "tooltip": "No updates available", "class": "green"}'
+fi
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/wlogout.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/wlogout.sh
new file mode 100644
index 0000000..2b540eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/scripts/wlogout.sh
@@ -0,0 +1,5 @@
+res_w=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width')
+res_h=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .height')
+h_scale=$(hyprctl -j monitors | jq '.[] | select (.focused == true) | .scale' | sed 's/\.//')
+w_margin=$(( res_h * 27 / h_scale ))
+wlogout -b 5 -T $w_margin -B $w_margin
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/blur.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/blur.sh
new file mode 100644
index 0000000..4ffc966
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/blur.sh
@@ -0,0 +1 @@
+50x30
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/browser.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/browser.sh
new file mode 100644
index 0000000..dbfb8f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/browser.sh
@@ -0,0 +1 @@
+firefox
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/calculator.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/calculator.sh
new file mode 100644
index 0000000..7321b2e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/calculator.sh
@@ -0,0 +1 @@
+gnome-calculator
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/dotfiles-folder.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/dotfiles-folder.sh
new file mode 100644
index 0000000..6bbefa5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/dotfiles-folder.sh
@@ -0,0 +1 @@
+Documents/Configs/hyprland/gulfport
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/dunst_position.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/dunst_position.sh
new file mode 100644
index 0000000..181d3ca
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/dunst_position.sh
@@ -0,0 +1 @@
+top-center
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/editor.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/editor.sh
new file mode 100644
index 0000000..4bb243e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/editor.sh
@@ -0,0 +1 @@
+gnome-text-editor
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/emojipicker.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/emojipicker.sh
new file mode 100644
index 0000000..36d697f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/emojipicker.sh
@@ -0,0 +1 @@
+smile
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/eww-monitor.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/eww-monitor.sh
new file mode 100644
index 0000000..4d18c3e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/eww-monitor.sh
@@ -0,0 +1 @@
+auto
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/filemanager.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/filemanager.sh
new file mode 100644
index 0000000..9f0175d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/filemanager.sh
@@ -0,0 +1 @@
+nautilus
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_dpms_timeout.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_dpms_timeout.sh
new file mode 100644
index 0000000..9ecf271
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_dpms_timeout.sh
@@ -0,0 +1 @@
+660
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_hyprlock_timeout.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
new file mode 100644
index 0000000..73623d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
@@ -0,0 +1 @@
+600
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_suspend_timeout.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_suspend_timeout.sh
new file mode 100644
index 0000000..2974009
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hypridle_suspend_timeout.sh
@@ -0,0 +1 @@
+1800
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hyprpaper.tpl b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hyprpaper.tpl
new file mode 100644
index 0000000..3033ff3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hyprpaper.tpl
@@ -0,0 +1,8 @@
+# Preload Wallpapers
+preload = WALLPAPER
+
+# Set Wallpapers
+wallpaper = ,WALLPAPER
+
+# Disable Splash
+splash = false
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hyprshade.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hyprshade.sh
new file mode 100644
index 0000000..1865560
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/hyprshade.sh
@@ -0,0 +1 @@
+hyprshade_filter="blue-light-filter-50"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/ml4w-sidebar.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/ml4w-sidebar.sh
new file mode 100644
index 0000000..b1ab0ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/ml4w-sidebar.sh
@@ -0,0 +1 @@
+ags toggle sidebar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/networkmanager.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/networkmanager.sh
new file mode 100644
index 0000000..b2a0141
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/networkmanager.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e nmtui
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/platform.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/platform.sh
new file mode 100644
index 0000000..35a143b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/platform.sh
@@ -0,0 +1 @@
+fedora
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/printer-drivers.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/printer-drivers.sh
new file mode 100644
index 0000000..444839f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/printer-drivers.sh
@@ -0,0 +1,4 @@
+# Installation of Printer Drivers
+# Please add your drivers to the package list
+# Example:
+# yay -S brother-hll2360dw-lpr-bin brother-hll2360dw-cups-bin brother-mfc-l3770cdw brscan-skey brscan4 skanpage
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-border-radius.rasi b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-border-radius.rasi
new file mode 100644
index 0000000..7cbaeeb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-border-radius.rasi
@@ -0,0 +1 @@
+* { border-radius: 2em; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-border.rasi b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-border.rasi
new file mode 100644
index 0000000..e533468
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-border.rasi
@@ -0,0 +1 @@
+* { border-width: 3px; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-font.rasi b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-font.rasi
new file mode 100644
index 0000000..a2497c3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi-font.rasi
@@ -0,0 +1 @@
+configuration { font: "Fira Sans 11"; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi_bordersize.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi_bordersize.sh
new file mode 100644
index 0000000..e440e5c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/rofi_bordersize.sh
@@ -0,0 +1 @@
+3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-editor.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-editor.sh
new file mode 100644
index 0000000..5f0900f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-editor.sh
@@ -0,0 +1 @@
+pinta
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-filename.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-filename.sh
new file mode 100644
index 0000000..f81ad3c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-filename.sh
@@ -0,0 +1 @@
+NAME="screenshot_$(date +%d%m%Y_%H%M%S).jpg"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-folder.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-folder.sh
new file mode 100644
index 0000000..a1bf821
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/screenshot-folder.sh
@@ -0,0 +1 @@
+screenshot_folder="$HOME/Pictures"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/software.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/software.sh
new file mode 100644
index 0000000..d10bc37
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/software.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e pacseek
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/system-monitor.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/system-monitor.sh
new file mode 100644
index 0000000..a7b1e4f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/system-monitor.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e htop
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/terminal.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/terminal.sh
new file mode 100644
index 0000000..659fb6b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/terminal.sh
@@ -0,0 +1 @@
+kitty
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-automation.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-automation.sh
new file mode 100644
index 0000000..2b82dfe
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-automation.sh
@@ -0,0 +1 @@
+60
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-effect.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-effect.sh
new file mode 100644
index 0000000..cfb931e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-effect.sh
@@ -0,0 +1 @@
+off
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-engine.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-engine.sh
new file mode 100644
index 0000000..b6923b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-engine.sh
@@ -0,0 +1 @@
+hyprpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-folder.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-folder.sh
new file mode 100644
index 0000000..4e2f6ca
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper-folder.sh
@@ -0,0 +1,2 @@
+# Enter the path to the folder that includes your wallpapers
+wallpaper_folder=$HOME/Pictures/Wallpapers
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper_cache.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper_cache.sh
new file mode 100644
index 0000000..0ca9514
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wallpaper_cache.sh
@@ -0,0 +1 @@
+True
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar-quicklinks.json b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar-quicklinks.json
new file mode 100644
index 0000000..7d61906
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar-quicklinks.json
@@ -0,0 +1,45 @@
+{
+ "custom/quicklink1": {
+ "format": "",
+ "on-click": "chromium",
+ "tooltip-format": "Open Chromium"
+ },
+ "custom/quicklink2": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip-format": "Open Firefox"
+ },
+ "custom/quicklink3": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/filemanager.sh",
+ "tooltip-format": "Open filemanager"
+ },
+ "custom/quicklink4": {
+ "format": "",
+ "on-click": "betterbird",
+ "tooltip-format": "Open Betterbird"
+ },
+ "custom/quicklink5": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/calculator.sh",
+ "tooltip-format": "Open calculator"
+ },
+ "custom/quicklink6": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/emojipicker.sh",
+ "tooltip-format": "Open emoji picker"
+ },
+ "custom/quicklinkempty": {
+ },
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/quicklink2",
+ "custom/quicklink3",
+ /*
+ "custom/quicklink4",
+ */
+ "custom/quicklinkempty"
+ ]
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar-theme.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar-theme.sh
new file mode 100644
index 0000000..736057a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar-theme.sh
@@ -0,0 +1 @@
+/ml4w;/ml4w/white
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_appmenu.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_appmenu.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_appmenu.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_backlight.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_backlight.sh
new file mode 100644
index 0000000..c1f22fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_backlight.sh
@@ -0,0 +1 @@
+False
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_chatgpt.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_chatgpt.sh
new file mode 100644
index 0000000..bc59c12
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_chatgpt.sh
@@ -0,0 +1 @@
+False
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_custom_timedateformat.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_custom_timedateformat.sh
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_dateformat.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_dateformat.sh
new file mode 100644
index 0000000..05696fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_dateformat.sh
@@ -0,0 +1 @@
+%a
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_network.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_network.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_network.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_quicklinks.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_quicklinks.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_quicklinks.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_screenlock.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_screenlock.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_screenlock.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_settings.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_settings.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_settings.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_systray.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_systray.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_systray.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_taskbar.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_taskbar.sh
new file mode 100644
index 0000000..0ca9514
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_taskbar.sh
@@ -0,0 +1 @@
+True
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_timeformat.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_timeformat.sh
new file mode 100644
index 0000000..e2c888b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_timeformat.sh
@@ -0,0 +1 @@
+%H:%M
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_timezone.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_timezone.sh
new file mode 100644
index 0000000..c7aac92
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_timezone.sh
@@ -0,0 +1 @@
+America/Chicago
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_toggle.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_toggle.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_toggle.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_window.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_window.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_window.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_workspaces.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_workspaces.sh
new file mode 100644
index 0000000..1e8b314
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/waybar_workspaces.sh
@@ -0,0 +1 @@
+6
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wlogout-parameters.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wlogout-parameters.sh
new file mode 100644
index 0000000..50e2452
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/settings/wlogout-parameters.sh
@@ -0,0 +1 @@
+-b 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/compare.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/compare.sh
new file mode 100644
index 0000000..1b18b98
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/compare.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Compare installed version with used version
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+if [ -f /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name ] ;then
+ installed_version=$(cat /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name)
+ used_version=$(cat ~/.config/ml4w/version/name)
+ if [[ $(testvercomp $used_version $installed_version "<") == "0" ]] ;then
+ notify-send "Please run ml4w-hyprland-setup" "Installed version is newer then the version you're currently using."
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/library.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/library.sh
new file mode 100644
index 0000000..94e5fbe
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/library.sh
@@ -0,0 +1,42 @@
+vercomp () {
+ if [[ $1 == $2 ]]
+ then
+ return 0
+ fi
+ local IFS=.
+ local i ver1=($1) ver2=($2)
+ # fill empty fields in ver1 with zeros
+ for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
+ do
+ ver1[i]=0
+ done
+ for ((i=0; i<${#ver1[@]}; i++))
+ do
+ if ((10#${ver1[i]:=0} > 10#${ver2[i]:=0}))
+ then
+ return 1
+ fi
+ if ((10#${ver1[i]} < 10#${ver2[i]}))
+ then
+ return 2
+ fi
+ done
+ return 0
+}
+
+testvercomp () {
+ vercomp $1 $2
+ case $? in
+ 0) op='=';;
+ 1) op='>';;
+ 2) op='<';;
+ esac
+ if [[ $op != $3 ]]
+ then
+ # No update available
+ echo "1"
+ else
+ # Update available
+ echo "0"
+ fi
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/name b/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/name
new file mode 100644
index 0000000..92db042
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/name
@@ -0,0 +1 @@
+2.9.7.4
diff --git a/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/update.sh b/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/update.sh
new file mode 100644
index 0000000..efe9403
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/ml4w/version/update.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Check for updates
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+# Get latest tag from GitHub
+get_latest_release() {
+ v_online=$(curl --silent "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=ml4w-hyprland")
+ v_full_online=$(grep -m 1 'pkgver' <<< $v_online | sed 's/^$/pkgver/')
+ echo ${v_full_online/pkgver=/}
+}
+
+# Check for internet connection
+if ping -q -c 1 -W 1 google.com >/dev/null; then
+
+ version=$(cat ~/.config/ml4w/version/name)
+ online=$(get_latest_release "mylinuxforwork/hyprland-dotfiles")
+ echo $version "<" $online
+ testvercomp $version $online "<"
+else
+ # Network is down
+ echo "1"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/nwg-dock-hyprland/launch.sh b/configs/dotfiles/hyprland/gulfport/.config/nwg-dock-hyprland/launch.sh
new file mode 100644
index 0000000..345b06e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/nwg-dock-hyprland/launch.sh
@@ -0,0 +1,6 @@
+# ___ __
+# / _ \___ ____/ /__
+# / // / _ \/ __/ '_/
+# /____/\___/\__/_/\_\
+#
+nwg-dock-hyprland -r -i 28 -w 6 -mb 6 -ml 10 -mr 10 -x -lp "start" -c "rofi -show drun"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/nwg-dock-hyprland/style.css b/configs/dotfiles/hyprland/gulfport/.config/nwg-dock-hyprland/style.css
new file mode 100644
index 0000000..443ae99
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/nwg-dock-hyprland/style.css
@@ -0,0 +1,43 @@
+window {
+ background: rgba(46,47,61,0.98);
+ border-radius: 10px;
+ border-style: solid;
+ border-width: 2px;
+ border-color: #82aaff;
+ opacity:0.8;
+}
+
+#box {
+ /* Define attributes of the box surrounding icons here */
+ padding: 10px;
+}
+
+#active {
+ /* This is to underline the button representing the currently active window */
+ border-bottom: solid 0px;
+ border-color: #FFFFFF
+}
+
+button, image {
+ background: none;
+ border-style: none;
+ box-shadow: none;
+ color: #999
+}
+
+button {
+ padding: 4px;
+ margin-left: 4px;
+ margin-right: 4px;
+ color: #eee;
+ font-size: 12px
+}
+
+button:hover {
+ background-color: rgba(255, 255, 255, 0.15);
+ border-radius: 10px;
+}
+
+button:focus {
+ box-shadow: none
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/qt6ct/qt6ct.conf b/configs/dotfiles/hyprland/gulfport/.config/qt6ct/qt6ct.conf
new file mode 100644
index 0000000..ab40361
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/qt6ct/qt6ct.conf
@@ -0,0 +1,32 @@
+[Appearance]
+color_scheme_path=/usr/share/qt6ct/colors/darker.conf
+custom_palette=true
+icon_theme=breeze-dark
+standard_dialogs=default
+style=Breeze
+
+[Fonts]
+fixed="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+general="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=0
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+gui_effects=@Invalid()
+keyboard_scheme=2
+menus_have_icons=true
+show_shortcuts_in_context_menus=true
+stylesheets=@Invalid()
+toolbutton_style=4
+underline_shortcut=1
+wheel_scroll_lines=3
+
+[SettingsWindow]
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\a\x80\0\0\0\0\0\0\xe\xdd\0\0\x3\xea\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\x61\0\0\0\0\x2\0\0\0\a\x80\0\0\a\x80\0\0\0\0\0\0\xe\xdd\0\0\x3\xea)
+
+[Troubleshooting]
+force_raster_widgets=1
+ignored_applications=@Invalid()
diff --git a/configs/dotfiles/hyprland/gulfport/.config/rofi/config-cliphist.rasi b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-cliphist.rasi
new file mode 100644
index 0000000..a2cbd7a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-cliphist.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/rofi/config-compact.rasi b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-compact.rasi
new file mode 100644
index 0000000..4e59ac5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-compact.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/rofi/config-hyprshade.rasi b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-hyprshade.rasi
new file mode 100644
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-hyprshade.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/rofi/config-old.rasi b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-old.rasi
new file mode 100644
index 0000000..06fb55f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-old.rasi
@@ -0,0 +1,266 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: "APPS";
+ display-run: "RUN";
+ display-filebrowser: "FILES";
+ display-window: "WINDOW";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@import "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+/* ---- Window ---- */
+window {
+ width: 900px;
+ x-offset: 0px;
+ y-offset: 0px;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: #FFFFFF;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+/* ---- Mainbox ---- */
+mainbox {
+ enabled: true;
+ orientation: horizontal;
+ spacing: 0px;
+ margin: 0px;
+ background-color: @background;
+ background-image: @current-image;
+ children: ["imagebox","listbox"];
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 18px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "inputbar", "dummy", "mode-switcher" ];
+}
+
+/* ---- Listbox ---- */
+listbox {
+ spacing: 20px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "message", "listview" ];
+}
+
+/* ---- Dummy ---- */
+dummy {
+ background-color: transparent;
+}
+
+/* ---- Inputbar ---- */
+inputbar {
+ enabled: true;
+ text-color: @foreground;
+ spacing: 10px;
+ padding: 15px;
+ border-radius: 10px;
+ border-color: @foreground;
+ background-color: @background;
+ children: [ "textbox-prompt-colon", "entry" ];
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "";
+ padding: 0px 5px 0px 0px;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+entry {
+ enabled: true;
+ background-color: transparent;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+/* ---- Mode Switcher ---- */
+mode-switcher{
+ enabled: true;
+ spacing: 20px;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+button {
+ padding: 10px;
+ border-radius: 10px;
+ background-color: @background;
+ text-color: inherit;
+ cursor: pointer;
+ border: 0px;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+/* ---- Listview ---- */
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ spacing: 0px;
+ padding: 10px;
+ margin: 0px;
+ background-color: @background;
+ border:0px;
+}
+
+/* ---- Element ---- */
+element {
+ enabled: true;
+ padding: 10px;
+ margin: 5px;
+ cursor: pointer;
+ background-color: @background;
+ border-radius: 10px;
+ border: @border-width;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 32px;
+ cursor: inherit;
+}
+
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border:0px;
+ margin:20px 0px 0px 0px;
+ padding:0px;
+ spacing:0px;
+ border-radius: 10px;
+}
+
+textbox {
+ padding: 15px;
+ margin: 0px;
+ border-radius: 0px;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 15px;
+ border-radius: 20px;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/rofi/config-screenshot.rasi b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-screenshot.rasi
new file mode 100644
index 0000000..d4e70ed
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-screenshot.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 0em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/rofi/config-short.rasi b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-short.rasi
new file mode 100644
index 0000000..dcb8cd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-short.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 20em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 2;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/rofi/config-themes.rasi b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-themes.rasi
new file mode 100644
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/rofi/config-themes.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/rofi/config.rasi b/configs/dotfiles/hyprland/gulfport/.config/rofi/config.rasi
new file mode 100644
index 0000000..50b759b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/rofi/config.rasi
@@ -0,0 +1,241 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ height: 35em;
+ width: 56em;
+ transparency: "real";
+ fullscreen: false;
+ enabled: true;
+ cursor: "default";
+ spacing: 0em;
+ padding: 0em;
+ border: @border-width;
+ border-color: @color11;
+ border-radius: @border-radius;
+ background-color: @background;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: vertical;
+ children: [ "inputbar" , "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 5em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 0em 0em 1em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: horizontal;
+ children: [ "listview" , "mode-switcher" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1.5em;
+ spacing: 0.5em;
+ enabled: true;
+ columns: 2;
+ lines: 3;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ spacing: 0em;
+ padding: 0.5em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 3em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.1;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+// Error message //
+error-message {
+ text-color: @foreground;
+ background-color: @background;
+ text-transform: capitalize;
+ children: [ "textbox" ];
+}
+
+textbox {
+ text-color: inherit;
+ background-color: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/set_symlinks.sh b/configs/dotfiles/hyprland/gulfport/.config/set_symlinks.sh
new file mode 100644
index 0000000..b6d0df9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/set_symlinks.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# bash <(curl -s https://raw.githubusercontent.com/mylinuxforwork/dotfiles/main/setup-fedora.sh)
+hyprconfig=/home/gib/Documents/Configs/hyprland/gulfport/.config
+config=/home/gib/Documents/Configs
+
+rm -f ~/.bashrc
+ln -s $config/bashrc ~/.bashrc
+rm -rf ~/.config/gtk-3.0
+ln -s $config/gtk-3.0 ~/.config/gtk-3.0
+rm -rf ~/.config/gtk-4.0
+ln -s $config/gtk-4.0 ~/.config/gtk-4.0
+rm -f ~/.Xresources
+ln -s $hyprconfig/Xresources ~/.Xresources
+rm -rf ~/.config/ags
+ln -s $hyprconfig/ags ~/.config/ags
+rm -rf ~/.config/dunst
+ln -s $hyprconfig/dunst ~/.config/dunst
+rm -rf ~/.config/fastfetch
+ln -s $hyprconfig/fastfetch ~/.config/fastfetch
+rm -rf ~/.config/hypr
+ln -s $hyprconfig/hypr ~/.config/hypr
+rm -rf ~/.config/ml4w
+ln -s $hyprconfig/ml4w ~/.config/ml4w
+rm -rf ~/.config/ml4w-hyprland-settings
+ln -s $hyprconfig/ml4w-hyprland-settings ~/.config/ml4w-hyprland-settings
+rm -rf ~/.config/nwg-dock-hyprland
+ln -s $hyprconfig/nwg-dock-hyprland ~/.config/nwg-dock-hyprland
+rm -rf ~/.config/ohmyposh
+ln -s $hyprconfig/ohmyposh ~/.config/ohmyposh
+rm -rf ~/.config/qt6ct
+ln -s $hyprconfig/qt6ct ~/.config/qt6ct
+rm -rf ~/.config/rofi
+ln -s $hyprconfig/rofi ~/.config/rofi
+rm -rf ~/.config/wal
+ln -s $hyprconfig/wal ~/.config/wal
+rm -rf ~/.config/waybar
+ln -s $hyprconfig/waybar ~/.config/waybar
+rm -rf ~/.config/waypaper
+ln -s $hyprconfig/waypaper ~/.config/waypaper
+rm -rf ~/.config/wlogout
+ln -s $hyprconfig/wlogout ~/.config/wlogout
+rm -rf ~/.config/xsettingsd
+ln -s $hyprconfig/xsettingsd ~/.config/xsettingsd
+chmod -R +x $hyprconfig
+chown -R gib $hyprconfig
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-hyprland.conf b/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-hyprland.conf
new file mode 100644
index 0000000..84e2394
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-hyprland.conf
@@ -0,0 +1,18 @@
+$background = rgb({background.strip})
+$foreground = rgb({foreground.strip})
+$color0 = rgb({color0.strip})
+$color1 = rgb({color1.strip})
+$color2 = rgb({color2.strip})
+$color3 = rgb({color3.strip})
+$color4 = rgb({color4.strip})
+$color5 = rgb({color5.strip})
+$color6 = rgb({color6.strip})
+$color7 = rgb({color7.strip})
+$color8 = rgb({color8.strip})
+$color9 = rgb({color9.strip})
+$color10 = rgb({color10.strip})
+$color11 = rgb({color11.strip})
+$color12 = rgb({color12.strip})
+$color13 = rgb({color13.strip})
+$color14 = rgb({color14.strip})
+$color15 = rgb({color15.strip})
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-rofi-pywal.rasi b/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-rofi-pywal.rasi
new file mode 100644
index 0000000..f0b1665
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-rofi-pywal.rasi
@@ -0,0 +1,20 @@
+* {{
+ background: rgba(0,0,1,0.5);
+ foreground: #FFFFFF;
+ color0: {color0};
+ color1: {color1};
+ color2: {color2};
+ color3: {color3};
+ color4: {color4};
+ color5: {color5};
+ color6: {color6};
+ color7: {color7};
+ color8: {color8};
+ color9: {color9};
+ color10: {color10};
+ color11: {color11};
+ color12: {color12};
+ color13: {color13};
+ color14: {color14};
+ color15: {color15};
+}}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-waybar.css b/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-waybar.css
new file mode 100644
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-waybar.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-wlogout.css b/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-wlogout.css
new file mode 100644
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/wal/templates/colors-wlogout.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/launch.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/launch.sh
new file mode 100644
index 0000000..8ae9e4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/launch.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# ____ _ _ __ __ _
+# / ___|| |_ __ _ _ __| |_ \ \ / /_ _ _ _| |__ __ _ _ __
+# \___ \| __/ _` | '__| __| \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# ___) | || (_| | | | |_ \ V V / (_| | |_| | |_) | (_| | |
+# |____/ \__\__,_|_| \__| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Quit all running waybar instances
+# -----------------------------------------------------
+killall waybar
+pkill waybar
+sleep 0.5
+
+# -----------------------------------------------------
+# Default theme: /THEMEFOLDER;/VARIATION
+# -----------------------------------------------------
+themestyle="/ml4w;/ml4w/light"
+
+# -----------------------------------------------------
+# Get current theme information from ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ -f ~/.config/ml4w/settings/waybar-theme.sh ]; then
+ themestyle=$(cat ~/.config/ml4w/settings/waybar-theme.sh)
+else
+ touch ~/.config/ml4w/settings/waybar-theme.sh
+ echo "$themestyle" > ~/.config/ml4w/settings/waybar-theme.sh
+fi
+
+IFS=';' read -ra arrThemes <<< "$themestyle"
+echo ":: Theme: ${arrThemes[0]}"
+
+if [ ! -f ~/.config/waybar/themes${arrThemes[1]}/style.css ]; then
+ themestyle="/ml4w;/ml4w/light"
+fi
+
+# -----------------------------------------------------
+# Loading the configuration
+# -----------------------------------------------------
+config_file="config"
+style_file="style.css"
+
+# Standard files can be overwritten with an existing config-custom or style-custom.css
+if [ -f ~/.config/waybar/themes${arrThemes[0]}/config-custom ] ;then
+ config_file="config-custom"
+fi
+if [ -f ~/.config/waybar/themes${arrThemes[1]}/style-custom.css ] ;then
+ style_file="style-custom.css"
+fi
+
+# Check if waybar-disabled file exists
+if [ ! -f $HOME/.cache/waybar-disabled ] ;then
+ waybar -c ~/.config/waybar/themes${arrThemes[0]}/$config_file -s ~/.config/waybar/themes${arrThemes[1]}/$style_file &
+fi
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/modules.json b/configs/dotfiles/hyprland/gulfport/.config/waybar/modules.json
new file mode 100644
index 0000000..89ca46d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/modules.json
@@ -0,0 +1,379 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+{
+ // Workspaces
+ "hyprland/workspaces": {
+ "on-scroll-up": "hyprctl dispatch workspace r-1",
+ "on-scroll-down": "hyprctl dispatch workspace r+1",
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": ["Alacritty", "kitty"],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // Empty
+ "custom/empty": {
+ "format": ""
+ },
+
+ // Tools
+ "custom/tools": {
+ "format": "",
+ "tooltip-format": "Tools"
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip-format": "Left: Open clipboard Manager\nRight: Delete an entry\nMiddle: Clear list"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "interval": 1800,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "bash -c waypaper &",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip-format": "Left: Select a wallpaper\nRight: Select wallpaper effect"
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip-format": "Select a waybar theme"
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "sleep 0.1 && com.ml4w.dotfilessettings",
+ "tooltip-format": "ML4W Dotfiles Settings"
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": " ",
+ "on-click": "~/.config/ml4w/settings/ai.sh",
+ "tooltip-format": "AI Support"
+ },
+
+ // Calculator
+ "custom/calculator": {
+ "format": "",
+ "on-click": "qalculate-gtk",
+ "tooltip-format": "Open calculator"
+ },
+
+ // Windows VM
+ "custom/windowsvm": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/launchvm.sh",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ // START APPS LABEL
+ "format": "Apps",
+ // END APPS LABEL
+ "on-click": "sleep 0.2;pkill rofi || rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenuicon": {
+ "format": "",
+ "on-click": "sleep 0.2;rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/wlogout.sh",
+ "on-click-right": "hyprlock",
+ "tooltip-format": "Left: Power menu\nRight: Lock screen"
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "tooltip-format": "Toggle Screen Shader",
+ "on-click": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh rofi"
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle"
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "gnome-calendar",
+ "timezone": "",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": ["custom/system", "disk", "cpu", "memory", "hyprland/language"]
+ },
+
+ // Group Tools
+ "group/tools": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/tools",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade"
+ ]
+ },
+
+ // Group Links
+ "group/links": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/chatgpt",
+ "custom/empty"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": true
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {essid} ({signalStrength}%)",
+ "format-ethernet": " {ifname}",
+ "format-disconnected": "Disconnected ⚠",
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}",
+ "tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "~/.config/ml4w/settings/networkmanager.sh",
+ "on-click-right": "~/.config/ml4w/scripts/nm-applet.sh toggle",
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format": " {status}",
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false
+ },
+
+ // backlight:
+ "backlight": {
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "scroll-step": 1
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ai-icon-20.png b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ai-icon-20.png
new file mode 100644
index 0000000..a070dd4
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ai-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ai-icon.png b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ai-icon.png
new file mode 100644
index 0000000..398379b
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ai-icon.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/hyprland-icon-20.png b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/hyprland-icon-20.png
new file mode 100644
index 0000000..0d36ec2
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/hyprland-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/hyprland-icon.png b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/hyprland-icon.png
new file mode 100644
index 0000000..c87b767
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/hyprland-icon.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-20.png b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-20.png
new file mode 100644
index 0000000..df25ccb
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-black.svg b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-black.svg
new file mode 100644
index 0000000..011b817
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-black.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-dark.png b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-dark.png
new file mode 100644
index 0000000..73ec085
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-dark.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-white.svg b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-white.svg
new file mode 100644
index 0000000..c19407d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon-white.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon.png b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon.png
new file mode 100644
index 0000000..92a54e0
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon.svg b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon.svg
new file mode 100644
index 0000000..fa8e063
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/ml4w-icon.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai-black.svg b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai-black.svg
new file mode 100644
index 0000000..3b4eff9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai-black.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai-white.svg b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai-white.svg
new file mode 100644
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai-white.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai.svg b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai.svg
new file mode 100644
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/assets/openai.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/config b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/config
new file mode 100644
index 0000000..b02f10e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/config
@@ -0,0 +1,161 @@
+{
+ // "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["hyprland/workspaces","custom/waybarthemes"],
+ "modules-center": ["hyprland/window"],
+ "modules-right": ["custom/ml4w-welcome","mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "sway/language", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip": false
+ },
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "Themes",
+ "on-click": "~/.config/ml4w/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ "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": "{}% "
+ },
+ "temperature": {
+ "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": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, 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"
+ },
+ "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/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/config.sh
new file mode 100644
index 0000000..71a3429
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Default Theme"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/style.css
new file mode 100644
index 0000000..cafc802
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/default/style.css
@@ -0,0 +1,289 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+}
+
+window#waybar {
+ background-color: rgba(43, 48, 59, 0.5);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+window#waybar.termite {
+ background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+ background-color: #000000;
+ border: none;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 15px;
+ background-image: url("../assets/ml4w-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 20px;
+ margin-right: 0px;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background-color: transparent;
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button.urgent {
+ background-color: #eb4d4b;
+}
+
+#mode {
+ background-color: #64727D;
+ border-bottom: 3px solid #ffffff;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#mpd {
+ padding: 0 10px;
+ color: #ffffff;
+}
+
+#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 {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+#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 {
+ 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 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#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/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/black/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
new file mode 100644
index 0000000..cea609a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/black/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/black/style.css
new file mode 100644
index 0000000..129c909
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/black/style.css
@@ -0,0 +1,29 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
new file mode 100644
index 0000000..7f55337
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/colored/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
new file mode 100644
index 0000000..de0b369
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/config b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/config
new file mode 100644
index 0000000..ea2b0cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
new file mode 100644
index 0000000..df6f8c2
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/dark/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
new file mode 100644
index 0000000..54e8317
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/light/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
new file mode 100644
index 0000000..da067d2
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Light"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/light/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/light/style.css
new file mode 100644
index 0000000..5caa16a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
new file mode 100644
index 0000000..dea299a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
new file mode 100644
index 0000000..fe8dbb3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/white/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
new file mode 100644
index 0000000..1592654
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/white/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/white/style.css
new file mode 100644
index 0000000..a0ba4a7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur-bottom/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/black/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/black/config.sh
new file mode 100644
index 0000000..5c6fb05
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/black/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/black/style.css
new file mode 100644
index 0000000..b8a549a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/black/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/colored/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/colored/config.sh
new file mode 100644
index 0000000..7338fef
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/colored/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/config b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/config
new file mode 100644
index 0000000..fcd29ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/dark/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/dark/config.sh
new file mode 100644
index 0000000..a3b9e88
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/dark/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/dark/style.css
new file mode 100644
index 0000000..8470788
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/light/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/light/config.sh
new file mode 100644
index 0000000..ca5fe11
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Light"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/light/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/mixed/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/mixed/config.sh
new file mode 100644
index 0000000..eb698ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/mixed/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/style.css
new file mode 100644
index 0000000..12734d3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/style.css
@@ -0,0 +1,478 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left:14px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 8px 15px 8px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 14px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 20px;
+}
+
+#custom-settings {
+ margin-right:12px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+ opacity: 0.8;
+}
+
+#custom-chatgpt {
+ margin-right: 12px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 16px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 17px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 8px 16px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+ color: @textcolor3;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/white/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/white/config.sh
new file mode 100644
index 0000000..e458b19
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/white/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/white/style.css
new file mode 100644
index 0000000..f50cb7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-blur/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/black/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/black/config.sh
new file mode 100644
index 0000000..5837eb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/black/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/black/style.css
new file mode 100644
index 0000000..6bae0cd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/colored/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/colored/config.sh
new file mode 100644
index 0000000..0a31bac
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/colored/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/colored/style.css
new file mode 100644
index 0000000..53bf65c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/config b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/config
new file mode 100644
index 0000000..8e55c1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 14,
+ "layer": "top",
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/dark/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/dark/config.sh
new file mode 100644
index 0000000..a6fe8ff
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/dark/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/dark/style.css
new file mode 100644
index 0000000..2179f76
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/light/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/light/config.sh
new file mode 100644
index 0000000..e016502
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/light/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/light/style.css
new file mode 100644
index 0000000..833b8c4
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/mixed/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/mixed/config.sh
new file mode 100644
index 0000000..e5bc67e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/mixed/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/mixed/style.css
new file mode 100644
index 0000000..f3ee832
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/white/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/white/config.sh
new file mode 100644
index 0000000..71dd9f5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/white/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/white/style.css
new file mode 100644
index 0000000..704bfbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-bottom/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/config b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/config
new file mode 100644
index 0000000..4614d63
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/config
@@ -0,0 +1,88 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenuicon",
+ "hyprland/workspaces",
+ "group/links",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+ "custom/exit",
+ "clock",
+"tray",
+ "custom/ml4w-welcome"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/config.sh
new file mode 100644
index 0000000..eac2047
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Minimal"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/style.css
new file mode 100644
index 0000000..be884b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-minimal/style.css
@@ -0,0 +1,431 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.4);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left: 10px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+ #workspaces {
+ margin: 3px 7px 3px 3px;
+ border: 0px;
+ font-size: 14px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ border: 0px;
+ margin:4px 5px 4px 0px;
+ padding:0px 4px 0px 4px;
+ color: @textcolor3;
+ transition: all 0.5s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 0px 15px 0px 0px;
+ border-radius: 12px;
+ color:@textcolor;
+ font-size:14px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 14px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-settings {
+ margin-right: 15px;
+}
+
+#custom-browser {
+ margin-right: 12px;
+}
+
+#custom-wallpaper {
+ margin-right: 14px;
+}
+
+#custom-chatgpt {
+ margin-right: 10px;
+ background-image: url("../assets/ai-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 23px;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-ml4w-hyprland-settings {
+ margin-right: 12px;
+ background-image: url("../assets/hyprland-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 16px;
+}
+
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 16px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 14px;
+ font-weight: bold;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenuicon {
+ font-size: 20px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:16px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#custom-updates.green {
+}
+
+#custom-updates.yellow {
+ color: #ff9a3c;
+}
+
+#custom-updates.red {
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Youtube
+ * ----------------------------------------------------- */
+
+#custom-youtube {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:14px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ font-size: 15px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+ background-color: transparent;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+ #pulseaudio {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#pulseaudio.muted {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#network.ethernet {
+ color: @textcolor;
+}
+
+#network.wifi {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/black/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/black/config.sh
new file mode 100644
index 0000000..63c42a1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/black/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/black/style.css
new file mode 100644
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/colored/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/colored/config.sh
new file mode 100644
index 0000000..61e80a5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/colored/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/config b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/config
new file mode 100644
index 0000000..f570e02
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 14,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "hyprland/workspaces",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/dark/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/dark/config.sh
new file mode 100644
index 0000000..e6f8d5b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/dark/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/dark/style.css
new file mode 100644
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/light/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/light/config.sh
new file mode 100644
index 0000000..0c6cdb1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Light"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/light/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/mixed/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/mixed/config.sh
new file mode 100644
index 0000000..46f3eb5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/mixed/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/style.css
new file mode 100644
index 0000000..12943e1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/style.css
@@ -0,0 +1,470 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+ * {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 18px 3px 1px;
+ padding: 0px 2px;
+ border-radius: 5px 5px 5px 5px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 6px;
+ margin: 3px 2px;
+ border-radius: 3px 3px 3px 3px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.1s linear;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 3px 3px 3px 3px;
+ min-width: 30px;
+ transition: all 0.1s linear;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 5px 5px 5px 5px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 3px 15px 3px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 5px 5px 5px 5px;
+ color:white;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 5px 5px 5px 5px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 10px 0px 10px;
+ margin: 2px 17px 2px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 3px 5px 3px 5px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 15px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/white/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/white/config.sh
new file mode 100644
index 0000000..efe0528
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/white/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/white/style.css
new file mode 100644
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w-modern/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/black/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/black/config.sh
new file mode 100644
index 0000000..39e19cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/black/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/black/style.css
new file mode 100644
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/colored/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/colored/config.sh
new file mode 100644
index 0000000..25dbee7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/colored/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/config b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/config
new file mode 100644
index 0000000..ae1c2b8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/config
@@ -0,0 +1,55 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 4,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+ "hyprland/workspaces",
+ //"custom/appmenu",
+ //"group/links",
+ //"wlr/taskbar",
+ //"group/quicklinks",
+ "hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "clock"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+ //"backlight",
+ "bluetooth",
+ "battery",
+ "network",
+ "group/hardware",
+ "group/tools",
+ "tray",
+ "custom/exit",
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/dark/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/dark/config.sh
new file mode 100644
index 0000000..6c2cf9f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/dark/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/dark/style.css
new file mode 100644
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/light/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/light/config.sh
new file mode 100644
index 0000000..55e4ffd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/light/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/mixed/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/mixed/config.sh
new file mode 100644
index 0000000..c00e231
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/mixed/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/style.css
new file mode 100644
index 0000000..68a179c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/style.css
@@ -0,0 +1,471 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 1px 3px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 5px 15px 5px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 3px 17px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/white/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/white/config.sh
new file mode 100644
index 0000000..685088f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/white/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/white/style.css
new file mode 100644
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/ml4w/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/config b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/config
new file mode 100644
index 0000000..6084f60
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/config
@@ -0,0 +1,66 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+
+ // Position TOP
+ "layer": "top",
+ "margin-bottom": 0,
+
+ // Position BOTTOM
+ // "position": "bottom",
+ // "margin-top": 0,
+ // "margin-bottom": 14,
+
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/themes/starter/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "custom/settings",
+ //"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/starter"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/config.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/config.sh
new file mode 100644
index 0000000..a9399f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Starter"
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/modules.json b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/modules.json
new file mode 100644
index 0000000..51e0add
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/modules.json
@@ -0,0 +1,351 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // Workspaces
+ "hyprland/workspaces" : {
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": [
+ "Alacritty"
+ ],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip": false
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "on-click": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh rofi",
+ "tooltip": false
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle",
+ "on-click-right": "hyprlock"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "tooltip-format": "{}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "alacritty -e ~/.config/ml4w/scripts/installupdates.sh",
+ "tooltip": false
+ },
+
+ // Theme Starter Label
+ "custom/starter": {
+ "format": "THEME STARTER",
+ "tooltip": false
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "waypaper",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip": false
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage",
+ "tooltip": false
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Filemanager Launcher
+ "custom/filemanager": {
+ "format": "",
+ "on-click": "nautilus",
+ "tooltip": false
+ },
+
+ // Browser Launcher
+ "custom/browser": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip": false
+ },
+
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip-format": "Open Sidebar"
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": "",
+ "on-click": "chromium --app=https://chat.openai.com",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ "format": "Apps",
+ "on-click": "rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "wlogout",
+ "tooltip": false
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "ags -t calendar",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "alacritty -e htop"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/system",
+ "disk",
+ "cpu",
+ "memory",
+ "hyprland/language"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Group Quicklinks
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/filemanager",
+ "custom/browser"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {signalStrength}%",
+ "format-ethernet": " {ipaddr}",
+ "format-disconnected": "Not connected", //An empty format will hide the module.
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {essid} ({signalStrength}%)",
+ "tooltip-format-ethernet": " {ifname} ({ipaddr}/{cidr})",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "alacritty -e nmtui"
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false,
+ },
+
+ // Idle Inhibator
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "tooltip": true,
+ "format-icons":{
+ "activated": "",
+ "deactivated": ""
+ },
+ "on-click-right": "hyprlock"
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/style.css b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/style.css
new file mode 100644
index 0000000..21fdcfa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themes/starter/style.css
@@ -0,0 +1,457 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor3;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 10px 15px 10px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 23px;
+ font-size: 20px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 24px;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 10px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+/* -----------------------------------------------------
+ * Other
+ * ----------------------------------------------------- */
+
+label:focus {
+ background-color: #000000;
+}
+
+#backlight {
+ background-color: #90b1b1;
+}
+
+#network {
+ background-color: #2980b9;
+}
+
+#network.disconnected {
+ background-color: #f53c3c;
+}
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/themeswitcher.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/themeswitcher.sh
new file mode 100644
index 0000000..f3e4734
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/themeswitcher.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _ _
+# |_ _| |__ ___ _ __ ___ ___ _____ _(_) |_ ___| |__ ___ _ __
+# | | | '_ \ / _ \ '_ ` _ \ / _ \/ __\ \ /\ / / | __/ __| '_ \ / _ \ '__|
+# | | | | | | __/ | | | | | __/\__ \\ V V /| | || (__| | | | __/ |
+# |_| |_| |_|\___|_| |_| |_|\___||___/ \_/\_/ |_|\__\___|_| |_|\___|_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Default theme folder
+# -----------------------------------------------------
+themes_path="$HOME/.config/waybar/themes"
+
+# -----------------------------------------------------
+# Initialize arrays
+# -----------------------------------------------------
+listThemes=""
+listNames=""
+listNames2=""
+
+# -----------------------------------------------------
+# Read theme folder
+# -----------------------------------------------------
+sleep 0.2
+options=$(find $themes_path -maxdepth 2 -type d)
+for value in $options
+do
+ if [ ! $value == "$HOME/.config/waybar/themes/assets" ]; then
+ if [ ! $value == "$themes_path" ]; then
+ if [ $(find $value -maxdepth 1 -type d | wc -l) = 1 ]; then
+ result=$(echo $value | sed "s#$HOME/.config/waybar/themes/#/#g")
+ IFS='/' read -ra arrThemes <<< "$result"
+ listThemes[${#listThemes[@]}]="/${arrThemes[1]};$result"
+ if [ -f $themes_path$result/config.sh ]; then
+ source $themes_path$result/config.sh
+ listNames+="$theme_name\n"
+ listNames2+="$theme_name~"
+ else
+ listNames+="/${arrThemes[1]};$result\n"
+ listNames2+="/${arrThemes[1]};$result~"
+ fi
+ fi
+ fi
+ fi
+done
+
+# -----------------------------------------------------
+# Show rofi dialog
+# -----------------------------------------------------
+listNames=${listNames::-2}
+choice=$(echo -e "$listNames" | rofi -dmenu -replace -i -config ~/.config/rofi/config-themes.rasi -no-show-icons -width 30 -p "Themes" -format i)
+IFS="~"
+input=$listNames2
+read -ra array <<< "$input"
+
+# -----------------------------------------------------
+# Set new theme by writing the theme information to ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ "$choice" ]; then
+ echo "Loading waybar theme..."
+ echo "${listThemes[$choice+1]}" > ~/.config/ml4w/settings/waybar-theme.sh
+ ~/.config/waybar/launch.sh
+ notify-send "Waybar Theme changed" "to ${array[$choice]}"
+fi
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waybar/toggle.sh b/configs/dotfiles/hyprland/gulfport/.config/waybar/toggle.sh
new file mode 100644
index 0000000..0d49a4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waybar/toggle.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# _____ _ __ __ _
+# |_ _|__ __ _ __ _| | ___ \ \ / /_ _ _ _| |__ __ _ _ __
+# | |/ _ \ / _` |/ _` | |/ _ \ \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# | | (_) | (_| | (_| | | __/ \ V V / (_| | |_| | |_) | (_| | |
+# |_|\___/ \__, |\__, |_|\___| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/ |___/ |___/
+#
+
+if [ -f ~/.cache/waybar-disabled ] ;then
+ rm ~/.cache/waybar-disabled
+else
+ touch ~/.cache/waybar-disabled
+fi
+~/.config/waybar/launch.sh &
diff --git a/configs/dotfiles/hyprland/gulfport/.config/waypaper/config.ini b/configs/dotfiles/hyprland/gulfport/.config/waypaper/config.ini
new file mode 100644
index 0000000..dad64fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/waypaper/config.ini
@@ -0,0 +1,22 @@
+[Settings]
+language = en
+folder = ~/Pictures/Wallpapers
+wallpaper = ~/Pictures/Wallpapers/ogbackground.png
+backend = hyprpaper
+monitors = All
+fill = fill
+sort = name
+color = #ffffff
+subfolders = False
+show_hidden = False
+show_gifs_only = False
+post_command = ~/.config/hypr/scripts/wallpaper.sh "$wallpaper"
+number_of_columns = 3
+swww_transition_type = any
+swww_transition_step = 90
+swww_transition_angle = 0
+swww_transition_duration = 2
+swww_transition_fps = 60
+use_xdg_state = False
+show_transition_options = True
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/README.txt b/configs/dotfiles/hyprland/gulfport/.config/wlogout/README.txt
new file mode 100644
index 0000000..4ceecd7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/wlogout/README.txt
@@ -0,0 +1,8 @@
+Select Logout Command depending on your setup:
+
+Use for Display Manager e.g., sddm (DEFAULT)
+sleep 1; hyprctl dispatch exit
+
+Use for Arch Linux text based login
+sleep 1; loginctl terminate-user $USER
+
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/hibernate.png b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/hibernate.png
new file mode 100644
index 0000000..bf2b001
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/hibernate.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/lock.png b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/lock.png
new file mode 100644
index 0000000..da59b10
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/lock.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/logout.png b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/logout.png
new file mode 100644
index 0000000..8a25922
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/logout.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/reboot.png b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/reboot.png
new file mode 100644
index 0000000..e5fd221
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/reboot.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/shutdown.png b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/shutdown.png
new file mode 100644
index 0000000..663ca03
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/shutdown.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/suspend.png b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/suspend.png
new file mode 100644
index 0000000..af099b9
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/wlogout/icons/suspend.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/layout b/configs/dotfiles/hyprland/gulfport/.config/wlogout/layout
new file mode 100644
index 0000000..0dfb38a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/wlogout/layout
@@ -0,0 +1,30 @@
+{
+ "label" : "lock",
+ "action" : "~/.config/hypr/scripts/power.sh lock",
+ "text" : "Lock",
+ "keybind" : "l"
+}
+{
+ "label" : "logout",
+ "action" : "~/.config/hypr/scripts/power.sh exit",
+ "text" : "Log Out",
+ "keybind" : "e"
+}
+{
+ "label" : "suspend",
+ "action" : "~/.config/hypr/scripts/power.sh suspend",
+ "text" : "Suspend",
+ "keybind" : "u"
+}
+{
+ "label" : "reboot",
+ "action" : "~/.config/hypr/scripts/power.sh reboot",
+ "text" : "Restart",
+ "keybind" : "r"
+}
+{
+ "label" : "shutdown",
+ "action" : "~/.config/hypr/scripts/power.sh shutdown",
+ "text" : "Power Off",
+ "keybind" : "s"
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/noise.png b/configs/dotfiles/hyprland/gulfport/.config/wlogout/noise.png
new file mode 100644
index 0000000..028b188
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport/.config/wlogout/noise.png differ
diff --git a/configs/dotfiles/hyprland/gulfport/.config/wlogout/style.css b/configs/dotfiles/hyprland/gulfport/.config/wlogout/style.css
new file mode 100644
index 0000000..f533d11
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/wlogout/style.css
@@ -0,0 +1,107 @@
+/*
+ _ _
+__ _| | ___ __ _ ___ _ _| |_
+\ \ /\ / / |/ _ \ / _` |/ _ \| | | | __|
+ \ V V /| | (_) | (_| | (_) | |_| | |_
+ \_/\_/ |_|\___/ \__, |\___/ \__,_|\__|
+ |___/
+
+by Stephan Raabe (2023)
+-----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../.cache/wal/colors-wlogout.css';
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ background-image: none;
+ transition: 20ms;
+ box-shadow: none;
+}
+
+window {
+ background: url("../ml4w/cache/blurred_wallpaper.png");
+ background-size: cover;
+ font-size: 16pt;
+ color: #cdd6f4;
+}
+
+button {
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 20%;
+ background-color: rgba(200, 220, 255, 0);
+ animation: gradient_f 20s ease-in infinite;
+ border-radius: 80px; /* Increased border radius for a more rounded look */
+ border:0px;
+ transition: all 0.3s cubic-bezier(.55, 0.0, .28, 1.682), box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
+}
+
+button:focus {
+ background-size: 22%;
+ border: 0px;
+}
+
+button:hover {
+ background-color: @color11;
+ opacity: 0.8;
+ color: #cdd6f4;
+ background-size: 30%;
+ margin: 30px;
+ border-radius: 80px;
+ box-shadow: 0 0 50px @color7;
+}
+
+/* Adjust the size of the icon or content inside the button */
+button span {
+ font-size: 1.2em; /* Increase the font size */
+}
+
+/*
+-----------------------------------------------------
+Buttons
+-----------------------------------------------------
+*/
+
+#lock {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/lock.png"));
+}
+
+#logout {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/logout.png"));
+}
+
+#suspend {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/suspend.png"));
+}
+
+#hibernate {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/hibernate.png"));
+}
+
+#shutdown {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/shutdown.png"));
+}
+
+#reboot {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/reboot.png"));
+}
diff --git a/configs/dotfiles/hyprland/gulfport/.config/xsettingsd/xsettingsd.conf b/configs/dotfiles/hyprland/gulfport/.config/xsettingsd/xsettingsd.conf
new file mode 100644
index 0000000..7999a54
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport/.config/xsettingsd/xsettingsd.conf
@@ -0,0 +1,9 @@
+Net/ThemeName "adw-gtk3-dark"
+Net/IconThemeName "Adwaita"
+Gtk/CursorThemeName "Bibata-Modern-Ice"
+Net/EnableEventSounds 1
+EnableInputFeedbackSounds 0
+Xft/Antialias 1
+Xft/Hinting 1
+Xft/HintStyle "hintslight"
+Xft/RGBA "rgb"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.Xresources b/configs/dotfiles/hyprland/gulfport_default/.Xresources
new file mode 100644
index 0000000..6a1c856
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.Xresources
@@ -0,0 +1 @@
+Xcursor.theme: Bibata-Modern-Ice
diff --git a/configs/dotfiles/hyprland/gulfport_default/.bashrc b/configs/dotfiles/hyprland/gulfport_default/.bashrc
new file mode 100644
index 0000000..15d3060
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.bashrc
@@ -0,0 +1,37 @@
+# _ _
+# | |__ __ _ ___| |__ _ __ ___
+# | '_ \ / _` / __| '_ \| '__/ __|
+# _| |_) | (_| \__ \ | | | | | (__
+# (_)_.__/ \__,_|___/_| |_|_| \___|
+#
+# -----------------------------------------------------
+# ML4W bashrc loader
+# -----------------------------------------------------
+
+# DON'T CHANGE THIS FILE
+
+# You can define your custom configuration by adding
+# files in ~/.config/bashrc
+# or by creating a folder ~/.config/bashrc/custom
+# with copies of files from ~/.config/bashrc
+# You can also create a .bashrc_custom file in your home directory
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Load modular configarion
+# -----------------------------------------------------
+
+for f in ~/.config/bashrc/*; do
+ if [ ! -d $f ] ;then
+ c=`echo $f | sed -e "s=.config/bashrc=.config/bashrc/custom="`
+ [[ -f $c ]] && source $c || source $f
+ fi
+done
+
+# -----------------------------------------------------
+# Load single customization file (if exists)
+# -----------------------------------------------------
+
+if [ -f ~/.bashrc_custom ] ;then
+ source ~/.bashrc_custom
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/app.ts b/configs/dotfiles/hyprland/gulfport_default/.config/ags/app.ts
new file mode 100644
index 0000000..26c6a1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/app.ts
@@ -0,0 +1,11 @@
+import { App, Widget } from "astal/gtk3"
+import Calendar from "./widget/Calendar"
+import Sidebar from "./widget/Sidebar"
+
+App.start({
+ css: "./style.css",
+ main() {
+ Sidebar();
+ Calendar();
+ }
+})
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/application-exit-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/application-exit-symbolic.svg
new file mode 100644
index 0000000..66e44f1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/application-exit-symbolic.svg
@@ -0,0 +1,4 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg
new file mode 100644
index 0000000..b1ce05f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/fileview-preview-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/fileview-preview-symbolic.svg
new file mode 100644
index 0000000..167090d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/fileview-preview-symbolic.svg
@@ -0,0 +1,13 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/image-loading-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/image-loading-symbolic.svg
new file mode 100644
index 0000000..b445ad1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/image-loading-symbolic.svg
@@ -0,0 +1,6 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/media-playback-paused-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/media-playback-paused-symbolic.svg
new file mode 100644
index 0000000..16d5de7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/media-playback-paused-symbolic.svg
@@ -0,0 +1,13 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/padlock2-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/padlock2-symbolic.svg
new file mode 100644
index 0000000..0d51118
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/padlock2-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg
new file mode 100644
index 0000000..541721c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg
@@ -0,0 +1,5 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/turn-off-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/turn-off-symbolic.svg
new file mode 100644
index 0000000..db109c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/turn-off-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg
new file mode 100644
index 0000000..4536935
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg
@@ -0,0 +1,3 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-dotfiles-settings.png b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-dotfiles-settings.png
new file mode 100644
index 0000000..938b6f7
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-dotfiles-settings.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-hyprland-settings.png b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-hyprland-settings.png
new file mode 100644
index 0000000..c7e8e29
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-hyprland-settings.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-welcome.png b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-welcome.png
new file mode 100644
index 0000000..7d4efe7
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/ags/assets/ml4w-welcome.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/env.d.ts b/configs/dotfiles/hyprland/gulfport_default/.config/ags/env.d.ts
new file mode 100644
index 0000000..4e7e508
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/env.d.ts
@@ -0,0 +1,21 @@
+const SRC: string
+
+declare module "inline:*" {
+ const content: string
+ export default content
+}
+
+declare module "*.scss" {
+ const content: string
+ export default content
+}
+
+declare module "*.blp" {
+ const content: string
+ export default content
+}
+
+declare module "*.css" {
+ const content: string
+ export default content
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/scripts/run_themeswitcher.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ags/scripts/run_themeswitcher.sh
new file mode 100644
index 0000000..7c20589
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/scripts/run_themeswitcher.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/waybar/themeswitcher.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/scripts/run_wallpapereffects.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ags/scripts/run_wallpapereffects.sh
new file mode 100644
index 0000000..78dcaaf
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/scripts/run_wallpapereffects.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/hypr/scripts/wallpaper-effects.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/ags/style.css
new file mode 100644
index 0000000..6cf06e8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/style.css
@@ -0,0 +1,211 @@
+@import url('../../.cache/wal/colors-waybar.css');
+
+* {
+ all:unset;
+ font-size: 14px;
+ font-family: "Fira Sans", sans-serif;
+ font-weight: normal;
+}
+
+.calendar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+ min-width:320px;
+}
+
+calendar:selected {
+ background-color:@color11;
+ padding:0px;
+}
+
+.sidebar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+}
+
+.group {
+ padding:16px;
+ background-color: rgba(116, 116, 116, 0.1);
+ border-radius: 20px;
+}
+
+.ml4wwelcomeicon {
+ background:url("assets/ml4w-welcome.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4wsettingsicon {
+ background:url("assets/ml4w-dotfiles-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4whyprlandicon {
+ background:url("assets/ml4w-hyprland-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.btnbar {
+ border: 1px solid #222222;
+ padding:5px;
+ min-height:24px;
+ border-radius: 24px;
+ min-width: 24px;
+ margin:0px 2px 0px 2px;
+}
+
+.btnbar.statusbar {
+ background:url("assets/icons/image-loading-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+ background-size:20px;
+}
+
+.btnbar.wallpaper {
+ background:url("assets/icons/fileview-preview-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+ background-size:20px;
+}
+
+.btnbar.wallpapereffects {
+ background:url("assets/icons/xapp-prefs-preview-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.lock {
+ background:url("assets/icons/padlock2-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.logout {
+ background:url("assets/icons/application-exit-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.restart {
+ background:url("assets/icons/arrow-circular-top-right-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.suspend {
+ background:url("assets/icons/media-playback-paused-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.exit {
+ background:url("assets/icons/turn-off-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.midbtn {
+ background-color: @color11;
+ font-size: 12px;
+ padding:10px;
+ border-radius: 20px;
+}
+
+.AudioSlider {
+ background-color:@color11;
+ border-radius:12px;
+ margin-bottom:10px;
+}
+
+.AudioSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.AudioSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.AudioSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider {
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.MicrophoneSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.MicrophoneSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/tsconfig.json b/configs/dotfiles/hyprland/gulfport_default/.config/ags/tsconfig.json
new file mode 100644
index 0000000..b239e15
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "compilerOptions": {
+ "experimentalDecorators": true,
+ "strict": true,
+ "target": "ES2022",
+ "module": "ES2022",
+ "moduleResolution": "Bundler",
+ // "checkJs": true,
+ // "allowJs": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "/usr/share/astal/gjs/gtk3",
+ "paths": {
+ "astal": [
+ "/usr/share/astal/gjs"
+ ],
+ "astal/*": [
+ "/usr/share/astal/gjs/*"
+ ]
+ },
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Bar.tsx b/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Bar.tsx
new file mode 100644
index 0000000..ed1d845
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Bar.tsx
@@ -0,0 +1,29 @@
+import { App, Astal, Gtk, Gdk } from "astal/gtk3"
+import { Variable } from "astal"
+
+const time = Variable("").poll(1000, "date")
+
+export default function Bar(gdkmonitor: Gdk.Monitor) {
+ return
+
+
+
+
+
+
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Brightness.tsx b/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Brightness.tsx
new file mode 100644
index 0000000..86214f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Brightness.tsx
@@ -0,0 +1,72 @@
+// Thanks to https://gitlab.com/filippoaceto/
+import GObject, { register, property } from "astal/gobject"
+import { monitorFile, readFileAsync } from "astal/file"
+import { exec, execAsync } from "astal/process"
+
+const get = (args: string) => Number(exec(`brightnessctl ${args}`))
+const screen = exec(`bash -c "ls -w1 /sys/class/backlight | head -1"`)
+const kbd = exec(`bash -c "ls -w1 /sys/class/leds | head -1"`)
+
+@register({ GTypeName: "Brightness" })
+export default class Brightness extends GObject.Object {
+ static instance: Brightness
+ static get_default() {
+ if (!this.instance)
+ this.instance = new Brightness()
+
+ return this.instance
+ }
+
+ #kbdMax = get(`--device ${kbd} max`)
+ #kbd = get(`--device ${kbd} get`)
+ #screenMax = get("max")
+ #screen = get("get") / (get("max") || 1)
+
+ @property(Number)
+ get kbd() { return this.#kbd }
+
+ set kbd(value) {
+ if (value < 0 || value > this.#kbdMax)
+ return
+ execAsync(`brightnessctl -d ${kbd} s ${value} -q`).then(() => {
+ this.#kbd = value
+ this.notify("kbd")
+ })
+ }
+
+ @property(Number)
+ get screen() { return this.#screen }
+
+ set screen(percent) {
+ if (percent < 0)
+ percent = 0
+
+ if (percent > 1)
+ percent = 1
+
+ if (Math.floor(percent * 100) > 1)
+ execAsync(`brightnessctl set ${Math.floor(percent * 100)}% -q`).then(() => {
+ this.#screen = percent
+ this.notify("screen")
+ })
+ }
+
+ constructor() {
+ super()
+
+ const screenPath = `/sys/class/backlight/${screen}/brightness`
+ const kbdPath = `/sys/class/leds/${kbd}/brightness`
+
+ monitorFile(screenPath, async f => {
+ const v = await readFileAsync(f)
+ this.#screen = Number(v) / this.#screenMax
+ this.notify("screen")
+ })
+
+ monitorFile(kbdPath, async f => {
+ const v = await readFileAsync(f)
+ this.#kbd = Number(v) / this.#kbdMax
+ this.notify("kbd")
+ })
+ }
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Calendar.tsx b/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Calendar.tsx
new file mode 100644
index 0000000..263a77e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Calendar.tsx
@@ -0,0 +1,42 @@
+import { GObject } from "astal";
+import { astalify, ConstructProps, App, Astal, Gdk, Gtk } from "astal/gtk3"
+
+class CalendarGtk extends astalify(Gtk.Calendar) {
+ static {
+ GObject.registerClass(this);
+ }
+
+ constructor(
+ props: ConstructProps,
+ ) {
+ super(props as any);
+ }
+}
+
+export default function Calendar() {
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+ {new CalendarGtk({
+ hexpand: true,
+ vexpand: true,
+ showDayNames: true,
+ showDetails: false,
+ showHeading: true,
+ showWeekNumbers: true
+ })}
+
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Sidebar.tsx b/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Sidebar.tsx
new file mode 100644
index 0000000..d2672ba
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ags/widget/Sidebar.tsx
@@ -0,0 +1,167 @@
+import { App } from "astal/gtk3"
+import Apps from "gi://AstalApps"
+import Wp from "gi://AstalWp"
+import { Variable, GLib, bind } from "astal"
+import { subprocess, exec, execAsync } from "astal/process"
+import { Astal, Gtk, Gdk } from "astal/gtk3"
+import Brightness from "./Brightness"
+
+function BrightnessSlider() {
+ const brightness = Brightness.get_default()
+
+ return
+ brightness.screen = value}
+ />
+
+}
+
+function AudioSlider() {
+ const speaker = Wp.get_default()?.audio.defaultSpeaker!
+
+ return
+ speaker.volume = value}
+ value={bind(speaker, "volume")}
+ />
+
+}
+
+function MicrophoneSlider() {
+ const microphone = Wp.get_default()?.audio.defaultMicrophone!
+
+ return
+ microphone.volume = value}
+ value={bind(microphone, "volume")}
+ />
+
+}
+
+function openwelcomeapp() {
+ execAsync("com.ml4w.welcome")
+ App.get_window("sidebar")!.hide()
+}
+
+function opensettingsapp() {
+ execAsync("com.ml4w.dotfilessettings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openhyprlandapp() {
+ execAsync("com.ml4w.hyprland.settings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpaper() {
+ const proc = subprocess(["bash", "-c", "waypaper"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpapereffects() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/wallpaper-effects.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwaybarthemes() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/waybar/themeswitcher.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerlock() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh lock"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerlogout() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh exit"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powersuspend() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh suspend"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerrestart() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh reboot"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerexit() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh shutdown"])
+ App.get_window("sidebar")!.hide()
+}
+
+export default function Sidebar() {
+
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/00-init b/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/00-init
new file mode 100644
index 0000000..debda77
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/00-init
@@ -0,0 +1,9 @@
+# -----------------------------------------------------
+# INIT
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Exports
+# -----------------------------------------------------
+export EDITOR=nvim
+export PATH="/usr/lib/ccache/bin/:$PATH"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/10-aliases b/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/10-aliases
new file mode 100644
index 0000000..5956d08
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/10-aliases
@@ -0,0 +1,71 @@
+# -----------------------------------------------------
+# ALIASES
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# General
+# -----------------------------------------------------
+alias c='clear'
+alias nf='fastfetch'
+alias pf='fastfetch'
+alias ff='fastfetch'
+alias ls='eza -a --icons=always'
+alias ll='eza -al --icons=always'
+alias lt='eza -a --tree --level=1 --icons=always'
+alias shutdown='systemctl poweroff'
+alias v='$EDITOR'
+alias vim='$EDITOR'
+alias ts='~/.config/ml4w/scripts/snapshot.sh'
+alias wifi='nmtui'
+alias cleanup='~/.config/ml4w/scripts/cleanup.sh'
+
+# -----------------------------------------------------
+# ML4W Apps
+# -----------------------------------------------------
+alias ml4w='com.ml4w.welcome'
+alias ml4w-settings='com.ml4w.dotfilessettings'
+alias ml4w-hyprland='com.ml4w.hyprland.settings'
+alias ml4w-options='ml4w-hyprland-setup -m options'
+alias ml4w-sidebar='ags toggle sidebar'
+alias ml4w-diagnosis='~/.config/hypr/scripts/diagnosis.sh'
+alias ml4w-hyprland-diagnosis='~/.config/hypr/scripts/diagnosis.sh'
+alias ml4w-qtile-diagnosis='~/.config/ml4w/qtile/scripts/diagnosis.sh'
+alias ml4w-update='~/.config/ml4w/update.sh'
+
+# -----------------------------------------------------
+# Window Managers
+# -----------------------------------------------------
+
+alias Qtile='startx'
+# Hyprland with Hyprland
+
+# -----------------------------------------------------
+# Git
+# -----------------------------------------------------
+alias gs="git status"
+alias ga="git add"
+alias gc="git commit -m"
+alias gp="git push"
+alias gpl="git pull"
+alias gst="git stash"
+alias gsp="git stash; git pull"
+alias gfo="git fetch origin"
+alias gcheck="git checkout"
+alias gcredential="git config credential.helper store"
+
+# -----------------------------------------------------
+# Scripts
+# -----------------------------------------------------
+alias ascii='~/.config/ml4w/scripts/figlet.sh'
+
+# -----------------------------------------------------
+# System
+# -----------------------------------------------------
+alias update-grub='sudo grub-mkconfig -o /boot/grub/grub.cfg'
+
+# -----------------------------------------------------
+# Qtile
+# -----------------------------------------------------
+alias res1='xrandr --output DisplayPort-0 --mode 2560x1440 --rate 120'
+alias res2='xrandr --output DisplayPort-0 --mode 1920x1080 --rate 120'
+alias setkb='setxkbmap de;echo "Keyboard set back to de."'
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/20-customization b/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/20-customization
new file mode 100644
index 0000000..af136aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/20-customization
@@ -0,0 +1,15 @@
+# -----------------------------------------------------
+# CUSTOMIZATION
+# -----------------------------------------------------
+POSH=agnoster
+
+# -----------------------------------------------------
+# Prompt
+# -----------------------------------------------------
+# eval "$(oh-my-posh init bash --config $HOME/.config/ohmyposh/zen.toml)"
+eval "$(oh-my-posh init bash --config $HOME/.config/ohmyposh/EDM115-newline.omp.json)"
+
+# -----------------------------------------------------
+# Pywal
+# -----------------------------------------------------
+cat ~/.cache/wal/sequences
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/30-autostart b/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/30-autostart
new file mode 100644
index 0000000..cf5909d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/bashrc/30-autostart
@@ -0,0 +1,18 @@
+# -----------------------------------------------------
+# AUTOSTART
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Fastfetch
+# -----------------------------------------------------
+if [[ $(tty) == *"pts"* ]]; then
+ fastfetch --config examples/13
+else
+ echo
+ if [ -f /bin/qtile ]; then
+ echo "Start Qtile X11 with command Qtile"
+ fi
+ if [ -f /bin/hyprctl ]; then
+ echo "Start Hyprland with command Hyprland"
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/dunst/dunstrc b/configs/dotfiles/hyprland/gulfport_default/.config/dunst/dunstrc
new file mode 100644
index 0000000..ed3be7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/dunst/dunstrc
@@ -0,0 +1,469 @@
+# _ _
+# __| |_ _ _ __ ___| |_
+# / _` | | | | '_ \/ __| __|
+# | (_| | |_| | | | \__ \ |_
+# \__,_|\__,_|_| |_|___/\__|
+#
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# 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 = (0,300)
+
+ # Position the notification in the top right corner
+ origin = top-center
+
+ # Offset from the origin
+ offset = 30x30
+
+ # Scale factor. It is auto-detected if value is 0.
+ scale = 0
+
+ # Maximum number of notification (0 means no limit)
+ notification_limit = 20
+
+ ### 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
+
+ # Corner radius for the progress bar. 0 disables rounded corners.
+ progress_bar_corner_radius = 10
+
+ # Corner radius for the icon image.
+ icon_corner_radius = 0
+
+ # 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 = 30
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ # If gap_size is greater than 0, this setting will be ignored.
+ 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 = "#ffffff"
+
+ # Size of gap to display between notifications - requires a compositor.
+ # If value is greater than 0, separator_height will be ignored and a border
+ # of size frame_width will be drawn around each notification instead.
+ # Click events on gaps do not currently propagate to applications below.
+ gap_size = 0
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ # A client can set the 'transient' hint to bypass this. See the rules
+ # section for how to disable this if necessary
+ # idle_threshold = 120
+
+ ### Text ###
+
+ font = "Fira Sans Semibold" 9
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
+ line_height = 1
+
+ # Possible values are:
+ # full: Allow a small subset of html markup in notifications:
+ # bold
+ # italic
+ # strikethrough
+ # underline
+ #
+ # For a complete reference see
+ # .
+ #
+ # strip: This setting is provided for compatibility with some broken
+ # clients that send markup even though it's not enabled on the
+ # server. Dunst will try to strip the markup but the parsing is
+ # simplistic so using this option outside of matching rules for
+ # specific applications *IS GREATLY DISCOURAGED*.
+ #
+ # no: Disable markup parsing, incoming notifications will be treated as
+ # plain text. Dunst will not advertise that it has the body-markup
+ # capability if this is set as a global setting.
+ #
+ # It's important to note that markup inside the format option will be parsed
+ # regardless of what this is set to.
+ markup = full
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "%s\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 = false
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = yes
+
+ ### Icons ###
+
+ # Recursive icon lookup. You can set a single theme, instead of having to
+ # define all lookup paths.
+ enable_recursive_icon_lookup = true
+
+ # Set icon theme (only used for recursive icon lookup)
+ icon_theme = "Papirus-Dark,Adwaita"
+ # You can also set multiple icon themes, with the leftmost one being used first.
+ # icon_theme = "Adwaita, breeze"
+
+ # Align icons left/right/top/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 = 32
+
+ # Scale larger icons down to this size, set to 0 to disable
+ max_icon_size = 128
+
+ # Paths to default icons (only neccesary when not using recursive icon lookup)
+ icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+ ### History ###
+
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = yes
+
+ # Maximum amount of notifications kept in history
+ history_length = 20
+
+ ### Misc/Advanced ###
+
+ # dmenu path.
+ dmenu = /usr/bin/dmenu -p dunst:
+
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/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 = 10
+
+ # Ignore the dbus closeNotification message.
+ # Useful to enforce the timeout set by dunst configuration. Without this
+ # parameter, an application may close the notification sent before the
+ # user defined timeout.
+ ignore_dbusclose = false
+
+ ### Wayland ###
+ # These settings are Wayland-specific. They have no effect when using X11
+
+ # Uncomment this if you want to let notications appear under fullscreen
+ # applications (default: overlay)
+ # layer = top
+
+ # Set this to true to use X11 output on Wayland.
+ force_xwayland = false
+
+ ### Legacy
+
+ # Use the Xinerama extension instead of RandR for multi-monitor support.
+ # This setting is provided for compatibility with older nVidia drivers that
+ # do not support RandR and using it on systems that support RandR is highly
+ # discouraged.
+ #
+ # By enabling this setting dunst will not be able to detect when a monitor
+ # is connected or disconnected which might break follow mode if the screen
+ # layout changes.
+ force_xinerama = false
+
+ ### mouse
+
+ # Defines list of actions for each mouse event
+ # Possible values are:
+ # * none: Don't do anything.
+ # * do_action: Invoke the action determined by the action_name rule. If there is no
+ # such action, open the context menu.
+ # * open_url: If the notification has exactly one url, open it. If there are multiple
+ # ones, open the context menu.
+ # * close_current: Close current notification.
+ # * close_all: Close all notifications.
+ # * context: Open context menu for the notification.
+ # * context_all: Open context menu for all notifications.
+ # These values can be strung together for each mouse event, and
+ # will be executed in sequence.
+ mouse_left_click = close_current
+ mouse_middle_click = do_action, close_current
+ mouse_right_click = close_all
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+ # Calculate the dpi to use on a per-monitor basis.
+ # If this setting is enabled the Xft.dpi value will be ignored and instead
+ # dunst will attempt to calculate an appropriate dpi value for each monitor
+ # using the resolution and physical size. This might be useful in setups
+ # where there are multiple screens with very different dpi values.
+ per_monitor_dpi = false
+
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#000000CC"
+ foreground = "#888888"
+ timeout = 6
+ # Icon for notifications with low urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_normal]
+ background = "#000000CC"
+ foreground = "#ffffff"
+ timeout = 6
+ # Icon for notifications with normal urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_critical]
+ background = "#900000CC"
+ foreground = "#ffffff"
+ frame_color = "#ffffff"
+ timeout = 6
+ # Icon for notifications with critical urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+#
+# Messages can be matched by
+# appname (discouraged, see desktop_entry)
+# body
+# category
+# desktop_entry
+# icon
+# match_transient
+# msg_urgency
+# stack_tag
+# summary
+#
+# and you can override the
+# background
+# foreground
+# format
+# frame_color
+# fullscreen
+# new_icon
+# set_stack_tag
+# set_transient
+# set_category
+# timeout
+# urgency
+# icon_position
+# skip_display
+# history_ignore
+# action_name
+# word_wrap
+# ellipsize
+# alignment
+# hide_text
+#
+# 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/configs/dotfiles/hyprland/gulfport_default/.config/fastfetch/config.jsonc b/configs/dotfiles/hyprland/gulfport_default/.config/fastfetch/config.jsonc
new file mode 100644
index 0000000..658682c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/fastfetch/config.jsonc
@@ -0,0 +1,104 @@
+// Thanks to Bina
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "padding": {
+ "top": 2
+ }
+ },
+ "display": {
+ "separator": " ➜ "
+ },
+ "modules": [
+ "break",
+ "break",
+ "break",
+ {
+ "type": "os",
+ "key": "OS ",
+ "keyColor": "31", // = color1
+ },
+ {
+ "type": "kernel",
+ "key": " ├ ",
+ "keyColor": "31",
+ },
+ {
+ "type": "shell",
+ "key": " └ ",
+ "keyColor": "31",
+ },
+ "break",
+ {
+ "type": "wm",
+ "key": "WM ",
+ "keyColor": "32",
+ },
+ {
+ "type": "wmtheme",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "icons",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "cursor",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminal",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminalfont",
+ "key": " └ ",
+ "keyColor": "32",
+ },
+ "break",
+ {
+ "type": "host",
+ "format": "{5} {1} Type {2}",
+ "key": "PC ",
+ "keyColor": "33",
+ },
+ {
+ "type": "cpu",
+ "format": "{1} ({3}) @ {7} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "gpu",
+ "format": "{1} {2} @ {12} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "memory",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "swap",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "disk",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "monitor",
+ "key": " └ ",
+ "keyColor": "33",
+ },
+ "break",
+ "break",
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/gtk-3.0/bookmarks b/configs/dotfiles/hyprland/gulfport_default/.config/gtk-3.0/bookmarks
new file mode 100644
index 0000000..3ecb1cf
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/gtk-3.0/bookmarks
@@ -0,0 +1,5 @@
+file:///home/gib/Documents
+file:///home/gib/Music
+file:///home/gib/Pictures
+file:///home/gib/Videos
+file:///home/gib/Downloads
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/gtk-3.0/settings.ini b/configs/dotfiles/hyprland/gulfport_default/.config/gtk-3.0/settings.ini
new file mode 100644
index 0000000..1a5a2b7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/gtk-3.0/settings.ini
@@ -0,0 +1,17 @@
+[Settings]
+gtk-theme-name=Adwaita
+gtk-icon-theme-name=Papirus
+gtk-font-name=Cantarell 11
+gtk-cursor-theme-name=Bibata-Modern-Ice
+gtk-cursor-theme-size=24
+gtk-toolbar-style=GTK_TOOLBAR_ICONS
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=0
+gtk-enable-event-sounds=1
+gtk-enable-input-feedback-sounds=0
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle=hintslight
+gtk-xft-rgba=rgb
+gtk-application-prefer-dark-theme=0
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/gtk-4.0/settings.ini b/configs/dotfiles/hyprland/gulfport_default/.config/gtk-4.0/settings.ini
new file mode 100644
index 0000000..7c6461a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/gtk-4.0/settings.ini
@@ -0,0 +1,2 @@
+[Settings]
+gtk-application-prefer-dark-theme=0
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animation.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animation.conf
new file mode 100644
index 0000000..a210389
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animation.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/animations/default.conf
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-classic.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-classic.conf
new file mode 100644
index 0000000..11ce3c9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-classic.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# Animations
+# name "Classic"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ animation = windows, 1, 7, myBezier
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-dynamic.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-dynamic.conf
new file mode 100644
index 0000000..3e88cd9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-dynamic.conf
@@ -0,0 +1,19 @@
+# -----------------------------------------------------
+# Animations
+# name "Dynamic"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, loop
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-fast.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-fast.conf
new file mode 100644
index 0000000..a74f411
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-fast.conf
@@ -0,0 +1,23 @@
+# -----------------------------------------------------
+# Animations
+# name "Fast"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = linear, 0, 0, 1, 1
+ bezier = md3_standard, 0.2, 0, 0, 1
+ bezier = md3_decel, 0.05, 0.7, 0.1, 1
+ bezier = md3_accel, 0.3, 0, 0.8, 0.15
+ bezier = overshot, 0.05, 0.9, 0.1, 1.1
+ bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
+ bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
+ bezier = fluent_decel, 0.1, 1, 0, 1
+ bezier = easeInOutCirc, 0.85, 0, 0.15, 1
+ bezier = easeOutCirc, 0, 0.55, 0.45, 1
+ bezier = easeOutExpo, 0.16, 1, 0.3, 1
+ animation = windows, 1, 3, md3_decel, popin 60%
+ animation = border, 1, 10, default
+ animation = fade, 1, 2.5, md3_decel
+ animation = workspaces, 1, 3.5, easeOutExpo, slide
+ animation = specialWorkspace, 1, 3, md3_decel, slidevert
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-high.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-high.conf
new file mode 100644
index 0000000..2fc765f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-high.conf
@@ -0,0 +1,19 @@
+# -----------------------------------------------------
+# Animations
+# name: "High"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, loop
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-moving.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-moving.conf
new file mode 100644
index 0000000..7c43e04
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/animations-moving.conf
@@ -0,0 +1,18 @@
+# -----------------------------------------------------
+# Animations
+# name "Moving"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = overshot, 0.05, 0.9, 0.1, 1.05
+ bezier = smoothOut, 0.5, 0, 0.99, 0.99
+ bezier = smoothIn, 0.5, -0.5, 0.68, 1.5
+ animation = windows, 1, 5, overshot, slide
+ animation = windowsOut, 1, 3, smoothOut
+ animation = windowsIn, 1, 3, smoothOut
+ animation = windowsMove, 1, 4, smoothIn, slide
+ animation = border, 1, 5, default
+ animation = fade, 1, 5, smoothIn
+ animation = fadeDim, 1, 5, smoothIn
+ animation = workspaces, 1, 6, default
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/default.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/default.conf
new file mode 100644
index 0000000..978b436
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/default.conf
@@ -0,0 +1,19 @@
+# -----------------------------------------------------
+# Animations
+# name "Dynamic"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, once
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/disabled.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/disabled.conf
new file mode 100644
index 0000000..c9e31c4
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/disabled.conf
@@ -0,0 +1,7 @@
+# -----------------------------------------------------
+# Animations
+# name "Default"
+# -----------------------------------------------------
+animations {
+ enabled = false
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/standard.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/standard.conf
new file mode 100644
index 0000000..ba78c65
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/animations/standard.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# Animations
+# name "Default"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ animation = windows, 1, 7, myBezier
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/autostart.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/autostart.conf
new file mode 100644
index 0000000..91614c1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/autostart.conf
@@ -0,0 +1,41 @@
+# ___ __ __ __
+# / _ |__ __/ /____ ___ / /____ _____/ /_
+# / __ / // / __/ _ \(_- __/ _ `/ __/ __/
+# /_/ |_\_,_/\__/\___/___/\__/\_,_/_/ \__/
+#
+
+# Setup XDG for screen sharing and start waypaper and waybar
+exec-once = ~/.config/hypr/scripts/xdg.sh
+
+# Load Wallpaper
+exec-once = ~/.config/hypr/scripts/wallpaper-restore.sh
+
+# Start Polkit
+exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+
+# Load Notification Daemon
+exec-once = ~/.config/ml4w/settings/notification.sh
+
+# Load GTK settings
+exec-once = ~/.config/hypr/scripts/gtk.sh
+
+# Using hypridle to start hyprlock
+exec-once = hypridle
+
+# Load cliphist history
+exec-once = wl-paste --watch cliphist store
+
+# Autostart ML4W App
+exec-once = ~/.config/ml4w/scripts/ml4w-autostart.sh
+
+# Start ags
+exec-once = ~/.config/ml4w/scripts/ags.sh
+
+# Start autostart cleanup
+exec-once = ~/.config/hypr/scripts/cleanup.sh
+
+# Load configuration from ML4W Hyprland Settings App
+exec = ~/.config/ml4w-hyprland-settings/hyprctl.sh
+
+# Dock
+exec-once = ~/.config/nwg-dock-hyprland/launch.sh
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/cursor.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/cursor.conf
new file mode 100644
index 0000000..b3b3493
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/cursor.conf
@@ -0,0 +1 @@
+exec-once = hyprctl setcursor Bibata-Modern-Ice 24
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/custom.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/custom.conf
new file mode 100644
index 0000000..1e24aae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/custom.conf
@@ -0,0 +1,24 @@
+# Add your additional Hyprland configurations here
+#
+# This is an additional key binding
+# bind = $mainMod CTRL, up, workspace, empty
+#
+# Example for xwayland
+# xwayland {
+# force_zero_scaling = true
+# }
+
+# qt5ct environment variable
+# env = QT_QPA_PLATFORMTHEME,qt5ct
+
+# SDL version
+env = SDL_VIDEODRIVER,wayland
+# env = SDL_VIDEODRIVER,x11
+
+# No Hardware Cursor
+# cursor {
+# no_hardware_cursors = false
+# }
+
+# Blur for waybar
+#layerrule = blur, waybar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decoration.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decoration.conf
new file mode 100644
index 0000000..9e49187
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decoration.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/decorations/default.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/default.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/default.conf
new file mode 100644
index 0000000..86adbde
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/default.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Default"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/no-rounding-more-blur.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/no-rounding-more-blur.conf
new file mode 100644
index 0000000..97a62ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/no-rounding-more-blur.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "No Rounding More Blur"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 0
+ active_opacity = 1.0
+ inactive_opacity = 0.6
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 12
+ passes = 6
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/no-rounding.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/no-rounding.conf
new file mode 100644
index 0000000..445d9a3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/no-rounding.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "No Rounding"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 0
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-all-blur-no-shadows.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-all-blur-no-shadows.conf
new file mode 100644
index 0000000..7e6b58d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-all-blur-no-shadows.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Rounding All Blur No Shadows"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 0.9
+ inactive_opacity = 0.6
+ fullscreen_opacity = 0.9
+
+ blur {
+ enabled = true
+ size = 12
+ passes = 4
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ blurls = waybar
+ }
+
+ shadow {
+ enabled = false
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-all-blur.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-all-blur.conf
new file mode 100644
index 0000000..c610cee
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-all-blur.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Rounding All Blur"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 0.9
+ inactive_opacity = 0.6
+ fullscreen_opacity = 0.9
+
+ blur {
+ enabled = true
+ size = 12
+ passes = 4
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-more-blur.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-more-blur.conf
new file mode 100644
index 0000000..656c402
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding-more-blur.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Rounding More Blur"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.6
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 12
+ passes = 6
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding.conf
new file mode 100644
index 0000000..86adbde
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/decorations/rounding.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Default"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environment.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environment.conf
new file mode 100644
index 0000000..44e6f6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environment.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/environments/default.conf
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/default.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/default.conf
new file mode 100644
index 0000000..5ec2bfe
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/default.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Environment Variables
+# name: "Default"
+# -----------------------------------------------------
+
+# Default Settings in ml4w.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/kvm.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/kvm.conf
new file mode 100644
index 0000000..87b16a1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/kvm.conf
@@ -0,0 +1,10 @@
+# -----------------------------------------------------
+# Environment Variables
+# name: "KVM"
+# -----------------------------------------------------
+
+# Default Settings in ml4w.conf
+
+# KVM Environment
+env = WLR_RENDERER_ALLOW_SOFTWARE, 1
+# env = LIBGL_ALWAYS_SOFTWARE,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/nvidia.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/nvidia.conf
new file mode 100644
index 0000000..c10643e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/environments/nvidia.conf
@@ -0,0 +1,29 @@
+# -----------------------------------------------------
+# Environment Variables
+# name: "Nvidia"
+# -----------------------------------------------------
+
+# Default Settings in ml4w.conf
+
+# NVIDIA https://wiki.hyprland.org/Nvidia/
+env = GBM_BACKEND,nvidia-drm
+env = LIBVA_DRIVER_NAME,nvidia
+env = SDL_VIDEODRIVER,wayland
+env = WLR_DRM_NO_ATOMIC,1
+# env = __GL_VRR_ALLOWED,1
+env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+env = __NV_PRIME_RENDER_OFFLOAD,1
+env = __VK_LAYER_NV_optimus,NVIDIA_only
+
+# FOR VM and POSSIBLY NVIDIA
+env = WLR_NO_HARDWARE_CURSORS,1 # On hyprland >v0.41, now configured on variable cursor section
+env = WLR_RENDERER_ALLOW_SOFTWARE,1
+
+# nvidia firefox (for hardware acceleration on FF)?
+# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration
+env = MOZ_DISABLE_RDD_SANDBOX,1
+env = EGL_PLATFORM,wayland
+
+cursor {
+ no_hardware_cursors = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybinding.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybinding.conf
new file mode 100644
index 0000000..b3b4d58
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybinding.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/keybindings/default.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybindings/default.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybindings/default.conf
new file mode 100644
index 0000000..a573a61
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybindings/default.conf
@@ -0,0 +1,122 @@
+# -----------------------------------------------------
+# Key bindings
+# name: "Default"
+# -----------------------------------------------------
+
+# SUPER KEY
+$mainMod = SUPER
+$HYPRSCRIPTS = ~/.config/hypr/scripts
+$SCRIPTS = ~/.config/ml4w/scripts
+
+# Applications
+bind = $mainMod, RETURN, exec, ~/.config/ml4w/settings/terminal.sh # Open the terminal
+bind = $mainMod, B, exec, ~/.config/ml4w/settings/browser.sh # Open the browser
+bind = $mainMod, E, exec, ~/.config/ml4w/settings/filemanager.sh # Open the filemanager
+bind = $mainMod CTRL, E, exec, ~/.config/ml4w/settings/emojipicker.sh # Open the emoji picker
+bind = $mainMod CTRL, C, exec, ~/.config/ml4w/settings/calculator.sh # Open the calculator
+
+# Windows
+bind = $mainMod, Q, killactive # Kill active window
+bind = $mainMod SHIFT, Q, exec, hyprctl activewindow | grep pid | tr -d 'pid:'| xargs kill
+bind = $mainMod, F, fullscreen, 0 # Set active window to fullscreen
+bind = $mainMod, M, fullscreen, 1
+bind = $mainMod, T, togglefloating # Toggle active windows into floating mode
+bind = $mainMod SHIFT, T, exec, $HYPRSCRIPTS/toggleallfloat.sh # Toggle all windows into floating mode
+bind = $mainMod, J, togglesplit # Toggle split
+bind = $mainMod, left, movefocus, l # Move focus left
+bind = $mainMod, right, movefocus, r # Move focus right
+bind = $mainMod, up, movefocus, u # Move focus up
+bind = $mainMod, down, movefocus, d # Move focus down
+bindm = $mainMod, mouse:272, movewindow # Move window with the mouse
+bindm = $mainMod, mouse:273, resizewindow # Resize window with the mouse
+bind = $mainMod SHIFT, right, resizeactive, 100 0 # Increase window width with keyboard
+bind = $mainMod SHIFT, left, resizeactive, -100 0 # Reduce window width with keyboard
+bind = $mainMod SHIFT, down, resizeactive, 0 100 # Increase window height with keyboard
+bind = $mainMod SHIFT, up, resizeactive, 0 -100 # Reduce window height with keyboard
+bind = $mainMod, G, togglegroup # Toggle window group
+bind = $mainMod, K, swapsplit # Swapsplit
+
+# Actions
+bind = $mainMod SHIFT, A, exec, $HYPRSCRIPTS/toggle-animations.sh # Toggle animations
+bind = $mainMod, PRINT, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot
+bind = $mainMod SHIFT, S, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot
+bind = $mainMod CTRL, Q, exec, ~/.config/ml4w/scripts/wlogout.sh # Start wlogout
+bind = $mainMod SHIFT, W, exec, waypaper --random # Change the wallpaper
+bind = $mainMod CTRL, W, exec, waypaper # Open wallpaper selector
+bind = $mainMod ALT, W, exec, $HYPRSCRIPTS/wallpaper-automation.sh # Start random wallpaper script
+bind = $mainMod CTRL, RETURN, exec, pkill rofi || rofi -show drun -replace -i # Open application launcher
+bind = $mainMod CTRL, K, exec, $HYPRSCRIPTS/keybindings.sh # Show keybindings
+bind = $mainMod SHIFT, B, exec, ~/.config/waybar/launch.sh # Reload waybar
+bind = $mainMod CTRL, B, exec, ~/.config/waybar/toggle.sh # Toggle waybar
+bind = $mainMod SHIFT, R, exec, $HYPRSCRIPTS/loadconfig.sh # Reload hyprland config
+bind = $mainMod, V, exec, $SCRIPTS/cliphist.sh # Open clipboard manager
+bind = $mainMod CTRL, T, exec, ~/.config/waybar/themeswitcher.sh # Open waybar theme switcher
+bind = $mainMod CTRL, S, exec, ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+bind = $mainMod SHIFT, H, exec, $HYPRSCRIPTS/hyprshade.sh # Toggle screenshader
+bind = $mainMod ALT, G, exec, $HYPRSCRIPTS/gamemode.sh # Toggle game mode
+bind = $mainMod, Z, exec, missioncenter # Open Mission Center
+
+# Workspaces
+bind = $mainMod, 1, workspace, 1 # Open workspace 1
+bind = $mainMod, 2, workspace, 2 # Open workspace 2
+bind = $mainMod, 3, workspace, 3 # Open workspace 3
+bind = $mainMod, 4, workspace, 4 # Open workspace 4
+bind = $mainMod, 5, workspace, 5 # Open workspace 5
+bind = $mainMod, 6, workspace, 6 # Open workspace 6
+bind = $mainMod, 7, workspace, 7 # Open workspace 7
+bind = $mainMod, 8, workspace, 8 # Open workspace 8
+bind = $mainMod, 9, workspace, 9 # Open workspace 9
+bind = $mainMod, 0, workspace, 10 # Open workspace 10
+
+bind = $mainMod SHIFT, 1, movetoworkspace, 1 # Move active window to workspace 1
+bind = $mainMod SHIFT, 2, movetoworkspace, 2 # Move active window to workspace 2
+bind = $mainMod SHIFT, 3, movetoworkspace, 3 # Move active window to workspace 3
+bind = $mainMod SHIFT, 4, movetoworkspace, 4 # Move active window to workspace 4
+bind = $mainMod SHIFT, 5, movetoworkspace, 5 # Move active window to workspace 5
+bind = $mainMod SHIFT, 6, movetoworkspace, 6 # Move active window to workspace 6
+bind = $mainMod SHIFT, 7, movetoworkspace, 7 # Move active window to workspace 7
+bind = $mainMod SHIFT, 8, movetoworkspace, 8 # Move active window to workspace 8
+bind = $mainMod SHIFT, 9, movetoworkspace, 9 # Move active window to workspace 9
+bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Move active window to workspace 10
+
+bind = $mainMod, Tab, workspace, m+1 # Open next workspace
+bind = $mainMod SHIFT, Tab, workspace, m-1 # Open previous workspace
+
+bind = $mainMod CTRL, 1, exec, $HYPRSCRIPTS/moveTo.sh 1 # Move all windows to workspace 1
+bind = $mainMod CTRL, 2, exec, $HYPRSCRIPTS/moveTo.sh 2 # Move all windows to workspace 2
+bind = $mainMod CTRL, 3, exec, $HYPRSCRIPTS/moveTo.sh 3 # Move all windows to workspace 3
+bind = $mainMod CTRL, 4, exec, $HYPRSCRIPTS/moveTo.sh 4 # Move all windows to workspace 4
+bind = $mainMod CTRL, 5, exec, $HYPRSCRIPTS/moveTo.sh 5 # Move all windows to workspace 5
+bind = $mainMod CTRL, 6, exec, $HYPRSCRIPTS/moveTo.sh 6 # Move all windows to workspace 6
+bind = $mainMod CTRL, 7, exec, $HYPRSCRIPTS/moveTo.sh 7 # Move all windows to workspace 7
+bind = $mainMod CTRL, 8, exec, $HYPRSCRIPTS/moveTo.sh 8 # Move all windows to workspace 8
+bind = $mainMod CTRL, 9, exec, $HYPRSCRIPTS/moveTo.sh 9 # Move all windows to workspace 9
+bind = $mainMod CTRL, 0, exec, $HYPRSCRIPTS/moveTo.sh 10 # Move all windows to workspace 10
+
+bind = $mainMod, mouse_down, workspace, e+1 # Open next workspace
+bind = $mainMod, mouse_up, workspace, e-1 # Open previous workspace
+bind = $mainMod CTRL, down, workspace, empty # Open the next empty workspace
+
+# Passthrough SUPER KEY to Virtual Machine
+# bind = $mainMod, P, submap, passthru # Passthrough SUPER key to virtual machine
+# submap = passthru
+# bind = SUPER, Escape, submap, reset # Get SUPER key back from virtual machine
+# submap = reset
+
+# Fn keys
+bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10% # Increase brightness by 10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%- # Reduce brightness by 10%
+bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% # Increase volume by 5%
+bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% # Reduce volume by 5%
+bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Toggle mute
+bind = , XF86AudioPlay, exec, playerctl play-pause # Audio play pause
+bind = , XF86AudioPause, exec, playerctl pause # Audio pause
+bind = , XF86AudioNext, exec, playerctl next # Audio next
+bind = , XF86AudioPrev, exec, playerctl previous # Audio previous
+bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # Toggle microphone
+bind = , XF86Calculator, exec, ~/.config/ml4w/settings/calculator.sh # Open calculator
+bind = , XF86Lock, exec, hyprlock # Open screenlock
+bind = , XF86Tools, exec, $(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+
+bind = , code:238, exec, brightnessctl -d smc::kbd_backlight s +10
+bind = , code:237, exec, brightnessctl -d smc::kbd_backlight s 10-
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybindings/fr.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybindings/fr.conf
new file mode 100644
index 0000000..9e1937e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keybindings/fr.conf
@@ -0,0 +1,120 @@
+# -----------------------------------------------------
+# Key bindings
+# name: "Default"
+# -----------------------------------------------------
+
+# SUPER KEY
+$mainMod = SUPER
+$HYPRSCRIPTS = ~/.config/hypr/scripts
+$SCRIPTS = ~/.config/ml4w/scripts
+
+# Applications
+bind = $mainMod, RETURN, exec, ~/.config/ml4w/settings/terminal.sh # Open the terminal
+bind = $mainMod, B, exec, ~/.config/ml4w/settings/browser.sh # Open the browser
+bind = $mainMod, E, exec, ~/.config/ml4w/settings/filemanager.sh # Open the filemanager
+bind = $mainMod CTRL, E, exec, ~/.config/ml4w/settings/emojipicker.sh # Open the emoji picker
+bind = $mainMod CTRL, C, exec, ~/.config/ml4w/settings/calculator.sh # Open the calculator
+
+# Windows
+bind = $mainMod, Q, killactive # Kill active window
+bind = $mainMod, F, fullscreen # Set active window to fullscreen
+bind = $mainMod, T, togglefloating # Toggle active windows into floating mode
+bind = $mainMod SHIFT, T, exec, $HYPRSCRIPTS/toggleallfloat.sh # Toggle all windows into floating mode
+bind = $mainMod, J, togglesplit # Toggle split
+bind = $mainMod, left, movefocus, l # Move focus left
+bind = $mainMod, right, movefocus, r # Move focus right
+bind = $mainMod, up, movefocus, u # Move focus up
+bind = $mainMod, down, movefocus, d # Move focus down
+bindm = $mainMod, mouse:272, movewindow # Move window with the mouse
+bindm = $mainMod, mouse:273, resizewindow # Resize window with the mouse
+bind = $mainMod SHIFT, right, resizeactive, 100 0 # Increase window width with keyboard
+bind = $mainMod SHIFT, left, resizeactive, -100 0 # Reduce window width with keyboard
+bind = $mainMod SHIFT, down, resizeactive, 0 100 # Increase window height with keyboard
+bind = $mainMod SHIFT, up, resizeactive, 0 -100 # Reduce window height with keyboard
+bind = $mainMod, G, togglegroup # Toggle window group
+bind = $mainMod, K, swapsplit # Swapsplit
+
+# Actions
+bind = $mainMod SHIFT, A, exec, $HYPRSCRIPTS/toggle-animations.sh # Toggle animations
+bind = $mainMod, PRINT, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot
+bind = $mainMod SHIFT, S, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot
+bind = $mainMod CTRL, Q, exec, ~/.config/ml4w/scripts/wlogout.sh # Start wlogout
+bind = $mainMod SHIFT, W, exec, waypaper --random # Change the wallpaper
+bind = $mainMod CTRL, W, exec, waypaper # Open wallpaper selector
+bind = $mainMod ALT, W, exec, $HYPRSCRIPTS/wallpaper-automation.sh # Start random wallpaper script
+bind = $mainMod CTRL, RETURN, exec, pkill rofi || rofi -show drun -replace -i # Open application launcher
+bind = $mainMod CTRL, K, exec, $HYPRSCRIPTS/keybindings.sh # Show keybindings
+bind = $mainMod SHIFT, B, exec, ~/.config/waybar/launch.sh # Reload waybar
+bind = $mainMod CTRL, B, exec, ~/.config/waybar/toggle.sh # Toggle waybar
+bind = $mainMod SHIFT, R, exec, $HYPRSCRIPTS/loadconfig.sh # Reload hyprland config
+bind = $mainMod, V, exec, $SCRIPTS/cliphist.sh # Open clipboard manager
+bind = $mainMod CTRL, T, exec, ~/.config/waybar/themeswitcher.sh # Open waybar theme switcher
+bind = $mainMod CTRL, S, exec, ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+bind = $mainMod SHIFT, H, exec, $HYPRSCRIPTS/hyprshade.sh # Toggle screenshader
+bind = $mainMod ALT, G, exec, $HYPRSCRIPTS/gamemode.sh # Toggle game mode
+bind = $mainMod, Z, exec, missioncenter # Open Mission Center
+
+# Workspaces
+bind = $mainMod, ampersand, workspace, 1 # Open workspace 1
+bind = $mainMod, eacute, workspace, 2 # Open workspace 2
+bind = $mainMod, quotedbl, workspace, 3 # Open workspace 3
+bind = $mainMod, apostrophe, workspace, 4 # Open workspace 4
+bind = $mainMod, parenleft, workspace, 5 # Open workspace 5
+bind = $mainMod, minus, workspace, 6 # Open workspace 6
+bind = $mainMod, egrave, workspace, 7 # Open workspace 7
+bind = $mainMod, underscore, workspace, 8 # Open workspace 8
+bind = $mainMod, ccedilla, workspace, 9 # Open workspace 9
+bind = $mainMod, agrave, workspace, 10 # Open workspace 10
+
+bind = $mainMod SHIFT, ampersand, movetoworkspace, 1 # Move active window to workspace 1
+bind = $mainMod SHIFT, eacute, movetoworkspace, 2 # Move active window to workspace 2
+bind = $mainMod SHIFT, quotedbl, movetoworkspace, 3 # Move active window to workspace 3
+bind = $mainMod SHIFT, apostrophe, movetoworkspace, 4 # Move active window to workspace 4
+bind = $mainMod SHIFT, parenleft, movetoworkspace, 5 # Move active window to workspace 5
+bind = $mainMod SHIFT, minus, movetoworkspace, 6 # Move active window to workspace 6
+bind = $mainMod SHIFT, egrave, movetoworkspace, 7 # Move active window to workspace 7
+bind = $mainMod SHIFT, underscore, movetoworkspace, 8 # Move active window to workspace 8
+bind = $mainMod SHIFT, ccedilla, movetoworkspace, 9 # Move active window to workspace 9
+bind = $mainMod SHIFT, agrave, movetoworkspace, 10 # Move active window to workspace 10
+
+bind = $mainMod, Tab, workspace, m+1 # Open next workspace
+bind = $mainMod SHIFT, Tab, workspace, m-1 # Open previous workspace
+
+bind = $mainMod CTRL, ampersand, exec, $HYPRSCRIPTS/moveTo.sh 1 # Move all windows to workspace 1
+bind = $mainMod CTRL, eacute, exec, $HYPRSCRIPTS/moveTo.sh 2 # Move all windows to workspace 2
+bind = $mainMod CTRL, quotedbl, exec, $HYPRSCRIPTS/moveTo.sh 3 # Move all windows to workspace 3
+bind = $mainMod CTRL, apostrophe, exec, $HYPRSCRIPTS/moveTo.sh 4 # Move all windows to workspace 4
+bind = $mainMod CTRL, parenleft, exec, $HYPRSCRIPTS/moveTo.sh 5 # Move all windows to workspace 5
+bind = $mainMod CTRL, minus, exec, $HYPRSCRIPTS/moveTo.sh 6 # Move all windows to workspace 6
+bind = $mainMod CTRL, egrave, exec, $HYPRSCRIPTS/moveTo.sh 7 # Move all windows to workspace 7
+bind = $mainMod CTRL, underscore, exec, $HYPRSCRIPTS/moveTo.sh 8 # Move all windows to workspace 8
+bind = $mainMod CTRL, ccedilla, exec, $HYPRSCRIPTS/moveTo.sh 9 # Move all windows to workspace 9
+bind = $mainMod CTRL, agrave, exec, $HYPRSCRIPTS/moveTo.sh 10 # Move all windows to workspace 10
+
+bind = $mainMod, mouse_down, workspace, e+1 # Open next workspace
+bind = $mainMod, mouse_up, workspace, e-1 # Open previous workspace
+bind = $mainMod CTRL, down, workspace, empty # Open the next empty workspace
+
+# Passthrough SUPER KEY to Virtual Machine
+# bind = $mainMod, P, submap, passthru # Passthrough SUPER key to virtual machine
+# submap = passthru
+# bind = SUPER, Escape, submap, reset # Get SUPER key back from virtual machine
+# submap = reset
+
+# Fn keys
+bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10% # Increase brightness by 10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%- # Reduce brightness by 10%
+bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% # Increase volume by 5%
+bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% # Reduce volume by 5%
+bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Toggle mute
+bind = , XF86AudioPlay, exec, playerctl play-pause # Audio play pause
+bind = , XF86AudioPause, exec, playerctl pause # Audio pause
+bind = , XF86AudioNext, exec, playerctl next # Audio next
+bind = , XF86AudioPrev, exec, playerctl previous # Audio previous
+bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # Toggle microphone
+bind = , XF86Calculator, exec, ~/.config/ml4w/settings/calculator.sh # Open calculator
+bind = , XF86Lock, exec, hyprlock # Open screenlock
+bind = , XF86Tools, exec, alacritty --class dotfiles-floating -e ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+
+bind = , code:238, exec, brightnessctl -d smc::kbd_backlight s +10
+bind = , code:237, exec, brightnessctl -d smc::kbd_backlight s 10-
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keyboard.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keyboard.conf
new file mode 100644
index 0000000..1b57d6f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/keyboard.conf
@@ -0,0 +1,35 @@
+# -----------------------------------------------------
+# Keyboard Layout
+# https://wiki.hyprland.org/Configuring/Variables/#input
+# -----------------------------------------------------
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ numlock_by_default = true
+ mouse_refocus = false
+
+ # For United States
+ # kb_layout = us
+ # kb_variant = intl
+ # kb_model = pc105
+ # kb_options =
+
+ follow_mouse = 1
+ touchpad {
+ # for desktop
+ natural_scroll = false
+
+ # for laptop
+ # natural_scroll = yes
+ # middle_button_emulation = true
+ # clickfinger_behavior = false
+ scroll_factor = 1.0 # Touchpad scroll factor
+ }
+ sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification.
+}
+
+gestures {
+ workspace_swipe = true
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layout.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layout.conf
new file mode 100644
index 0000000..e009ed3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layout.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/layouts/default.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layouts/default.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layouts/default.conf
new file mode 100644
index 0000000..3c3c155
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layouts/default.conf
@@ -0,0 +1,23 @@
+# -----------------------------------------------------
+# Layouts
+# -----------------------------------------------------
+
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+
+master {
+ # Commented out due to compatibility reasons
+ # new_status = master
+}
+
+gestures {
+ workspace_swipe = false
+}
+
+binds {
+ workspace_back_and_forth = true
+ allow_workspace_cycles = true
+ pass_mouse_when_bound = false
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layouts/laptop.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layouts/laptop.conf
new file mode 100644
index 0000000..cb863a2
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/layouts/laptop.conf
@@ -0,0 +1,30 @@
+# -----------------------------------------------------
+# Layouts
+# -----------------------------------------------------
+
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+
+master {
+ # Commented out due to compatibility reasons
+ # new_status = master
+}
+
+gestures {
+ workspace_swipe = true
+ workspace_swipe_fingers = 3
+ workspace_swipe_distance = 500
+ workspace_swipe_invert = true
+ workspace_swipe_min_speed_to_force = 30
+ workspace_swipe_cancel_ratio = 0.5
+ workspace_swipe_create_new = true
+ workspace_swipe_forever = true
+}
+
+binds {
+ workspace_back_and_forth = true
+ allow_workspace_cycles = true
+ pass_mouse_when_bound = false
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/misc.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/misc.conf
new file mode 100644
index 0000000..982954c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/misc.conf
@@ -0,0 +1,9 @@
+# -----------------------------------------------------
+# Misc settings
+# -----------------------------------------------------
+
+misc {
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ initial_workspace_tracking = 1
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/ml4w.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/ml4w.conf
new file mode 100644
index 0000000..582cb02
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/ml4w.conf
@@ -0,0 +1,124 @@
+# __ _____ _____ __ _____ ___
+# / |/ / / / / / | /| / / / ___/__ ___ / _/
+# / /|_/ / /_/_ _/ |/ |/ / / /__/ _ \/ _ \/ _/
+# /_/ /_/____//_/ |__/|__/ \___/\___/_//_/_/
+#
+
+# Pavucontrol floating
+windowrulev2 = float,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = size 700 600,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = center,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = pin,class:(.*org.pulseaudio.pavucontrol.*)
+
+# OpenAI ChatGPT floating
+windowrulev2 = float,title:(ChatGPT.*)
+windowrulev2 = float,title:(.*chat.openai.com.*)
+windowrulev2 = size 500 50%,title:(.*chat.openai.com.*)
+windowrulev2 = move 20 70,title:(.*chat.openai.com.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(.*waypaper.*)
+windowrulev2 = size 900 700,class:(.*waypaper.*)
+windowrulev2 = center,class:(.*waypaper.*)
+windowrulev2 = pin,class:(.*waypaper.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(com.ml4w.welcome)
+windowrulev2 = size 700 600,class:(com.ml4w.welcome)
+windowrulev2 = center,class:(com.ml4w.welcome)
+windowrulev2 = pin,class:(com.ml4w.welcome)
+
+windowrulev2 = float,class:(ml4w-welcome.py)
+windowrulev2 = size 400 500,class:(ml4w-welcome.py)
+windowrulev2 = center,class:(ml4w-welcome.py)
+windowrulev2 = pin,class:(ml4w-welcome.py)
+
+# ML4W Settings App floating
+windowrulev2 = float,class:(com.ml4w.dotfilessettings)
+windowrulev2 = size 700 600,class:(com.ml4w.dotfilessettings)
+windowrulev2 = move 10% 20%,class:(com.ml4w.dotfilessettings)
+windowrulev2 = pin,class:(com.ml4w.dotfilessettings)
+
+windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = pin,class:(ml4w-dotfiles-settings.py)
+
+# ML4W Hyprland App floating
+windowrulev2 = float,class:(com.ml4w.hyprland.settings)
+windowrulev2 = size 700 600,class:(com.ml4w.hyprland.settings)
+windowrulev2 = center,class:(com.ml4w.hyprland.settings)
+windowrulev2 = pin,class:(com.ml4w.hyprland.settings)
+
+windowrulev2 = float,class:(ml4w-hyprland-settings.py)
+windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py)
+windowrulev2 = center,class:(ml4w-hyprland-settings.py)
+windowrulev2 = pin,class:(ml4w-hyprland-settings.py)
+
+# System Mission Center
+windowrulev2 = float, class:(io.missioncenter.MissionCenter)
+windowrulev2 = pin, class:(io.missioncenter.MissionCenter)
+windowrulev2 = center, class:(io.missioncenter.MissionCenter)
+windowrulev2 = size 900 600, class:(io.missioncenter.MissionCenter)
+
+# System Mission Center Preference Window
+windowrulev2 = float, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = pin, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = center, class:(missioncenter), title:^(Preferences)$
+
+# Gnome Calculator
+windowrulev2 = float,class:(org.gnome.Calculator)
+windowrulev2 = size 700 600,class:(org.gnome.Calculator)
+windowrulev2 = center,class:(org.gnome.Calculator)
+
+# Emoji Picker Smile
+windowrulev2 = float,class:(it.mijorus.smile)
+windowrulev2 = pin, class:(it.mijorus.smile)
+windowrulev2 = move 100%-w-40 90,class:(it.mijorus.smile)
+
+# Hyprland Share Picker
+windowrulev2 = float, class:(hyprland-share-picker)
+windowrulev2 = pin, class:(hyprland-share-picker)
+windowrulev2 = center, title:class:(hyprland-share-picker)
+windowrulev2 = size 600 400,class:(hyprland-share-picker)
+
+# General floating
+windowrulev2 = float,class:(dotfiles-floating)
+windowrulev2 = size 1000 700,class:(dotfiles-floating)
+windowrulev2 = center,class:(dotfiles-floating)
+windowrulev2 = pin, class:(dotfiles-floating)
+
+# XDG Desktop Portal
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+
+# QT
+env = QT_QPA_PLATFORM,wayland;xcb
+env = QT_QPA_PLATFORMTHEME,qt6ct
+env = QT_QPA_PLATFORMTHEME,qt5ct
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+
+# GDK
+env = GDK_SCALE,1
+
+# Toolkit Backend
+env = GDK_BACKEND,wayland,x11,*
+env = CLUTTER_BACKEND,wayland
+
+# Mozilla
+env = MOZ_ENABLE_WAYLAND,1
+
+# Set the cursor size for xcursor
+env = XCURSOR_SIZE,24
+
+# Disable appimage launcher by default
+env = APPIMAGELAUNCHER_DISABLE,1
+
+# Ozone
+env = OZONE_PLATFORM,wayland
+env = ELECTRON_OZONE_PLATFORM_HINT,wayland
+
+# Python
+# env = PYTHONPATH,/usr/lib/python3.12/site-packages:/usr/lib/python3.13/site-packages:$PYTHONPATH
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitor.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitor.conf
new file mode 100644
index 0000000..5b3f3c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitor.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/monitors/default.conf
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1366x768.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1366x768.conf
new file mode 100644
index 0000000..0b6a7ca
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1366x768.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1366x768"
+# -----------------------------------------------------
+
+monitor=,1366x768,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1440x1080.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1440x1080.conf
new file mode 100644
index 0000000..032c75b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1440x1080.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1440x1080"
+# -----------------------------------------------------
+
+monitor=,1440x1080,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1600x900.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1600x900.conf
new file mode 100644
index 0000000..d3d9713
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1600x900.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1600x900"
+# -----------------------------------------------------
+
+monitor=,1600x900,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1920x1080.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1920x1080.conf
new file mode 100644
index 0000000..0f654be
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1920x1080.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1920x1080"
+# -----------------------------------------------------
+
+monitor=,1920x1080,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1920x1200.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1920x1200.conf
new file mode 100644
index 0000000..aac5f4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/1920x1200.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1920x1200"
+# -----------------------------------------------------
+
+monitor=,1920x1200,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440.conf
new file mode 100644
index 0000000..cbb7710
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "2560x1440"
+# -----------------------------------------------------
+
+monitor=,2560x1440,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440@120.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440@120.conf
new file mode 100644
index 0000000..f777ec1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440@120.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "2560x1440@120"
+# -----------------------------------------------------
+
+monitor=,2560x1440@120,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440@120x125.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440@120x125.conf
new file mode 100644
index 0000000..b7b3e3a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/2560x1440@120x125.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "2560x1440@120x125"
+# -----------------------------------------------------
+
+monitor=,2560x1440@120,auto,1.25
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/3440x1440.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/3440x1440.conf
new file mode 100644
index 0000000..3e0ee1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/3440x1440.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "3440x1440"
+# -----------------------------------------------------
+
+monitor=,3440x1440,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/default.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/default.conf
new file mode 100644
index 0000000..1eced60
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/default.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "Default"
+# -----------------------------------------------------
+
+monitor=,preferred,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/highres.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/highres.conf
new file mode 100644
index 0000000..8cb32bd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/monitors/highres.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "Highres"
+# -----------------------------------------------------
+
+monitor=,highres,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/restorevariations.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/restorevariations.sh
new file mode 100644
index 0000000..a9c6e6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/restorevariations.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+clear
+cat <<"EOF"
+ ___ __
+ / _ \___ ___ / /____ _______
+ / , _/ -_|_- __/ _ \/ __/ -_)
+/_/|_|\__/___/\__/\___/_/ \__/
+
+EOF
+echo "You can restore to the default ML4W variations."
+echo "PLEASE NOTE: You can reactivate to a customized variation or selection in the settings script."
+echo "Your customized variation will not be overwritten or deleted."
+
+if gum confirm "Do you want to restore all variations to the default values?" ;then
+ echo
+
+ echo "source = ~/.config/hypr/conf/keybindings/default.conf" > ~/.config/hypr/conf/keybinding.conf
+ echo "Hyprland keybinding.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/environments/default.conf" > ~/.config/hypr/conf/environment.conf
+ echo "Hyprland environment.conf restored!"
+
+ echo "source = ~.config/hypr/conf/windowrules/default.conf" > ~/.config/hypr/conf/windowrule.conf
+ echo "Hyprland windowrule.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/animations/default.conf" > ~/.config/hypr/conf/animation.conf
+ echo "Hyprland animation.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/decorations/default.conf" > ~/.config/hypr/conf/decoration.conf
+ echo "Hyprland decoration.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/windows/default.conf" > ~/.config/hypr/conf/window.conf
+ echo "Hyprland window.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/monitors/default.conf" > ~/.config/hypr/conf/monitor.conf
+ echo "Hyprland monitor.conf restored!"
+
+ echo
+ echo ":: Restore done!"
+else
+ echo ":: Restore canceled!"
+ exit
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/window.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/window.conf
new file mode 100644
index 0000000..8269a9e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/window.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/windows/default.conf
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windowrule.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windowrule.conf
new file mode 100644
index 0000000..5f41c07
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windowrule.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/windowrules/default.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windowrules/default.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windowrules/default.conf
new file mode 100644
index 0000000..b9bae08
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windowrules/default.conf
@@ -0,0 +1,16 @@
+# -----------------------------------------------------
+# Window rules
+# -----------------------------------------------------
+
+windowrule = tile,^(Microsoft-edge)$
+windowrule = tile,^(Brave-browser)$
+windowrule = tile,^(Chromium)$
+windowrule = float,^(pavucontrol)$
+windowrule = float,^(blueman-manager)$
+windowrule = float,^(nm-connection-editor)$
+windowrule = float,^(qalculate-gtk)$
+
+# Browser Picture in Picture
+windowrulev2 = float, title:^(Picture-in-Picture)$
+windowrulev2 = pin, title:^(Picture-in-Picture)$
+windowrulev2 = move 69.5% 4%, title:^(Picture-in-Picture)$
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-1-reverse.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-1-reverse.conf
new file mode 100644
index 0000000..fb233e7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-1-reverse.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 1
+ col.active_border = rgba(ffffffff)
+ col.inactive_border = $color11
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-1.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-1.conf
new file mode 100644
index 0000000..9f3283b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-1.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 1
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-2-reverse.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-2-reverse.conf
new file mode 100644
index 0000000..da6dcf5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-2-reverse.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 2
+ col.active_border = rgba(ffffffff)
+ col.inactive_border = $color11
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-2.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-2.conf
new file mode 100644
index 0000000..a37cde1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-2.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 2
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-3-reverse.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-3-reverse.conf
new file mode 100644
index 0000000..157ae7b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-3-reverse.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = rgba(ffffffff)
+ col.inactive_border = $color11
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-3.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-3.conf
new file mode 100644
index 0000000..1b52af4
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-3.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-4-reverse.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-4-reverse.conf
new file mode 100644
index 0000000..05c51fe
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-4-reverse.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 4
+ col.active_border = rgba(ffffffff)
+ col.inactive_border = $color11
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-4.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-4.conf
new file mode 100644
index 0000000..f437e98
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/border-4.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 4
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/default.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/default.conf
new file mode 100644
index 0000000..1b52af4
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/default.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/no-border-more-gaps.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/no-border-more-gaps.conf
new file mode 100644
index 0000000..383aa72
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/no-border-more-gaps.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "No Border More Gaps"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 20
+ gaps_out = 40
+ border_size = 0
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/no-border.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/no-border.conf
new file mode 100644
index 0000000..71ff4e5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/conf/windows/no-border.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "No Border"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 0
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite
new file mode 100644
index 0000000..0f985b3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite
@@ -0,0 +1 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-blur b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-blur
new file mode 100644
index 0000000..85a5a51
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-blur
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness40 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness40
new file mode 100644
index 0000000..97cafb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness60 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness60
new file mode 100644
index 0000000..3dc7788
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness80 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness80
new file mode 100644
index 0000000..67bb0ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blackwhite-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1
new file mode 100644
index 0000000..f401e1a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1
@@ -0,0 +1 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness40 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness40
new file mode 100644
index 0000000..d79704a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness60 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness60
new file mode 100644
index 0000000..73028f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness80 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness80
new file mode 100644
index 0000000..c1984aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur1-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur2 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur2
new file mode 100644
index 0000000..cb13630
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/blur2
@@ -0,0 +1 @@
+magick $wallpaper -blur "10x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate
new file mode 100644
index 0000000..971c7aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate
@@ -0,0 +1 @@
+magick $wallpaper -negate $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness40 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness40
new file mode 100644
index 0000000..f6b8bd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness60 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness60
new file mode 100644
index 0000000..bf45cd6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness80 b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness80
new file mode 100644
index 0000000..2d342c1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/effects/wallpaper/negate-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hypridle.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hypridle.conf
new file mode 100644
index 0000000..d02b4ea
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hypridle.conf
@@ -0,0 +1,47 @@
+# _ _ _ _
+# | |__ _ _ _ __ _ __(_) __| | | ___
+# | '_ \| | | | '_ \| '__| |/ _` | |/ _ \
+# | | | | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+# Version 2.8.3
+# DO NOT REMOVE THE REPLACEMENT COMMENTS
+# REQUIRED BY THE ML4W SETTINGS APP
+# https://wiki.hyprland.org/Hypr-Ecosystem/hypridle/
+
+# general {
+# ignore_dbus_inhibit = false
+# }
+
+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.
+}
+
+# Screenlock
+listener {
+ # HYPRLOCK TIMEOUT
+ timeout = 600
+ # HYPRLOCK ONTIMEOUT
+ on-timeout = loginctl lock-session
+}
+
+# dpms
+listener {
+ # DPMS TIMEOUT
+ timeout = 660
+ # DPMS ONTIMEOUT
+ on-timeout = hyprctl dispatch dpms off
+ # DPMS ONRESUME
+ on-resume = hyprctl dispatch dpms on
+}
+
+# Suspend
+listener {
+ # SUSPEND TIMEOUT
+ timeout = 1800
+ #SUSPEND ONTIMEOUT
+ on-timeout = systemctl suspend
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprland.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..31767a7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprland.conf
@@ -0,0 +1,71 @@
+# _ _ _ _
+# | | | |_ _ _ __ _ __| | __ _ _ __ __| |
+# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` |
+# | _ | |_| | |_) | | | | (_| | | | | (_| |
+# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_|
+# |___/|_|
+#
+# -----------------------------------------------------
+# IMPORTANT: Don't overwrite ML4W configuration.
+# Create your own custom configuration variation instead.
+# https://github.com/mylinuxforwork/dotfiles/wiki/Configuration-Variations
+
+# -----------------------------------------------------
+# Monitor
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/monitor.conf
+
+# -----------------------------------------------------
+# Cursor
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/cursor.conf
+
+# -----------------------------------------------------
+# Environment
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/environment.conf
+
+# -----------------------------------------------------
+# Keyboard
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/keyboard.conf
+
+# -----------------------------------------------------
+# Load pywal color file
+# -----------------------------------------------------
+source = ~/.cache/wal/colors-hyprland.conf
+
+# -----------------------------------------------------
+# Autostart
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/autostart.conf
+
+# -----------------------------------------------------
+# Load configuration files
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/window.conf
+source = ~/.config/hypr/conf/decoration.conf
+source = ~/.config/hypr/conf/layout.conf
+source = ~/.config/hypr/conf/misc.conf
+source = ~/.config/hypr/conf/keybinding.conf
+source = ~/.config/hypr/conf/windowrule.conf
+
+# -----------------------------------------------------
+# Animation
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/animation.conf
+
+# -----------------------------------------------------
+# Environment for xdg-desktop-portal-hyprland
+# -----------------------------------------------------
+exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+
+# -----------------------------------------------------
+# ML4W Configuration
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/ml4w.conf
+
+# -----------------------------------------------------
+# Custom
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/custom.conf
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprlock.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..d7e0fda
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprlock.conf
@@ -0,0 +1,88 @@
+# _ _ _
+# | |__ _ _ _ __ _ __| | ___ ___| | __
+# | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ /
+# | | | | |_| | |_) | | | | (_) | (__| <
+# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
+# |___/|_|
+#
+
+general {
+ ignore_empty_input = true
+}
+
+background {
+ monitor =
+ path = $HOME/.config/ml4w/cache/blurred_wallpaper.png # only png supported for now
+}
+
+input-field {
+ monitor =
+ size = 200, 50
+ outline_thickness = 3
+ dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15 # 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 = rgb(151515)
+ inner_color = rgb(FFFFFF)
+ font_color = rgb(10, 10, 10)
+ fade_on_empty = true
+ fade_timeout = 1000 # 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 = rgb(204, 136, 34)
+ fail_color = rgb(204, 34, 34) # 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
+ swap_font_color = false # see below
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ #clock
+ text = cmd[update:1000] echo "$TIME"
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 55
+ font_family = Fira Semibold
+ position = -100, 70
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+label {
+ monitor =
+ text = $USER
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 20
+ font_family = Fira Semibold
+ position = -100, 160
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+image {
+ monitor =
+ path = $HOME/.config/ml4w/cache/square_wallpaper.png
+ size = 280 # lesser side if not 1:1 ratio
+ rounding = -1 # negative values mean circle
+ border_size = 4
+ border_color = rgb(221, 221, 221)
+ rotate = 0 # degrees, counter-clockwise
+ reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
+# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
+ position = 0, 200
+ halign = center
+ valign = center
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprpaper.conf b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprpaper.conf
new file mode 100644
index 0000000..7456413
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/hyprpaper.conf
@@ -0,0 +1,3 @@
+preload = $HOME/.config/ml4w/assets/blank.png
+wallpaper = ,$HOME/.config/ml4w/assets/blank.png
+splash = false
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/cleanup.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/cleanup.sh
new file mode 100644
index 0000000..af4196d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/cleanup.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ____ _
+# / ___| | ___ __ _ _ __ _ _ _ __
+# | | | |/ _ \/ _` | '_ \| | | | '_ \
+# | |___| | __/ (_| | | | | |_| | |_) |
+# \____|_|\___|\__,_|_| |_|\__,_| .__/
+# |_|
+#
+
+# Remove gamemode flag
+if [ -f ~/.cache/gamemode ] ;then
+ rm ~/.cache/gamemode
+ echo ":: ~/.cache/gamemode removed"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/disabledm.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/disabledm.sh
new file mode 100644
index 0000000..ee5e612
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/disabledm.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+clear
+figlet -f smslant "Disable DM"
+echo "Hyprland recommends the start with the tty login."
+echo "You can deactivate the current display manager (if exists)."
+echo ""
+echo "-> Do you really want to deactivate the display manager?"
+while true; do
+ read -p "Do you want to enable the sddm display manager and setup theme? (Yy/Nn): " yn
+ case $yn in
+ [Yy]* )
+ if [ -f /etc/systemd/system/display-manager.service ]; then
+ sudo rm /etc/systemd/system/display-manager.service
+ echo "Current display manager removed."
+ else
+ echo "No active display manager found."
+ fi
+ break;;
+ [Nn]* )
+ exit
+ break;;
+ * ) echo "Please answer yes or no.";;
+ esac
+done
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/gamemode.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/gamemode.sh
new file mode 100644
index 0000000..09708fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/gamemode.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ____ _
+# / ___| __ _ _ __ ___ ___ _ __ ___ ___ __| | ___
+# | | _ / _` | '_ ` _ \ / _ \ '_ ` _ \ / _ \ / _` |/ _ \
+# | |_| | (_| | | | | | | __/ | | | | | (_) | (_| | __/
+# \____|\__,_|_| |_| |_|\___|_| |_| |_|\___/ \__,_|\___|
+#
+#
+
+if [ -f ~/.cache/gamemode ] ;then
+ hyprctl reload
+ rm ~/.cache/gamemode
+ notify-send "Gamemode deactivated" "Animations and blur enabled"
+else
+ 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"
+ touch ~/.cache/gamemode
+ notify-send "Gamemode activated" "Animations and blur disabled"
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/gtk.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/gtk.sh
new file mode 100644
index 0000000..1b080de
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/gtk.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# ____ _____ _ __
+# / ___|_ _| |/ /
+# | | _ | | | ' /
+# | |_| | | | | . \
+# \____| |_| |_|\_\
+#
+# Source: https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
+
+config="$HOME/.config/gtk-3.0/settings.ini"
+if [ ! -f "$config" ]; then exit 1; fi
+
+gnome_schema="org.gnome.desktop.interface"
+gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_size="$(grep 'gtk-cursor-theme-size' "$config" | sed 's/.*\s*=\s*//')"
+font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
+terminal=$(cat $HOME/.config/ml4w/settings/terminal.sh)
+
+echo $gtk_theme
+echo $icon_theme
+echo $cursor_theme
+echo $cursor_size
+echo $font_name
+echo $terminal
+
+gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
+gsettings set "$gnome_schema" icon-theme "$icon_theme"
+gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
+gsettings set "$gnome_schema" font-name "$font_name"
+gsettings set "$gnome_schema" color-scheme "prefer-dark"
+
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal "$terminal"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal use-generic-terminal-name "true"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal keybindings "t"
+
+if [ -f ~/.config/hypr/conf/cursor.conf ] ;then
+ echo "exec-once = hyprctl setcursor $cursor_theme $cursor_size" > ~/.config/hypr/conf/cursor.conf
+ hyprctl setcursor $cursor_theme $cursor_size
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/hypridle.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/hypridle.sh
new file mode 100644
index 0000000..6296fa0
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/hypridle.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | | |_ _ _ __ _ __(_) __| | | ___
+# | |_| | | | | '_ \| '__| |/ _` | |/ _ \
+# | _ | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+
+SERVICE="hypridle"
+if [[ "$1" == "status" ]]; then
+ sleep 1
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ echo '{"text": "RUNNING", "class": "active", "tooltip": "Screen locking active\nLeft: Deactivate\nRight: Lock Screen"}'
+ else
+ echo '{"text": "NOT RUNNING", "class": "notactive", "tooltip": "Screen locking deactivated\nLeft: Activate\nRight: Lock Screen"}'
+ fi
+fi
+if [[ "$1" == "toggle" ]]; then
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ killall hypridle
+ else
+ hypridle
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/hyprshade.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/hyprshade.sh
new file mode 100644
index 0000000..037441c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/hyprshade.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ _ _ __ _ __ ___| |__ __ _ __| | ___
+# | |_| | | | | '_ \| '__/ __| '_ \ / _` |/ _` |/ _ \
+# | _ | |_| | |_) | | \__ \ | | | (_| | (_| | __/
+# |_| |_|\__, | .__/|_| |___/_| |_|\__,_|\__,_|\___|
+# |___/|_|
+#
+
+if [[ "$1" == "rofi" ]]; then
+
+ # Open rofi to select the Hyprshade filter for toggle
+ options="$(hyprshade ls)\noff"
+
+ # Open rofi
+ choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-hyprshade.rasi -i -no-show-icons -l 4 -width 30 -p "Hyprshade")
+ if [ ! -z $choice ] ;then
+ echo "hyprshade_filter=\"$choice\"" > ~/.config/ml4w/settings/hyprshade.sh
+ if [ "$choice" == "off" ] ;then
+ hyprshade off
+ notify-send "Hyprshade deactivated"
+ echo ":: hyprshade turned off"
+ else
+ notify-send "Changing Hyprshade to $choice" "Toggle shader with SUPER+SHIFT+S"
+ fi
+ fi
+
+else
+
+ # Toggle Hyprshade based on the selected filter
+ hyprshade_filter="blue-light-filter-50"
+
+ # Check if hyprshade.sh settings file exists and load
+ if [ -f ~/.config/ml4w/settings/hyprshade.sh ] ;then
+ source ~/.config/ml4w/settings/hyprshade.sh
+ fi
+
+ # Toggle Hyprshade
+ if [ "$hyprshade_filter" != "off" ] ;then
+ if [ -z $(hyprshade current) ] ;then
+ echo ":: hyprshade is not running"
+ hyprshade on $hyprshade_filter
+ notify-send "Hyprshade activated" "with $(hyprshade current)"
+ echo ":: hyprshade started with $(hyprshade current)"
+ else
+ notify-send "Hyprshade deactivated"
+ echo ":: Current hyprshade $(hyprshade current)"
+ echo ":: Switching hyprshade off"
+ hyprshade off
+ fi
+ else
+ hyprshade off
+ echo ":: hyprshade turned off"
+ fi
+
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/init-wallpaper-engine.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/init-wallpaper-engine.sh
new file mode 100644
index 0000000..6751156
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/init-wallpaper-engine.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# __ ______ _____ _
+# \ \ / / _ \ | ____|_ __ __ _(_)_ __ ___
+# \ \ /\ / /| |_) | | _| | '_ \ / _` | | '_ \ / _ \
+# \ V V / | __/ | |___| | | | (_| | | | | | __/
+# \_/\_/ |_| |_____|_| |_|\__, |_|_| |_|\___|
+# |___/
+#
+
+wallpaper_engine=$(cat $HOME/.config/ml4w/settings/wallpaper-engine.sh)
+if [ "$wallpaper_engine" == "swww" ] ;then
+ # swww
+ echo ":: Using swww"
+ swww init
+ swww-daemon --format xrgb
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+elif [ "$wallpaper_engine" == "hyprpaper" ] ;then
+ # hyprpaper
+ echo ":: Using hyprpaper"
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+else
+ echo ":: Wallpaper Engine disabled"
+ ~/.config/hypr/scripts/wallpaper.sh init
+fi
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/keybindings.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/keybindings.sh
new file mode 100644
index 0000000..d0b9150
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/keybindings.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | _____ _ _| |__ (_)_ __ __| (_)_ __ __ _ ___
+# | |/ / _ \ | | | '_ \| | '_ \ / _` | | '_ \ / _` / __|
+# | < __/ |_| | |_) | | | | | (_| | | | | | (_| \__ \
+# |_|\_\___|\__, |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___/
+# |___/ |___/
+#
+# -----------------------------------------------------
+# Get keybindings location based on variation
+# -----------------------------------------------------
+config_file=$(cat ~/.config/hypr/conf/keybinding.conf)
+config_file=${config_file/source = ~/}
+config_file=${config_file/source=~/}
+
+# -----------------------------------------------------
+# Path to keybindings config file
+# -----------------------------------------------------
+config_file="/home/$USER$config_file"
+echo "Reading from: $config_file"
+
+keybinds=""
+
+# Detect Start String
+while read -r line
+do
+ if [[ "$line" == "bind"* ]]; then
+
+ line="$(echo "$line" | sed 's/$mainMod/SUPER/g')"
+ line="$(echo "$line" | sed 's/bind = //g')"
+ line="$(echo "$line" | sed 's/bindm = //g')"
+
+ IFS='#'
+ read -a strarr <<<"$line"
+ kb_str=${strarr[0]}
+ cm_str=${strarr[1]}
+
+ IFS=','
+ read -a kbarr <<<"$kb_str"
+
+ item="${kbarr[0]} + ${kbarr[1]}"$'\r'"${cm_str:1}"
+ keybinds=$keybinds$item$'\n'
+ fi
+done < "$config_file"
+
+sleep 0.2
+rofi -dmenu -i -markup -eh 2 -replace -p "Keybinds" -config ~/.config/rofi/config-compact.rasi <<< "$keybinds"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/loadconfig.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/loadconfig.sh
new file mode 100644
index 0000000..a51ce6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/loadconfig.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+hyprctl reload
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/moveTo.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/moveTo.sh
new file mode 100644
index 0000000..de2492b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/moveTo.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# __ __ _
+# | \/ | _____ _____ | |_ ___
+# | |\/| |/ _ \ \ / / _ \ | __/ _ \
+# | | | | (_) \ V / __/ | || (_) |
+# |_| |_|\___/ \_/ \___| \__\___/
+#
+
+# Function to log messages (useful for debugging)
+log_message() {
+ # echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> ~/moveto_log.txt
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
+}
+
+# Get the target workspace from the argument
+target_workspace=$1
+
+# Check if a target workspace was provided
+if [ -z "$target_workspace" ]; then
+ log_message "Error: No target workspace provided"
+ exit 1
+fi
+
+# Get the current active workspace
+current_workspace=$(hyprctl activewindow -j | jq '.workspace.id')
+
+if [ -z "$current_workspace" ]; then
+ log_message "Error: Couldn't determine current workspace"
+ exit 1
+fi
+
+log_message "Moving from workspace $current_workspace to $target_workspace"
+
+# Get all window addresses in the current workspace
+window_addresses=$(hyprctl clients -j | jq -r ".[] | select(.workspace.id == $current_workspace) | .address")
+
+# Move each window to the target workspace
+for address in $window_addresses; do
+ log_message "Moving window $address to workspace $target_workspace"
+ hyprctl dispatch movetoworkspacesilent "$target_workspace,address:$address"
+done
+
+log_message "Finished moving windows"
+
+# Switch to the target workspace
+hyprctl dispatch workspace "$target_workspace"
+
+log_message "Switched to workspace $target_workspace"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/power.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/power.sh
new file mode 100644
index 0000000..8037fbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/power.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# ____
+# | _ \ _____ _____ _ __
+# | |_) / _ \ \ /\ / / _ \ '__|
+# | __/ (_) \ V V / __/ |
+# |_| \___/ \_/\_/ \___|_|
+#
+
+# Check if eww is open
+FILE="$HOME/.cache/ml4w_sidebar"
+
+if [[ "$1" == "exit" ]]; then
+ echo ":: Exit"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ killall -9 Hyprland
+ sleep 2
+fi
+
+if [[ "$1" == "lock" ]]; then
+ echo ":: Lock"
+ sleep 0.5
+ hyprlock
+fi
+
+if [[ "$1" == "reboot" ]]; then
+ echo ":: Reboot"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl reboot
+fi
+
+if [[ "$1" == "shutdown" ]]; then
+ echo ":: Shutdown"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl poweroff
+fi
+
+if [[ "$1" == "suspend" ]]; then
+ echo ":: Suspend"
+ sleep 0.5
+ systemctl suspend
+fi
+
+if [[ "$1" == "hibernate" ]]; then
+ echo ":: Hibernate"
+ sleep 1;
+ systemctl hibernate
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/restart-hypridle.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/restart-hypridle.sh
new file mode 100644
index 0000000..fe29461
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/restart-hypridle.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+killall hypridle
+sleep 1
+hypridle &
+notify-send "hypridle has been restarted."
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/screenshot.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/screenshot.sh
new file mode 100644
index 0000000..d08557a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/screenshot.sh
@@ -0,0 +1,224 @@
+#!/bin/bash
+# ____ _ _
+# / ___| ___ _ __ ___ ___ _ __ ___| |__ ___ | |_
+# \___ \ / __| '__/ _ \/ _ \ '_ \/ __| '_ \ / _ \| __|
+# ___) | (__| | | __/ __/ | | \__ \ | | | (_) | |_
+# |____/ \___|_| \___|\___|_| |_|___/_| |_|\___/ \__|
+#
+# Based on https://github.com/hyprwm/contrib/blob/main/grimblast/screenshot.sh
+# -----------------------------------------------------
+
+# Screenshots will be stored in $HOME by default.
+# The screenshot will be moved into the screenshot directory
+
+# Add this to ~/.config/user-dirs.dirs to save screenshots in a custom folder:
+# XDG_SCREENSHOTS_DIR="$HOME/Screenshots"
+
+prompt='Screenshot'
+mesg="DIR: ~/Screenshots"
+
+# Screenshot Filename
+source ~/.config/ml4w/settings/screenshot-filename.sh
+
+# Screenshot Folder
+source ~/.config/ml4w/settings/screenshot-folder.sh
+
+# Screenshot Editor
+export GRIMBLAST_EDITOR="$(cat ~/.config/ml4w/settings/screenshot-editor.sh)"
+
+# Example for keybindings
+# bind = SUPER, p, exec, grimblast save active
+# bind = SUPER SHIFT, p, exec, grimblast save area
+# bind = SUPER ALT, p, exec, grimblast save output
+# bind = SUPER CTRL, p, exec, grimblast save screen
+
+# Options
+option_1="Immediate"
+option_2="Delayed"
+
+option_capture_1="Capture Everything"
+option_capture_2="Capture Active Display"
+option_capture_3="Capture Selection"
+
+option_time_1="5s"
+option_time_2="10s"
+option_time_3="20s"
+option_time_4="30s"
+option_time_5="60s"
+#option_time_4="Custom (in seconds)" # Roadmap or someone contribute :)
+
+list_col='1'
+list_row='2'
+
+copy='Copy'
+save='Save'
+copy_save='Copy & Save'
+edit='Edit'
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 2 -width 30 -p "Take screenshot"
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$option_1\n$option_2" | rofi_cmd
+}
+
+####
+# Choose Timer
+# CMD
+timer_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 5 -width 30 -p "Choose timer"
+}
+
+# Ask for confirmation
+timer_exit() {
+ echo -e "$option_time_1\n$option_time_2\n$option_time_3\n$option_time_4\n$option_time_5" | timer_cmd
+}
+
+# Confirm and execute
+timer_run() {
+ selected_timer="$(timer_exit)"
+ if [[ "$selected_timer" == "$option_time_1" ]]; then
+ countdown=5
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_2" ]]; then
+ countdown=10
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_3" ]]; then
+ countdown=20
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_4" ]]; then
+ countdown=30
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_5" ]]; then
+ countdown=60
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Chose Screenshot Type
+# CMD
+type_screenshot_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 3 -width 30 -p "Type of screenshot"
+}
+
+# Ask for confirmation
+type_screenshot_exit() {
+ echo -e "$option_capture_1\n$option_capture_2\n$option_capture_3" | type_screenshot_cmd
+}
+
+# Confirm and execute
+type_screenshot_run() {
+ selected_type_screenshot="$(type_screenshot_exit)"
+ if [[ "$selected_type_screenshot" == "$option_capture_1" ]]; then
+ option_type_screenshot=screen
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_2" ]]; then
+ option_type_screenshot=output
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_3" ]]; then
+ option_type_screenshot=area
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Choose to save or copy photo
+# CMD
+copy_save_editor_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 4 -width 30 -p "How to save"
+}
+
+# Ask for confirmation
+copy_save_editor_exit() {
+ echo -e "$copy\n$save\n$copy_save\n$edit" | copy_save_editor_cmd
+}
+
+# Confirm and execute
+copy_save_editor_run() {
+ selected_chosen="$(copy_save_editor_exit)"
+ if [[ "$selected_chosen" == "$copy" ]]; then
+ option_chosen=copy
+ ${1}
+ elif [[ "$selected_chosen" == "$save" ]]; then
+ option_chosen=save
+ ${1}
+ elif [[ "$selected_chosen" == "$copy_save" ]]; then
+ option_chosen=copysave
+ ${1}
+ elif [[ "$selected_chosen" == "$edit" ]]; then
+ option_chosen=edit
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+timer() {
+ if [[ $countdown -gt 10 ]]; then
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown_less_10=$((countdown - 10))
+ sleep $countdown_less_10
+ countdown=10
+ fi
+ while [[ $countdown -ne 0 ]]; do
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown=$((countdown - 1))
+ sleep 1
+ done
+}
+
+# take shots
+takescreenshot() {
+ sleep 1
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+takescreenshot_timer() {
+ sleep 1
+ timer
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+# Execute Command
+run_cmd() {
+ if [[ "$1" == '--opt1' ]]; then
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot"
+ elif [[ "$1" == '--opt2' ]]; then
+ timer_run
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot_timer"
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+$option_1)
+ run_cmd --opt1
+ ;;
+$option_2)
+ run_cmd --opt2
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/toggle-animations.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/toggle-animations.sh
new file mode 100644
index 0000000..7eedb1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/toggle-animations.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+cache_file="$HOME/.cache/toggle_animation"
+if [[ $(cat $HOME/.config/hypr/conf/animation.conf) == *"disabled"* ]]; then
+ echo ":: Toggle blocked by disabled.conf variation."
+else
+ if [ -f $cache_file ] ;then
+ hyprctl keyword animations:enabled true
+ rm $cache_file
+ else
+ hyprctl keyword animations:enabled false
+ touch $cache_file
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/toggleallfloat.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/toggleallfloat.sh
new file mode 100644
index 0000000..3fc12e2
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/toggleallfloat.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+# _ _ _ __ _ _
+# / \ | | |/ _| | ___ __ _| |_
+# / _ \ | | | |_| |/ _ \ / _` | __|
+# / ___ \| | | _| | (_) | (_| | |_
+# /_/ \_\_|_|_| |_|\___/ \__,_|\__|
+#
+
+hyprctl dispatch workspaceopt allfloat
+notify-send "Windows on this workspace toggled to floating/tiling"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-automation.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-automation.sh
new file mode 100644
index 0000000..e3d1f1e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-automation.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# _ _ __ ______
+# / \ _ _| |_ ___ \ \ / / _ \
+# / _ \| | | | __/ _ \ \ \ /\ / /| |_) |
+# / ___ \ |_| | || (_) | \ V V / | __/
+# /_/ \_\__,_|\__\___/ \_/\_/ |_|
+#
+
+sec=$(cat ~/.config/ml4w/settings/wallpaper-automation.sh)
+_setWallpaperRandomly() {
+ waypaper --random
+ echo ":: Next wallpaper in 60 seconds..."
+ sleep $sec
+ _setWallpaperRandomly
+}
+
+if [ ! -f ~/.config/ml4w/cache/wallpaper-automation ] ;then
+ touch ~/.config/ml4w/cache/wallpaper-automation
+ echo ":: Start wallpaper automation script"
+ notify-send "Wallpaper automation process started" "Wallpaper will be changed every $sec seconds."
+ _setWallpaperRandomly
+else
+ rm ~/.config/ml4w/cache/wallpaper-automation
+ notify-send "Wallpaper automation process stopped."
+ echo ":: Wallpaper automation script process $wp stopped"
+ wp=$(pgrep -f wallpaper-automation.sh)
+ kill -KILL $wp
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-cache.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-cache.sh
new file mode 100644
index 0000000..899a06a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-cache.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+generated_versions="$HOME/.config/ml4w/cache/wallpaper-generated"
+rm $generated_versions/*
+echo ":: Wallpaper cache cleared"
+notify-send "Wallpaper cache cleared"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-effects.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-effects.sh
new file mode 100644
index 0000000..83dbca8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-effects.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ ______ _____ __ __ _
+# \ \ / / _ \ | ____|/ _|/ _| ___ ___| |_ ___
+# \ \ /\ / /| |_) | | _| | |_| |_ / _ \/ __| __/ __|
+# \ V V / | __/ | |___| _| _| __/ (__| |_\__ \
+# \_/\_/ |_| |_____|_| |_| \___|\___|\__|___/
+#
+
+# Get current wallpaper
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# Open rofi to select the Hyprshade filter for toggle
+options="$(ls ~/.config/hypr/effects/wallpaper/)\noff"
+
+# Open rofi
+choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-themes.rasi -i -no-show-icons -l 5 -width 30 -p "Hyprshade")
+if [ ! -z $choice ] ;then
+ echo "$choice" > ~/.config/ml4w/settings/wallpaper-effect.sh
+ notify-send "Changing Wallpaper Effect to " "$choice"
+ waypaper --wallpaper $(cat $cache_file)
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-restore.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-restore.sh
new file mode 100644
index 0000000..2eb7d7c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper-restore.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Restore last wallpaper
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+defaultwallpaper="$HOME/wallpaper/default.jpg"
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# -----------------------------------------------------
+# Get current wallpaper
+# -----------------------------------------------------
+
+if [ -f "$cachefile" ]; then
+ sed -i "s|~|$HOME|g" "$cachefile"
+ wallpaper=$(cat $cachefile)
+ if [ -f $wallpaper ]; then
+ echo ":: Wallpaper $wallpaper exists"
+ else
+ echo ":: Wallpaper $wallpaper does not exist. Using default."
+ wallpaper=$defaultwallpaper
+ fi
+else
+ echo ":: $cachefile does not exist. Using default wallpaper."
+ wallpaper=$defaultwallpaper
+fi
+
+# -----------------------------------------------------
+# Set wallpaper
+# -----------------------------------------------------
+
+echo ":: Setting wallpaper with source image $wallpaper"
+waypaper --wallpaper "$wallpaper"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper.sh
new file mode 100644
index 0000000..49fbaac
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/wallpaper.sh
@@ -0,0 +1,172 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Check to use wallpaper cache
+# -----------------------------------------------------
+
+if [ -f ~/.config/ml4w/settings/wallpaper_cache ]; then
+ use_cache=1
+ echo ":: Using Wallpaper Cache"
+else
+ use_cache=0
+ echo ":: Wallpaper Cache disabled"
+fi
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+force_generate=0
+generatedversions="$HOME/.config/ml4w/cache/wallpaper-generated"
+waypaperrunning=$HOME/.config/ml4w/cache/waypaper-running
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+blurredwallpaper="$HOME/.config/ml4w/cache/blurred_wallpaper.png"
+squarewallpaper="$HOME/.config/ml4w/cache/square_wallpaper.png"
+rasifile="$HOME/.config/ml4w/cache/current_wallpaper.rasi"
+blurfile="$HOME/.config/ml4w/settings/blur.sh"
+defaultwallpaper="$HOME/wallpaper/default.jpg"
+wallpapereffect="$HOME/.config/ml4w/settings/wallpaper-effect.sh"
+blur="50x30"
+blur=$(cat $blurfile)
+
+# Ensures that the script only run once if wallpaper effect enabled
+if [ -f $waypaperrunning ]; then
+ rm $waypaperrunning
+ exit
+fi
+
+# Create folder with generated versions of wallpaper if not exists
+if [ ! -d $generatedversions ]; then
+ mkdir $generatedversions
+fi
+
+# -----------------------------------------------------
+# Get selected wallpaper
+# -----------------------------------------------------
+
+if [ -z $1 ]; then
+ if [ -f $cachefile ]; then
+ wallpaper=$(cat $cachefile)
+ else
+ wallpaper=$defaultwallpaper
+ fi
+else
+ wallpaper=$1
+fi
+used_wallpaper=$wallpaper
+echo ":: Setting wallpaper with source image $wallpaper"
+tmpwallpaper=$wallpaper
+
+# -----------------------------------------------------
+# Copy path of current wallpaper to cache file
+# -----------------------------------------------------
+
+if [ ! -f $cachefile ]; then
+ touch $cachefile
+fi
+echo "$wallpaper" > $cachefile
+echo ":: Path of current wallpaper copied to $cachefile"
+
+# -----------------------------------------------------
+# Get wallpaper filename
+# -----------------------------------------------------
+wallpaperfilename=$(basename $wallpaper)
+echo ":: Wallpaper Filename: $wallpaperfilename"
+
+# -----------------------------------------------------
+# Wallpaper Effects
+# -----------------------------------------------------
+
+if [ -f $wallpapereffect ]; then
+ effect=$(cat $wallpapereffect)
+ if [ ! "$effect" == "off" ]; then
+ used_wallpaper=$generatedversions/$effect-$wallpaperfilename
+ if [ -f $generatedversions/$effect-$wallpaperfilename ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper $effect-$wallpaperfilename"
+ else
+ echo ":: Generate new cached wallpaper $effect-$wallpaperfilename with effect $effect"
+ notify-send --replace-id=1 "Using wallpaper effect $effect..." "with image $wallpaperfilename" -h int:value:33
+ source $HOME/.config/hypr/effects/wallpaper/$effect
+ fi
+ echo ":: Loading wallpaper $generatedversions/$effect-$wallpaperfilename with effect $effect"
+ echo ":: Setting wallpaper with $used_wallpaper"
+ touch $waypaperrunning
+ waypaper --wallpaper $used_wallpaper
+ else
+ echo ":: Wallpaper effect is set to off"
+ fi
+else
+ effect="off"
+fi
+
+# -----------------------------------------------------
+# Execute pywal
+# -----------------------------------------------------
+
+echo ":: Execute pywal with $used_wallpaper"
+wal -q -i "$used_wallpaper"
+source "$HOME/.cache/wal/colors.sh"
+
+# -----------------------------------------------------
+# Reload Waybar
+# -----------------------------------------------------
+
+killall -SIGUSR2 waybar
+
+# -----------------------------------------------------
+# Pywalfox
+# -----------------------------------------------------
+
+if type pywalfox > /dev/null 2>&1; then
+ pywalfox update
+fi
+
+# -----------------------------------------------------
+# Created blurred wallpaper
+# -----------------------------------------------------
+
+if [ -f $generatedversions/blur-$blur-$effect-$wallpaperfilename.png ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper blur-$blur-$effect-$wallpaperfilename"
+else
+ echo ":: Generate new cached wallpaper blur-$blur-$effect-$wallpaperfilename with blur $blur"
+ # notify-send --replace-id=1 "Generate new blurred version" "with blur $blur" -h int:value:66
+ magick $used_wallpaper -resize 75% $blurredwallpaper
+ echo ":: Resized to 75%"
+ if [ ! "$blur" == "0x0" ]; then
+ magick $blurredwallpaper -blur $blur $blurredwallpaper
+ cp $blurredwallpaper $generatedversions/blur-$blur-$effect-$wallpaperfilename.png
+ echo ":: Blurred"
+ fi
+fi
+cp $generatedversions/blur-$blur-$effect-$wallpaperfilename.png $blurredwallpaper
+
+# -----------------------------------------------------
+# Create rasi file
+# -----------------------------------------------------
+
+if [ ! -f $rasifile ]; then
+ touch $rasifile
+fi
+echo "* { current-image: url(\"$blurredwallpaper\", height); }" > "$rasifile"
+
+# -----------------------------------------------------
+# Created square wallpaper
+# -----------------------------------------------------
+
+echo ":: Generate new cached wallpaper square-$wallpaperfilename"
+magick $tmpwallpaper -gravity Center -extent 1:1 $squarewallpaper
+cp $squarewallpaper $generatedversions/square-$wallpaperfilename.png
+
+# -----------------------------------------------------
+# Reload AGS
+# -----------------------------------------------------
+
+ags quit &
+sleep 0.2
+ags run &
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/xdg.sh b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/xdg.sh
new file mode 100644
index 0000000..f7d0fec
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/scripts/xdg.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# __ ______ ____
+# \ \/ / _ \ / ___|
+# \ /| | | | | _
+# / \| |_| | |_| |
+# /_/\_\____/ \____|
+#
+
+# Setup Timers
+_sleep1="0.1"
+_sleep2="0.5"
+_sleep3="2"
+
+# Kill all possible running xdg-desktop-portals
+killall -e xdg-desktop-portal-hyprland
+killall -e xdg-desktop-portal-gnome
+killall -e xdg-desktop-portal-kde
+killall -e xdg-desktop-portal-lxqt
+killall -e xdg-desktop-portal-wlr
+killall -e xdg-desktop-portal-gtk
+killall -e xdg-desktop-portal
+
+# Set required environment variables
+dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=hyprland
+
+# Stop all services
+systemctl --user stop pipewire
+systemctl --user stop wireplumber
+systemctl --user stop xdg-desktop-portal
+systemctl --user stop xdg-desktop-portal-gnome
+systemctl --user stop xdg-desktop-portal-kde
+systemctl --user stop xdg-desktop-portal-wlr
+systemctl --user stop xdg-desktop-portal-hyprland
+sleep $_sleep1
+
+# Start xdg-desktop-portal-hyprland
+/usr/lib/xdg-desktop-portal-hyprland &
+sleep $_sleep1
+
+# Start xdg-desktop-portal-gtk
+if [ -f /usr/lib/xdg-desktop-portal-gtk ] ;then
+ /usr/lib/xdg-desktop-portal-gtk &
+ sleep $_sleep1
+fi
+
+# Start xdg-desktop-portal
+/usr/lib/xdg-desktop-portal &
+sleep $_sleep2
+
+# Start required services
+systemctl --user start pipewire
+systemctl --user start wireplumber
+systemctl --user start xdg-desktop-portal
+systemctl --user start xdg-desktop-portal-hyprland
+
+# Run waybar
+sleep $_sleep3
+~/.config/waybar/launch.sh
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-25.glsl b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-25.glsl
new file mode 100644
index 0000000..149b143
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-25.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.25;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-50.glsl b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-50.glsl
new file mode 100644
index 0000000..ac5ea21
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-50.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.5;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-75.glsl b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-75.glsl
new file mode 100644
index 0000000..c8c1b23
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/blue-light-filter-75.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.75;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/invert-colors.glsl b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/invert-colors.glsl
new file mode 100644
index 0000000..a504901
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/hypr/shaders/invert-colors.glsl
@@ -0,0 +1,8 @@
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+ gl_FragColor = vec4(1.0 - pixColor.r, 1.0 - pixColor.g, 1.0 - pixColor.b, pixColor.a);
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/assets/blank.png b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/assets/blank.png
new file mode 100644
index 0000000..f7aa3f8
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/assets/blank.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/cache/current_wallpaper b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/cache/current_wallpaper
new file mode 100644
index 0000000..86d5756
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/cache/current_wallpaper
@@ -0,0 +1 @@
+/home/gib/wallpaper/default.jpg
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/cache/current_wallpaper.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/cache/current_wallpaper.rasi
new file mode 100644
index 0000000..1c8f319
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/cache/current_wallpaper.rasi
@@ -0,0 +1 @@
+* { current-image: url("/home/gib/wallpaper/default.jpg", height); }
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/login/issue b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/login/issue
new file mode 100644
index 0000000..d3f99f3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/login/issue
@@ -0,0 +1,11 @@
+ _ _
+ | | ___ __ _(_)_ __
+ | | / _ \\ / _' | | '_ \\
+ | |__| (_) | (_| | | | | |
+ |_____\\___/ \\__, |_|_| |_|
+ |___/
+
+Today is \d \t @ \n
+--------------------------------------------------------------
+\r (\l)
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/ags.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/ags.sh
new file mode 100644
index 0000000..8c1ba75
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/ags.sh
@@ -0,0 +1 @@
+ags run
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/cleanup.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/cleanup.sh
new file mode 100644
index 0000000..3e509c9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/cleanup.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+clear
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+figlet -f smslant "Cleanup"
+echo
+$aur_helper -Scc
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/installprinters.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/installprinters.sh
new file mode 100644
index 0000000..67812c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/installprinters.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _____ __
+# | __ \ (_) | | / ____| / _|
+# | |__) | __ _ _ __ | |_ ___ _ __ | | ___ _ __ | |_
+# | ___/ '__| | '_ \| __/ _ \ '__| | | / _ \| '_ \| _|
+# | | | | | | | | | || __/ | | |___| (_) | | | | |
+# |_| |_| |_|_| |_|\__\___|_| \_____\___/|_| |_|_|
+#
+# By @krystalsavage
+
+sleep 1
+clear
+figlet -f smslant "Printers"
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START TO INSTALL PRINTER SYSTEM NOW?" ;then
+ echo
+ echo ":: Install started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Install canceled."
+ exit;
+fi
+
+if [[ $(_isInstalledYay "timeshift") == "0" ]] ;then
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot canceled."
+ exit 130
+ else
+ echo ":: Snapshot canceled."
+ fi
+ echo
+fi
+
+yay -S cups cups-pdf cups-filters nss-mdns system-config-printer foomatic-db footmatic-db-engine foomatic-db-nonfree doomatic-db-nonfree-ppds foomatic-db-ppds cups-browsed libusb ipp-usb xdg-utils colord logrotate
+
+notify-send "Installing printer system complete"
+echo
+echo ":: Installing printer system complete"
+sleep 2
+
+if [ -f ~/.config/ml4w/settings/printer-drivers.sh ] ;then
+ if gum confirm "DO YOU WANT TO INSTALL PRINTER DRIVERS NOW?" ;then
+ echo
+ echo ":: Install started."
+ elif [ $? -eq 130 ]; then
+ exit 130
+ else
+ echo
+ echo ":: Install cancelled."
+ exit;
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/installtimeshift.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/installtimeshift.sh
new file mode 100644
index 0000000..06265ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/installtimeshift.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _____ _ _ _ __ _
+# |_ _(_)_ __ ___ ___ ___| |__ (_)/ _| |_
+# | | | | '_ ` _ \ / _ \/ __| '_ \| | |_| __|
+# | | | | | | | | | __/\__ \ | | | | _| |_
+# |_| |_|_| |_| |_|\___||___/_| |_|_|_| \__|
+#
+
+sleep 1
+clear
+figlet -f smslant "Timeshift"
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+_isInstalledAUR() {
+ package="$1";
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+timeshift_installed=$(_isInstalledAUR "timeshift")
+grubbtrfs_installed=$(_isInstalledAUR "grub-btrfs")
+
+if [[ $timeshift_installed == "0" ]] ;then
+ echo ":: Timeshift is already installed"
+else
+ if gum confirm "DO YOU WANT TO INSTALL Timeshift now?" ;then
+ $aur_helper -S timeshift
+ fi
+fi
+if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "0" ]] ;then
+ echo ":: grub-btrfs is already installed"
+else
+ echo ":: grub-btrfs is required to select a snapshot on grub bootloader."
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ fi
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/lid-improvements.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/lid-improvements.sh
new file mode 100644
index 0000000..2ffad61
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/lid-improvements.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+while IFS= read -r line; do
+ # If the line starts with # and the next line is not the lines to be added
+ if [[ $line == \#HandleLidSwitchDocked=ignore ]]; then
+ # Add the new lines
+ echo "HandleLidSwitchDocked=ignore" | sudo tee -a /etc/systemd/logind.conf > /dev/null
+ fi
+ if [[ $line == \#HoldoffTimeoutSec=5s ]]; then
+ # Add the new lines
+ echo "HoldoffTimeoutSec=5s" | sudo tee -a /etc/systemd/logind.conf > /dev/null
+ fi
+done < /etc/systemd/logind.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/pacman.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/pacman.sh
new file mode 100644
index 0000000..d6a2903
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/pacman.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# ____
+# | _ \ __ _ ___ _ __ ___ __ _ _ __
+# | |_) / _` |/ __| '_ ` _ \ / _` | '_ \
+# | __/ (_| | (__| | | | | | (_| | | | |
+# |_| \__,_|\___|_| |_| |_|\__,_|_| |_|
+#
+
+sleep 1
+clear
+figlet -f smslant "pacman.conf"
+echo
+echo ":: This script will activate or deactivate additions for your pacman.conf."
+echo
+if grep -Fq "#ParallelDownloads" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate parallel downloads?" ;then
+ sudo sed -i 's/^#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf
+ else
+ echo ":: Activation of parallel downloads skipped."
+ fi
+else
+ echo ":: Parallel downloads are already activated."
+fi
+
+if grep -Fxq "#Color" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate colors?" ;then
+ sudo sed -i 's/^#Color/Color/' /etc/pacman.conf
+ else
+ echo ":: Activation of Color skipped."
+ fi
+else
+ echo ":: Color is already activated."
+fi
+
+if grep -Fxq "#VerbosePkgLists" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate VerbosePkgLists?" ;then
+ sudo sed -i 's/^#VerbosePkgLists/VerbosePkgLists/' /etc/pacman.conf
+ else
+ echo ":: Activation of VerbosePkgLists skipped."
+ fi
+else
+ echo ":: VerbosePkgLists is already activated."
+fi
+
+if grep -Fxq "ILoveCandy" /etc/pacman.conf
+then
+ echo ":: ILoveCandy is already activated."
+else
+ if gum confirm "Do you want to activate ILoveCandy?" ;then
+ sudo sed -i '/^ParallelDownloads = .*/a ILoveCandy' /etc/pacman.conf
+ else
+ echo ":: Activation of ILoveCandy skipped."
+ fi
+fi
+echo
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/snapshot.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/snapshot.sh
new file mode 100644
index 0000000..7ce1acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/snapshot.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+# ____ _ _
+# / ___| _ __ __ _ _ __ ___| |__ ___ | |_
+# \___ \| '_ \ / _` | '_ \/ __| '_ \ / _ \| __|
+# ___) | | | | (_| | |_) \__ \ | | | (_) | |_
+# |____/|_| |_|\__,_| .__/|___/_| |_|\___/ \__|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+sleep 1
+clear
+figlet -f smslant "Snapshot"
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+_isInstalledAUR() {
+ package="$1";
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+timeshift_installed=$(_isInstalledAUR "timeshift")
+grubbtrfs_installed=$(_isInstalledAUR "grub-btrfs")
+
+if [[ $timeshift_installed == "0" ]] ;then
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ if [[ -d /boot/grub ]] ;then
+ if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "1" ]] ;then
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ else
+ exit
+ fi
+ fi
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ fi
+ echo "DONE. Snapshot $c created!"
+else
+ echo "ERROR: Timeshift is not installed."
+ if gum confirm "DO YOU WANT TO INSTALL Timeshift now?" ;then
+ $aur_helper -S timeshift
+ echo
+ echo ":: Timeshift has been installed. Please restart this script."
+ if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "1" ]] ;then
+ echo ":: grub-btrfs is required to select a snapshot on grub bootloader."
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ else
+ exit
+ fi
+ fi
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/unlock-pacman.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/unlock-pacman.sh
new file mode 100644
index 0000000..33b7de0
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/arch/unlock-pacman.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+sleep 1
+if [ -f /var/lib/pacman/db.lck ]; then
+ sudo rm /var/lib/pacman/db.lck
+ echo ":: Unlock complete"
+else
+ echo ":: Pacman database is not locked"
+fi
+sleep 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/cliphist.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/cliphist.sh
new file mode 100644
index 0000000..b9a2acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/cliphist.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# ____ _ _ _ _ _
+# / ___| (_)_ __ | |__ (_)___| |_
+# | | | | | '_ \| '_ \| / __| __|
+# | |___| | | |_) | | | | \__ \ |_
+# \____|_|_| .__/|_| |_|_|___/\__|
+# |_|
+#
+
+case $1 in
+ d) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist delete
+ ;;
+
+ w) if [ `echo -e "Clear\nCancel" | rofi -dmenu -config ~/.config/rofi/config-short.rasi` == "Clear" ] ; then
+ cliphist wipe
+ fi
+ ;;
+
+ *) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist decode | wl-copy
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/figlet.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/figlet.sh
new file mode 100644
index 0000000..7a5ff4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/figlet.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+figlet -f smslant "Figlet"
+echo
+# ------------------------------------------------
+# Script to create ascii font based header on user input
+# and copy the result to the clipboard
+# -----------------------------------------------------
+
+read -p "Enter the text for ascii encoding: " mytext
+
+if [ -f ~/figlet.txt ]; then
+ touch ~/figlet.txt
+fi
+
+echo "cat <<\"EOF\"" > ~/figlet.txt
+figlet -f smslant "$mytext" >> ~/figlet.txt
+echo "" >> ~/figlet.txt
+echo "EOF" >> ~/figlet.txt
+
+lines=$( cat ~/figlet.txt )
+wl-copy "$lines"
+xclip -sel clip ~/figlet.txt
+
+echo "Text copied to clipboard!"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/installupdates.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/installupdates.sh
new file mode 100644
index 0000000..b4605b5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/installupdates.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# ____ __ ____ __ __
+# / _/__ ___ / /____ _/ / / __ _____ ___/ /__ _/ /____ ___
+# _/ // _ \(_- __/ _ `/ / / / // / _ \/ _ / _ `/ __/ -_|_-<
+# /___/_//_/___/\__/\_,_/_/_/ \_,_/ .__/\_,_/\_,_/\__/\__/___/
+# /_/
+#
+
+sleep 1
+clear
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+figlet -f smslant "Updates"
+echo
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START THE UPDATE NOW?" ;then
+ echo
+ echo ":: Update started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Update canceled."
+ exit;
+fi
+
+_isInstalled() {
+ package="$1";
+ case $install_platform in
+ arch)
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ ;;
+ fedora)
+ check="$(dnf repoquery --quiet --installed ""${package}*"")"
+ ;;
+ *)
+ ;;
+ esac
+
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+echo 1; #'1' means 'false' in Bash
+return; #false
+}
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ if [[ $(_isInstalled "timeshift") == "0" ]] ;then
+ echo
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot skipped."
+ exit 130
+ else
+ echo ":: Snapshot skipped."
+ fi
+ echo
+ fi
+
+ $aur_helper
+
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ fedora)
+ sudo dnf upgrade
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ *)
+ echo ":: ERROR - Platform not supported"
+ echo "Press [ENTER] to close."
+ read
+ ;;
+esac
+
+notify-send "Update complete"
+echo
+echo ":: Update complete"
+echo
+echo
+
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/ml4w-autostart.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/ml4w-autostart.sh
new file mode 100644
index 0000000..d153c4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/ml4w-autostart.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# Compare installed version with running dotfiles
+if [ -f ~/.config/ml4w/version/compare.sh ] ;then
+ $HOME/.config/ml4w/version/compare.sh
+fi
+
+# Start ML4W Welcome App
+if [ ! -f $HOME/.cache/ml4w-welcome-autostart ] ;then
+ echo ":: Starting ML4W Welcome App ..."
+ sleep 2
+ com.ml4w.welcome
+else
+ echo ":: Autostart of ML4W Welcome App disabled."
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/nm-applet.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/nm-applet.sh
new file mode 100644
index 0000000..52af715
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/nm-applet.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ __
+# ___ __ _ ___ ____ ___ / /__ / /_
+# / _ \/ ' \/ _ `/ _ \/ _ \/ / -_) __/
+# /_//_/_/_/_/\_,_/ .__/ .__/_/\__/\__/
+# /_/ /_/
+#
+if [[ "$1" == "stop" ]]; then
+ killall nm-applet
+elif [[ "$1" == "toggle" ]]; then
+ if pgrep -x "nm-applet" > /dev/null
+ then
+ echo "Running"
+ killall nm-applet
+ else
+ echo "Stopped"
+ nm-applet --indicator &
+ fi
+else
+ nm-applet --indicator &
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/sddm-wallpaper.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/sddm-wallpaper.sh
new file mode 100644
index 0000000..eccad59
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/sddm-wallpaper.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# _ _ _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___ __| | __| |_ __ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \ / __|/ _` |/ _` | '_ ` _ \
+# | |_| | |_) | (_| | (_| | || __/ \__ \ (_| | (_| | | | | | |
+# \___/| .__/ \__,_|\__,_|\__\___| |___/\__,_|\__,_|_| |_| |_|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+sleep 1
+clear
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+current_wallpaper=$(cat "$cache_file")
+extension="${current_wallpaper##*.}"
+
+echo -e "${GREEN}"
+figlet -f smslant "SDDM Wallpaper"
+echo -e "${NONE}"
+
+sddm_theme_name="sequoia"
+sddm_asset_folder="/usr/share/sddm/themes/$sddm_theme_name/backgrounds"
+
+sddm_theme_tpl="/usr/share/ml4w-hyprland/sddm/theme.conf"
+if [ -f $HOME/.config/ml4w/settings/sddm/theme.conf ]; then
+ sddm_theme_tpl="$HOME/.config/ml4w/settings/sddm/theme.conf"
+ echo ":: Using custum theme.conf"
+fi
+
+
+if [ ! -f $current_wallpaper ]; then
+ gum spin --spinner dot --title "File $current_wallpaper does not exist" -- sleep 3
+ exit
+fi
+
+echo ":: Set the current wallpaper $current_wallpaper as SDDM wallpaper."
+echo
+
+if [ ! -d /etc/sddm.conf.d/ ]; then
+ sudo mkdir /etc/sddm.conf.d
+ echo ":: Folder /etc/sddm.conf.d created."
+fi
+
+sudo cp /usr/share/ml4w-hyprland/sddm/sddm.conf /etc/sddm.conf.d/
+echo ":: File /etc/sddm.conf.d/sddm.conf updated."
+
+sudo cp $current_wallpaper $sddm_asset_folder/current_wallpaper.$extension
+echo ":: Current wallpaper copied into $sddm_asset_folder"
+
+sudo cp $sddm_theme_tpl /usr/share/sddm/themes/$sddm_theme_name/
+sudo sed -i 's/CURRENTWALLPAPER/'"current_wallpaper.$extension"'/' /usr/share/sddm/themes/$sddm_theme_name/theme.conf
+echo ":: File theme.conf updated in /usr/share/sddm/themes/$sddm_theme_name/"
+echo
+
+echo ":: You can preview your updated SDDM Login screen. (Close it with SUPER+Q)"
+echo
+if gum confirm "Do you want to preview the result?"; then
+ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sequoia
+fi
+
+echo
+gum spin --spinner dot --title "Please logout to see the result." -- sleep 3
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/shell.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/shell.sh
new file mode 100644
index 0000000..9cb6a94
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/shell.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+# ____ _ _ _
+# / ___|| |__ ___| | |
+# \___ \| '_ \ / _ \ | |
+# ___) | | | | __/ | |
+# |____/|_| |_|\___|_|_|
+#
+
+sleep 1
+
+_isInstalledYay() {
+ package="$1";
+ check="$(yay -Qs --color always "${package}" | grep "local" | grep "\." | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+clear
+figlet -f smslant "Shell"
+
+echo ":: Please select your preferred shell"
+echo
+shell=$(gum choose "bash" "zsh" "Cancel")
+# -----------------------------------------------------
+# Activate bash
+# -----------------------------------------------------
+if [[ $shell == "bash" ]] ;then
+
+ # Change shell to bash
+ while ! chsh -s $(which bash); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now bash."
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Activate zsh
+# -----------------------------------------------------
+elif [[ $shell == "zsh" ]] ;then
+
+ # Change shell to shh
+ while ! chsh -s $(which zsh); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now zsh."
+
+ # Installing oh-my-posh
+ yay -S oh-my-posh-bin
+
+ # Installing oh-my-zsh
+ if [ ! -d "$HOME/.oh-my-zsh" ]; then
+ echo ":: Installing oh-my-zsh"
+ sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
+ cp ~/.config/ml4w/tpl/.zshrc ~/
+ else
+ echo ":: oh-my-zsh already installed"
+ fi
+
+ # Installing zsh-autosuggestions
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
+ echo ":: Installing zsh-autosuggestions"
+ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
+ else
+ echo ":: zsh-autosuggestions already installed"
+ fi
+
+ # Installing zsh-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
+ echo ":: Installing zsh-syntax-highlighting"
+ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
+ else
+ echo ":: zsh-syntax-highlighting already installed"
+ fi
+
+ # Installing fast-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/fast-syntax-highlighting" ]; then
+ echo ":: Installing fast-syntax-highlighting"
+ git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
+ else
+ echo ":: fast-syntax-highlighting already installed"
+ fi
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Cencel
+# -----------------------------------------------------
+else
+ echo ":: Changing shell canceled"
+ exit
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/thunarterminal.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/thunarterminal.sh
new file mode 100644
index 0000000..777be5f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/thunarterminal.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+clear
+if [ -f ~/.config/ml4w/settings/terminal.sh ]; then
+ terminal="$(cat ~/.config/ml4w/settings/terminal.sh)"
+ echo ":: Installing $terminal"
+ if [ -d ~/.config/xfce4 ]; then
+ if [ ! -f ~/.config/xfce4/helpers.rc ]; then
+ touch ~/.config/xfce4/helpers.rc
+ fi
+ echo "TerminalEmulator=$terminal" > ~/.config/xfce4/helpers.rc
+ echo ":: $terminal defined as Thunar Terminal Emulator."
+ else
+ echo "ERROR: ~/.config/xfce4 not found. Please open Thunar once to create it."
+ echo "Then start this script again."
+ fi
+else
+ echo "ERROR: ~/.config/ml4w/settings/terminal.sh not found"
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/updates.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/updates.sh
new file mode 100644
index 0000000..505d126
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/updates.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \/ __|
+# | |_| | |_) | (_| | (_| | || __/\__ \
+# \___/| .__/ \__,_|\__,_|\__\___||___/
+# |_|
+#
+
+# -----------------------------------------------------
+# Define threshholds for color indicators
+# -----------------------------------------------------
+
+threshhold_green=0
+threshhold_yellow=25
+threshhold_red=100
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ # -----------------------------------------------------
+ # Calculate available updates
+ # -----------------------------------------------------
+
+ # flatpak remote-ls --updates
+
+ updates=$(checkupdates-with-aur | wc -l)
+ ;;
+ fedora)
+ updates=$(dnf check-update -q|grep -c ^[a-z0-9])
+ ;;
+ *)
+ updates=0
+ ;;
+esac
+
+# -----------------------------------------------------
+# Output in JSON format for Waybar Module custom-updates
+# -----------------------------------------------------
+
+css_class="green"
+
+if [ "$updates" -gt $threshhold_yellow ]; then
+ css_class="yellow"
+fi
+
+if [ "$updates" -gt $threshhold_red ]; then
+ css_class="red"
+fi
+
+if [ "$updates" -gt $threshhold_green ]; then
+ printf '{"text": "%s", "alt": "%s", "tooltip": "Click to update your system", "class": "%s"}' "$updates" "$updates" "$css_class"
+else
+ printf '{"text": "0", "alt": "0", "tooltip": "No updates available", "class": "green"}'
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/wlogout.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/wlogout.sh
new file mode 100644
index 0000000..2b540eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/scripts/wlogout.sh
@@ -0,0 +1,5 @@
+res_w=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width')
+res_h=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .height')
+h_scale=$(hyprctl -j monitors | jq '.[] | select (.focused == true) | .scale' | sed 's/\.//')
+w_margin=$(( res_h * 27 / h_scale ))
+wlogout -b 5 -T $w_margin -B $w_margin
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/ai.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/ai.sh
new file mode 100644
index 0000000..74e2499
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/ai.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/browser.sh) --new-window https://chat.openai.com
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/aur.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/aur.sh
new file mode 100644
index 0000000..fc0e7cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/aur.sh
@@ -0,0 +1 @@
+yay
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/blur.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/blur.sh
new file mode 100644
index 0000000..4ffc966
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/blur.sh
@@ -0,0 +1 @@
+50x30
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/browser.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/browser.sh
new file mode 100644
index 0000000..dbfb8f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/browser.sh
@@ -0,0 +1 @@
+firefox
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/calculator.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/calculator.sh
new file mode 100644
index 0000000..7321b2e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/calculator.sh
@@ -0,0 +1 @@
+gnome-calculator
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/dotfiles-folder.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/dotfiles-folder.sh
new file mode 100644
index 0000000..1540f96
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/dotfiles-folder.sh
@@ -0,0 +1 @@
+Documents/Configs/hyprland/gulfport_default
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/dunst_position.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/dunst_position.sh
new file mode 100644
index 0000000..181d3ca
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/dunst_position.sh
@@ -0,0 +1 @@
+top-center
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/editor.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/editor.sh
new file mode 100644
index 0000000..4bb243e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/editor.sh
@@ -0,0 +1 @@
+gnome-text-editor
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/emojipicker.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/emojipicker.sh
new file mode 100644
index 0000000..36d697f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/emojipicker.sh
@@ -0,0 +1 @@
+smile
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/eww-monitor.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/eww-monitor.sh
new file mode 100644
index 0000000..4d18c3e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/eww-monitor.sh
@@ -0,0 +1 @@
+auto
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/filemanager.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/filemanager.sh
new file mode 100644
index 0000000..9f0175d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/filemanager.sh
@@ -0,0 +1 @@
+nautilus
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_dpms_timeout.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_dpms_timeout.sh
new file mode 100644
index 0000000..9ecf271
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_dpms_timeout.sh
@@ -0,0 +1 @@
+660
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_hyprlock_timeout.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
new file mode 100644
index 0000000..73623d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
@@ -0,0 +1 @@
+600
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_suspend_timeout.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_suspend_timeout.sh
new file mode 100644
index 0000000..2974009
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hypridle_suspend_timeout.sh
@@ -0,0 +1 @@
+1800
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hyprpaper.tpl b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hyprpaper.tpl
new file mode 100644
index 0000000..3033ff3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hyprpaper.tpl
@@ -0,0 +1,8 @@
+# Preload Wallpapers
+preload = WALLPAPER
+
+# Set Wallpapers
+wallpaper = ,WALLPAPER
+
+# Disable Splash
+splash = false
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hyprshade.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hyprshade.sh
new file mode 100644
index 0000000..1865560
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/hyprshade.sh
@@ -0,0 +1 @@
+hyprshade_filter="blue-light-filter-50"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/ml4w-sidebar.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/ml4w-sidebar.sh
new file mode 100644
index 0000000..b1ab0ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/ml4w-sidebar.sh
@@ -0,0 +1 @@
+ags toggle sidebar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/networkmanager.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/networkmanager.sh
new file mode 100644
index 0000000..b2a0141
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/networkmanager.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e nmtui
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/notification.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/notification.sh
new file mode 100644
index 0000000..936c7eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/notification.sh
@@ -0,0 +1 @@
+dunst
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/platform.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/platform.sh
new file mode 100644
index 0000000..35a143b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/platform.sh
@@ -0,0 +1 @@
+fedora
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/printer-drivers.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/printer-drivers.sh
new file mode 100644
index 0000000..444839f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/printer-drivers.sh
@@ -0,0 +1,4 @@
+# Installation of Printer Drivers
+# Please add your drivers to the package list
+# Example:
+# yay -S brother-hll2360dw-lpr-bin brother-hll2360dw-cups-bin brother-mfc-l3770cdw brscan-skey brscan4 skanpage
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-border-radius.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-border-radius.rasi
new file mode 100644
index 0000000..7cbaeeb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-border-radius.rasi
@@ -0,0 +1 @@
+* { border-radius: 2em; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-border.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-border.rasi
new file mode 100644
index 0000000..e533468
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-border.rasi
@@ -0,0 +1 @@
+* { border-width: 3px; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-font.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-font.rasi
new file mode 100644
index 0000000..a2497c3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi-font.rasi
@@ -0,0 +1 @@
+configuration { font: "Fira Sans 11"; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi_bordersize.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi_bordersize.sh
new file mode 100644
index 0000000..e440e5c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/rofi_bordersize.sh
@@ -0,0 +1 @@
+3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-editor.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-editor.sh
new file mode 100644
index 0000000..5f0900f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-editor.sh
@@ -0,0 +1 @@
+pinta
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-filename.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-filename.sh
new file mode 100644
index 0000000..f81ad3c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-filename.sh
@@ -0,0 +1 @@
+NAME="screenshot_$(date +%d%m%Y_%H%M%S).jpg"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-folder.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-folder.sh
new file mode 100644
index 0000000..a1bf821
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/screenshot-folder.sh
@@ -0,0 +1 @@
+screenshot_folder="$HOME/Pictures"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/sddm/theme.tpl b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/sddm/theme.tpl
new file mode 100644
index 0000000..f4ae01f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/sddm/theme.tpl
@@ -0,0 +1,132 @@
+[General]
+
+# Set to your screen resolution for better results
+width=1680
+height=1050
+
+backgroundColour="black"
+
+wallpaper="backgrounds/CURRENTWALLPAPER"
+
+# Whether to scale the image to fit on the screen, might leave some blank spaces
+# will scale and crop the wallpaper if left false
+fitWallpaper=false
+
+# Main font
+fontFamily="Noto Sans"
+
+# Set to a patched NerdFont if some icons don't display properly
+# or leave empty to use the main font family
+iconFont=""
+
+# Set this if fonts are the wrong size for your resolution
+fontSize=14
+
+# Whether to show icons inside menus
+iconsInMenus=true
+
+
+# [Colour_Palette]
+
+# The main colour for text and icons
+primaryColour="white"
+
+# The background colour of popup panels
+popupsBackgroundColour="white"
+
+# Used for the text and icons inside popup panels
+popupsForegroundColour="black"
+
+# Colour used for selected and focused items
+accentColour="#a7d9ea"
+
+
+# [Greeting_Screen]
+
+# Set true to be taken directly to the login screen
+skipToLogin=false
+
+# Supports Markdown formatting, leave empty to not display any text
+greeting="Welcome back!"
+
+# Adjusts the font size for the greeting message, clock and date
+fontSizeMultiplier=2
+
+# For help with date and time formatting see https://doc.qt.io/qt-5/qml-qtqml-date.html#format-strings
+clockFormat="HH:mm"
+dateFormat="dddd, dd MMMM"
+
+# Set this in case the date isn't in your system locale or you wish to use a different one
+locale=""
+
+# Styles the clock font
+# Set to 'outline' for alternate style
+clockStyle=fill
+
+# Anchor the clock to a side or corner of the screen, horizontal position is susceptible to layout mirroring
+# Syntax: vertical | horizontal
+# possible vertical values: top - center - bottom
+# and horizontal: left - center - right
+dateTimePosition="bottom right"
+
+# Defines how far away the date and time are from the edges of the screen
+dateTimePadding=55
+
+# Defines the behaviour of the sliding transition from greeting to login form
+# Set to +/- x or y
+transitionDirection="x"
+
+# [Login_Screen]
+
+# The maximum radius allowed is 16 per loop
+blurRadius=10
+blurRecursiveLoops=5
+
+# Used to dim the background
+darkenWallpaper=0.3
+
+# Purely cosmetic, has no effect on login credentials
+capitaliseUsername=false
+
+# 'mask' - hides your password by replacing the characters with something else
+# 'off' - also hides the length of your password by disabling echoing
+passwordEchoStyle=mask
+
+allowEmptyPassword=false
+
+# Set false to hide the selected session's name next to the menu icon
+displaySession=true
+
+
+# [Translations]
+# SDDM may not have translations for every element, or you might want to change some text to something else
+# setting these will override the text constants
+
+virtualKeyboard=""
+poweroff=""
+reboot=""
+suspend=""
+hibernate=""
+password=""
+username=""
+loginFailed=""
+
+
+# [Accessibility]
+
+# Set false to set all transition durations to 0
+enableAnimations=true
+
+# 'auto' - activates mirroring based on the system locale
+# 'false' - never mirror layout
+# 'true' - always mirrors
+mirrorLayout=auto
+
+# Whether the on-screen keyboard should be activated by default
+# It can always be de/activated through the accessibility panel
+virtualKeyboardStartActive=false
+
+# Normally the on-screen keyboard only shows up when text fields are focused
+# Set this true to have the keyboard always be visible once activated
+# This will render the hide button on the keyboard non-functional
+forceKeyboardVisible=false
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/software.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/software.sh
new file mode 100644
index 0000000..d10bc37
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/software.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e pacseek
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/system-monitor.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/system-monitor.sh
new file mode 100644
index 0000000..a7b1e4f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/system-monitor.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e htop
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/terminal.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/terminal.sh
new file mode 100644
index 0000000..659fb6b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/terminal.sh
@@ -0,0 +1 @@
+kitty
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-automation.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-automation.sh
new file mode 100644
index 0000000..2b82dfe
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-automation.sh
@@ -0,0 +1 @@
+60
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-effect.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-effect.sh
new file mode 100644
index 0000000..cfb931e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-effect.sh
@@ -0,0 +1 @@
+off
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-engine.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-engine.sh
new file mode 100644
index 0000000..b6923b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-engine.sh
@@ -0,0 +1 @@
+hyprpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-folder.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-folder.sh
new file mode 100644
index 0000000..8d138d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wallpaper-folder.sh
@@ -0,0 +1,2 @@
+# Enter the path to the folder that includes your wallpapers
+wallpaper_folder=$HOME/wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar-quicklinks.json b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar-quicklinks.json
new file mode 100644
index 0000000..7d61906
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar-quicklinks.json
@@ -0,0 +1,45 @@
+{
+ "custom/quicklink1": {
+ "format": "",
+ "on-click": "chromium",
+ "tooltip-format": "Open Chromium"
+ },
+ "custom/quicklink2": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip-format": "Open Firefox"
+ },
+ "custom/quicklink3": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/filemanager.sh",
+ "tooltip-format": "Open filemanager"
+ },
+ "custom/quicklink4": {
+ "format": "",
+ "on-click": "betterbird",
+ "tooltip-format": "Open Betterbird"
+ },
+ "custom/quicklink5": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/calculator.sh",
+ "tooltip-format": "Open calculator"
+ },
+ "custom/quicklink6": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/emojipicker.sh",
+ "tooltip-format": "Open emoji picker"
+ },
+ "custom/quicklinkempty": {
+ },
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/quicklink2",
+ "custom/quicklink3",
+ /*
+ "custom/quicklink4",
+ */
+ "custom/quicklinkempty"
+ ]
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar-theme.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar-theme.sh
new file mode 100644
index 0000000..60b2b59
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar-theme.sh
@@ -0,0 +1 @@
+/ml4w-modern;/ml4w-modern/light
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_appmenu.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_appmenu.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_appmenu.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_backlight.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_backlight.sh
new file mode 100644
index 0000000..c1f22fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_backlight.sh
@@ -0,0 +1 @@
+False
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_chatgpt.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_chatgpt.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_chatgpt.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_custom_timedateformat.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_custom_timedateformat.sh
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_dateformat.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_dateformat.sh
new file mode 100644
index 0000000..05696fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_dateformat.sh
@@ -0,0 +1 @@
+%a
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_network.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_network.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_network.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_quicklinks.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_quicklinks.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_quicklinks.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_screenlock.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_screenlock.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_screenlock.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_settings.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_settings.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_settings.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_systray.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_systray.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_systray.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_taskbar.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_taskbar.sh
new file mode 100644
index 0000000..c1f22fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_taskbar.sh
@@ -0,0 +1 @@
+False
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_timeformat.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_timeformat.sh
new file mode 100644
index 0000000..3d87f12
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_timeformat.sh
@@ -0,0 +1 @@
+%H:%M
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_timezone.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_timezone.sh
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_toggle.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_toggle.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_toggle.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_window.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_window.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_window.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_workspaces.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_workspaces.sh
new file mode 100644
index 0000000..7813681
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/waybar_workspaces.sh
@@ -0,0 +1 @@
+5
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wlogout-parameters.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wlogout-parameters.sh
new file mode 100644
index 0000000..50e2452
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/settings/wlogout-parameters.sh
@@ -0,0 +1 @@
+-b 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/tpl/.zshrc b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/tpl/.zshrc
new file mode 100644
index 0000000..9968f7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/tpl/.zshrc
@@ -0,0 +1,23 @@
+# _
+# _______| |__ _ __ ___
+# |_ / __| '_ \| '__/ __|
+# _ / /\__ \ | | | | | (__
+# (_)___|___/_| |_|_| \___|
+#
+# -----------------------------------------------------
+# ML4W zshrc loader
+# -----------------------------------------------------
+
+# DON'T CHANGE THIS FILE
+
+# You can define your custom configuration by adding
+# files in ~/.config/zshrc
+# or by creating a folder ~/.config/zshrc/custom
+# with you own zshrc configuration
+# -----------------------------------------------------
+
+if [ -d ~/.config/zshrc/custom ] ;then
+ for f in ~/.config/zshrc/custom/*; do source $f; done
+else
+ for f in ~/.config/zshrc/*; do source $f; done
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/compare.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/compare.sh
new file mode 100644
index 0000000..1b18b98
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/compare.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Compare installed version with used version
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+if [ -f /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name ] ;then
+ installed_version=$(cat /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name)
+ used_version=$(cat ~/.config/ml4w/version/name)
+ if [[ $(testvercomp $used_version $installed_version "<") == "0" ]] ;then
+ notify-send "Please run ml4w-hyprland-setup" "Installed version is newer then the version you're currently using."
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/library.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/library.sh
new file mode 100644
index 0000000..94e5fbe
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/library.sh
@@ -0,0 +1,42 @@
+vercomp () {
+ if [[ $1 == $2 ]]
+ then
+ return 0
+ fi
+ local IFS=.
+ local i ver1=($1) ver2=($2)
+ # fill empty fields in ver1 with zeros
+ for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
+ do
+ ver1[i]=0
+ done
+ for ((i=0; i<${#ver1[@]}; i++))
+ do
+ if ((10#${ver1[i]:=0} > 10#${ver2[i]:=0}))
+ then
+ return 1
+ fi
+ if ((10#${ver1[i]} < 10#${ver2[i]}))
+ then
+ return 2
+ fi
+ done
+ return 0
+}
+
+testvercomp () {
+ vercomp $1 $2
+ case $? in
+ 0) op='=';;
+ 1) op='>';;
+ 2) op='<';;
+ esac
+ if [[ $op != $3 ]]
+ then
+ # No update available
+ echo "1"
+ else
+ # Update available
+ echo "0"
+ fi
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/name b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/name
new file mode 100644
index 0000000..92db042
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/name
@@ -0,0 +1 @@
+2.9.7.4
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/update.sh b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/update.sh
new file mode 100644
index 0000000..efe9403
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ml4w/version/update.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Check for updates
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+# Get latest tag from GitHub
+get_latest_release() {
+ v_online=$(curl --silent "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=ml4w-hyprland")
+ v_full_online=$(grep -m 1 'pkgver' <<< $v_online | sed 's/^$/pkgver/')
+ echo ${v_full_online/pkgver=/}
+}
+
+# Check for internet connection
+if ping -q -c 1 -W 1 google.com >/dev/null; then
+
+ version=$(cat ~/.config/ml4w/version/name)
+ online=$(get_latest_release "mylinuxforwork/hyprland-dotfiles")
+ echo $version "<" $online
+ testvercomp $version $online "<"
+else
+ # Network is down
+ echo "1"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/nwg-dock-hyprland/launch.sh b/configs/dotfiles/hyprland/gulfport_default/.config/nwg-dock-hyprland/launch.sh
new file mode 100644
index 0000000..af98c1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/nwg-dock-hyprland/launch.sh
@@ -0,0 +1,9 @@
+# ___ __
+# / _ \___ ____/ /__
+# / // / _ \/ __/ '_/
+# /____/\___/\__/_/\_\
+#
+
+if [ -f $HOME/.config/ml4w/settings/nwg-dock-hyprland.sh ] ;then
+ nwg-dock-hyprland -i 32 -w 5 -mb 10 -ml 10 -mr 10 -x -c "rofi -show drun"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/nwg-dock-hyprland/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/nwg-dock-hyprland/style.css
new file mode 100644
index 0000000..20a6067
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/nwg-dock-hyprland/style.css
@@ -0,0 +1,43 @@
+window {
+ background: rgba(0, 0, 0, 0.8);
+ border-radius: 10px;
+ border-style: solid;
+ border-width: 3px;
+ border-color: #ffffff;
+ opacity:0.8;
+}
+
+#box {
+ /* Define attributes of the box surrounding icons here */
+ padding: 10px
+}
+
+#active {
+ /* This is to underline the button representing the currently active window */
+ border-bottom: solid 0px;
+ border-color: #FFFFFF
+}
+
+button, image {
+ background: none;
+ border-style: none;
+ box-shadow: none;
+ color: #999
+}
+
+button {
+ padding: 4px;
+ margin-left: 4px;
+ margin-right: 4px;
+ color: #eee;
+ font-size: 12px
+}
+
+button:hover {
+ background-color: rgba(255, 255, 255, 0.15);
+ border-radius: 10px;
+}
+
+button:focus {
+ box-shadow: none
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ohmyposh/EDM115-newline.omp.json b/configs/dotfiles/hyprland/gulfport_default/.config/ohmyposh/EDM115-newline.omp.json
new file mode 100644
index 0000000..ce4f834
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ohmyposh/EDM115-newline.omp.json
@@ -0,0 +1,192 @@
+{
+ "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
+ "transient_prompt": {
+ "template": " ❯❯ {{ .AbsolutePWD }} : ",
+ "foreground": "#f8f8f2",
+ "background": "transparent",
+ "newline": true
+ },
+ "blocks": [
+ {
+ "type": "prompt",
+ "alignment": "left",
+ "segments": [
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "\n\u256d\u2500",
+ "foreground": "#f8f8f2",
+ "type": "text",
+ "style": "plain"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "leading_diamond": "\ue0b6",
+ "template": "{{ .UserName }}",
+ "foreground": "#f8f8f2",
+ "background": "#282a36",
+ "type": "session",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "\udb85\udc0b",
+ "foreground": "#ff5555",
+ "powerline_symbol": "\ue0b0",
+ "background": "#282a36",
+ "type": "root",
+ "style": "powerline"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "{{ .Icon }} ",
+ "foreground": "#f8f8f2",
+ "powerline_symbol": "\ue0b0",
+ "background": "#282a36",
+ "type": "os",
+ "style": "powerline"
+ },
+ {
+ "properties": {
+ "cache_duration": "none",
+ "style": "full"
+ },
+ "trailing_diamond": "\ue0b4",
+ "template": " \udb80\ude56 {{ path .Path .Location }}",
+ "foreground": "#282a36",
+ "background": "#cccccc",
+ "type": "path",
+ "style": "diamond"
+ }
+ ]
+ },
+ {
+ "type": "prompt",
+ "alignment": "right",
+ "segments": [
+ {
+ "properties": {
+ "branch_icon": "",
+ "cache_duration": "none",
+ "display_changing_color": true,
+ "fetch_status": true,
+ "fetch_upstream_icon": true,
+ "full_branch_path": true
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue725 ({{ url .UpstreamIcon .UpstreamURL }} {{ url .HEAD .UpstreamURL }}){{ if gt .Ahead 0 }}<#50fa7b> +{{ .Ahead }}>{{ end }}{{ if gt .Behind 0 }}<#ff5555> -{{ .Behind }}>{{ end }}{{ if .Working.Changed }}<#f8f8f2> \uf044 {{ .Working.String }}>{{ end }}{{ if .Staging.Changed }}<#f8f8f2> \uf046 {{ .Staging.String }}>{{ end }}",
+ "foreground": "#282a36",
+ "background": "#ffb86c",
+ "type": "git",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue718 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#50fa7b",
+ "type": "node",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files",
+ "extensions": [
+ "package-lock.json"
+ ]
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue71e {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ff5555",
+ "type": "npm",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files",
+ "extensions": [
+ "pnpm-lock.yaml"
+ ]
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\udb80\udec1 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ffb86c",
+ "type": "pnpm",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files"
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue73c {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#50fa7b",
+ "type": "python",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue738 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ff79c6",
+ "type": "java",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\uf308 {{ .Context }}",
+ "foreground": "#282a36",
+ "background": "#8be9fd",
+ "type": "docker",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue73d {{ .Full }}",
+ "foreground": "#f8f8f2",
+ "background": "#6272a4",
+ "type": "php",
+ "style": "diamond"
+ }
+ ]
+ },
+ {
+ "type": "prompt",
+ "alignment": "left",
+ "segments": [
+ {
+ "properties": {
+ "always_enabled": true,
+ "cache_duration": "none"
+ },
+ "template": "\u2570\u2500 ❯❯",
+ "foreground": "#f8f8f2",
+ "type": "text",
+ "style": "diamond"
+ }
+ ],
+ "newline": true
+ }
+ ],
+ "version": 3,
+ "patch_pwsh_bleed": true,
+ "final_space": true
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/ohmyposh/zen.toml b/configs/dotfiles/hyprland/gulfport_default/.config/ohmyposh/zen.toml
new file mode 100644
index 0000000..832848d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/ohmyposh/zen.toml
@@ -0,0 +1,74 @@
+#:schema https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
+
+version = 2
+final_space = true
+console_title_template = '{{ .Shell }} in {{ .Folder }}'
+
+[[blocks]]
+ type = 'prompt'
+ alignment = 'left'
+ newline = true
+
+ [[blocks.segments]]
+ type = 'path'
+ style = 'plain'
+ background = 'transparent'
+ foreground = 'blue'
+ template = '{{ .Path }}'
+
+ [blocks.segments.properties]
+ style = 'full'
+
+ [[blocks.segments]]
+ type = 'git'
+ style = 'plain'
+ foreground = 'p:grey'
+ background = 'transparent'
+ template = ' {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}*{{ end }} {{ if gt .Behind 0 }}⇣{{ end }}{{ if gt .Ahead 0 }}⇡{{ end }}>'
+
+ [blocks.segments.properties]
+ branch_icon = ''
+ commit_icon = '@'
+ fetch_status = true
+
+[[blocks]]
+ type = 'rprompt'
+ overflow = 'hidden'
+
+ [[blocks.segments]]
+ type = 'executiontime'
+ style = 'plain'
+ foreground = 'yellow'
+ background = 'transparent'
+ template = '{{ .FormattedMs }}'
+
+ [blocks.segments.properties]
+ threshold = 5000
+
+[[blocks]]
+ type = 'prompt'
+ alignment = 'left'
+ newline = true
+
+ [[blocks.segments]]
+ type = 'text'
+ style = 'plain'
+ foreground_templates = [
+ "{{if gt .Code 0}}red{{end}}",
+ "{{if eq .Code 0}}magenta{{end}}",
+ ]
+ background = 'transparent'
+ template = '❯'
+
+[transient_prompt]
+ foreground_templates = [
+ "{{if gt .Code 0}}red{{end}}",
+ "{{if eq .Code 0}}magenta{{end}}",
+ ]
+ background = 'transparent'
+ template = '❯ '
+
+[secondary_prompt]
+ foreground = 'magenta'
+ background = 'transparent'
+ template = '❯❯ '
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/qt6ct/qt6ct.conf b/configs/dotfiles/hyprland/gulfport_default/.config/qt6ct/qt6ct.conf
new file mode 100644
index 0000000..e5ace90
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/qt6ct/qt6ct.conf
@@ -0,0 +1,32 @@
+[Appearance]
+color_scheme_path=/usr/share/qt6ct/colors/darker.conf
+custom_palette=true
+icon_theme=breeze-dark
+standard_dialogs=default
+style=Breeze
+
+[Fonts]
+fixed="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+general="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=0
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+gui_effects=@Invalid()
+keyboard_scheme=2
+menus_have_icons=true
+show_shortcuts_in_context_menus=true
+stylesheets=@Invalid()
+toolbutton_style=4
+underline_shortcut=1
+wheel_scroll_lines=3
+
+[SettingsWindow]
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x4\xe1\0\0\x2\x97\0\0\0\0\0\0\0\0\xff\xff\xff\xfe\xff\xff\xff\xfe\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x4\xe1\0\0\x2\x97)
+
+[Troubleshooting]
+force_raster_widgets=1
+ignored_applications=@Invalid()
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-cliphist.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-cliphist.rasi
new file mode 100644
index 0000000..a2cbd7a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-cliphist.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-compact.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-compact.rasi
new file mode 100644
index 0000000..4e59ac5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-compact.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-hyprshade.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-hyprshade.rasi
new file mode 100644
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-hyprshade.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-old.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-old.rasi
new file mode 100644
index 0000000..06fb55f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-old.rasi
@@ -0,0 +1,266 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: "APPS";
+ display-run: "RUN";
+ display-filebrowser: "FILES";
+ display-window: "WINDOW";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@import "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+/* ---- Window ---- */
+window {
+ width: 900px;
+ x-offset: 0px;
+ y-offset: 0px;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: #FFFFFF;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+/* ---- Mainbox ---- */
+mainbox {
+ enabled: true;
+ orientation: horizontal;
+ spacing: 0px;
+ margin: 0px;
+ background-color: @background;
+ background-image: @current-image;
+ children: ["imagebox","listbox"];
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 18px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "inputbar", "dummy", "mode-switcher" ];
+}
+
+/* ---- Listbox ---- */
+listbox {
+ spacing: 20px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "message", "listview" ];
+}
+
+/* ---- Dummy ---- */
+dummy {
+ background-color: transparent;
+}
+
+/* ---- Inputbar ---- */
+inputbar {
+ enabled: true;
+ text-color: @foreground;
+ spacing: 10px;
+ padding: 15px;
+ border-radius: 10px;
+ border-color: @foreground;
+ background-color: @background;
+ children: [ "textbox-prompt-colon", "entry" ];
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "";
+ padding: 0px 5px 0px 0px;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+entry {
+ enabled: true;
+ background-color: transparent;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+/* ---- Mode Switcher ---- */
+mode-switcher{
+ enabled: true;
+ spacing: 20px;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+button {
+ padding: 10px;
+ border-radius: 10px;
+ background-color: @background;
+ text-color: inherit;
+ cursor: pointer;
+ border: 0px;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+/* ---- Listview ---- */
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ spacing: 0px;
+ padding: 10px;
+ margin: 0px;
+ background-color: @background;
+ border:0px;
+}
+
+/* ---- Element ---- */
+element {
+ enabled: true;
+ padding: 10px;
+ margin: 5px;
+ cursor: pointer;
+ background-color: @background;
+ border-radius: 10px;
+ border: @border-width;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 32px;
+ cursor: inherit;
+}
+
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border:0px;
+ margin:20px 0px 0px 0px;
+ padding:0px;
+ spacing:0px;
+ border-radius: 10px;
+}
+
+textbox {
+ padding: 15px;
+ margin: 0px;
+ border-radius: 0px;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 15px;
+ border-radius: 20px;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-screenshot.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-screenshot.rasi
new file mode 100644
index 0000000..d4e70ed
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-screenshot.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 0em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-short.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-short.rasi
new file mode 100644
index 0000000..dcb8cd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-short.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 20em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 2;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-themes.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-themes.rasi
new file mode 100644
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config-themes.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config.rasi
new file mode 100644
index 0000000..50b759b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/rofi/config.rasi
@@ -0,0 +1,241 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ height: 35em;
+ width: 56em;
+ transparency: "real";
+ fullscreen: false;
+ enabled: true;
+ cursor: "default";
+ spacing: 0em;
+ padding: 0em;
+ border: @border-width;
+ border-color: @color11;
+ border-radius: @border-radius;
+ background-color: @background;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: vertical;
+ children: [ "inputbar" , "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 5em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 0em 0em 1em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: horizontal;
+ children: [ "listview" , "mode-switcher" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1.5em;
+ spacing: 0.5em;
+ enabled: true;
+ columns: 2;
+ lines: 3;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ spacing: 0em;
+ padding: 0.5em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 3em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.1;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+// Error message //
+error-message {
+ text-color: @foreground;
+ background-color: @background;
+ text-transform: capitalize;
+ children: [ "textbox" ];
+}
+
+textbox {
+ text-color: inherit;
+ background-color: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/vim/.vimrc b/configs/dotfiles/hyprland/gulfport_default/.config/vim/.vimrc
new file mode 100644
index 0000000..44f1ead
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/vim/.vimrc
@@ -0,0 +1,72 @@
+" _ _ _
+" | \ | | ___ _____ _(_)_ __ ___
+" | \| |/ _ \/ _ \ \ / / | '_ ` _ \
+" | |\ | __/ (_) \ V /| | | | | | |
+" |_| \_|\___|\___/ \_/ |_|_| |_| |_|
+"
+" by Stephan Raabe (2023)
+" -----------------------------------------------------
+
+" Add line numbers
+set number
+
+" Disable compatibility with vi which can cause unexpected issues.
+set nocompatible
+
+" Enable type file detection. Vim will be able to try to detect the type of file in use.
+filetype on
+
+" Enable plugins and load plugin for the detected file type.
+filetype plugin on
+
+" Load an indent file for the detected file type.
+filetype indent on
+
+" Turn syntax highlighting on.
+syntax on
+
+" Set shift width to 4 spaces.
+set shiftwidth=4
+
+" Set tab width to 4 columns.
+set tabstop=4
+
+" Use space characters instead of tabs.
+set expandtab
+
+" Do not save backup files.
+set nobackup
+
+" Do not let cursor scroll below or above N number of lines when scrolling.
+set scrolloff=10
+
+" Set Mouse support
+set mouse=a
+
+" Do not wrap lines. Allow long lines to extend as far as the line goes.
+" set nowrap
+
+" While searching though a file incrementally highlight matching characters as you type.
+set incsearch
+
+" Ignore capital letters during search.
+set ignorecase
+
+" Override the ignorecase option if searching for capital letters.
+" This will allow you to search specifically for capital letters.
+set smartcase
+
+" Show partial command you type in the last line of the screen.
+set showcmd
+
+" Show the mode you are on the last line.
+set showmode
+
+" Show matching words during a search.
+set showmatch
+
+" Use highlighting when doing a search.
+set hlsearch
+
+" Set the commands to save in history default number is 20.
+set history=1000
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-hyprland.conf b/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-hyprland.conf
new file mode 100644
index 0000000..84e2394
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-hyprland.conf
@@ -0,0 +1,18 @@
+$background = rgb({background.strip})
+$foreground = rgb({foreground.strip})
+$color0 = rgb({color0.strip})
+$color1 = rgb({color1.strip})
+$color2 = rgb({color2.strip})
+$color3 = rgb({color3.strip})
+$color4 = rgb({color4.strip})
+$color5 = rgb({color5.strip})
+$color6 = rgb({color6.strip})
+$color7 = rgb({color7.strip})
+$color8 = rgb({color8.strip})
+$color9 = rgb({color9.strip})
+$color10 = rgb({color10.strip})
+$color11 = rgb({color11.strip})
+$color12 = rgb({color12.strip})
+$color13 = rgb({color13.strip})
+$color14 = rgb({color14.strip})
+$color15 = rgb({color15.strip})
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-rofi-pywal.rasi b/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-rofi-pywal.rasi
new file mode 100644
index 0000000..f0b1665
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-rofi-pywal.rasi
@@ -0,0 +1,20 @@
+* {{
+ background: rgba(0,0,1,0.5);
+ foreground: #FFFFFF;
+ color0: {color0};
+ color1: {color1};
+ color2: {color2};
+ color3: {color3};
+ color4: {color4};
+ color5: {color5};
+ color6: {color6};
+ color7: {color7};
+ color8: {color8};
+ color9: {color9};
+ color10: {color10};
+ color11: {color11};
+ color12: {color12};
+ color13: {color13};
+ color14: {color14};
+ color15: {color15};
+}}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-waybar.css b/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-waybar.css
new file mode 100644
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-waybar.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-wlogout.css b/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-wlogout.css
new file mode 100644
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/wal/templates/colors-wlogout.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/launch.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/launch.sh
new file mode 100644
index 0000000..90eadfb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/launch.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+# __
+# _ _____ ___ __/ / ___ _____
+# | |/|/ / _ `/ // / _ \/ _ `/ __/
+# |__,__/\_,_/\_, /_.__/\_,_/_/
+# /___/
+#
+# -----------------------------------------------------
+# Quit all running waybar instances
+# -----------------------------------------------------
+killall waybar
+pkill waybar
+sleep 0.5
+
+# -----------------------------------------------------
+# Default theme: /THEMEFOLDER;/VARIATION
+# -----------------------------------------------------
+themestyle="/ml4w-modern;/ml4w-modern/light"
+
+# -----------------------------------------------------
+# Get current theme information from ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ -f ~/.config/ml4w/settings/waybar-theme.sh ]; then
+ themestyle=$(cat ~/.config/ml4w/settings/waybar-theme.sh)
+else
+ touch ~/.config/ml4w/settings/waybar-theme.sh
+ echo "$themestyle" > ~/.config/ml4w/settings/waybar-theme.sh
+fi
+
+IFS=';' read -ra arrThemes <<< "$themestyle"
+echo ":: Theme: ${arrThemes[0]}"
+
+if [ ! -f ~/.config/waybar/themes${arrThemes[1]}/style.css ]; then
+ themestyle="/ml4w;/ml4w/light"
+fi
+
+# -----------------------------------------------------
+# Loading the configuration
+# -----------------------------------------------------
+config_file="config"
+style_file="style.css"
+
+# Standard files can be overwritten with an existing config-custom or style-custom.css
+if [ -f ~/.config/waybar/themes${arrThemes[0]}/config-custom ] ;then
+ config_file="config-custom"
+fi
+if [ -f ~/.config/waybar/themes${arrThemes[1]}/style-custom.css ] ;then
+ style_file="style-custom.css"
+fi
+
+# Check if waybar-disabled file exists
+if [ ! -f $HOME/.cache/waybar-disabled ] ;then
+ waybar -c ~/.config/waybar/themes${arrThemes[0]}/$config_file -s ~/.config/waybar/themes${arrThemes[1]}/$style_file &
+fi
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/modules.json b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/modules.json
new file mode 100644
index 0000000..28fb988
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/modules.json
@@ -0,0 +1,387 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+{
+ // Workspaces
+ "hyprland/workspaces": {
+ "on-scroll-up": "hyprctl dispatch workspace r-1",
+ "on-scroll-down": "hyprctl dispatch workspace r+1",
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": ["Alacritty", "kitty"],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip-format": "Open Sidebar"
+ },
+
+ // Empty
+ "custom/empty": {
+ "format": ""
+ },
+
+ // Tools
+ "custom/tools": {
+ "format": "",
+ "tooltip-format": "Tools"
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip-format": "Left: Open clipboard Manager\nRight: Delete an entry\nMiddle: Clear list"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "interval": 1800,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "bash -c waypaper &",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip-format": "Left: Select a wallpaper\nRight: Select wallpaper effect"
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip-format": "Select a waybar theme"
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "sleep 0.1 && com.ml4w.dotfilessettings",
+ "tooltip-format": "ML4W Dotfiles Settings"
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": " ",
+ "on-click": "~/.config/ml4w/settings/ai.sh",
+ "tooltip-format": "AI Support"
+ },
+
+ // Calculator
+ "custom/calculator": {
+ "format": "",
+ "on-click": "qalculate-gtk",
+ "tooltip-format": "Open calculator"
+ },
+
+ // Windows VM
+ "custom/windowsvm": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/launchvm.sh",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ // START APPS LABEL
+ "format": "Apps",
+ // END APPS LABEL
+ "on-click": "sleep 0.2;pkill rofi || rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenuicon": {
+ "format": "",
+ "on-click": "sleep 0.2;rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/wlogout.sh",
+ "on-click-right": "hyprlock",
+ "tooltip-format": "Left: Power menu\nRight: Lock screen"
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "tooltip-format": "Toggle Screen Shader",
+ "on-click": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh rofi"
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle"
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "ags toggle calendar",
+ "timezone": "",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": ["custom/system", "disk", "cpu", "memory", "hyprland/language"]
+ },
+
+ // Group Tools
+ "group/tools": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/tools",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade"
+ ]
+ },
+
+ // Group Links
+ "group/links": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/chatgpt",
+ "custom/empty"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": true
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {essid} ({signalStrength}%)",
+ "format-ethernet": " {ifname}",
+ "format-disconnected": "Disconnected ⚠",
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}",
+ "tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "~/.config/ml4w/settings/networkmanager.sh",
+ "on-click-right": "~/.config/ml4w/scripts/nm-applet.sh toggle",
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format": " {status}",
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false
+ },
+
+ // backlight:
+ "backlight": {
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "scroll-step": 1
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ai-icon-20.png b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ai-icon-20.png
new file mode 100644
index 0000000..a070dd4
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ai-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ai-icon.png b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ai-icon.png
new file mode 100644
index 0000000..398379b
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ai-icon.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/hyprland-icon-20.png b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/hyprland-icon-20.png
new file mode 100644
index 0000000..0d36ec2
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/hyprland-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/hyprland-icon.png b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/hyprland-icon.png
new file mode 100644
index 0000000..c87b767
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/hyprland-icon.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-20.png b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-20.png
new file mode 100644
index 0000000..df25ccb
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-black.svg b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-black.svg
new file mode 100644
index 0000000..011b817
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-black.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-dark.png b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-dark.png
new file mode 100644
index 0000000..73ec085
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-dark.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-white.svg b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-white.svg
new file mode 100644
index 0000000..c19407d
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon-white.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon.png b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon.png
new file mode 100644
index 0000000..92a54e0
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon.svg b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon.svg
new file mode 100644
index 0000000..fa8e063
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/ml4w-icon.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai-black.svg b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai-black.svg
new file mode 100644
index 0000000..3b4eff9
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai-black.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai-white.svg b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai-white.svg
new file mode 100644
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai-white.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai.svg b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai.svg
new file mode 100644
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/assets/openai.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/config b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/config
new file mode 100644
index 0000000..b02f10e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/config
@@ -0,0 +1,161 @@
+{
+ // "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["hyprland/workspaces","custom/waybarthemes"],
+ "modules-center": ["hyprland/window"],
+ "modules-right": ["custom/ml4w-welcome","mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "sway/language", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip": false
+ },
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "Themes",
+ "on-click": "~/.config/ml4w/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ "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": "{}% "
+ },
+ "temperature": {
+ "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": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, 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"
+ },
+ "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/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/config.sh
new file mode 100644
index 0000000..71a3429
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Default Theme"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/style.css
new file mode 100644
index 0000000..cafc802
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/default/style.css
@@ -0,0 +1,289 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+}
+
+window#waybar {
+ background-color: rgba(43, 48, 59, 0.5);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+window#waybar.termite {
+ background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+ background-color: #000000;
+ border: none;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 15px;
+ background-image: url("../assets/ml4w-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 20px;
+ margin-right: 0px;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background-color: transparent;
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button.urgent {
+ background-color: #eb4d4b;
+}
+
+#mode {
+ background-color: #64727D;
+ border-bottom: 3px solid #ffffff;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#mpd {
+ padding: 0 10px;
+ color: #ffffff;
+}
+
+#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 {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+#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 {
+ 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 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#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/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/black/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
new file mode 100644
index 0000000..cea609a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/black/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/black/style.css
new file mode 100644
index 0000000..129c909
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/black/style.css
@@ -0,0 +1,29 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
new file mode 100644
index 0000000..7f55337
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/colored/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
new file mode 100644
index 0000000..de0b369
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/config b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/config
new file mode 100644
index 0000000..ea2b0cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
new file mode 100644
index 0000000..df6f8c2
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/dark/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
new file mode 100644
index 0000000..54e8317
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/light/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
new file mode 100644
index 0000000..da067d2
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Light"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/light/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/light/style.css
new file mode 100644
index 0000000..5caa16a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
new file mode 100644
index 0000000..dea299a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
new file mode 100644
index 0000000..fe8dbb3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/white/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
new file mode 100644
index 0000000..1592654
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/white/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/white/style.css
new file mode 100644
index 0000000..a0ba4a7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur-bottom/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/black/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/black/config.sh
new file mode 100644
index 0000000..5c6fb05
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/black/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/black/style.css
new file mode 100644
index 0000000..b8a549a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/black/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/colored/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/colored/config.sh
new file mode 100644
index 0000000..7338fef
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/colored/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/config b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/config
new file mode 100644
index 0000000..fcd29ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/dark/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/dark/config.sh
new file mode 100644
index 0000000..a3b9e88
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/dark/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/dark/style.css
new file mode 100644
index 0000000..8470788
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/light/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/light/config.sh
new file mode 100644
index 0000000..ca5fe11
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Light"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/light/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/mixed/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/mixed/config.sh
new file mode 100644
index 0000000..eb698ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/mixed/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/style.css
new file mode 100644
index 0000000..12734d3
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/style.css
@@ -0,0 +1,478 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left:14px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 8px 15px 8px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 14px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 20px;
+}
+
+#custom-settings {
+ margin-right:12px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+ opacity: 0.8;
+}
+
+#custom-chatgpt {
+ margin-right: 12px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 16px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 17px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 8px 16px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+ color: @textcolor3;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/white/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/white/config.sh
new file mode 100644
index 0000000..e458b19
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/white/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/white/style.css
new file mode 100644
index 0000000..f50cb7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-blur/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/black/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/black/config.sh
new file mode 100644
index 0000000..5837eb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/black/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/black/style.css
new file mode 100644
index 0000000..6bae0cd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/colored/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/colored/config.sh
new file mode 100644
index 0000000..0a31bac
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/colored/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/colored/style.css
new file mode 100644
index 0000000..53bf65c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/config b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/config
new file mode 100644
index 0000000..8e55c1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 14,
+ "layer": "top",
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/dark/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/dark/config.sh
new file mode 100644
index 0000000..a6fe8ff
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/dark/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/dark/style.css
new file mode 100644
index 0000000..2179f76
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/light/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/light/config.sh
new file mode 100644
index 0000000..e016502
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/light/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/light/style.css
new file mode 100644
index 0000000..833b8c4
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/mixed/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/mixed/config.sh
new file mode 100644
index 0000000..e5bc67e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/mixed/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/mixed/style.css
new file mode 100644
index 0000000..f3ee832
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/white/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/white/config.sh
new file mode 100644
index 0000000..71dd9f5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/white/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/white/style.css
new file mode 100644
index 0000000..704bfbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-bottom/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/config b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/config
new file mode 100644
index 0000000..4614d63
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/config
@@ -0,0 +1,88 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenuicon",
+ "hyprland/workspaces",
+ "group/links",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+ "custom/exit",
+ "clock",
+"tray",
+ "custom/ml4w-welcome"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/config.sh
new file mode 100644
index 0000000..eac2047
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Minimal"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/style.css
new file mode 100644
index 0000000..be884b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-minimal/style.css
@@ -0,0 +1,431 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.4);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left: 10px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+ #workspaces {
+ margin: 3px 7px 3px 3px;
+ border: 0px;
+ font-size: 14px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ border: 0px;
+ margin:4px 5px 4px 0px;
+ padding:0px 4px 0px 4px;
+ color: @textcolor3;
+ transition: all 0.5s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 0px 15px 0px 0px;
+ border-radius: 12px;
+ color:@textcolor;
+ font-size:14px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 14px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-settings {
+ margin-right: 15px;
+}
+
+#custom-browser {
+ margin-right: 12px;
+}
+
+#custom-wallpaper {
+ margin-right: 14px;
+}
+
+#custom-chatgpt {
+ margin-right: 10px;
+ background-image: url("../assets/ai-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 23px;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-ml4w-hyprland-settings {
+ margin-right: 12px;
+ background-image: url("../assets/hyprland-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 16px;
+}
+
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 16px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 14px;
+ font-weight: bold;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenuicon {
+ font-size: 20px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:16px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#custom-updates.green {
+}
+
+#custom-updates.yellow {
+ color: #ff9a3c;
+}
+
+#custom-updates.red {
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Youtube
+ * ----------------------------------------------------- */
+
+#custom-youtube {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:14px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ font-size: 15px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+ background-color: transparent;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+ #pulseaudio {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#pulseaudio.muted {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#network.ethernet {
+ color: @textcolor;
+}
+
+#network.wifi {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/black/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/black/config.sh
new file mode 100644
index 0000000..63c42a1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/black/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/black/style.css
new file mode 100644
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/colored/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/colored/config.sh
new file mode 100644
index 0000000..61e80a5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/colored/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/config b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/config
new file mode 100644
index 0000000..f570e02
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 14,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "hyprland/workspaces",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/dark/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/dark/config.sh
new file mode 100644
index 0000000..e6f8d5b
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/dark/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/dark/style.css
new file mode 100644
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/light/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/light/config.sh
new file mode 100644
index 0000000..0c6cdb1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Light"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/light/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/mixed/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/mixed/config.sh
new file mode 100644
index 0000000..46f3eb5
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/mixed/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/style.css
new file mode 100644
index 0000000..12943e1
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/style.css
@@ -0,0 +1,470 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+ * {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 18px 3px 1px;
+ padding: 0px 2px;
+ border-radius: 5px 5px 5px 5px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 6px;
+ margin: 3px 2px;
+ border-radius: 3px 3px 3px 3px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.1s linear;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 3px 3px 3px 3px;
+ min-width: 30px;
+ transition: all 0.1s linear;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 5px 5px 5px 5px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 3px 15px 3px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 5px 5px 5px 5px;
+ color:white;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 5px 5px 5px 5px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 10px 0px 10px;
+ margin: 2px 17px 2px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 3px 5px 3px 5px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 15px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/white/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/white/config.sh
new file mode 100644
index 0000000..efe0528
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/white/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/white/style.css
new file mode 100644
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w-modern/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/black/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/black/config.sh
new file mode 100644
index 0000000..39e19cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/black/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/black/style.css
new file mode 100644
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/colored/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/colored/config.sh
new file mode 100644
index 0000000..25dbee7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/colored/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/config b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/config
new file mode 100644
index 0000000..12ba709
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/config
@@ -0,0 +1,56 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 14,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/dark/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/dark/config.sh
new file mode 100644
index 0000000..6c2cf9f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/dark/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/dark/style.css
new file mode 100644
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/light/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/light/config.sh
new file mode 100644
index 0000000..55e4ffd
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/light/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/mixed/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/mixed/config.sh
new file mode 100644
index 0000000..c00e231
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/mixed/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/style.css
new file mode 100644
index 0000000..68a179c
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/style.css
@@ -0,0 +1,471 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 1px 3px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 5px 15px 5px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 3px 17px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/white/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/white/config.sh
new file mode 100644
index 0000000..685088f
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/white/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/white/style.css
new file mode 100644
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/ml4w/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/config b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/config
new file mode 100644
index 0000000..6084f60
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/config
@@ -0,0 +1,66 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+
+ // Position TOP
+ "layer": "top",
+ "margin-bottom": 0,
+
+ // Position BOTTOM
+ // "position": "bottom",
+ // "margin-top": 0,
+ // "margin-bottom": 14,
+
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/themes/starter/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "custom/settings",
+ //"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/starter"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/config.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/config.sh
new file mode 100644
index 0000000..a9399f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Starter"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/modules.json b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/modules.json
new file mode 100644
index 0000000..51e0add
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/modules.json
@@ -0,0 +1,351 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // Workspaces
+ "hyprland/workspaces" : {
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": [
+ "Alacritty"
+ ],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip": false
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "on-click": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh rofi",
+ "tooltip": false
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle",
+ "on-click-right": "hyprlock"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "tooltip-format": "{}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "alacritty -e ~/.config/ml4w/scripts/installupdates.sh",
+ "tooltip": false
+ },
+
+ // Theme Starter Label
+ "custom/starter": {
+ "format": "THEME STARTER",
+ "tooltip": false
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "waypaper",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip": false
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage",
+ "tooltip": false
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Filemanager Launcher
+ "custom/filemanager": {
+ "format": "",
+ "on-click": "nautilus",
+ "tooltip": false
+ },
+
+ // Browser Launcher
+ "custom/browser": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip": false
+ },
+
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip-format": "Open Sidebar"
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": "",
+ "on-click": "chromium --app=https://chat.openai.com",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ "format": "Apps",
+ "on-click": "rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "wlogout",
+ "tooltip": false
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "ags -t calendar",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "alacritty -e htop"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/system",
+ "disk",
+ "cpu",
+ "memory",
+ "hyprland/language"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Group Quicklinks
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/filemanager",
+ "custom/browser"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {signalStrength}%",
+ "format-ethernet": " {ipaddr}",
+ "format-disconnected": "Not connected", //An empty format will hide the module.
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {essid} ({signalStrength}%)",
+ "tooltip-format-ethernet": " {ifname} ({ipaddr}/{cidr})",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "alacritty -e nmtui"
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false,
+ },
+
+ // Idle Inhibator
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "tooltip": true,
+ "format-icons":{
+ "activated": "",
+ "deactivated": ""
+ },
+ "on-click-right": "hyprlock"
+ }
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/style.css
new file mode 100644
index 0000000..21fdcfa
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themes/starter/style.css
@@ -0,0 +1,457 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor3;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 10px 15px 10px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 23px;
+ font-size: 20px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 24px;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 10px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+/* -----------------------------------------------------
+ * Other
+ * ----------------------------------------------------- */
+
+label:focus {
+ background-color: #000000;
+}
+
+#backlight {
+ background-color: #90b1b1;
+}
+
+#network {
+ background-color: #2980b9;
+}
+
+#network.disconnected {
+ background-color: #f53c3c;
+}
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themeswitcher.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themeswitcher.sh
new file mode 100644
index 0000000..f3e4734
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/themeswitcher.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _ _
+# |_ _| |__ ___ _ __ ___ ___ _____ _(_) |_ ___| |__ ___ _ __
+# | | | '_ \ / _ \ '_ ` _ \ / _ \/ __\ \ /\ / / | __/ __| '_ \ / _ \ '__|
+# | | | | | | __/ | | | | | __/\__ \\ V V /| | || (__| | | | __/ |
+# |_| |_| |_|\___|_| |_| |_|\___||___/ \_/\_/ |_|\__\___|_| |_|\___|_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Default theme folder
+# -----------------------------------------------------
+themes_path="$HOME/.config/waybar/themes"
+
+# -----------------------------------------------------
+# Initialize arrays
+# -----------------------------------------------------
+listThemes=""
+listNames=""
+listNames2=""
+
+# -----------------------------------------------------
+# Read theme folder
+# -----------------------------------------------------
+sleep 0.2
+options=$(find $themes_path -maxdepth 2 -type d)
+for value in $options
+do
+ if [ ! $value == "$HOME/.config/waybar/themes/assets" ]; then
+ if [ ! $value == "$themes_path" ]; then
+ if [ $(find $value -maxdepth 1 -type d | wc -l) = 1 ]; then
+ result=$(echo $value | sed "s#$HOME/.config/waybar/themes/#/#g")
+ IFS='/' read -ra arrThemes <<< "$result"
+ listThemes[${#listThemes[@]}]="/${arrThemes[1]};$result"
+ if [ -f $themes_path$result/config.sh ]; then
+ source $themes_path$result/config.sh
+ listNames+="$theme_name\n"
+ listNames2+="$theme_name~"
+ else
+ listNames+="/${arrThemes[1]};$result\n"
+ listNames2+="/${arrThemes[1]};$result~"
+ fi
+ fi
+ fi
+ fi
+done
+
+# -----------------------------------------------------
+# Show rofi dialog
+# -----------------------------------------------------
+listNames=${listNames::-2}
+choice=$(echo -e "$listNames" | rofi -dmenu -replace -i -config ~/.config/rofi/config-themes.rasi -no-show-icons -width 30 -p "Themes" -format i)
+IFS="~"
+input=$listNames2
+read -ra array <<< "$input"
+
+# -----------------------------------------------------
+# Set new theme by writing the theme information to ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ "$choice" ]; then
+ echo "Loading waybar theme..."
+ echo "${listThemes[$choice+1]}" > ~/.config/ml4w/settings/waybar-theme.sh
+ ~/.config/waybar/launch.sh
+ notify-send "Waybar Theme changed" "to ${array[$choice]}"
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/waybar/toggle.sh b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/toggle.sh
new file mode 100644
index 0000000..0d49a4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/waybar/toggle.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# _____ _ __ __ _
+# |_ _|__ __ _ __ _| | ___ \ \ / /_ _ _ _| |__ __ _ _ __
+# | |/ _ \ / _` |/ _` | |/ _ \ \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# | | (_) | (_| | (_| | | __/ \ V V / (_| | |_| | |_) | (_| | |
+# |_|\___/ \__, |\__, |_|\___| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/ |___/ |___/
+#
+
+if [ -f ~/.cache/waybar-disabled ] ;then
+ rm ~/.cache/waybar-disabled
+else
+ touch ~/.cache/waybar-disabled
+fi
+~/.config/waybar/launch.sh &
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/README.txt b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/README.txt
new file mode 100644
index 0000000..4ceecd7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/README.txt
@@ -0,0 +1,8 @@
+Select Logout Command depending on your setup:
+
+Use for Display Manager e.g., sddm (DEFAULT)
+sleep 1; hyprctl dispatch exit
+
+Use for Arch Linux text based login
+sleep 1; loginctl terminate-user $USER
+
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/hibernate.png b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/hibernate.png
new file mode 100644
index 0000000..bf2b001
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/hibernate.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/lock.png b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/lock.png
new file mode 100644
index 0000000..da59b10
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/lock.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/logout.png b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/logout.png
new file mode 100644
index 0000000..8a25922
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/logout.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/reboot.png b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/reboot.png
new file mode 100644
index 0000000..e5fd221
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/reboot.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/shutdown.png b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/shutdown.png
new file mode 100644
index 0000000..663ca03
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/shutdown.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/suspend.png b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/suspend.png
new file mode 100644
index 0000000..af099b9
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/icons/suspend.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/layout b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/layout
new file mode 100644
index 0000000..0dfb38a
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/layout
@@ -0,0 +1,30 @@
+{
+ "label" : "lock",
+ "action" : "~/.config/hypr/scripts/power.sh lock",
+ "text" : "Lock",
+ "keybind" : "l"
+}
+{
+ "label" : "logout",
+ "action" : "~/.config/hypr/scripts/power.sh exit",
+ "text" : "Log Out",
+ "keybind" : "e"
+}
+{
+ "label" : "suspend",
+ "action" : "~/.config/hypr/scripts/power.sh suspend",
+ "text" : "Suspend",
+ "keybind" : "u"
+}
+{
+ "label" : "reboot",
+ "action" : "~/.config/hypr/scripts/power.sh reboot",
+ "text" : "Restart",
+ "keybind" : "r"
+}
+{
+ "label" : "shutdown",
+ "action" : "~/.config/hypr/scripts/power.sh shutdown",
+ "text" : "Power Off",
+ "keybind" : "s"
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/noise.png b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/noise.png
new file mode 100644
index 0000000..028b188
Binary files /dev/null and b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/noise.png differ
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/style.css b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/style.css
new file mode 100644
index 0000000..f533d11
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/wlogout/style.css
@@ -0,0 +1,107 @@
+/*
+ _ _
+__ _| | ___ __ _ ___ _ _| |_
+\ \ /\ / / |/ _ \ / _` |/ _ \| | | | __|
+ \ V V /| | (_) | (_| | (_) | |_| | |_
+ \_/\_/ |_|\___/ \__, |\___/ \__,_|\__|
+ |___/
+
+by Stephan Raabe (2023)
+-----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../.cache/wal/colors-wlogout.css';
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ background-image: none;
+ transition: 20ms;
+ box-shadow: none;
+}
+
+window {
+ background: url("../ml4w/cache/blurred_wallpaper.png");
+ background-size: cover;
+ font-size: 16pt;
+ color: #cdd6f4;
+}
+
+button {
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 20%;
+ background-color: rgba(200, 220, 255, 0);
+ animation: gradient_f 20s ease-in infinite;
+ border-radius: 80px; /* Increased border radius for a more rounded look */
+ border:0px;
+ transition: all 0.3s cubic-bezier(.55, 0.0, .28, 1.682), box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
+}
+
+button:focus {
+ background-size: 22%;
+ border: 0px;
+}
+
+button:hover {
+ background-color: @color11;
+ opacity: 0.8;
+ color: #cdd6f4;
+ background-size: 30%;
+ margin: 30px;
+ border-radius: 80px;
+ box-shadow: 0 0 50px @color7;
+}
+
+/* Adjust the size of the icon or content inside the button */
+button span {
+ font-size: 1.2em; /* Increase the font size */
+}
+
+/*
+-----------------------------------------------------
+Buttons
+-----------------------------------------------------
+*/
+
+#lock {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/lock.png"));
+}
+
+#logout {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/logout.png"));
+}
+
+#suspend {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/suspend.png"));
+}
+
+#hibernate {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/hibernate.png"));
+}
+
+#shutdown {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/shutdown.png"));
+}
+
+#reboot {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/reboot.png"));
+}
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/xsettingsd/xsettingsd.conf b/configs/dotfiles/hyprland/gulfport_default/.config/xsettingsd/xsettingsd.conf
new file mode 100644
index 0000000..5065b09
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/xsettingsd/xsettingsd.conf
@@ -0,0 +1,9 @@
+Net/ThemeName "Adwaita"
+Net/IconThemeName "Papirus-Dark"
+Gtk/CursorThemeName "Bibata-Modern-Ice"
+Net/EnableEventSounds 1
+EnableInputFeedbackSounds 0
+Xft/Antialias 1
+Xft/Hinting 1
+Xft/HintStyle "hintslight"
+Xft/RGBA "rgb"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/00-init b/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/00-init
new file mode 100644
index 0000000..21833ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/00-init
@@ -0,0 +1,10 @@
+# -----------------------------------------------------
+# INIT
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Exports
+# -----------------------------------------------------
+export EDITOR=nvim
+export PATH="/usr/lib/ccache/bin/:$PATH"
+export ZSH="$HOME/.oh-my-zsh"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/20-customization b/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/20-customization
new file mode 100644
index 0000000..be4a139
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/20-customization
@@ -0,0 +1,48 @@
+# -----------------------------------------------------
+# CUSTOMIZATION
+# -----------------------------------------------------
+POSH=agnoster
+
+# -----------------------------------------------------
+# oh-myzsh themes: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
+# -----------------------------------------------------
+# ZSH_THEME=robbyrussell
+
+# -----------------------------------------------------
+# oh-myzsh plugins
+# -----------------------------------------------------
+plugins=(
+ git
+ sudo
+ web-search
+ archlinux
+ zsh-autosuggestions
+ zsh-syntax-highlighting
+ fast-syntax-highlighting
+ copyfile
+ copybuffer
+ dirhistory
+)
+
+# Set-up oh-my-zsh
+source $ZSH/oh-my-zsh.sh
+
+# -----------------------------------------------------
+# Set-up FZF key bindings (CTRL R for fuzzy history finder)
+# -----------------------------------------------------
+source <(fzf --zsh)
+
+# zsh history
+HISTFILE=~/.zsh_history
+HISTSIZE=10000
+SAVEHIST=10000
+setopt appendhistory
+
+# -----------------------------------------------------
+# Prompt
+# -----------------------------------------------------
+# eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/zen.toml)"
+eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/EDM115-newline.omp.json)"
+
+# Shipped Theme
+# eval "$(oh-my-posh init zsh --config /usr/share/oh-my-posh/themes/agnoster.omp.json)"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/25-aliases b/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/25-aliases
new file mode 100644
index 0000000..358301e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/25-aliases
@@ -0,0 +1,57 @@
+# -----------------------------------------------------
+# ALIASES
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# General
+# -----------------------------------------------------
+alias c='clear'
+alias nf='fastfetch'
+alias pf='fastfetch'
+alias ff='fastfetch'
+alias ls='eza -a --icons=always'
+alias ll='eza -al --icons=always'
+alias lt='eza -a --tree --level=1 --icons=always'
+alias shutdown='systemctl poweroff'
+alias v='$EDITOR'
+alias vim='$EDITOR'
+alias ts='~/.config/ml4w/scripts/snapshot.sh'
+alias wifi='nmtui'
+alias cleanup='~/.config/ml4w/scripts/cleanup.sh'
+
+# -----------------------------------------------------
+# ML4W Apps
+# -----------------------------------------------------
+alias ml4w='com.ml4w.welcome'
+alias ml4w-settings='com.ml4w.dotfilessettings'
+alias ml4w-hyprland='com.ml4w.hyprland.settings'
+alias ml4w-options='ml4w-hyprland-setup -m options'
+alias ml4w-sidebar='ags toggle sidebar'
+alias ml4w-diagnosis='~/.config/hypr/scripts/diagnosis.sh'
+alias ml4w-hyprland-diagnosis='~/.config/hypr/scripts/diagnosis.sh'
+alias ml4w-qtile-diagnosis='~/.config/ml4w/qtile/scripts/diagnosis.sh'
+alias ml4w-update='~/.config/ml4w/update.sh'
+
+# -----------------------------------------------------
+# Window Managers
+# -----------------------------------------------------
+
+alias Qtile='startx'
+# Hyprland with Hyprland
+
+# -----------------------------------------------------
+# Scripts
+# -----------------------------------------------------
+alias ascii='~/.config/ml4w/scripts/figlet.sh'
+
+# -----------------------------------------------------
+# System
+# -----------------------------------------------------
+alias update-grub='sudo grub-mkconfig -o /boot/grub/grub.cfg'
+
+# -----------------------------------------------------
+# Qtile
+# -----------------------------------------------------
+alias res1='xrandr --output DisplayPort-0 --mode 2560x1440 --rate 120'
+alias res2='xrandr --output DisplayPort-0 --mode 1920x1080 --rate 120'
+alias setkb='setxkbmap de;echo "Keyboard set back to de."'
diff --git a/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/30-autostart b/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/30-autostart
new file mode 100644
index 0000000..fd84883
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.config/zshrc/30-autostart
@@ -0,0 +1,23 @@
+# -----------------------------------------------------
+# AUTOSTART
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Pywal
+# -----------------------------------------------------
+cat ~/.cache/wal/sequences
+
+# -----------------------------------------------------
+# Fastfetch
+# -----------------------------------------------------
+if [[ $(tty) == *"pts"* ]]; then
+ fastfetch --config examples/13
+else
+ echo
+ if [ -f /bin/qtile ]; then
+ echo "Start Qtile X11 with command Qtile"
+ fi
+ if [ -f /bin/hyprctl ]; then
+ echo "Start Hyprland with command Hyprland"
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/gulfport_default/.gtkrc-2.0 b/configs/dotfiles/hyprland/gulfport_default/.gtkrc-2.0
new file mode 100644
index 0000000..3c6e20e
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.gtkrc-2.0
@@ -0,0 +1,19 @@
+# DO NOT EDIT! This file will be overwritten by nwg-look.
+# Any customization should be done in ~/.gtkrc-2.0.mine instead.
+
+include "/home/raabe/.gtkrc-2.0.mine"
+gtk-theme-name="Adwaita"
+gtk-icon-theme-name="Papirus"
+gtk-font-name="Cantarell 11"
+gtk-cursor-theme-name="Bibata-Modern-Ice"
+gtk-cursor-theme-size=24
+gtk-toolbar-style=GTK_TOOLBAR_ICONS
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=0
+gtk-enable-event-sounds=1
+gtk-enable-input-feedback-sounds=0
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle="hintslight"
+gtk-xft-rgba="rgb"
diff --git a/configs/dotfiles/hyprland/gulfport_default/.zshrc b/configs/dotfiles/hyprland/gulfport_default/.zshrc
new file mode 100644
index 0000000..68c72a7
--- /dev/null
+++ b/configs/dotfiles/hyprland/gulfport_default/.zshrc
@@ -0,0 +1,36 @@
+# _
+# _______| |__ _ __ ___
+# |_ / __| '_ \| '__/ __|
+# _ / /\__ \ | | | | | (__
+# (_)___|___/_| |_|_| \___|
+#
+# -----------------------------------------------------
+# ML4W zshrc loader
+# -----------------------------------------------------
+
+# DON'T CHANGE THIS FILE
+
+# You can define your custom configuration by adding
+# files in ~/.config/zshrc
+# or by creating a folder ~/.config/zshrc/custom
+# with copies of files from ~/.config/zshrc
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Load modular configarion
+# -----------------------------------------------------
+
+for f in ~/.config/zshrc/*; do
+ if [ ! -d $f ] ;then
+ c=`echo $f | sed -e "s=.config/zshrc=.config/zshrc/custom="`
+ [[ -f $c ]] && source $c || source $f
+ fi
+done
+
+# -----------------------------------------------------
+# Load single customization file (if exists)
+# -----------------------------------------------------
+
+if [ -f ~/.zshrc_custom ] ;then
+ source ~/.zshrc_custom
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/Xresources b/configs/dotfiles/hyprland/laptop/.config/Xresources
new file mode 100755
index 0000000..6a1c856
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/Xresources
@@ -0,0 +1 @@
+Xcursor.theme: Bibata-Modern-Ice
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/app.ts b/configs/dotfiles/hyprland/laptop/.config/ags/app.ts
new file mode 100755
index 0000000..26c6a1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/app.ts
@@ -0,0 +1,11 @@
+import { App, Widget } from "astal/gtk3"
+import Calendar from "./widget/Calendar"
+import Sidebar from "./widget/Sidebar"
+
+App.start({
+ css: "./style.css",
+ main() {
+ Sidebar();
+ Calendar();
+ }
+})
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/application-exit-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/application-exit-symbolic.svg
new file mode 100755
index 0000000..66e44f1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/application-exit-symbolic.svg
@@ -0,0 +1,4 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg
new file mode 100755
index 0000000..b1ce05f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/fileview-preview-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/fileview-preview-symbolic.svg
new file mode 100755
index 0000000..167090d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/fileview-preview-symbolic.svg
@@ -0,0 +1,13 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/image-loading-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/image-loading-symbolic.svg
new file mode 100755
index 0000000..b445ad1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/image-loading-symbolic.svg
@@ -0,0 +1,6 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/media-playback-paused-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/media-playback-paused-symbolic.svg
new file mode 100755
index 0000000..16d5de7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/media-playback-paused-symbolic.svg
@@ -0,0 +1,13 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/padlock2-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/padlock2-symbolic.svg
new file mode 100755
index 0000000..0d51118
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/padlock2-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg
new file mode 100755
index 0000000..541721c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg
@@ -0,0 +1,5 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/turn-off-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/turn-off-symbolic.svg
new file mode 100755
index 0000000..db109c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/turn-off-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg
new file mode 100755
index 0000000..4536935
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg
@@ -0,0 +1,3 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-dotfiles-settings.png b/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-dotfiles-settings.png
new file mode 100755
index 0000000..938b6f7
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-dotfiles-settings.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-hyprland-settings.png b/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-hyprland-settings.png
new file mode 100755
index 0000000..c7e8e29
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-hyprland-settings.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-welcome.png b/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-welcome.png
new file mode 100755
index 0000000..7d4efe7
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ags/assets/ml4w-welcome.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/env.d.ts b/configs/dotfiles/hyprland/laptop/.config/ags/env.d.ts
new file mode 100755
index 0000000..4e7e508
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/env.d.ts
@@ -0,0 +1,21 @@
+const SRC: string
+
+declare module "inline:*" {
+ const content: string
+ export default content
+}
+
+declare module "*.scss" {
+ const content: string
+ export default content
+}
+
+declare module "*.blp" {
+ const content: string
+ export default content
+}
+
+declare module "*.css" {
+ const content: string
+ export default content
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/scripts/run_themeswitcher.sh b/configs/dotfiles/hyprland/laptop/.config/ags/scripts/run_themeswitcher.sh
new file mode 100755
index 0000000..7c20589
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/scripts/run_themeswitcher.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/waybar/themeswitcher.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/scripts/run_wallpapereffects.sh b/configs/dotfiles/hyprland/laptop/.config/ags/scripts/run_wallpapereffects.sh
new file mode 100755
index 0000000..78dcaaf
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/scripts/run_wallpapereffects.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/hypr/scripts/wallpaper-effects.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/style.css b/configs/dotfiles/hyprland/laptop/.config/ags/style.css
new file mode 100755
index 0000000..6cf06e8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/style.css
@@ -0,0 +1,211 @@
+@import url('../../.cache/wal/colors-waybar.css');
+
+* {
+ all:unset;
+ font-size: 14px;
+ font-family: "Fira Sans", sans-serif;
+ font-weight: normal;
+}
+
+.calendar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+ min-width:320px;
+}
+
+calendar:selected {
+ background-color:@color11;
+ padding:0px;
+}
+
+.sidebar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+}
+
+.group {
+ padding:16px;
+ background-color: rgba(116, 116, 116, 0.1);
+ border-radius: 20px;
+}
+
+.ml4wwelcomeicon {
+ background:url("assets/ml4w-welcome.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4wsettingsicon {
+ background:url("assets/ml4w-dotfiles-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4whyprlandicon {
+ background:url("assets/ml4w-hyprland-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.btnbar {
+ border: 1px solid #222222;
+ padding:5px;
+ min-height:24px;
+ border-radius: 24px;
+ min-width: 24px;
+ margin:0px 2px 0px 2px;
+}
+
+.btnbar.statusbar {
+ background:url("assets/icons/image-loading-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+ background-size:20px;
+}
+
+.btnbar.wallpaper {
+ background:url("assets/icons/fileview-preview-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+ background-size:20px;
+}
+
+.btnbar.wallpapereffects {
+ background:url("assets/icons/xapp-prefs-preview-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.lock {
+ background:url("assets/icons/padlock2-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.logout {
+ background:url("assets/icons/application-exit-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.restart {
+ background:url("assets/icons/arrow-circular-top-right-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.suspend {
+ background:url("assets/icons/media-playback-paused-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.exit {
+ background:url("assets/icons/turn-off-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.midbtn {
+ background-color: @color11;
+ font-size: 12px;
+ padding:10px;
+ border-radius: 20px;
+}
+
+.AudioSlider {
+ background-color:@color11;
+ border-radius:12px;
+ margin-bottom:10px;
+}
+
+.AudioSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.AudioSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.AudioSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider {
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.MicrophoneSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.MicrophoneSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/tsconfig.json b/configs/dotfiles/hyprland/laptop/.config/ags/tsconfig.json
new file mode 100755
index 0000000..b239e15
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "compilerOptions": {
+ "experimentalDecorators": true,
+ "strict": true,
+ "target": "ES2022",
+ "module": "ES2022",
+ "moduleResolution": "Bundler",
+ // "checkJs": true,
+ // "allowJs": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "/usr/share/astal/gjs/gtk3",
+ "paths": {
+ "astal": [
+ "/usr/share/astal/gjs"
+ ],
+ "astal/*": [
+ "/usr/share/astal/gjs/*"
+ ]
+ },
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/widget/Bar.tsx b/configs/dotfiles/hyprland/laptop/.config/ags/widget/Bar.tsx
new file mode 100755
index 0000000..ed1d845
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/widget/Bar.tsx
@@ -0,0 +1,29 @@
+import { App, Astal, Gtk, Gdk } from "astal/gtk3"
+import { Variable } from "astal"
+
+const time = Variable("").poll(1000, "date")
+
+export default function Bar(gdkmonitor: Gdk.Monitor) {
+ return
+
+
+
+
+
+
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/widget/Brightness.tsx b/configs/dotfiles/hyprland/laptop/.config/ags/widget/Brightness.tsx
new file mode 100755
index 0000000..86214f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/widget/Brightness.tsx
@@ -0,0 +1,72 @@
+// Thanks to https://gitlab.com/filippoaceto/
+import GObject, { register, property } from "astal/gobject"
+import { monitorFile, readFileAsync } from "astal/file"
+import { exec, execAsync } from "astal/process"
+
+const get = (args: string) => Number(exec(`brightnessctl ${args}`))
+const screen = exec(`bash -c "ls -w1 /sys/class/backlight | head -1"`)
+const kbd = exec(`bash -c "ls -w1 /sys/class/leds | head -1"`)
+
+@register({ GTypeName: "Brightness" })
+export default class Brightness extends GObject.Object {
+ static instance: Brightness
+ static get_default() {
+ if (!this.instance)
+ this.instance = new Brightness()
+
+ return this.instance
+ }
+
+ #kbdMax = get(`--device ${kbd} max`)
+ #kbd = get(`--device ${kbd} get`)
+ #screenMax = get("max")
+ #screen = get("get") / (get("max") || 1)
+
+ @property(Number)
+ get kbd() { return this.#kbd }
+
+ set kbd(value) {
+ if (value < 0 || value > this.#kbdMax)
+ return
+ execAsync(`brightnessctl -d ${kbd} s ${value} -q`).then(() => {
+ this.#kbd = value
+ this.notify("kbd")
+ })
+ }
+
+ @property(Number)
+ get screen() { return this.#screen }
+
+ set screen(percent) {
+ if (percent < 0)
+ percent = 0
+
+ if (percent > 1)
+ percent = 1
+
+ if (Math.floor(percent * 100) > 1)
+ execAsync(`brightnessctl set ${Math.floor(percent * 100)}% -q`).then(() => {
+ this.#screen = percent
+ this.notify("screen")
+ })
+ }
+
+ constructor() {
+ super()
+
+ const screenPath = `/sys/class/backlight/${screen}/brightness`
+ const kbdPath = `/sys/class/leds/${kbd}/brightness`
+
+ monitorFile(screenPath, async f => {
+ const v = await readFileAsync(f)
+ this.#screen = Number(v) / this.#screenMax
+ this.notify("screen")
+ })
+
+ monitorFile(kbdPath, async f => {
+ const v = await readFileAsync(f)
+ this.#kbd = Number(v) / this.#kbdMax
+ this.notify("kbd")
+ })
+ }
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/widget/Calendar.tsx b/configs/dotfiles/hyprland/laptop/.config/ags/widget/Calendar.tsx
new file mode 100755
index 0000000..263a77e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/widget/Calendar.tsx
@@ -0,0 +1,42 @@
+import { GObject } from "astal";
+import { astalify, ConstructProps, App, Astal, Gdk, Gtk } from "astal/gtk3"
+
+class CalendarGtk extends astalify(Gtk.Calendar) {
+ static {
+ GObject.registerClass(this);
+ }
+
+ constructor(
+ props: ConstructProps,
+ ) {
+ super(props as any);
+ }
+}
+
+export default function Calendar() {
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+ {new CalendarGtk({
+ hexpand: true,
+ vexpand: true,
+ showDayNames: true,
+ showDetails: false,
+ showHeading: true,
+ showWeekNumbers: true
+ })}
+
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/ags/widget/Sidebar.tsx b/configs/dotfiles/hyprland/laptop/.config/ags/widget/Sidebar.tsx
new file mode 100755
index 0000000..d2672ba
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ags/widget/Sidebar.tsx
@@ -0,0 +1,167 @@
+import { App } from "astal/gtk3"
+import Apps from "gi://AstalApps"
+import Wp from "gi://AstalWp"
+import { Variable, GLib, bind } from "astal"
+import { subprocess, exec, execAsync } from "astal/process"
+import { Astal, Gtk, Gdk } from "astal/gtk3"
+import Brightness from "./Brightness"
+
+function BrightnessSlider() {
+ const brightness = Brightness.get_default()
+
+ return
+ brightness.screen = value}
+ />
+
+}
+
+function AudioSlider() {
+ const speaker = Wp.get_default()?.audio.defaultSpeaker!
+
+ return
+ speaker.volume = value}
+ value={bind(speaker, "volume")}
+ />
+
+}
+
+function MicrophoneSlider() {
+ const microphone = Wp.get_default()?.audio.defaultMicrophone!
+
+ return
+ microphone.volume = value}
+ value={bind(microphone, "volume")}
+ />
+
+}
+
+function openwelcomeapp() {
+ execAsync("com.ml4w.welcome")
+ App.get_window("sidebar")!.hide()
+}
+
+function opensettingsapp() {
+ execAsync("com.ml4w.dotfilessettings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openhyprlandapp() {
+ execAsync("com.ml4w.hyprland.settings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpaper() {
+ const proc = subprocess(["bash", "-c", "waypaper"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpapereffects() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/wallpaper-effects.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwaybarthemes() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/waybar/themeswitcher.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerlock() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh lock"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerlogout() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh exit"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powersuspend() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh suspend"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerrestart() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh reboot"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerexit() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh shutdown"])
+ App.get_window("sidebar")!.hide()
+}
+
+export default function Sidebar() {
+
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/dunst/dunstrc b/configs/dotfiles/hyprland/laptop/.config/dunst/dunstrc
new file mode 100755
index 0000000..ed3be7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/dunst/dunstrc
@@ -0,0 +1,469 @@
+# _ _
+# __| |_ _ _ __ ___| |_
+# / _` | | | | '_ \/ __| __|
+# | (_| | |_| | | | \__ \ |_
+# \__,_|\__,_|_| |_|___/\__|
+#
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# 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 = (0,300)
+
+ # Position the notification in the top right corner
+ origin = top-center
+
+ # Offset from the origin
+ offset = 30x30
+
+ # Scale factor. It is auto-detected if value is 0.
+ scale = 0
+
+ # Maximum number of notification (0 means no limit)
+ notification_limit = 20
+
+ ### 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
+
+ # Corner radius for the progress bar. 0 disables rounded corners.
+ progress_bar_corner_radius = 10
+
+ # Corner radius for the icon image.
+ icon_corner_radius = 0
+
+ # 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 = 30
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ # If gap_size is greater than 0, this setting will be ignored.
+ 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 = "#ffffff"
+
+ # Size of gap to display between notifications - requires a compositor.
+ # If value is greater than 0, separator_height will be ignored and a border
+ # of size frame_width will be drawn around each notification instead.
+ # Click events on gaps do not currently propagate to applications below.
+ gap_size = 0
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ # A client can set the 'transient' hint to bypass this. See the rules
+ # section for how to disable this if necessary
+ # idle_threshold = 120
+
+ ### Text ###
+
+ font = "Fira Sans Semibold" 9
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
+ line_height = 1
+
+ # Possible values are:
+ # full: Allow a small subset of html markup in notifications:
+ # bold
+ # italic
+ # strikethrough
+ # underline
+ #
+ # For a complete reference see
+ # .
+ #
+ # strip: This setting is provided for compatibility with some broken
+ # clients that send markup even though it's not enabled on the
+ # server. Dunst will try to strip the markup but the parsing is
+ # simplistic so using this option outside of matching rules for
+ # specific applications *IS GREATLY DISCOURAGED*.
+ #
+ # no: Disable markup parsing, incoming notifications will be treated as
+ # plain text. Dunst will not advertise that it has the body-markup
+ # capability if this is set as a global setting.
+ #
+ # It's important to note that markup inside the format option will be parsed
+ # regardless of what this is set to.
+ markup = full
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "%s\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 = false
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = yes
+
+ ### Icons ###
+
+ # Recursive icon lookup. You can set a single theme, instead of having to
+ # define all lookup paths.
+ enable_recursive_icon_lookup = true
+
+ # Set icon theme (only used for recursive icon lookup)
+ icon_theme = "Papirus-Dark,Adwaita"
+ # You can also set multiple icon themes, with the leftmost one being used first.
+ # icon_theme = "Adwaita, breeze"
+
+ # Align icons left/right/top/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 = 32
+
+ # Scale larger icons down to this size, set to 0 to disable
+ max_icon_size = 128
+
+ # Paths to default icons (only neccesary when not using recursive icon lookup)
+ icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+ ### History ###
+
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = yes
+
+ # Maximum amount of notifications kept in history
+ history_length = 20
+
+ ### Misc/Advanced ###
+
+ # dmenu path.
+ dmenu = /usr/bin/dmenu -p dunst:
+
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/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 = 10
+
+ # Ignore the dbus closeNotification message.
+ # Useful to enforce the timeout set by dunst configuration. Without this
+ # parameter, an application may close the notification sent before the
+ # user defined timeout.
+ ignore_dbusclose = false
+
+ ### Wayland ###
+ # These settings are Wayland-specific. They have no effect when using X11
+
+ # Uncomment this if you want to let notications appear under fullscreen
+ # applications (default: overlay)
+ # layer = top
+
+ # Set this to true to use X11 output on Wayland.
+ force_xwayland = false
+
+ ### Legacy
+
+ # Use the Xinerama extension instead of RandR for multi-monitor support.
+ # This setting is provided for compatibility with older nVidia drivers that
+ # do not support RandR and using it on systems that support RandR is highly
+ # discouraged.
+ #
+ # By enabling this setting dunst will not be able to detect when a monitor
+ # is connected or disconnected which might break follow mode if the screen
+ # layout changes.
+ force_xinerama = false
+
+ ### mouse
+
+ # Defines list of actions for each mouse event
+ # Possible values are:
+ # * none: Don't do anything.
+ # * do_action: Invoke the action determined by the action_name rule. If there is no
+ # such action, open the context menu.
+ # * open_url: If the notification has exactly one url, open it. If there are multiple
+ # ones, open the context menu.
+ # * close_current: Close current notification.
+ # * close_all: Close all notifications.
+ # * context: Open context menu for the notification.
+ # * context_all: Open context menu for all notifications.
+ # These values can be strung together for each mouse event, and
+ # will be executed in sequence.
+ mouse_left_click = close_current
+ mouse_middle_click = do_action, close_current
+ mouse_right_click = close_all
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+ # Calculate the dpi to use on a per-monitor basis.
+ # If this setting is enabled the Xft.dpi value will be ignored and instead
+ # dunst will attempt to calculate an appropriate dpi value for each monitor
+ # using the resolution and physical size. This might be useful in setups
+ # where there are multiple screens with very different dpi values.
+ per_monitor_dpi = false
+
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#000000CC"
+ foreground = "#888888"
+ timeout = 6
+ # Icon for notifications with low urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_normal]
+ background = "#000000CC"
+ foreground = "#ffffff"
+ timeout = 6
+ # Icon for notifications with normal urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_critical]
+ background = "#900000CC"
+ foreground = "#ffffff"
+ frame_color = "#ffffff"
+ timeout = 6
+ # Icon for notifications with critical urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+#
+# Messages can be matched by
+# appname (discouraged, see desktop_entry)
+# body
+# category
+# desktop_entry
+# icon
+# match_transient
+# msg_urgency
+# stack_tag
+# summary
+#
+# and you can override the
+# background
+# foreground
+# format
+# frame_color
+# fullscreen
+# new_icon
+# set_stack_tag
+# set_transient
+# set_category
+# timeout
+# urgency
+# icon_position
+# skip_display
+# history_ignore
+# action_name
+# word_wrap
+# ellipsize
+# alignment
+# hide_text
+#
+# 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/configs/dotfiles/hyprland/laptop/.config/fastfetch/config.jsonc b/configs/dotfiles/hyprland/laptop/.config/fastfetch/config.jsonc
new file mode 100755
index 0000000..658682c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/fastfetch/config.jsonc
@@ -0,0 +1,104 @@
+// Thanks to Bina
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "padding": {
+ "top": 2
+ }
+ },
+ "display": {
+ "separator": " ➜ "
+ },
+ "modules": [
+ "break",
+ "break",
+ "break",
+ {
+ "type": "os",
+ "key": "OS ",
+ "keyColor": "31", // = color1
+ },
+ {
+ "type": "kernel",
+ "key": " ├ ",
+ "keyColor": "31",
+ },
+ {
+ "type": "shell",
+ "key": " └ ",
+ "keyColor": "31",
+ },
+ "break",
+ {
+ "type": "wm",
+ "key": "WM ",
+ "keyColor": "32",
+ },
+ {
+ "type": "wmtheme",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "icons",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "cursor",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminal",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminalfont",
+ "key": " └ ",
+ "keyColor": "32",
+ },
+ "break",
+ {
+ "type": "host",
+ "format": "{5} {1} Type {2}",
+ "key": "PC ",
+ "keyColor": "33",
+ },
+ {
+ "type": "cpu",
+ "format": "{1} ({3}) @ {7} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "gpu",
+ "format": "{1} {2} @ {12} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "memory",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "swap",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "disk",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "monitor",
+ "key": " └ ",
+ "keyColor": "33",
+ },
+ "break",
+ "break",
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/animation.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/animation.conf
new file mode 100755
index 0000000..5909926
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/animation.conf
@@ -0,0 +1,125 @@
+# -----------------------------------------------------
+# "Dynamic" (default)
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, once
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
+# -----------------------------------------------------
+# "Disabled"
+# -----------------------------------------------------
+#animations {
+ #enabled = false
+#}
+# -----------------------------------------------------
+# "Standard"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ #animation = windows, 1, 7, myBezier
+ #animation = windowsOut, 1, 7, default, popin 80%
+ #animation = border, 1, 10, default
+ #animation = borderangle, 1, 8, default
+ #animation = fade, 1, 7, default
+ #animation = workspaces, 1, 6, default
+#}
+# -----------------------------------------------------
+# "Dynamic"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = wind, 0.05, 0.9, 0.1, 1.05
+ #bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ #bezier = winOut, 0.3, -0.3, 0, 1
+ #bezier = liner, 1, 1, 1, 1
+ #animation = windows, 1, 6, wind, slide
+ #animation = windowsIn, 1, 6, winIn, slide
+ #animation = windowsOut, 1, 5, winOut, slide
+ #animation = windowsMove, 1, 5, wind, slide
+ #animation = border, 1, 1, liner
+ #animation = borderangle, 1, 30, liner, loop
+ #animation = fade, 1, 10, default
+ #animation = workspaces, 1, 5, wind
+#}
+# -----------------------------------------------------
+# "Classic"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ #animation = windows, 1, 7, myBezier
+ #animation = windowsOut, 1, 7, default, popin 80%
+ #animation = border, 1, 10, default
+ #animation = borderangle, 1, 8, default
+ #animation = fade, 1, 7, default
+ #animation = workspaces, 1, 6, default
+#}
+# -----------------------------------------------------
+# "Fast"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = linear, 0, 0, 1, 1
+ #bezier = md3_standard, 0.2, 0, 0, 1
+ #bezier = md3_decel, 0.05, 0.7, 0.1, 1
+ #bezier = md3_accel, 0.3, 0, 0.8, 0.15
+ #bezier = overshot, 0.05, 0.9, 0.1, 1.1
+ #bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
+ #bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
+ #bezier = fluent_decel, 0.1, 1, 0, 1
+ #bezier = easeInOutCirc, 0.85, 0, 0.15, 1
+ #bezier = easeOutCirc, 0, 0.55, 0.45, 1
+ #bezier = easeOutExpo, 0.16, 1, 0.3, 1
+ #animation = windows, 1, 3, md3_decel, popin 60%
+ #animation = border, 1, 10, default
+ #animation = fade, 1, 2.5, md3_decel
+ #animation = workspaces, 1, 3.5, easeOutExpo, slide
+ #animation = specialWorkspace, 1, 3, md3_decel, slidevert
+#}
+# -----------------------------------------------------
+# "High"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = wind, 0.05, 0.9, 0.1, 1.05
+ #bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ #bezier = winOut, 0.3, -0.3, 0, 1
+ #bezier = liner, 1, 1, 1, 1
+ #animation = windows, 1, 6, wind, slide
+ #animation = windowsIn, 1, 6, winIn, slide
+ #animation = windowsOut, 1, 5, winOut, slide
+ #animation = windowsMove, 1, 5, wind, slide
+ #animation = border, 1, 1, liner
+ #animation = borderangle, 1, 30, liner, loop
+ #animation = fade, 1, 10, default
+ #animation = workspaces, 1, 5, wind
+#}
+# -----------------------------------------------------
+# "Moving"
+# -----------------------------------------------------
+#animations {
+ #enabled = true
+ #bezier = overshot, 0.05, 0.9, 0.1, 1.05
+ #bezier = smoothOut, 0.5, 0, 0.99, 0.99
+ #bezier = smoothIn, 0.5, -0.5, 0.68, 1.5
+ #animation = windows, 1, 5, overshot, slide
+ #animation = windowsOut, 1, 3, smoothOut
+ #animation = windowsIn, 1, 3, smoothOut
+ #animation = windowsMove, 1, 4, smoothIn, slide
+ #animation = border, 1, 5, default
+ #animation = fade, 1, 5, smoothIn
+ #animation = fadeDim, 1, 5, smoothIn
+ #animation = workspaces, 1, 6, default
+#}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/autostart.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/autostart.conf
new file mode 100755
index 0000000..3c8f764
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/autostart.conf
@@ -0,0 +1,49 @@
+# ___ __ __ __
+# / _ |__ __/ /____ ___ / /____ _____/ /_
+# / __ / // / __/ _ \(_- __/ _ `/ __/ __/
+# /_/ |_\_,_/\__/\___/___/\__/\_,_/_/ \__/
+#
+
+# Setup XDG for screen sharing and start waypaper and waybar
+exec-once = ~/.config/hypr/scripts/xdg.sh
+
+# Load Wallpaper
+exec-once = ~/.config/hypr/scripts/wallpaper-restore.sh
+
+# Start Polkit
+exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+
+# Load Notification Daemon
+exec-once = ~/.config/ml4w/settings/notification.sh
+
+# Load GTK settings
+exec-once = ~/.config/hypr/scripts/gtk.sh
+
+# Using hypridle to start hyprlock
+exec-once = hypridle
+
+# Load cliphist history
+exec-once = wl-paste --watch cliphist store
+
+# Autostart ML4W App
+exec-once = ~/.config/ml4w/scripts/ml4w-autostart.sh
+
+# Start ags
+exec-once = ~/.config/ml4w/scripts/ags.sh
+
+# Start autostart cleanup
+exec-once = ~/.config/hypr/scripts/cleanup.sh
+
+# Load configuration from ML4W Hyprland Settings App
+exec = ~/.config/ml4w-hyprland-settings/hyprctl.sh
+
+# Dock
+exec-once = ~/.config/nwg-dock-hyprland/launch.sh
+
+# Apps
+exec-once = nextcloud --background
+exec-once = bitwarden
+exec-once = startsunshine
+exec-once = /home/gib/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox --minimize
+exec-once = flatpak override --user --env=ELECTRON_OZONE_PLATFORM_HINT=x11
+exec-once = flatpak run app.bluebubbles.BlueBubbles minimized
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/custom.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/custom.conf
new file mode 100755
index 0000000..1e24aae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/custom.conf
@@ -0,0 +1,24 @@
+# Add your additional Hyprland configurations here
+#
+# This is an additional key binding
+# bind = $mainMod CTRL, up, workspace, empty
+#
+# Example for xwayland
+# xwayland {
+# force_zero_scaling = true
+# }
+
+# qt5ct environment variable
+# env = QT_QPA_PLATFORMTHEME,qt5ct
+
+# SDL version
+env = SDL_VIDEODRIVER,wayland
+# env = SDL_VIDEODRIVER,x11
+
+# No Hardware Cursor
+# cursor {
+# no_hardware_cursors = false
+# }
+
+# Blur for waybar
+#layerrule = blur, waybar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/decoration.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/decoration.conf
new file mode 100755
index 0000000..177914e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/decoration.conf
@@ -0,0 +1,168 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
+# -----------------------------------------------------
+# Rounding
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 1.0
+ #inactive_opacity = 0.8
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 6
+ #passes = 2
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding All Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 0.9
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 0.9
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 4
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ #blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding, All Blur No Shadows
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 0.9
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 0.9
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 4
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ #blurls = waybar
+ #}
+ #shadow {
+ #enabled = false
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# Rounding, More Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 10
+ #active_opacity = 1.0
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 6
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# No Rounding
+# -----------------------------------------------------
+#decoration {
+ #rounding = 0
+ #active_opacity = 1.0
+ #inactive_opacity = 0.8
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 6
+ #passes = 2
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
+# -----------------------------------------------------
+# No Rounding, More Blur
+# -----------------------------------------------------
+#decoration {
+ #rounding = 0
+ #active_opacity = 1.0
+ #inactive_opacity = 0.6
+ #fullscreen_opacity = 1.0
+ #blur {
+ #enabled = true
+ #size = 12
+ #passes = 6
+ #new_optimizations = on
+ #ignore_opacity = true
+ #xray = true
+ ## blurls = waybar
+ #}
+ #shadow {
+ #enabled = true
+ #range = 30
+ #render_power = 3
+ #color = 0x66000000
+ #}
+#}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/keybinding.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/keybinding.conf
new file mode 100755
index 0000000..e5cb3c2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/keybinding.conf
@@ -0,0 +1,125 @@
+# -----------------------------------------------------
+# Keybingings
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# KEYS
+# -----------------------------------------------------
+$mainMod = SUPER
+$altMod = ALT
+
+# -----------------------------------------------------
+# VARIABLES
+# -----------------------------------------------------
+$HYPRSCRIPTS = ~/.config/hypr/scripts
+$SCRIPTS = ~/.config/ml4w/scripts
+
+# -----------------------------------------------------
+# DEFAULT APPLICATIONS
+# -----------------------------------------------------
+$terminal = kitty
+$fileManager = nautilus
+$browser = firefox
+$menu = pkill rofi || rofi -show drun -replace
+$calculator = gnome-calculator
+
+# -----------------------------------------------------
+# DEFAULT COMMANDS
+# -----------------------------------------------------
+$quitwindow = killactive
+$forcequit = hyprctl activewindow | grep pid | tr -d 'pid:' | xargs kill
+
+# -----------------------------------------------------
+# DEFAULT APPLICATION BINDINGS
+# -----------------------------------------------------
+bind = $mainMod, T, exec, $terminal
+bind = $mainMod, W, exec, $browser
+bind = $mainMod, F, exec, $fileManager
+bind = $mainMod, C, exec, $calculator
+bind = $mainMod, D, exec, $menu
+bind = $altMod, D, exec, nwg-dock-hyprland
+
+# -----------------------------------------------------
+# DEFAULT WINDOW BINDINGS
+# -----------------------------------------------------
+bind = $mainMod, Q, $quitwindow
+bind = $mainMod SHIFT, Q, exec, $forcequit
+bind = $mainMod, M, fullscreen, 1
+bind = $mainMod SHIFT, M, fullscreen, 0
+bind = $mainMod, E, togglefloating
+bind = $mainMod SHIFT, E, exec, $HYPRSCRIPTS/toggleallfloat.sh
+bind = $mainMod, X, togglesplit
+bind = $mainMod, Z, swapsplit
+bind = $mainMod, H, movefocus, l
+bind = $mainMod, L, movefocus, r
+bind = $mainMod, K, movefocus, u
+bind = $mainMod, J, movefocus, d
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+bind = $mainMod CTRL, L, resizeactive, 100 0
+bind = $mainMod CTRL, H, resizeactive, -100 0
+bind = $mainMod CTRL, J, resizeactive, 0 100
+bind = $mainMod CTRL, K, resizeactive, 0 -100
+bind = $mainMod, G, togglegroup
+
+# -----------------------------------------------------
+# ACTIONS
+# -----------------------------------------------------
+bind = $mainMod SHIFT, A, exec, $HYPRSCRIPTS/toggle-animations.sh
+bind = $mainMod, PRINT, exec, $HYPRSCRIPTS/screenshot.sh
+bind = $mainMod SHIFT, S, exec, $HYPRSCRIPTS/screenshot.sh
+bind = $mainMod CTRL, Q, exec, ~/.config/ml4w/scripts/wlogout.sh
+bind = $mainMod SHIFT, W, exec, waypaper --random
+bind = $mainMod CTRL, W, exec, waypaper
+bind = $mainMod ALT, W, exec, $HYPERSCRIPTS/wallpaper-automation.sh
+bind = $mainMod SHIFT, R, exec, $HYPRSCRIPTS/loadconfig.sh
+bind = $mainMod, V, exec, $SCRIPTS/cliphist.sh
+bind = $mainMod SHIFT, B, exec, ~/.config/waybar/launch.sh
+bind = $mainMod CTRL, B, exec, ~/.config/waybar/toggle.sh
+bind = $mainMod CTRL, T, exec, ~/.config/waybar/themeswitcher.sh
+bind = $mainMod CTRL, S, exec, ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage
+
+# -----------------------------------------------------
+# WORKSPACES
+# -----------------------------------------------------
+# Move to workspace from left to right
+bind = $altMod, H, workspace, -1
+bind = $altMod, L, workspace, +1
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+# Open workspace by number
+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
+# Move active window to workspace from left to right
+bind = $mainMod SHIFT, H, movetoworkspace, -1
+bind = $mainMod SHIFT, L, movetoworkspace, +1
+# Move active window to workspace by number
+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
+
+# -----------------------------------------------------
+# Fn Keys
+# -----------------------------------------------------
+bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%-
+bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
+bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
+bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
+bind = , XF86AudioPlay, exec, playerctl play-pause
+bind = , XF86AudioPause, exec, playerctl pause
+bind = , XF86AudioNext, exec, playerctl next
+bind = , XF86AudioPrev, exec, playerctl previous
+bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
+bind = , XF86Calculator, exec, $calculator
+bind = , XF86Lock, exec, hyprlock
+
+bind = , code:238, exec, brightnessctl -d smc::kbd_backlight s +10
+bind = , code:237, exec, brightnessctl -d smc::kbd_backlight s 10-
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/keyboard.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/keyboard.conf
new file mode 100755
index 0000000..1b57d6f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/keyboard.conf
@@ -0,0 +1,35 @@
+# -----------------------------------------------------
+# Keyboard Layout
+# https://wiki.hyprland.org/Configuring/Variables/#input
+# -----------------------------------------------------
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ numlock_by_default = true
+ mouse_refocus = false
+
+ # For United States
+ # kb_layout = us
+ # kb_variant = intl
+ # kb_model = pc105
+ # kb_options =
+
+ follow_mouse = 1
+ touchpad {
+ # for desktop
+ natural_scroll = false
+
+ # for laptop
+ # natural_scroll = yes
+ # middle_button_emulation = true
+ # clickfinger_behavior = false
+ scroll_factor = 1.0 # Touchpad scroll factor
+ }
+ sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification.
+}
+
+gestures {
+ workspace_swipe = true
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/layout.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/layout.conf
new file mode 100755
index 0000000..0ecfff8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/layout.conf
@@ -0,0 +1,45 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+master {
+ # Commented out due to compatibility reasons
+ # new_status = master
+}
+gestures {
+ workspace_swipe = false
+}
+binds {
+ workspace_back_and_forth = true
+ allow_workspace_cycles = true
+ pass_mouse_when_bound = false
+}
+# -----------------------------------------------------
+# Laptop
+# -----------------------------------------------------
+#dwindle {
+ #pseudotile = true
+ #preserve_split = true
+#}
+#master {
+ ## Commented out due to compatibility reasons
+ ## new_status = master
+#}
+#gestures {
+ #workspace_swipe = true
+ #workspace_swipe_fingers = 3
+ #workspace_swipe_distance = 500
+ #workspace_swipe_invert = true
+ #workspace_swipe_min_speed_to_force = 30
+ #workspace_swipe_cancel_ratio = 0.5
+ #workspace_swipe_create_new = true
+ #workspace_swipe_forever = true
+#}
+#binds {
+ #workspace_back_and_forth = true
+ #allow_workspace_cycles = true
+ #pass_mouse_when_bound = false
+#}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/misc.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/misc.conf
new file mode 100755
index 0000000..9913ccc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/misc.conf
@@ -0,0 +1,11 @@
+# -----------------------------------------------------
+# Misc settings
+# -----------------------------------------------------
+misc {
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ initial_workspace_tracking = 1
+ vrr = 1
+ animate_manual_resizes = true
+ animate_mouse_windowdragging = true
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/ml4w.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/ml4w.conf
new file mode 100755
index 0000000..813390a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/ml4w.conf
@@ -0,0 +1,124 @@
+# __ _____ _____ __ _____ ___
+# / |/ / / / / / | /| / / / ___/__ ___ / _/
+# / /|_/ / /_/_ _/ |/ |/ / / /__/ _ \/ _ \/ _/
+# /_/ /_/____//_/ |__/|__/ \___/\___/_//_/_/
+#
+
+# Pavucontrol floating
+windowrulev2 = float,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = size 700 600,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = center,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = pin,class:(.*org.pulseaudio.pavucontrol.*)
+
+# OpenAI ChatGPT floating
+windowrulev2 = float,title:(ChatGPT.*)
+windowrulev2 = float,title:(.*chat.gibbyb.com.*)
+windowrulev2 = size 500 50%,title:(.*chat.gibbyb.com.*)
+windowrulev2 = move 20 70,title:(.*chat.gibbyb.com.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(.*waypaper.*)
+windowrulev2 = size 900 700,class:(.*waypaper.*)
+windowrulev2 = center,class:(.*waypaper.*)
+windowrulev2 = pin,class:(.*waypaper.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(com.ml4w.welcome)
+windowrulev2 = size 700 600,class:(com.ml4w.welcome)
+windowrulev2 = center,class:(com.ml4w.welcome)
+windowrulev2 = pin,class:(com.ml4w.welcome)
+
+windowrulev2 = float,class:(ml4w-welcome.py)
+windowrulev2 = size 400 500,class:(ml4w-welcome.py)
+windowrulev2 = center,class:(ml4w-welcome.py)
+windowrulev2 = pin,class:(ml4w-welcome.py)
+
+# ML4W Settings App floating
+windowrulev2 = float,class:(com.ml4w.dotfilessettings)
+windowrulev2 = size 700 600,class:(com.ml4w.dotfilessettings)
+windowrulev2 = move 10% 20%,class:(com.ml4w.dotfilessettings)
+windowrulev2 = pin,class:(com.ml4w.dotfilessettings)
+
+windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = pin,class:(ml4w-dotfiles-settings.py)
+
+# ML4W Hyprland App floating
+windowrulev2 = float,class:(com.ml4w.hyprland.settings)
+windowrulev2 = size 700 600,class:(com.ml4w.hyprland.settings)
+windowrulev2 = center,class:(com.ml4w.hyprland.settings)
+windowrulev2 = pin,class:(com.ml4w.hyprland.settings)
+
+windowrulev2 = float,class:(ml4w-hyprland-settings.py)
+windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py)
+windowrulev2 = center,class:(ml4w-hyprland-settings.py)
+windowrulev2 = pin,class:(ml4w-hyprland-settings.py)
+
+# System Mission Center
+windowrulev2 = float, class:(io.missioncenter.MissionCenter)
+windowrulev2 = pin, class:(io.missioncenter.MissionCenter)
+windowrulev2 = center, class:(io.missioncenter.MissionCenter)
+windowrulev2 = size 900 600, class:(io.missioncenter.MissionCenter)
+
+# System Mission Center Preference Window
+windowrulev2 = float, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = pin, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = center, class:(missioncenter), title:^(Preferences)$
+
+# Gnome Calculator
+windowrulev2 = float,class:(org.gnome.Calculator)
+windowrulev2 = size 700 600,class:(org.gnome.Calculator)
+windowrulev2 = center,class:(org.gnome.Calculator)
+
+# Emoji Picker Smile
+windowrulev2 = float,class:(it.mijorus.smile)
+windowrulev2 = pin, class:(it.mijorus.smile)
+windowrulev2 = move 100%-w-40 90,class:(it.mijorus.smile)
+
+# Hyprland Share Picker
+windowrulev2 = float, class:(hyprland-share-picker)
+windowrulev2 = pin, class:(hyprland-share-picker)
+windowrulev2 = center, title:class:(hyprland-share-picker)
+windowrulev2 = size 600 400,class:(hyprland-share-picker)
+
+# General floating
+windowrulev2 = float,class:(dotfiles-floating)
+windowrulev2 = size 1000 700,class:(dotfiles-floating)
+windowrulev2 = center,class:(dotfiles-floating)
+windowrulev2 = pin, class:(dotfiles-floating)
+
+# XDG Desktop Portal
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+
+# QT
+env = QT_QPA_PLATFORM,wayland;xcb
+env = QT_QPA_PLATFORMTHEME,qt6ct
+env = QT_QPA_PLATFORMTHEME,qt5ct
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+
+# GDK
+env = GDK_SCALE,1
+
+# Toolkit Backend
+env = GDK_BACKEND,wayland,x11,*
+env = CLUTTER_BACKEND,wayland
+
+# Mozilla
+env = MOZ_ENABLE_WAYLAND,1
+
+# Set the cursor size for xcursor
+env = XCURSOR_SIZE,24
+
+# Disable appimage launcher by default
+env = APPIMAGELAUNCHER_DISABLE,1
+
+# Ozone
+env = OZONE_PLATFORM,wayland
+env = ELECTRON_OZONE_PLATFORM_HINT,wayland
+
+# Python
+# env = PYTHONPATH,/usr/lib/python3.12/site-packages:/usr/lib/python3.13/site-packages:$PYTHONPATH
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/nvidia.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/nvidia.conf
new file mode 100755
index 0000000..83c9504
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/nvidia.conf
@@ -0,0 +1,24 @@
+# -----------------------------------------------------
+# NVIDIA Environment Variables
+# https://wiki.hyprland.org/Nvidia/
+# -----------------------------------------------------
+env = GBM_BACKEND,nvidia-drm
+env = LIBVA_DRIVER_NAME,nvidia
+env = SDL_VIDEODRIVER,wayland
+env = WLR_DRM_NO_ATOMIC,1
+env = __GL_VRR_ALLOWED,1
+env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+env = __NV_PRIME_RENDER_OFFLOAD,1
+env = __VK_LAYER_NV_optimus,NVIDIA_only
+# FOR VM and POSSIBLY NVIDIA
+env = WLR_NO_HARDWARE_CURSORS,1 # On hyprland >v0.41, now configured on variable cursor section
+env = WLR_RENDERER_ALLOW_SOFTWARE,1
+env = NVD_BACKEND,direct
+# nvidia firefox (for hardware acceleration on FF)?
+# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration
+env = MOZ_DISABLE_RDD_SANDBOX,1
+env = EGL_PLATFORM,wayland
+env = ELECTRON_OZONE_PLATFORM_HINT,auto
+cursor {
+ no_hardware_cursors = true
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/conf/window.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/window.conf
new file mode 100755
index 0000000..9f998bd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/conf/window.conf
@@ -0,0 +1,49 @@
+# -----------------------------------------------------
+# Default
+# -----------------------------------------------------
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
+# -----------------------------------------------------
+# No Border
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 0
+ #col.active_border = $color11
+ #col.inactive_border = rgba(ffffffff)
+ #layout = dwindle
+ #resize_on_border = true
+#}
+# -----------------------------------------------------
+# Border 1
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 1
+ #col.active_border = $color11
+ #col.inactive_border = rgba(ffffffff)
+ #layout = dwindle
+ #resize_on_border = true
+#}
+# -----------------------------------------------------
+# Border 1 Reverse
+# -----------------------------------------------------
+#general {
+ #gaps_in = 10
+ #gaps_out = 14
+ #border_size = 1
+ #col.active_border = rgba(ffffffff)
+ #col.inactive_border = $color11
+ #layout = dwindle
+ #resize_on_border = true
+#}
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite
new file mode 100755
index 0000000..0f985b3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite
@@ -0,0 +1 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-blur b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-blur
new file mode 100755
index 0000000..85a5a51
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-blur
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness40 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness40
new file mode 100755
index 0000000..97cafb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness60 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness60
new file mode 100755
index 0000000..3dc7788
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness80 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness80
new file mode 100755
index 0000000..67bb0ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blackwhite-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1
new file mode 100755
index 0000000..f401e1a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1
@@ -0,0 +1 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness40 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness40
new file mode 100755
index 0000000..d79704a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness60 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness60
new file mode 100755
index 0000000..73028f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness80 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness80
new file mode 100755
index 0000000..c1984aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur1-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur2 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur2
new file mode 100755
index 0000000..cb13630
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/blur2
@@ -0,0 +1 @@
+magick $wallpaper -blur "10x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate
new file mode 100755
index 0000000..971c7aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate
@@ -0,0 +1 @@
+magick $wallpaper -negate $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness40 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness40
new file mode 100755
index 0000000..f6b8bd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness60 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness60
new file mode 100755
index 0000000..bf45cd6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness80 b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness80
new file mode 100755
index 0000000..2d342c1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/effects/wallpaper/negate-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/hypridle.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/hypridle.conf
new file mode 100755
index 0000000..d02b4ea
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/hypridle.conf
@@ -0,0 +1,47 @@
+# _ _ _ _
+# | |__ _ _ _ __ _ __(_) __| | | ___
+# | '_ \| | | | '_ \| '__| |/ _` | |/ _ \
+# | | | | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+# Version 2.8.3
+# DO NOT REMOVE THE REPLACEMENT COMMENTS
+# REQUIRED BY THE ML4W SETTINGS APP
+# https://wiki.hyprland.org/Hypr-Ecosystem/hypridle/
+
+# general {
+# ignore_dbus_inhibit = false
+# }
+
+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.
+}
+
+# Screenlock
+listener {
+ # HYPRLOCK TIMEOUT
+ timeout = 600
+ # HYPRLOCK ONTIMEOUT
+ on-timeout = loginctl lock-session
+}
+
+# dpms
+listener {
+ # DPMS TIMEOUT
+ timeout = 660
+ # DPMS ONTIMEOUT
+ on-timeout = hyprctl dispatch dpms off
+ # DPMS ONRESUME
+ on-resume = hyprctl dispatch dpms on
+}
+
+# Suspend
+listener {
+ # SUSPEND TIMEOUT
+ timeout = 1800
+ #SUSPEND ONTIMEOUT
+ on-timeout = systemctl suspend
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/hyprland.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/hyprland.conf
new file mode 100755
index 0000000..f59854c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/hyprland.conf
@@ -0,0 +1,124 @@
+# -----------------------------------------------------
+# | | | |Gib's _ __ _ __| | __ _ _ __ __| |
+# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` |
+# | _ | |_| | |_) | | | | (_| | | | | (_| |
+# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_|
+# |___/|_| Config
+# -----------------------------------------------------
+# MONITORS
+# See https://wiki.hyprland.org/Configuring/Monitors/
+# -----------------------------------------------------
+monitor=eDP-2,1920x1200@120,0x0,0.9,vrr,1
+
+# -----------------------------------------------------
+# WORKSPACE RULES
+# https://wiki.hyprland.org/Configuring/Workspace-Rules/
+# -----------------------------------------------------
+#workspace = 1, monitor:eDP-2, default:true
+#workspace = 2, monitor:, default:true
+#workspace = 3, monitor:eDP-2
+#workspace = 4, monitor:
+#workspace = 5, monitor:eDP-2
+#workspace = 6, monitor:
+
+# -----------------------------------------------------
+# WINDOW RULES
+# https://wiki.hyprland.org/Configuring/Window-Rules/
+# -----------------------------------------------------
+windowrule = tile,^(gnome-connections)$
+windowrule = tile,^(jumpclient.exe)$
+windowrule = tile,^(Microsoft-edge)$
+windowrule = tile,^(kitty)$
+windowrule = tile,^(firefox)$
+windowrule = tile,^(Chromium)$
+windowrule = float,^(Bitwarden)$
+windowrule = float,^(Cider)$
+windowrule = float,^(pavucontrol)$
+windowrule = float,^(blueman-manager)$
+windowrule = float,^(nm-connection-editor)$
+windowrule = float,^(qalculate-gtk)$
+# Browser Picture in Picture
+windowrulev2 = float, title:^(Picture-in-Picture)$
+windowrulev2 = pin, title:^(Picture-in-Picture)$
+windowrulev2 = move 69.5% 4%, title:^(Picture-in-Picture)$
+
+# -----------------------------------------------------
+# CURSOR
+# -----------------------------------------------------
+exec-once = hyprctl setcursor Bibata-Modern-Ice 24
+cursor {
+ min_refresh_rate = 30
+ default_monitor = eDP-2
+}
+
+# -----------------------------------------------------
+# NVIDIA
+# https://wiki.hyprland.org/Nvidia/
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/nvidia.conf
+
+# -----------------------------------------------------
+# KEYBOARD
+# https://wiki.hyprland.org/Configuring/Variables/#input
+# -----------------------------------------------------
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options = caps:escape
+ numlock_by_default = true
+ mouse_refocus = false
+ follow_mouse = 1
+ touchpad {
+ # FOR DESKTOP/MOUSE
+ #natural_scroll = false
+ # FOR LAPTOP/TOUCHPAD
+ natural_scroll = yes
+ middle_button_emulation = true
+ clickfinger_behavior = false
+ scroll_factor = 1.0 # Touchpad scroll factor
+ }
+ sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification.
+}
+gestures {
+ workspace_swipe = true
+}
+
+# -----------------------------------------------------
+# Load pywal color file
+# -----------------------------------------------------
+source = ~/.cache/wal/colors-hyprland.conf
+
+# -----------------------------------------------------
+# Autostart
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/autostart.conf
+
+# -----------------------------------------------------
+# Load configuration files
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/window.conf
+source = ~/.config/hypr/conf/decoration.conf
+source = ~/.config/hypr/conf/layout.conf
+source = ~/.config/hypr/conf/misc.conf
+source = ~/.config/hypr/conf/keybinding.conf
+
+# -----------------------------------------------------
+# Animation
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/animation.conf
+
+# -----------------------------------------------------
+# Custom
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/custom.conf
+
+# -----------------------------------------------------
+# ML4W Configuration
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/ml4w.conf
+
+# -----------------------------------------------------
+# Environment for xdg-desktop-portal-hyprland
+# -----------------------------------------------------
+exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/hyprlock.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/hyprlock.conf
new file mode 100755
index 0000000..d7e0fda
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/hyprlock.conf
@@ -0,0 +1,88 @@
+# _ _ _
+# | |__ _ _ _ __ _ __| | ___ ___| | __
+# | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ /
+# | | | | |_| | |_) | | | | (_) | (__| <
+# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
+# |___/|_|
+#
+
+general {
+ ignore_empty_input = true
+}
+
+background {
+ monitor =
+ path = $HOME/.config/ml4w/cache/blurred_wallpaper.png # only png supported for now
+}
+
+input-field {
+ monitor =
+ size = 200, 50
+ outline_thickness = 3
+ dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15 # 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 = rgb(151515)
+ inner_color = rgb(FFFFFF)
+ font_color = rgb(10, 10, 10)
+ fade_on_empty = true
+ fade_timeout = 1000 # 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 = rgb(204, 136, 34)
+ fail_color = rgb(204, 34, 34) # 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
+ swap_font_color = false # see below
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ #clock
+ text = cmd[update:1000] echo "$TIME"
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 55
+ font_family = Fira Semibold
+ position = -100, 70
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+label {
+ monitor =
+ text = $USER
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 20
+ font_family = Fira Semibold
+ position = -100, 160
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+image {
+ monitor =
+ path = $HOME/.config/ml4w/cache/square_wallpaper.png
+ size = 280 # lesser side if not 1:1 ratio
+ rounding = -1 # negative values mean circle
+ border_size = 4
+ border_color = rgb(221, 221, 221)
+ rotate = 0 # degrees, counter-clockwise
+ reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
+# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
+ position = 0, 200
+ halign = center
+ valign = center
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/hyprpaper.conf b/configs/dotfiles/hyprland/laptop/.config/hypr/hyprpaper.conf
new file mode 100755
index 0000000..87bc849
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/hyprpaper.conf
@@ -0,0 +1,3 @@
+preload = /home/gib/Pictures/Wallpapers/faroe_islands.jpg
+wallpaper = eDP-2,/home/gib/Pictures/Wallpapers/faroe_islands.jpg
+splash = false
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/cleanup.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/cleanup.sh
new file mode 100755
index 0000000..af4196d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/cleanup.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ____ _
+# / ___| | ___ __ _ _ __ _ _ _ __
+# | | | |/ _ \/ _` | '_ \| | | | '_ \
+# | |___| | __/ (_| | | | | |_| | |_) |
+# \____|_|\___|\__,_|_| |_|\__,_| .__/
+# |_|
+#
+
+# Remove gamemode flag
+if [ -f ~/.cache/gamemode ] ;then
+ rm ~/.cache/gamemode
+ echo ":: ~/.cache/gamemode removed"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/disabledm.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/disabledm.sh
new file mode 100755
index 0000000..ee5e612
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/disabledm.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+clear
+figlet -f smslant "Disable DM"
+echo "Hyprland recommends the start with the tty login."
+echo "You can deactivate the current display manager (if exists)."
+echo ""
+echo "-> Do you really want to deactivate the display manager?"
+while true; do
+ read -p "Do you want to enable the sddm display manager and setup theme? (Yy/Nn): " yn
+ case $yn in
+ [Yy]* )
+ if [ -f /etc/systemd/system/display-manager.service ]; then
+ sudo rm /etc/systemd/system/display-manager.service
+ echo "Current display manager removed."
+ else
+ echo "No active display manager found."
+ fi
+ break;;
+ [Nn]* )
+ exit
+ break;;
+ * ) echo "Please answer yes or no.";;
+ esac
+done
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/gamemode.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/gamemode.sh
new file mode 100755
index 0000000..09708fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/gamemode.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ____ _
+# / ___| __ _ _ __ ___ ___ _ __ ___ ___ __| | ___
+# | | _ / _` | '_ ` _ \ / _ \ '_ ` _ \ / _ \ / _` |/ _ \
+# | |_| | (_| | | | | | | __/ | | | | | (_) | (_| | __/
+# \____|\__,_|_| |_| |_|\___|_| |_| |_|\___/ \__,_|\___|
+#
+#
+
+if [ -f ~/.cache/gamemode ] ;then
+ hyprctl reload
+ rm ~/.cache/gamemode
+ notify-send "Gamemode deactivated" "Animations and blur enabled"
+else
+ 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"
+ touch ~/.cache/gamemode
+ notify-send "Gamemode activated" "Animations and blur disabled"
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/gtk.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/gtk.sh
new file mode 100755
index 0000000..1b080de
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/gtk.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# ____ _____ _ __
+# / ___|_ _| |/ /
+# | | _ | | | ' /
+# | |_| | | | | . \
+# \____| |_| |_|\_\
+#
+# Source: https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
+
+config="$HOME/.config/gtk-3.0/settings.ini"
+if [ ! -f "$config" ]; then exit 1; fi
+
+gnome_schema="org.gnome.desktop.interface"
+gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_size="$(grep 'gtk-cursor-theme-size' "$config" | sed 's/.*\s*=\s*//')"
+font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
+terminal=$(cat $HOME/.config/ml4w/settings/terminal.sh)
+
+echo $gtk_theme
+echo $icon_theme
+echo $cursor_theme
+echo $cursor_size
+echo $font_name
+echo $terminal
+
+gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
+gsettings set "$gnome_schema" icon-theme "$icon_theme"
+gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
+gsettings set "$gnome_schema" font-name "$font_name"
+gsettings set "$gnome_schema" color-scheme "prefer-dark"
+
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal "$terminal"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal use-generic-terminal-name "true"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal keybindings "t"
+
+if [ -f ~/.config/hypr/conf/cursor.conf ] ;then
+ echo "exec-once = hyprctl setcursor $cursor_theme $cursor_size" > ~/.config/hypr/conf/cursor.conf
+ hyprctl setcursor $cursor_theme $cursor_size
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/hypridle.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/hypridle.sh
new file mode 100755
index 0000000..6296fa0
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/hypridle.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | | |_ _ _ __ _ __(_) __| | | ___
+# | |_| | | | | '_ \| '__| |/ _` | |/ _ \
+# | _ | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+
+SERVICE="hypridle"
+if [[ "$1" == "status" ]]; then
+ sleep 1
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ echo '{"text": "RUNNING", "class": "active", "tooltip": "Screen locking active\nLeft: Deactivate\nRight: Lock Screen"}'
+ else
+ echo '{"text": "NOT RUNNING", "class": "notactive", "tooltip": "Screen locking deactivated\nLeft: Activate\nRight: Lock Screen"}'
+ fi
+fi
+if [[ "$1" == "toggle" ]]; then
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ killall hypridle
+ else
+ hypridle
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/hyprshade.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/hyprshade.sh
new file mode 100755
index 0000000..037441c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/hyprshade.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ _ _ __ _ __ ___| |__ __ _ __| | ___
+# | |_| | | | | '_ \| '__/ __| '_ \ / _` |/ _` |/ _ \
+# | _ | |_| | |_) | | \__ \ | | | (_| | (_| | __/
+# |_| |_|\__, | .__/|_| |___/_| |_|\__,_|\__,_|\___|
+# |___/|_|
+#
+
+if [[ "$1" == "rofi" ]]; then
+
+ # Open rofi to select the Hyprshade filter for toggle
+ options="$(hyprshade ls)\noff"
+
+ # Open rofi
+ choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-hyprshade.rasi -i -no-show-icons -l 4 -width 30 -p "Hyprshade")
+ if [ ! -z $choice ] ;then
+ echo "hyprshade_filter=\"$choice\"" > ~/.config/ml4w/settings/hyprshade.sh
+ if [ "$choice" == "off" ] ;then
+ hyprshade off
+ notify-send "Hyprshade deactivated"
+ echo ":: hyprshade turned off"
+ else
+ notify-send "Changing Hyprshade to $choice" "Toggle shader with SUPER+SHIFT+S"
+ fi
+ fi
+
+else
+
+ # Toggle Hyprshade based on the selected filter
+ hyprshade_filter="blue-light-filter-50"
+
+ # Check if hyprshade.sh settings file exists and load
+ if [ -f ~/.config/ml4w/settings/hyprshade.sh ] ;then
+ source ~/.config/ml4w/settings/hyprshade.sh
+ fi
+
+ # Toggle Hyprshade
+ if [ "$hyprshade_filter" != "off" ] ;then
+ if [ -z $(hyprshade current) ] ;then
+ echo ":: hyprshade is not running"
+ hyprshade on $hyprshade_filter
+ notify-send "Hyprshade activated" "with $(hyprshade current)"
+ echo ":: hyprshade started with $(hyprshade current)"
+ else
+ notify-send "Hyprshade deactivated"
+ echo ":: Current hyprshade $(hyprshade current)"
+ echo ":: Switching hyprshade off"
+ hyprshade off
+ fi
+ else
+ hyprshade off
+ echo ":: hyprshade turned off"
+ fi
+
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/init-wallpaper-engine.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/init-wallpaper-engine.sh
new file mode 100755
index 0000000..6751156
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/init-wallpaper-engine.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# __ ______ _____ _
+# \ \ / / _ \ | ____|_ __ __ _(_)_ __ ___
+# \ \ /\ / /| |_) | | _| | '_ \ / _` | | '_ \ / _ \
+# \ V V / | __/ | |___| | | | (_| | | | | | __/
+# \_/\_/ |_| |_____|_| |_|\__, |_|_| |_|\___|
+# |___/
+#
+
+wallpaper_engine=$(cat $HOME/.config/ml4w/settings/wallpaper-engine.sh)
+if [ "$wallpaper_engine" == "swww" ] ;then
+ # swww
+ echo ":: Using swww"
+ swww init
+ swww-daemon --format xrgb
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+elif [ "$wallpaper_engine" == "hyprpaper" ] ;then
+ # hyprpaper
+ echo ":: Using hyprpaper"
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+else
+ echo ":: Wallpaper Engine disabled"
+ ~/.config/hypr/scripts/wallpaper.sh init
+fi
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/keybindings.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/keybindings.sh
new file mode 100755
index 0000000..d0b9150
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/keybindings.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | _____ _ _| |__ (_)_ __ __| (_)_ __ __ _ ___
+# | |/ / _ \ | | | '_ \| | '_ \ / _` | | '_ \ / _` / __|
+# | < __/ |_| | |_) | | | | | (_| | | | | | (_| \__ \
+# |_|\_\___|\__, |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___/
+# |___/ |___/
+#
+# -----------------------------------------------------
+# Get keybindings location based on variation
+# -----------------------------------------------------
+config_file=$(cat ~/.config/hypr/conf/keybinding.conf)
+config_file=${config_file/source = ~/}
+config_file=${config_file/source=~/}
+
+# -----------------------------------------------------
+# Path to keybindings config file
+# -----------------------------------------------------
+config_file="/home/$USER$config_file"
+echo "Reading from: $config_file"
+
+keybinds=""
+
+# Detect Start String
+while read -r line
+do
+ if [[ "$line" == "bind"* ]]; then
+
+ line="$(echo "$line" | sed 's/$mainMod/SUPER/g')"
+ line="$(echo "$line" | sed 's/bind = //g')"
+ line="$(echo "$line" | sed 's/bindm = //g')"
+
+ IFS='#'
+ read -a strarr <<<"$line"
+ kb_str=${strarr[0]}
+ cm_str=${strarr[1]}
+
+ IFS=','
+ read -a kbarr <<<"$kb_str"
+
+ item="${kbarr[0]} + ${kbarr[1]}"$'\r'"${cm_str:1}"
+ keybinds=$keybinds$item$'\n'
+ fi
+done < "$config_file"
+
+sleep 0.2
+rofi -dmenu -i -markup -eh 2 -replace -p "Keybinds" -config ~/.config/rofi/config-compact.rasi <<< "$keybinds"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/loadconfig.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/loadconfig.sh
new file mode 100755
index 0000000..a51ce6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/loadconfig.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+hyprctl reload
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/moveTo.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/moveTo.sh
new file mode 100755
index 0000000..de2492b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/moveTo.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# __ __ _
+# | \/ | _____ _____ | |_ ___
+# | |\/| |/ _ \ \ / / _ \ | __/ _ \
+# | | | | (_) \ V / __/ | || (_) |
+# |_| |_|\___/ \_/ \___| \__\___/
+#
+
+# Function to log messages (useful for debugging)
+log_message() {
+ # echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> ~/moveto_log.txt
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
+}
+
+# Get the target workspace from the argument
+target_workspace=$1
+
+# Check if a target workspace was provided
+if [ -z "$target_workspace" ]; then
+ log_message "Error: No target workspace provided"
+ exit 1
+fi
+
+# Get the current active workspace
+current_workspace=$(hyprctl activewindow -j | jq '.workspace.id')
+
+if [ -z "$current_workspace" ]; then
+ log_message "Error: Couldn't determine current workspace"
+ exit 1
+fi
+
+log_message "Moving from workspace $current_workspace to $target_workspace"
+
+# Get all window addresses in the current workspace
+window_addresses=$(hyprctl clients -j | jq -r ".[] | select(.workspace.id == $current_workspace) | .address")
+
+# Move each window to the target workspace
+for address in $window_addresses; do
+ log_message "Moving window $address to workspace $target_workspace"
+ hyprctl dispatch movetoworkspacesilent "$target_workspace,address:$address"
+done
+
+log_message "Finished moving windows"
+
+# Switch to the target workspace
+hyprctl dispatch workspace "$target_workspace"
+
+log_message "Switched to workspace $target_workspace"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/power.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/power.sh
new file mode 100755
index 0000000..8037fbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/power.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# ____
+# | _ \ _____ _____ _ __
+# | |_) / _ \ \ /\ / / _ \ '__|
+# | __/ (_) \ V V / __/ |
+# |_| \___/ \_/\_/ \___|_|
+#
+
+# Check if eww is open
+FILE="$HOME/.cache/ml4w_sidebar"
+
+if [[ "$1" == "exit" ]]; then
+ echo ":: Exit"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ killall -9 Hyprland
+ sleep 2
+fi
+
+if [[ "$1" == "lock" ]]; then
+ echo ":: Lock"
+ sleep 0.5
+ hyprlock
+fi
+
+if [[ "$1" == "reboot" ]]; then
+ echo ":: Reboot"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl reboot
+fi
+
+if [[ "$1" == "shutdown" ]]; then
+ echo ":: Shutdown"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl poweroff
+fi
+
+if [[ "$1" == "suspend" ]]; then
+ echo ":: Suspend"
+ sleep 0.5
+ systemctl suspend
+fi
+
+if [[ "$1" == "hibernate" ]]; then
+ echo ":: Hibernate"
+ sleep 1;
+ systemctl hibernate
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/restart-hypridle.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/restart-hypridle.sh
new file mode 100755
index 0000000..fe29461
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/restart-hypridle.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+killall hypridle
+sleep 1
+hypridle &
+notify-send "hypridle has been restarted."
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/screenshot.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/screenshot.sh
new file mode 100755
index 0000000..d08557a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/screenshot.sh
@@ -0,0 +1,224 @@
+#!/bin/bash
+# ____ _ _
+# / ___| ___ _ __ ___ ___ _ __ ___| |__ ___ | |_
+# \___ \ / __| '__/ _ \/ _ \ '_ \/ __| '_ \ / _ \| __|
+# ___) | (__| | | __/ __/ | | \__ \ | | | (_) | |_
+# |____/ \___|_| \___|\___|_| |_|___/_| |_|\___/ \__|
+#
+# Based on https://github.com/hyprwm/contrib/blob/main/grimblast/screenshot.sh
+# -----------------------------------------------------
+
+# Screenshots will be stored in $HOME by default.
+# The screenshot will be moved into the screenshot directory
+
+# Add this to ~/.config/user-dirs.dirs to save screenshots in a custom folder:
+# XDG_SCREENSHOTS_DIR="$HOME/Screenshots"
+
+prompt='Screenshot'
+mesg="DIR: ~/Screenshots"
+
+# Screenshot Filename
+source ~/.config/ml4w/settings/screenshot-filename.sh
+
+# Screenshot Folder
+source ~/.config/ml4w/settings/screenshot-folder.sh
+
+# Screenshot Editor
+export GRIMBLAST_EDITOR="$(cat ~/.config/ml4w/settings/screenshot-editor.sh)"
+
+# Example for keybindings
+# bind = SUPER, p, exec, grimblast save active
+# bind = SUPER SHIFT, p, exec, grimblast save area
+# bind = SUPER ALT, p, exec, grimblast save output
+# bind = SUPER CTRL, p, exec, grimblast save screen
+
+# Options
+option_1="Immediate"
+option_2="Delayed"
+
+option_capture_1="Capture Everything"
+option_capture_2="Capture Active Display"
+option_capture_3="Capture Selection"
+
+option_time_1="5s"
+option_time_2="10s"
+option_time_3="20s"
+option_time_4="30s"
+option_time_5="60s"
+#option_time_4="Custom (in seconds)" # Roadmap or someone contribute :)
+
+list_col='1'
+list_row='2'
+
+copy='Copy'
+save='Save'
+copy_save='Copy & Save'
+edit='Edit'
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 2 -width 30 -p "Take screenshot"
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$option_1\n$option_2" | rofi_cmd
+}
+
+####
+# Choose Timer
+# CMD
+timer_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 5 -width 30 -p "Choose timer"
+}
+
+# Ask for confirmation
+timer_exit() {
+ echo -e "$option_time_1\n$option_time_2\n$option_time_3\n$option_time_4\n$option_time_5" | timer_cmd
+}
+
+# Confirm and execute
+timer_run() {
+ selected_timer="$(timer_exit)"
+ if [[ "$selected_timer" == "$option_time_1" ]]; then
+ countdown=5
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_2" ]]; then
+ countdown=10
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_3" ]]; then
+ countdown=20
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_4" ]]; then
+ countdown=30
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_5" ]]; then
+ countdown=60
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Chose Screenshot Type
+# CMD
+type_screenshot_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 3 -width 30 -p "Type of screenshot"
+}
+
+# Ask for confirmation
+type_screenshot_exit() {
+ echo -e "$option_capture_1\n$option_capture_2\n$option_capture_3" | type_screenshot_cmd
+}
+
+# Confirm and execute
+type_screenshot_run() {
+ selected_type_screenshot="$(type_screenshot_exit)"
+ if [[ "$selected_type_screenshot" == "$option_capture_1" ]]; then
+ option_type_screenshot=screen
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_2" ]]; then
+ option_type_screenshot=output
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_3" ]]; then
+ option_type_screenshot=area
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Choose to save or copy photo
+# CMD
+copy_save_editor_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 4 -width 30 -p "How to save"
+}
+
+# Ask for confirmation
+copy_save_editor_exit() {
+ echo -e "$copy\n$save\n$copy_save\n$edit" | copy_save_editor_cmd
+}
+
+# Confirm and execute
+copy_save_editor_run() {
+ selected_chosen="$(copy_save_editor_exit)"
+ if [[ "$selected_chosen" == "$copy" ]]; then
+ option_chosen=copy
+ ${1}
+ elif [[ "$selected_chosen" == "$save" ]]; then
+ option_chosen=save
+ ${1}
+ elif [[ "$selected_chosen" == "$copy_save" ]]; then
+ option_chosen=copysave
+ ${1}
+ elif [[ "$selected_chosen" == "$edit" ]]; then
+ option_chosen=edit
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+timer() {
+ if [[ $countdown -gt 10 ]]; then
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown_less_10=$((countdown - 10))
+ sleep $countdown_less_10
+ countdown=10
+ fi
+ while [[ $countdown -ne 0 ]]; do
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown=$((countdown - 1))
+ sleep 1
+ done
+}
+
+# take shots
+takescreenshot() {
+ sleep 1
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+takescreenshot_timer() {
+ sleep 1
+ timer
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+# Execute Command
+run_cmd() {
+ if [[ "$1" == '--opt1' ]]; then
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot"
+ elif [[ "$1" == '--opt2' ]]; then
+ timer_run
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot_timer"
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+$option_1)
+ run_cmd --opt1
+ ;;
+$option_2)
+ run_cmd --opt2
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/toggle-animations.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/toggle-animations.sh
new file mode 100755
index 0000000..7eedb1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/toggle-animations.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+cache_file="$HOME/.cache/toggle_animation"
+if [[ $(cat $HOME/.config/hypr/conf/animation.conf) == *"disabled"* ]]; then
+ echo ":: Toggle blocked by disabled.conf variation."
+else
+ if [ -f $cache_file ] ;then
+ hyprctl keyword animations:enabled true
+ rm $cache_file
+ else
+ hyprctl keyword animations:enabled false
+ touch $cache_file
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/toggleallfloat.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/toggleallfloat.sh
new file mode 100755
index 0000000..3fc12e2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/toggleallfloat.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+# _ _ _ __ _ _
+# / \ | | |/ _| | ___ __ _| |_
+# / _ \ | | | |_| |/ _ \ / _` | __|
+# / ___ \| | | _| | (_) | (_| | |_
+# /_/ \_\_|_|_| |_|\___/ \__,_|\__|
+#
+
+hyprctl dispatch workspaceopt allfloat
+notify-send "Windows on this workspace toggled to floating/tiling"
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-automation.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-automation.sh
new file mode 100755
index 0000000..e3d1f1e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-automation.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# _ _ __ ______
+# / \ _ _| |_ ___ \ \ / / _ \
+# / _ \| | | | __/ _ \ \ \ /\ / /| |_) |
+# / ___ \ |_| | || (_) | \ V V / | __/
+# /_/ \_\__,_|\__\___/ \_/\_/ |_|
+#
+
+sec=$(cat ~/.config/ml4w/settings/wallpaper-automation.sh)
+_setWallpaperRandomly() {
+ waypaper --random
+ echo ":: Next wallpaper in 60 seconds..."
+ sleep $sec
+ _setWallpaperRandomly
+}
+
+if [ ! -f ~/.config/ml4w/cache/wallpaper-automation ] ;then
+ touch ~/.config/ml4w/cache/wallpaper-automation
+ echo ":: Start wallpaper automation script"
+ notify-send "Wallpaper automation process started" "Wallpaper will be changed every $sec seconds."
+ _setWallpaperRandomly
+else
+ rm ~/.config/ml4w/cache/wallpaper-automation
+ notify-send "Wallpaper automation process stopped."
+ echo ":: Wallpaper automation script process $wp stopped"
+ wp=$(pgrep -f wallpaper-automation.sh)
+ kill -KILL $wp
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-cache.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-cache.sh
new file mode 100755
index 0000000..899a06a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-cache.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+generated_versions="$HOME/.config/ml4w/cache/wallpaper-generated"
+rm $generated_versions/*
+echo ":: Wallpaper cache cleared"
+notify-send "Wallpaper cache cleared"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-effects.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-effects.sh
new file mode 100755
index 0000000..83dbca8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-effects.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ ______ _____ __ __ _
+# \ \ / / _ \ | ____|/ _|/ _| ___ ___| |_ ___
+# \ \ /\ / /| |_) | | _| | |_| |_ / _ \/ __| __/ __|
+# \ V V / | __/ | |___| _| _| __/ (__| |_\__ \
+# \_/\_/ |_| |_____|_| |_| \___|\___|\__|___/
+#
+
+# Get current wallpaper
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# Open rofi to select the Hyprshade filter for toggle
+options="$(ls ~/.config/hypr/effects/wallpaper/)\noff"
+
+# Open rofi
+choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-themes.rasi -i -no-show-icons -l 5 -width 30 -p "Hyprshade")
+if [ ! -z $choice ] ;then
+ echo "$choice" > ~/.config/ml4w/settings/wallpaper-effect.sh
+ notify-send "Changing Wallpaper Effect to " "$choice"
+ waypaper --wallpaper $(cat $cache_file)
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-restore.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-restore.sh
new file mode 100755
index 0000000..b875400
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper-restore.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Restore last wallpaper
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+defaultwallpaper="$HOME/Pictures/Wallpapers/faroe_islands.jpg"
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# -----------------------------------------------------
+# Get current wallpaper
+# -----------------------------------------------------
+
+if [ -f "$cachefile" ]; then
+ sed -i "s|~|$HOME|g" "$cachefile"
+ wallpaper=$(cat $cachefile)
+ if [ -f $wallpaper ]; then
+ echo ":: Wallpaper $wallpaper exists"
+ else
+ echo ":: Wallpaper $wallpaper does not exist. Using default."
+ wallpaper=$defaultwallpaper
+ fi
+else
+ echo ":: $cachefile does not exist. Using default wallpaper."
+ wallpaper=$defaultwallpaper
+fi
+
+# -----------------------------------------------------
+# Set wallpaper
+# -----------------------------------------------------
+
+echo ":: Setting wallpaper with source image $wallpaper"
+waypaper --wallpaper "$wallpaper"
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper.sh
new file mode 100755
index 0000000..1045429
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/wallpaper.sh
@@ -0,0 +1,172 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Check to use wallpaper cache
+# -----------------------------------------------------
+
+if [ -f ~/.config/ml4w/settings/wallpaper_cache ]; then
+ use_cache=1
+ echo ":: Using Wallpaper Cache"
+else
+ use_cache=0
+ echo ":: Wallpaper Cache disabled"
+fi
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+force_generate=0
+generatedversions="$HOME/.config/ml4w/cache/wallpaper-generated"
+waypaperrunning=$HOME/.config/ml4w/cache/waypaper-running
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+blurredwallpaper="$HOME/.config/ml4w/cache/blurred_wallpaper.png"
+squarewallpaper="$HOME/.config/ml4w/cache/square_wallpaper.png"
+rasifile="$HOME/.config/ml4w/cache/current_wallpaper.rasi"
+blurfile="$HOME/.config/ml4w/settings/blur.sh"
+defaultwallpaper="$HOME/Pictures/Wallpapers/faroe_islands.jpg"
+wallpapereffect="$HOME/.config/ml4w/settings/wallpaper-effect.sh"
+blur="50x30"
+blur=$(cat $blurfile)
+
+# Ensures that the script only run once if wallpaper effect enabled
+if [ -f $waypaperrunning ]; then
+ rm $waypaperrunning
+ exit
+fi
+
+# Create folder with generated versions of wallpaper if not exists
+if [ ! -d $generatedversions ]; then
+ mkdir $generatedversions
+fi
+
+# -----------------------------------------------------
+# Get selected wallpaper
+# -----------------------------------------------------
+
+if [ -z $1 ]; then
+ if [ -f $cachefile ]; then
+ wallpaper=$(cat $cachefile)
+ else
+ wallpaper=$defaultwallpaper
+ fi
+else
+ wallpaper=$1
+fi
+used_wallpaper=$wallpaper
+echo ":: Setting wallpaper with source image $wallpaper"
+tmpwallpaper=$wallpaper
+
+# -----------------------------------------------------
+# Copy path of current wallpaper to cache file
+# -----------------------------------------------------
+
+if [ ! -f $cachefile ]; then
+ touch $cachefile
+fi
+echo "$wallpaper" > $cachefile
+echo ":: Path of current wallpaper copied to $cachefile"
+
+# -----------------------------------------------------
+# Get wallpaper filename
+# -----------------------------------------------------
+wallpaperfilename=$(basename $wallpaper)
+echo ":: Wallpaper Filename: $wallpaperfilename"
+
+# -----------------------------------------------------
+# Wallpaper Effects
+# -----------------------------------------------------
+
+if [ -f $wallpapereffect ]; then
+ effect=$(cat $wallpapereffect)
+ if [ ! "$effect" == "off" ]; then
+ used_wallpaper=$generatedversions/$effect-$wallpaperfilename
+ if [ -f $generatedversions/$effect-$wallpaperfilename ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper $effect-$wallpaperfilename"
+ else
+ echo ":: Generate new cached wallpaper $effect-$wallpaperfilename with effect $effect"
+ notify-send --replace-id=1 "Using wallpaper effect $effect..." "with image $wallpaperfilename" -h int:value:33
+ source $HOME/.config/hypr/effects/wallpaper/$effect
+ fi
+ echo ":: Loading wallpaper $generatedversions/$effect-$wallpaperfilename with effect $effect"
+ echo ":: Setting wallpaper with $used_wallpaper"
+ touch $waypaperrunning
+ waypaper --wallpaper $used_wallpaper
+ else
+ echo ":: Wallpaper effect is set to off"
+ fi
+else
+ effect="off"
+fi
+
+# -----------------------------------------------------
+# Execute pywal
+# -----------------------------------------------------
+
+echo ":: Execute pywal with $used_wallpaper"
+wal -q -i "$used_wallpaper"
+source "$HOME/.cache/wal/colors.sh"
+
+# -----------------------------------------------------
+# Reload Waybar
+# -----------------------------------------------------
+
+killall -SIGUSR2 waybar
+
+# -----------------------------------------------------
+# Pywalfox
+# -----------------------------------------------------
+
+if type pywalfox > /dev/null 2>&1; then
+ pywalfox update
+fi
+
+# -----------------------------------------------------
+# Created blurred wallpaper
+# -----------------------------------------------------
+
+if [ -f $generatedversions/blur-$blur-$effect-$wallpaperfilename.png ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper blur-$blur-$effect-$wallpaperfilename"
+else
+ echo ":: Generate new cached wallpaper blur-$blur-$effect-$wallpaperfilename with blur $blur"
+ # notify-send --replace-id=1 "Generate new blurred version" "with blur $blur" -h int:value:66
+ magick $used_wallpaper -resize 75% $blurredwallpaper
+ echo ":: Resized to 75%"
+ if [ ! "$blur" == "0x0" ]; then
+ magick $blurredwallpaper -blur $blur $blurredwallpaper
+ cp $blurredwallpaper $generatedversions/blur-$blur-$effect-$wallpaperfilename.png
+ echo ":: Blurred"
+ fi
+fi
+cp $generatedversions/blur-$blur-$effect-$wallpaperfilename.png $blurredwallpaper
+
+# -----------------------------------------------------
+# Create rasi file
+# -----------------------------------------------------
+
+if [ ! -f $rasifile ]; then
+ touch $rasifile
+fi
+echo "* { current-image: url(\"$blurredwallpaper\", height); }" > "$rasifile"
+
+# -----------------------------------------------------
+# Created square wallpaper
+# -----------------------------------------------------
+
+echo ":: Generate new cached wallpaper square-$wallpaperfilename"
+magick $tmpwallpaper -gravity Center -extent 1:1 $squarewallpaper
+cp $squarewallpaper $generatedversions/square-$wallpaperfilename.png
+
+# -----------------------------------------------------
+# Reload AGS
+# -----------------------------------------------------
+
+ags quit &
+sleep 0.2
+ags run &
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/xdg.sh b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/xdg.sh
new file mode 100755
index 0000000..f7d0fec
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/scripts/xdg.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# __ ______ ____
+# \ \/ / _ \ / ___|
+# \ /| | | | | _
+# / \| |_| | |_| |
+# /_/\_\____/ \____|
+#
+
+# Setup Timers
+_sleep1="0.1"
+_sleep2="0.5"
+_sleep3="2"
+
+# Kill all possible running xdg-desktop-portals
+killall -e xdg-desktop-portal-hyprland
+killall -e xdg-desktop-portal-gnome
+killall -e xdg-desktop-portal-kde
+killall -e xdg-desktop-portal-lxqt
+killall -e xdg-desktop-portal-wlr
+killall -e xdg-desktop-portal-gtk
+killall -e xdg-desktop-portal
+
+# Set required environment variables
+dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=hyprland
+
+# Stop all services
+systemctl --user stop pipewire
+systemctl --user stop wireplumber
+systemctl --user stop xdg-desktop-portal
+systemctl --user stop xdg-desktop-portal-gnome
+systemctl --user stop xdg-desktop-portal-kde
+systemctl --user stop xdg-desktop-portal-wlr
+systemctl --user stop xdg-desktop-portal-hyprland
+sleep $_sleep1
+
+# Start xdg-desktop-portal-hyprland
+/usr/lib/xdg-desktop-portal-hyprland &
+sleep $_sleep1
+
+# Start xdg-desktop-portal-gtk
+if [ -f /usr/lib/xdg-desktop-portal-gtk ] ;then
+ /usr/lib/xdg-desktop-portal-gtk &
+ sleep $_sleep1
+fi
+
+# Start xdg-desktop-portal
+/usr/lib/xdg-desktop-portal &
+sleep $_sleep2
+
+# Start required services
+systemctl --user start pipewire
+systemctl --user start wireplumber
+systemctl --user start xdg-desktop-portal
+systemctl --user start xdg-desktop-portal-hyprland
+
+# Run waybar
+sleep $_sleep3
+~/.config/waybar/launch.sh
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-25.glsl b/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-25.glsl
new file mode 100755
index 0000000..149b143
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-25.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.25;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-50.glsl b/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-50.glsl
new file mode 100755
index 0000000..ac5ea21
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-50.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.5;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-75.glsl b/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-75.glsl
new file mode 100755
index 0000000..c8c1b23
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/blue-light-filter-75.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.75;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/invert-colors.glsl b/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/invert-colors.glsl
new file mode 100755
index 0000000..a504901
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/hypr/shaders/invert-colors.glsl
@@ -0,0 +1,8 @@
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+ gl_FragColor = vec4(1.0 - pixColor.r, 1.0 - pixColor.g, 1.0 - pixColor.b, pixColor.a);
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w-hyprland-settings/hyprctl.json b/configs/dotfiles/hyprland/laptop/.config/ml4w-hyprland-settings/hyprctl.json
new file mode 100755
index 0000000..3b0d272
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w-hyprland-settings/hyprctl.json
@@ -0,0 +1,14 @@
+[
+ {
+ "key": "general:col.active_border",
+ "value": "rgb(82aaff)"
+ },
+ {
+ "key": "general:border_size",
+ "value": 4
+ },
+ {
+ "key": "general:gaps_out",
+ "value": 12
+ }
+]
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w-hyprland-settings/hyprctl.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w-hyprland-settings/hyprctl.sh
new file mode 100755
index 0000000..9fffc49
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w-hyprland-settings/hyprctl.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# _ _ _
+# | |__ _ _ _ __ _ __ ___| |_| |
+# | '_ \| | | | '_ \| '__/ __| __| |
+# | | | | |_| | |_) | | | (__| |_| |
+# |_| |_|\__, | .__/|_| \___|\__|_|
+# |___/|_|
+#
+# Execute this file in the hyprland.conf with exec-always
+sleep 3
+script=$(readlink -f $0)
+path=$(dirname $script)
+if [ ! -f $path/hyprctl.json ] ;then
+ echo ":: ERROR: hyprctl.json not found"
+ exit 1
+fi
+
+jq -c '.[]' $path/hyprctl.json | while read i; do
+ _val() {
+ echo $1 | jq -r '.value'
+ }
+ _key() {
+ echo $1 | jq -r '.key'
+ }
+ key=$(_key $i)
+ val=$(_val $i)
+ echo ":: Execute: hyprctl keyword $key $val"
+ hyprctl keyword $key $val
+done
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/assets/blank.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/assets/blank.png
new file mode 100755
index 0000000..f7aa3f8
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/assets/blank.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/blurred_wallpaper.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/blurred_wallpaper.png
new file mode 100755
index 0000000..cabe371
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/blurred_wallpaper.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/current_wallpaper b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/current_wallpaper
new file mode 100755
index 0000000..cc79059
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/current_wallpaper
@@ -0,0 +1 @@
+/home/gib/Pictures/Wallpapers/pink_sky.png
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/current_wallpaper.rasi b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/current_wallpaper.rasi
new file mode 100755
index 0000000..d0e0201
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/current_wallpaper.rasi
@@ -0,0 +1 @@
+* { current-image: url("/home/gib/.config/ml4w/cache/blurred_wallpaper.png", height); }
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/square_wallpaper.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/square_wallpaper.png
new file mode 100755
index 0000000..407d688
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/square_wallpaper.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png
new file mode 100755
index 0000000..be2ade3
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png
new file mode 100755
index 0000000..efbc525
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-Patagonia.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png
new file mode 100755
index 0000000..f0fdbf4
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-beautiful_mountain.jpg.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png
new file mode 100755
index 0000000..8fb1ab2
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-faroe_islands.jpg.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-pink_sky.png.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-pink_sky.png.png
new file mode 100755
index 0000000..cabe371
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-pink_sky.png.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-snow-mountain-peaks.jpg.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-snow-mountain-peaks.jpg.png
new file mode 100755
index 0000000..25f7be8
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/blur-50x30-off-snow-mountain-peaks.jpg.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-.png
new file mode 100755
index 0000000..f9dad8e
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png
new file mode 100755
index 0000000..f9dad8e
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-Patagonia.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png
new file mode 100755
index 0000000..d0b6841
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-beautiful_mountain.jpg.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png
new file mode 100755
index 0000000..e91c760
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-faroe_islands.jpg.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-pink_sky.png.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-pink_sky.png.png
new file mode 100755
index 0000000..407d688
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-pink_sky.png.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-snow-mountain-peaks.jpg.png b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-snow-mountain-peaks.jpg.png
new file mode 100755
index 0000000..f9dad8e
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/ml4w/cache/wallpaper-generated/square-snow-mountain-peaks.jpg.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/login/issue b/configs/dotfiles/hyprland/laptop/.config/ml4w/login/issue
new file mode 100755
index 0000000..d3f99f3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/login/issue
@@ -0,0 +1,11 @@
+ _ _
+ | | ___ __ _(_)_ __
+ | | / _ \\ / _' | | '_ \\
+ | |__| (_) | (_| | | | | |
+ |_____\\___/ \\__, |_|_| |_|
+ |___/
+
+Today is \d \t @ \n
+--------------------------------------------------------------
+\r (\l)
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/ags.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/ags.sh
new file mode 100755
index 0000000..8c1ba75
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/ags.sh
@@ -0,0 +1 @@
+ags run
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/cleanup.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/cleanup.sh
new file mode 100755
index 0000000..3e509c9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/cleanup.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+clear
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+figlet -f smslant "Cleanup"
+echo
+$aur_helper -Scc
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/installprinters.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/installprinters.sh
new file mode 100755
index 0000000..67812c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/installprinters.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _____ __
+# | __ \ (_) | | / ____| / _|
+# | |__) | __ _ _ __ | |_ ___ _ __ | | ___ _ __ | |_
+# | ___/ '__| | '_ \| __/ _ \ '__| | | / _ \| '_ \| _|
+# | | | | | | | | | || __/ | | |___| (_) | | | | |
+# |_| |_| |_|_| |_|\__\___|_| \_____\___/|_| |_|_|
+#
+# By @krystalsavage
+
+sleep 1
+clear
+figlet -f smslant "Printers"
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START TO INSTALL PRINTER SYSTEM NOW?" ;then
+ echo
+ echo ":: Install started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Install canceled."
+ exit;
+fi
+
+if [[ $(_isInstalledYay "timeshift") == "0" ]] ;then
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot canceled."
+ exit 130
+ else
+ echo ":: Snapshot canceled."
+ fi
+ echo
+fi
+
+yay -S cups cups-pdf cups-filters nss-mdns system-config-printer foomatic-db footmatic-db-engine foomatic-db-nonfree doomatic-db-nonfree-ppds foomatic-db-ppds cups-browsed libusb ipp-usb xdg-utils colord logrotate
+
+notify-send "Installing printer system complete"
+echo
+echo ":: Installing printer system complete"
+sleep 2
+
+if [ -f ~/.config/ml4w/settings/printer-drivers.sh ] ;then
+ if gum confirm "DO YOU WANT TO INSTALL PRINTER DRIVERS NOW?" ;then
+ echo
+ echo ":: Install started."
+ elif [ $? -eq 130 ]; then
+ exit 130
+ else
+ echo
+ echo ":: Install cancelled."
+ exit;
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/installtimeshift.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/installtimeshift.sh
new file mode 100755
index 0000000..06265ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/installtimeshift.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _____ _ _ _ __ _
+# |_ _(_)_ __ ___ ___ ___| |__ (_)/ _| |_
+# | | | | '_ ` _ \ / _ \/ __| '_ \| | |_| __|
+# | | | | | | | | | __/\__ \ | | | | _| |_
+# |_| |_|_| |_| |_|\___||___/_| |_|_|_| \__|
+#
+
+sleep 1
+clear
+figlet -f smslant "Timeshift"
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+_isInstalledAUR() {
+ package="$1";
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+timeshift_installed=$(_isInstalledAUR "timeshift")
+grubbtrfs_installed=$(_isInstalledAUR "grub-btrfs")
+
+if [[ $timeshift_installed == "0" ]] ;then
+ echo ":: Timeshift is already installed"
+else
+ if gum confirm "DO YOU WANT TO INSTALL Timeshift now?" ;then
+ $aur_helper -S timeshift
+ fi
+fi
+if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "0" ]] ;then
+ echo ":: grub-btrfs is already installed"
+else
+ echo ":: grub-btrfs is required to select a snapshot on grub bootloader."
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ fi
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/lid-improvements.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/lid-improvements.sh
new file mode 100755
index 0000000..2ffad61
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/lid-improvements.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+while IFS= read -r line; do
+ # If the line starts with # and the next line is not the lines to be added
+ if [[ $line == \#HandleLidSwitchDocked=ignore ]]; then
+ # Add the new lines
+ echo "HandleLidSwitchDocked=ignore" | sudo tee -a /etc/systemd/logind.conf > /dev/null
+ fi
+ if [[ $line == \#HoldoffTimeoutSec=5s ]]; then
+ # Add the new lines
+ echo "HoldoffTimeoutSec=5s" | sudo tee -a /etc/systemd/logind.conf > /dev/null
+ fi
+done < /etc/systemd/logind.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/pacman.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/pacman.sh
new file mode 100755
index 0000000..d6a2903
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/pacman.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# ____
+# | _ \ __ _ ___ _ __ ___ __ _ _ __
+# | |_) / _` |/ __| '_ ` _ \ / _` | '_ \
+# | __/ (_| | (__| | | | | | (_| | | | |
+# |_| \__,_|\___|_| |_| |_|\__,_|_| |_|
+#
+
+sleep 1
+clear
+figlet -f smslant "pacman.conf"
+echo
+echo ":: This script will activate or deactivate additions for your pacman.conf."
+echo
+if grep -Fq "#ParallelDownloads" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate parallel downloads?" ;then
+ sudo sed -i 's/^#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf
+ else
+ echo ":: Activation of parallel downloads skipped."
+ fi
+else
+ echo ":: Parallel downloads are already activated."
+fi
+
+if grep -Fxq "#Color" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate colors?" ;then
+ sudo sed -i 's/^#Color/Color/' /etc/pacman.conf
+ else
+ echo ":: Activation of Color skipped."
+ fi
+else
+ echo ":: Color is already activated."
+fi
+
+if grep -Fxq "#VerbosePkgLists" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate VerbosePkgLists?" ;then
+ sudo sed -i 's/^#VerbosePkgLists/VerbosePkgLists/' /etc/pacman.conf
+ else
+ echo ":: Activation of VerbosePkgLists skipped."
+ fi
+else
+ echo ":: VerbosePkgLists is already activated."
+fi
+
+if grep -Fxq "ILoveCandy" /etc/pacman.conf
+then
+ echo ":: ILoveCandy is already activated."
+else
+ if gum confirm "Do you want to activate ILoveCandy?" ;then
+ sudo sed -i '/^ParallelDownloads = .*/a ILoveCandy' /etc/pacman.conf
+ else
+ echo ":: Activation of ILoveCandy skipped."
+ fi
+fi
+echo
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/snapshot.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/snapshot.sh
new file mode 100755
index 0000000..7ce1acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/snapshot.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+# ____ _ _
+# / ___| _ __ __ _ _ __ ___| |__ ___ | |_
+# \___ \| '_ \ / _` | '_ \/ __| '_ \ / _ \| __|
+# ___) | | | | (_| | |_) \__ \ | | | (_) | |_
+# |____/|_| |_|\__,_| .__/|___/_| |_|\___/ \__|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+sleep 1
+clear
+figlet -f smslant "Snapshot"
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+_isInstalledAUR() {
+ package="$1";
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+timeshift_installed=$(_isInstalledAUR "timeshift")
+grubbtrfs_installed=$(_isInstalledAUR "grub-btrfs")
+
+if [[ $timeshift_installed == "0" ]] ;then
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ if [[ -d /boot/grub ]] ;then
+ if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "1" ]] ;then
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ else
+ exit
+ fi
+ fi
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ fi
+ echo "DONE. Snapshot $c created!"
+else
+ echo "ERROR: Timeshift is not installed."
+ if gum confirm "DO YOU WANT TO INSTALL Timeshift now?" ;then
+ $aur_helper -S timeshift
+ echo
+ echo ":: Timeshift has been installed. Please restart this script."
+ if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "1" ]] ;then
+ echo ":: grub-btrfs is required to select a snapshot on grub bootloader."
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ else
+ exit
+ fi
+ fi
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/unlock-pacman.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/unlock-pacman.sh
new file mode 100755
index 0000000..33b7de0
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/arch/unlock-pacman.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+sleep 1
+if [ -f /var/lib/pacman/db.lck ]; then
+ sudo rm /var/lib/pacman/db.lck
+ echo ":: Unlock complete"
+else
+ echo ":: Pacman database is not locked"
+fi
+sleep 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/cliphist.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/cliphist.sh
new file mode 100755
index 0000000..b9a2acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/cliphist.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# ____ _ _ _ _ _
+# / ___| (_)_ __ | |__ (_)___| |_
+# | | | | | '_ \| '_ \| / __| __|
+# | |___| | | |_) | | | | \__ \ |_
+# \____|_|_| .__/|_| |_|_|___/\__|
+# |_|
+#
+
+case $1 in
+ d) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist delete
+ ;;
+
+ w) if [ `echo -e "Clear\nCancel" | rofi -dmenu -config ~/.config/rofi/config-short.rasi` == "Clear" ] ; then
+ cliphist wipe
+ fi
+ ;;
+
+ *) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist decode | wl-copy
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/figlet.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/figlet.sh
new file mode 100755
index 0000000..7a5ff4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/figlet.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+figlet -f smslant "Figlet"
+echo
+# ------------------------------------------------
+# Script to create ascii font based header on user input
+# and copy the result to the clipboard
+# -----------------------------------------------------
+
+read -p "Enter the text for ascii encoding: " mytext
+
+if [ -f ~/figlet.txt ]; then
+ touch ~/figlet.txt
+fi
+
+echo "cat <<\"EOF\"" > ~/figlet.txt
+figlet -f smslant "$mytext" >> ~/figlet.txt
+echo "" >> ~/figlet.txt
+echo "EOF" >> ~/figlet.txt
+
+lines=$( cat ~/figlet.txt )
+wl-copy "$lines"
+xclip -sel clip ~/figlet.txt
+
+echo "Text copied to clipboard!"
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/installupdates.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/installupdates.sh
new file mode 100755
index 0000000..b4605b5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/installupdates.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# ____ __ ____ __ __
+# / _/__ ___ / /____ _/ / / __ _____ ___/ /__ _/ /____ ___
+# _/ // _ \(_- __/ _ `/ / / / // / _ \/ _ / _ `/ __/ -_|_-<
+# /___/_//_/___/\__/\_,_/_/_/ \_,_/ .__/\_,_/\_,_/\__/\__/___/
+# /_/
+#
+
+sleep 1
+clear
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+figlet -f smslant "Updates"
+echo
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START THE UPDATE NOW?" ;then
+ echo
+ echo ":: Update started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Update canceled."
+ exit;
+fi
+
+_isInstalled() {
+ package="$1";
+ case $install_platform in
+ arch)
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ ;;
+ fedora)
+ check="$(dnf repoquery --quiet --installed ""${package}*"")"
+ ;;
+ *)
+ ;;
+ esac
+
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+echo 1; #'1' means 'false' in Bash
+return; #false
+}
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ if [[ $(_isInstalled "timeshift") == "0" ]] ;then
+ echo
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot skipped."
+ exit 130
+ else
+ echo ":: Snapshot skipped."
+ fi
+ echo
+ fi
+
+ $aur_helper
+
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ fedora)
+ sudo dnf upgrade
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ *)
+ echo ":: ERROR - Platform not supported"
+ echo "Press [ENTER] to close."
+ read
+ ;;
+esac
+
+notify-send "Update complete"
+echo
+echo ":: Update complete"
+echo
+echo
+
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/ml4w-autostart.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/ml4w-autostart.sh
new file mode 100755
index 0000000..d153c4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/ml4w-autostart.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# Compare installed version with running dotfiles
+if [ -f ~/.config/ml4w/version/compare.sh ] ;then
+ $HOME/.config/ml4w/version/compare.sh
+fi
+
+# Start ML4W Welcome App
+if [ ! -f $HOME/.cache/ml4w-welcome-autostart ] ;then
+ echo ":: Starting ML4W Welcome App ..."
+ sleep 2
+ com.ml4w.welcome
+else
+ echo ":: Autostart of ML4W Welcome App disabled."
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/nm-applet.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/nm-applet.sh
new file mode 100755
index 0000000..52af715
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/nm-applet.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ __
+# ___ __ _ ___ ____ ___ / /__ / /_
+# / _ \/ ' \/ _ `/ _ \/ _ \/ / -_) __/
+# /_//_/_/_/_/\_,_/ .__/ .__/_/\__/\__/
+# /_/ /_/
+#
+if [[ "$1" == "stop" ]]; then
+ killall nm-applet
+elif [[ "$1" == "toggle" ]]; then
+ if pgrep -x "nm-applet" > /dev/null
+ then
+ echo "Running"
+ killall nm-applet
+ else
+ echo "Stopped"
+ nm-applet --indicator &
+ fi
+else
+ nm-applet --indicator &
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/sddm-wallpaper.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/sddm-wallpaper.sh
new file mode 100755
index 0000000..eccad59
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/sddm-wallpaper.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# _ _ _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___ __| | __| |_ __ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \ / __|/ _` |/ _` | '_ ` _ \
+# | |_| | |_) | (_| | (_| | || __/ \__ \ (_| | (_| | | | | | |
+# \___/| .__/ \__,_|\__,_|\__\___| |___/\__,_|\__,_|_| |_| |_|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+sleep 1
+clear
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+current_wallpaper=$(cat "$cache_file")
+extension="${current_wallpaper##*.}"
+
+echo -e "${GREEN}"
+figlet -f smslant "SDDM Wallpaper"
+echo -e "${NONE}"
+
+sddm_theme_name="sequoia"
+sddm_asset_folder="/usr/share/sddm/themes/$sddm_theme_name/backgrounds"
+
+sddm_theme_tpl="/usr/share/ml4w-hyprland/sddm/theme.conf"
+if [ -f $HOME/.config/ml4w/settings/sddm/theme.conf ]; then
+ sddm_theme_tpl="$HOME/.config/ml4w/settings/sddm/theme.conf"
+ echo ":: Using custum theme.conf"
+fi
+
+
+if [ ! -f $current_wallpaper ]; then
+ gum spin --spinner dot --title "File $current_wallpaper does not exist" -- sleep 3
+ exit
+fi
+
+echo ":: Set the current wallpaper $current_wallpaper as SDDM wallpaper."
+echo
+
+if [ ! -d /etc/sddm.conf.d/ ]; then
+ sudo mkdir /etc/sddm.conf.d
+ echo ":: Folder /etc/sddm.conf.d created."
+fi
+
+sudo cp /usr/share/ml4w-hyprland/sddm/sddm.conf /etc/sddm.conf.d/
+echo ":: File /etc/sddm.conf.d/sddm.conf updated."
+
+sudo cp $current_wallpaper $sddm_asset_folder/current_wallpaper.$extension
+echo ":: Current wallpaper copied into $sddm_asset_folder"
+
+sudo cp $sddm_theme_tpl /usr/share/sddm/themes/$sddm_theme_name/
+sudo sed -i 's/CURRENTWALLPAPER/'"current_wallpaper.$extension"'/' /usr/share/sddm/themes/$sddm_theme_name/theme.conf
+echo ":: File theme.conf updated in /usr/share/sddm/themes/$sddm_theme_name/"
+echo
+
+echo ":: You can preview your updated SDDM Login screen. (Close it with SUPER+Q)"
+echo
+if gum confirm "Do you want to preview the result?"; then
+ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sequoia
+fi
+
+echo
+gum spin --spinner dot --title "Please logout to see the result." -- sleep 3
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/shell.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/shell.sh
new file mode 100755
index 0000000..9cb6a94
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/shell.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+# ____ _ _ _
+# / ___|| |__ ___| | |
+# \___ \| '_ \ / _ \ | |
+# ___) | | | | __/ | |
+# |____/|_| |_|\___|_|_|
+#
+
+sleep 1
+
+_isInstalledYay() {
+ package="$1";
+ check="$(yay -Qs --color always "${package}" | grep "local" | grep "\." | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+clear
+figlet -f smslant "Shell"
+
+echo ":: Please select your preferred shell"
+echo
+shell=$(gum choose "bash" "zsh" "Cancel")
+# -----------------------------------------------------
+# Activate bash
+# -----------------------------------------------------
+if [[ $shell == "bash" ]] ;then
+
+ # Change shell to bash
+ while ! chsh -s $(which bash); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now bash."
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Activate zsh
+# -----------------------------------------------------
+elif [[ $shell == "zsh" ]] ;then
+
+ # Change shell to shh
+ while ! chsh -s $(which zsh); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now zsh."
+
+ # Installing oh-my-posh
+ yay -S oh-my-posh-bin
+
+ # Installing oh-my-zsh
+ if [ ! -d "$HOME/.oh-my-zsh" ]; then
+ echo ":: Installing oh-my-zsh"
+ sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
+ cp ~/.config/ml4w/tpl/.zshrc ~/
+ else
+ echo ":: oh-my-zsh already installed"
+ fi
+
+ # Installing zsh-autosuggestions
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
+ echo ":: Installing zsh-autosuggestions"
+ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
+ else
+ echo ":: zsh-autosuggestions already installed"
+ fi
+
+ # Installing zsh-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
+ echo ":: Installing zsh-syntax-highlighting"
+ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
+ else
+ echo ":: zsh-syntax-highlighting already installed"
+ fi
+
+ # Installing fast-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/fast-syntax-highlighting" ]; then
+ echo ":: Installing fast-syntax-highlighting"
+ git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
+ else
+ echo ":: fast-syntax-highlighting already installed"
+ fi
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Cencel
+# -----------------------------------------------------
+else
+ echo ":: Changing shell canceled"
+ exit
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/thunarterminal.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/thunarterminal.sh
new file mode 100755
index 0000000..777be5f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/thunarterminal.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+clear
+if [ -f ~/.config/ml4w/settings/terminal.sh ]; then
+ terminal="$(cat ~/.config/ml4w/settings/terminal.sh)"
+ echo ":: Installing $terminal"
+ if [ -d ~/.config/xfce4 ]; then
+ if [ ! -f ~/.config/xfce4/helpers.rc ]; then
+ touch ~/.config/xfce4/helpers.rc
+ fi
+ echo "TerminalEmulator=$terminal" > ~/.config/xfce4/helpers.rc
+ echo ":: $terminal defined as Thunar Terminal Emulator."
+ else
+ echo "ERROR: ~/.config/xfce4 not found. Please open Thunar once to create it."
+ echo "Then start this script again."
+ fi
+else
+ echo "ERROR: ~/.config/ml4w/settings/terminal.sh not found"
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/updates.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/updates.sh
new file mode 100755
index 0000000..505d126
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/updates.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \/ __|
+# | |_| | |_) | (_| | (_| | || __/\__ \
+# \___/| .__/ \__,_|\__,_|\__\___||___/
+# |_|
+#
+
+# -----------------------------------------------------
+# Define threshholds for color indicators
+# -----------------------------------------------------
+
+threshhold_green=0
+threshhold_yellow=25
+threshhold_red=100
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ # -----------------------------------------------------
+ # Calculate available updates
+ # -----------------------------------------------------
+
+ # flatpak remote-ls --updates
+
+ updates=$(checkupdates-with-aur | wc -l)
+ ;;
+ fedora)
+ updates=$(dnf check-update -q|grep -c ^[a-z0-9])
+ ;;
+ *)
+ updates=0
+ ;;
+esac
+
+# -----------------------------------------------------
+# Output in JSON format for Waybar Module custom-updates
+# -----------------------------------------------------
+
+css_class="green"
+
+if [ "$updates" -gt $threshhold_yellow ]; then
+ css_class="yellow"
+fi
+
+if [ "$updates" -gt $threshhold_red ]; then
+ css_class="red"
+fi
+
+if [ "$updates" -gt $threshhold_green ]; then
+ printf '{"text": "%s", "alt": "%s", "tooltip": "Click to update your system", "class": "%s"}' "$updates" "$updates" "$css_class"
+else
+ printf '{"text": "0", "alt": "0", "tooltip": "No updates available", "class": "green"}'
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/wlogout.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/wlogout.sh
new file mode 100755
index 0000000..2b540eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/scripts/wlogout.sh
@@ -0,0 +1,5 @@
+res_w=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width')
+res_h=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .height')
+h_scale=$(hyprctl -j monitors | jq '.[] | select (.focused == true) | .scale' | sed 's/\.//')
+w_margin=$(( res_h * 27 / h_scale ))
+wlogout -b 5 -T $w_margin -B $w_margin
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/ai.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/ai.sh
new file mode 100755
index 0000000..36937a2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/ai.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/browser.sh) --new-window https://chat.gibbyb.com
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/blur.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/blur.sh
new file mode 100755
index 0000000..4ffc966
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/blur.sh
@@ -0,0 +1 @@
+50x30
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/browser.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/browser.sh
new file mode 100755
index 0000000..dbfb8f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/browser.sh
@@ -0,0 +1 @@
+firefox
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/calculator.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/calculator.sh
new file mode 100755
index 0000000..7321b2e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/calculator.sh
@@ -0,0 +1 @@
+gnome-calculator
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/dotfiles-folder.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/dotfiles-folder.sh
new file mode 100755
index 0000000..b1b1c85
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/dotfiles-folder.sh
@@ -0,0 +1 @@
+Documents/Configs/hyprland/desktop
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/dunst_position.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/dunst_position.sh
new file mode 100755
index 0000000..181d3ca
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/dunst_position.sh
@@ -0,0 +1 @@
+top-center
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/editor.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/editor.sh
new file mode 100755
index 0000000..732ff53
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/editor.sh
@@ -0,0 +1 @@
+nvim
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/emojipicker.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/emojipicker.sh
new file mode 100755
index 0000000..36d697f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/emojipicker.sh
@@ -0,0 +1 @@
+smile
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/eww-monitor.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/eww-monitor.sh
new file mode 100755
index 0000000..4d18c3e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/eww-monitor.sh
@@ -0,0 +1 @@
+auto
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/filemanager.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/filemanager.sh
new file mode 100755
index 0000000..9f0175d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/filemanager.sh
@@ -0,0 +1 @@
+nautilus
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_dpms_timeout.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_dpms_timeout.sh
new file mode 100755
index 0000000..9ecf271
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_dpms_timeout.sh
@@ -0,0 +1 @@
+660
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_hyprlock_timeout.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
new file mode 100755
index 0000000..73623d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
@@ -0,0 +1 @@
+600
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_suspend_timeout.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_suspend_timeout.sh
new file mode 100755
index 0000000..2974009
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hypridle_suspend_timeout.sh
@@ -0,0 +1 @@
+1800
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hyprpaper.tpl b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hyprpaper.tpl
new file mode 100755
index 0000000..3033ff3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hyprpaper.tpl
@@ -0,0 +1,8 @@
+# Preload Wallpapers
+preload = WALLPAPER
+
+# Set Wallpapers
+wallpaper = ,WALLPAPER
+
+# Disable Splash
+splash = false
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hyprshade.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hyprshade.sh
new file mode 100755
index 0000000..1865560
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/hyprshade.sh
@@ -0,0 +1 @@
+hyprshade_filter="blue-light-filter-50"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/ml4w-sidebar.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/ml4w-sidebar.sh
new file mode 100755
index 0000000..b1ab0ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/ml4w-sidebar.sh
@@ -0,0 +1 @@
+ags toggle sidebar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/networkmanager.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/networkmanager.sh
new file mode 100755
index 0000000..b2a0141
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/networkmanager.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e nmtui
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/notification.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/notification.sh
new file mode 100755
index 0000000..936c7eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/notification.sh
@@ -0,0 +1 @@
+dunst
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/platform.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/platform.sh
new file mode 100755
index 0000000..35a143b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/platform.sh
@@ -0,0 +1 @@
+fedora
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/printer-drivers.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/printer-drivers.sh
new file mode 100755
index 0000000..444839f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/printer-drivers.sh
@@ -0,0 +1,4 @@
+# Installation of Printer Drivers
+# Please add your drivers to the package list
+# Example:
+# yay -S brother-hll2360dw-lpr-bin brother-hll2360dw-cups-bin brother-mfc-l3770cdw brscan-skey brscan4 skanpage
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-border-radius.rasi b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-border-radius.rasi
new file mode 100755
index 0000000..7cbaeeb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-border-radius.rasi
@@ -0,0 +1 @@
+* { border-radius: 2em; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-border.rasi b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-border.rasi
new file mode 100755
index 0000000..e533468
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-border.rasi
@@ -0,0 +1 @@
+* { border-width: 3px; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-font.rasi b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-font.rasi
new file mode 100755
index 0000000..a2497c3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi-font.rasi
@@ -0,0 +1 @@
+configuration { font: "Fira Sans 11"; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi_bordersize.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi_bordersize.sh
new file mode 100755
index 0000000..e440e5c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/rofi_bordersize.sh
@@ -0,0 +1 @@
+3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-editor.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-editor.sh
new file mode 100755
index 0000000..5f0900f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-editor.sh
@@ -0,0 +1 @@
+pinta
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-filename.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-filename.sh
new file mode 100755
index 0000000..f81ad3c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-filename.sh
@@ -0,0 +1 @@
+NAME="screenshot_$(date +%d%m%Y_%H%M%S).jpg"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-folder.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-folder.sh
new file mode 100755
index 0000000..a1bf821
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/screenshot-folder.sh
@@ -0,0 +1 @@
+screenshot_folder="$HOME/Pictures"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/sddm/theme.tpl b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/sddm/theme.tpl
new file mode 100755
index 0000000..f4ae01f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/sddm/theme.tpl
@@ -0,0 +1,132 @@
+[General]
+
+# Set to your screen resolution for better results
+width=1680
+height=1050
+
+backgroundColour="black"
+
+wallpaper="backgrounds/CURRENTWALLPAPER"
+
+# Whether to scale the image to fit on the screen, might leave some blank spaces
+# will scale and crop the wallpaper if left false
+fitWallpaper=false
+
+# Main font
+fontFamily="Noto Sans"
+
+# Set to a patched NerdFont if some icons don't display properly
+# or leave empty to use the main font family
+iconFont=""
+
+# Set this if fonts are the wrong size for your resolution
+fontSize=14
+
+# Whether to show icons inside menus
+iconsInMenus=true
+
+
+# [Colour_Palette]
+
+# The main colour for text and icons
+primaryColour="white"
+
+# The background colour of popup panels
+popupsBackgroundColour="white"
+
+# Used for the text and icons inside popup panels
+popupsForegroundColour="black"
+
+# Colour used for selected and focused items
+accentColour="#a7d9ea"
+
+
+# [Greeting_Screen]
+
+# Set true to be taken directly to the login screen
+skipToLogin=false
+
+# Supports Markdown formatting, leave empty to not display any text
+greeting="Welcome back!"
+
+# Adjusts the font size for the greeting message, clock and date
+fontSizeMultiplier=2
+
+# For help with date and time formatting see https://doc.qt.io/qt-5/qml-qtqml-date.html#format-strings
+clockFormat="HH:mm"
+dateFormat="dddd, dd MMMM"
+
+# Set this in case the date isn't in your system locale or you wish to use a different one
+locale=""
+
+# Styles the clock font
+# Set to 'outline' for alternate style
+clockStyle=fill
+
+# Anchor the clock to a side or corner of the screen, horizontal position is susceptible to layout mirroring
+# Syntax: vertical | horizontal
+# possible vertical values: top - center - bottom
+# and horizontal: left - center - right
+dateTimePosition="bottom right"
+
+# Defines how far away the date and time are from the edges of the screen
+dateTimePadding=55
+
+# Defines the behaviour of the sliding transition from greeting to login form
+# Set to +/- x or y
+transitionDirection="x"
+
+# [Login_Screen]
+
+# The maximum radius allowed is 16 per loop
+blurRadius=10
+blurRecursiveLoops=5
+
+# Used to dim the background
+darkenWallpaper=0.3
+
+# Purely cosmetic, has no effect on login credentials
+capitaliseUsername=false
+
+# 'mask' - hides your password by replacing the characters with something else
+# 'off' - also hides the length of your password by disabling echoing
+passwordEchoStyle=mask
+
+allowEmptyPassword=false
+
+# Set false to hide the selected session's name next to the menu icon
+displaySession=true
+
+
+# [Translations]
+# SDDM may not have translations for every element, or you might want to change some text to something else
+# setting these will override the text constants
+
+virtualKeyboard=""
+poweroff=""
+reboot=""
+suspend=""
+hibernate=""
+password=""
+username=""
+loginFailed=""
+
+
+# [Accessibility]
+
+# Set false to set all transition durations to 0
+enableAnimations=true
+
+# 'auto' - activates mirroring based on the system locale
+# 'false' - never mirror layout
+# 'true' - always mirrors
+mirrorLayout=auto
+
+# Whether the on-screen keyboard should be activated by default
+# It can always be de/activated through the accessibility panel
+virtualKeyboardStartActive=false
+
+# Normally the on-screen keyboard only shows up when text fields are focused
+# Set this true to have the keyboard always be visible once activated
+# This will render the hide button on the keyboard non-functional
+forceKeyboardVisible=false
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/software.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/software.sh
new file mode 100755
index 0000000..d10bc37
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/software.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e pacseek
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/system-monitor.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/system-monitor.sh
new file mode 100755
index 0000000..a7b1e4f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/system-monitor.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e htop
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/terminal.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/terminal.sh
new file mode 100755
index 0000000..659fb6b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/terminal.sh
@@ -0,0 +1 @@
+kitty
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-automation.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-automation.sh
new file mode 100755
index 0000000..2b82dfe
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-automation.sh
@@ -0,0 +1 @@
+60
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-effect.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-effect.sh
new file mode 100755
index 0000000..cfb931e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-effect.sh
@@ -0,0 +1 @@
+off
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-engine.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-engine.sh
new file mode 100755
index 0000000..b6923b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-engine.sh
@@ -0,0 +1 @@
+hyprpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-folder.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-folder.sh
new file mode 100755
index 0000000..8d138d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wallpaper-folder.sh
@@ -0,0 +1,2 @@
+# Enter the path to the folder that includes your wallpapers
+wallpaper_folder=$HOME/wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar-quicklinks.json b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar-quicklinks.json
new file mode 100755
index 0000000..7d61906
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar-quicklinks.json
@@ -0,0 +1,45 @@
+{
+ "custom/quicklink1": {
+ "format": "",
+ "on-click": "chromium",
+ "tooltip-format": "Open Chromium"
+ },
+ "custom/quicklink2": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip-format": "Open Firefox"
+ },
+ "custom/quicklink3": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/filemanager.sh",
+ "tooltip-format": "Open filemanager"
+ },
+ "custom/quicklink4": {
+ "format": "",
+ "on-click": "betterbird",
+ "tooltip-format": "Open Betterbird"
+ },
+ "custom/quicklink5": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/calculator.sh",
+ "tooltip-format": "Open calculator"
+ },
+ "custom/quicklink6": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/emojipicker.sh",
+ "tooltip-format": "Open emoji picker"
+ },
+ "custom/quicklinkempty": {
+ },
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/quicklink2",
+ "custom/quicklink3",
+ /*
+ "custom/quicklink4",
+ */
+ "custom/quicklinkempty"
+ ]
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar-theme.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar-theme.sh
new file mode 100755
index 0000000..736057a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar-theme.sh
@@ -0,0 +1 @@
+/ml4w;/ml4w/white
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_appmenu.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_appmenu.sh
new file mode 100755
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_appmenu.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_backlight.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_backlight.sh
new file mode 100755
index 0000000..c1f22fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_backlight.sh
@@ -0,0 +1 @@
+False
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_chatgpt.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_chatgpt.sh
new file mode 100755
index 0000000..0ca9514
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_chatgpt.sh
@@ -0,0 +1 @@
+True
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_custom_timedateformat.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_custom_timedateformat.sh
new file mode 100755
index 0000000..e69de29
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_dateformat.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_dateformat.sh
new file mode 100755
index 0000000..05696fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_dateformat.sh
@@ -0,0 +1 @@
+%a
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_network.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_network.sh
new file mode 100755
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_network.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_quicklinks.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_quicklinks.sh
new file mode 100755
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_quicklinks.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_screenlock.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_screenlock.sh
new file mode 100755
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_screenlock.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_settings.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_settings.sh
new file mode 100755
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_settings.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_systray.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_systray.sh
new file mode 100755
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_systray.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_taskbar.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_taskbar.sh
new file mode 100755
index 0000000..bc59c12
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_taskbar.sh
@@ -0,0 +1 @@
+False
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_timeformat.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_timeformat.sh
new file mode 100755
index 0000000..3d87f12
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_timeformat.sh
@@ -0,0 +1 @@
+%H:%M
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_timezone.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_timezone.sh
new file mode 100755
index 0000000..c7aac92
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_timezone.sh
@@ -0,0 +1 @@
+America/Chicago
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_toggle.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_toggle.sh
new file mode 100755
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_toggle.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_window.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_window.sh
new file mode 100755
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_window.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_workspaces.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_workspaces.sh
new file mode 100755
index 0000000..1e8b314
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/waybar_workspaces.sh
@@ -0,0 +1 @@
+6
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wlogout-parameters.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wlogout-parameters.sh
new file mode 100755
index 0000000..50e2452
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/settings/wlogout-parameters.sh
@@ -0,0 +1 @@
+-b 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/tpl/.zshrc b/configs/dotfiles/hyprland/laptop/.config/ml4w/tpl/.zshrc
new file mode 100755
index 0000000..9968f7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/tpl/.zshrc
@@ -0,0 +1,23 @@
+# _
+# _______| |__ _ __ ___
+# |_ / __| '_ \| '__/ __|
+# _ / /\__ \ | | | | | (__
+# (_)___|___/_| |_|_| \___|
+#
+# -----------------------------------------------------
+# ML4W zshrc loader
+# -----------------------------------------------------
+
+# DON'T CHANGE THIS FILE
+
+# You can define your custom configuration by adding
+# files in ~/.config/zshrc
+# or by creating a folder ~/.config/zshrc/custom
+# with you own zshrc configuration
+# -----------------------------------------------------
+
+if [ -d ~/.config/zshrc/custom ] ;then
+ for f in ~/.config/zshrc/custom/*; do source $f; done
+else
+ for f in ~/.config/zshrc/*; do source $f; done
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/version/compare.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/version/compare.sh
new file mode 100755
index 0000000..1b18b98
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/version/compare.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Compare installed version with used version
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+if [ -f /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name ] ;then
+ installed_version=$(cat /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name)
+ used_version=$(cat ~/.config/ml4w/version/name)
+ if [[ $(testvercomp $used_version $installed_version "<") == "0" ]] ;then
+ notify-send "Please run ml4w-hyprland-setup" "Installed version is newer then the version you're currently using."
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/version/library.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/version/library.sh
new file mode 100755
index 0000000..94e5fbe
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/version/library.sh
@@ -0,0 +1,42 @@
+vercomp () {
+ if [[ $1 == $2 ]]
+ then
+ return 0
+ fi
+ local IFS=.
+ local i ver1=($1) ver2=($2)
+ # fill empty fields in ver1 with zeros
+ for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
+ do
+ ver1[i]=0
+ done
+ for ((i=0; i<${#ver1[@]}; i++))
+ do
+ if ((10#${ver1[i]:=0} > 10#${ver2[i]:=0}))
+ then
+ return 1
+ fi
+ if ((10#${ver1[i]} < 10#${ver2[i]}))
+ then
+ return 2
+ fi
+ done
+ return 0
+}
+
+testvercomp () {
+ vercomp $1 $2
+ case $? in
+ 0) op='=';;
+ 1) op='>';;
+ 2) op='<';;
+ esac
+ if [[ $op != $3 ]]
+ then
+ # No update available
+ echo "1"
+ else
+ # Update available
+ echo "0"
+ fi
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/version/name b/configs/dotfiles/hyprland/laptop/.config/ml4w/version/name
new file mode 100755
index 0000000..92db042
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/version/name
@@ -0,0 +1 @@
+2.9.7.4
diff --git a/configs/dotfiles/hyprland/laptop/.config/ml4w/version/update.sh b/configs/dotfiles/hyprland/laptop/.config/ml4w/version/update.sh
new file mode 100755
index 0000000..efe9403
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/ml4w/version/update.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Check for updates
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+# Get latest tag from GitHub
+get_latest_release() {
+ v_online=$(curl --silent "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=ml4w-hyprland")
+ v_full_online=$(grep -m 1 'pkgver' <<< $v_online | sed 's/^$/pkgver/')
+ echo ${v_full_online/pkgver=/}
+}
+
+# Check for internet connection
+if ping -q -c 1 -W 1 google.com >/dev/null; then
+
+ version=$(cat ~/.config/ml4w/version/name)
+ online=$(get_latest_release "mylinuxforwork/hyprland-dotfiles")
+ echo $version "<" $online
+ testvercomp $version $online "<"
+else
+ # Network is down
+ echo "1"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/nwg-dock-hyprland/launch.sh b/configs/dotfiles/hyprland/laptop/.config/nwg-dock-hyprland/launch.sh
new file mode 100755
index 0000000..345b06e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/nwg-dock-hyprland/launch.sh
@@ -0,0 +1,6 @@
+# ___ __
+# / _ \___ ____/ /__
+# / // / _ \/ __/ '_/
+# /____/\___/\__/_/\_\
+#
+nwg-dock-hyprland -r -i 28 -w 6 -mb 6 -ml 10 -mr 10 -x -lp "start" -c "rofi -show drun"
diff --git a/configs/dotfiles/hyprland/laptop/.config/nwg-dock-hyprland/style.css b/configs/dotfiles/hyprland/laptop/.config/nwg-dock-hyprland/style.css
new file mode 100755
index 0000000..22fbd06
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/nwg-dock-hyprland/style.css
@@ -0,0 +1,43 @@
+window {
+ background: rgba(46,47,61,0.96);
+ border-radius: 10px;
+ border-style: solid;
+ border-width: 3px;
+ border-color: #82aaff;
+ opacity:0.8;
+}
+
+#box {
+ /* Define attributes of the box surrounding icons here */
+ padding: 8px
+}
+
+#active {
+ /* This is to underline the button representing the currently active window */
+ border-bottom: solid 0px;
+ border-color: #FFFFFF
+}
+
+button, image {
+ background: none;
+ border-style: none;
+ box-shadow: none;
+ color: #999
+}
+
+button {
+ padding: 4px;
+ margin-left: 3px;
+ margin-right: 3px;
+ color: #eee;
+ font-size: 12px
+}
+
+button:hover {
+ background-color: rgba(255, 255, 255, 0.15);
+ border-radius: 10px;
+}
+
+button:focus {
+ box-shadow: none
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/qt6ct/qt6ct.conf b/configs/dotfiles/hyprland/laptop/.config/qt6ct/qt6ct.conf
new file mode 100755
index 0000000..e5ace90
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/qt6ct/qt6ct.conf
@@ -0,0 +1,32 @@
+[Appearance]
+color_scheme_path=/usr/share/qt6ct/colors/darker.conf
+custom_palette=true
+icon_theme=breeze-dark
+standard_dialogs=default
+style=Breeze
+
+[Fonts]
+fixed="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+general="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=0
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+gui_effects=@Invalid()
+keyboard_scheme=2
+menus_have_icons=true
+show_shortcuts_in_context_menus=true
+stylesheets=@Invalid()
+toolbutton_style=4
+underline_shortcut=1
+wheel_scroll_lines=3
+
+[SettingsWindow]
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x4\xe1\0\0\x2\x97\0\0\0\0\0\0\0\0\xff\xff\xff\xfe\xff\xff\xff\xfe\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x4\xe1\0\0\x2\x97)
+
+[Troubleshooting]
+force_raster_widgets=1
+ignored_applications=@Invalid()
diff --git a/configs/dotfiles/hyprland/laptop/.config/rofi/config-cliphist.rasi b/configs/dotfiles/hyprland/laptop/.config/rofi/config-cliphist.rasi
new file mode 100755
index 0000000..a2cbd7a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/rofi/config-cliphist.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/rofi/config-compact.rasi b/configs/dotfiles/hyprland/laptop/.config/rofi/config-compact.rasi
new file mode 100755
index 0000000..4e59ac5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/rofi/config-compact.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/rofi/config-hyprshade.rasi b/configs/dotfiles/hyprland/laptop/.config/rofi/config-hyprshade.rasi
new file mode 100755
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/rofi/config-hyprshade.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/rofi/config-old.rasi b/configs/dotfiles/hyprland/laptop/.config/rofi/config-old.rasi
new file mode 100755
index 0000000..06fb55f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/rofi/config-old.rasi
@@ -0,0 +1,266 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: "APPS";
+ display-run: "RUN";
+ display-filebrowser: "FILES";
+ display-window: "WINDOW";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@import "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+/* ---- Window ---- */
+window {
+ width: 900px;
+ x-offset: 0px;
+ y-offset: 0px;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: #FFFFFF;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+/* ---- Mainbox ---- */
+mainbox {
+ enabled: true;
+ orientation: horizontal;
+ spacing: 0px;
+ margin: 0px;
+ background-color: @background;
+ background-image: @current-image;
+ children: ["imagebox","listbox"];
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 18px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "inputbar", "dummy", "mode-switcher" ];
+}
+
+/* ---- Listbox ---- */
+listbox {
+ spacing: 20px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "message", "listview" ];
+}
+
+/* ---- Dummy ---- */
+dummy {
+ background-color: transparent;
+}
+
+/* ---- Inputbar ---- */
+inputbar {
+ enabled: true;
+ text-color: @foreground;
+ spacing: 10px;
+ padding: 15px;
+ border-radius: 10px;
+ border-color: @foreground;
+ background-color: @background;
+ children: [ "textbox-prompt-colon", "entry" ];
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "";
+ padding: 0px 5px 0px 0px;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+entry {
+ enabled: true;
+ background-color: transparent;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+/* ---- Mode Switcher ---- */
+mode-switcher{
+ enabled: true;
+ spacing: 20px;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+button {
+ padding: 10px;
+ border-radius: 10px;
+ background-color: @background;
+ text-color: inherit;
+ cursor: pointer;
+ border: 0px;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+/* ---- Listview ---- */
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ spacing: 0px;
+ padding: 10px;
+ margin: 0px;
+ background-color: @background;
+ border:0px;
+}
+
+/* ---- Element ---- */
+element {
+ enabled: true;
+ padding: 10px;
+ margin: 5px;
+ cursor: pointer;
+ background-color: @background;
+ border-radius: 10px;
+ border: @border-width;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 32px;
+ cursor: inherit;
+}
+
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border:0px;
+ margin:20px 0px 0px 0px;
+ padding:0px;
+ spacing:0px;
+ border-radius: 10px;
+}
+
+textbox {
+ padding: 15px;
+ margin: 0px;
+ border-radius: 0px;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 15px;
+ border-radius: 20px;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/rofi/config-screenshot.rasi b/configs/dotfiles/hyprland/laptop/.config/rofi/config-screenshot.rasi
new file mode 100755
index 0000000..d4e70ed
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/rofi/config-screenshot.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 0em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/rofi/config-short.rasi b/configs/dotfiles/hyprland/laptop/.config/rofi/config-short.rasi
new file mode 100755
index 0000000..dcb8cd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/rofi/config-short.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 20em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 2;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/rofi/config-themes.rasi b/configs/dotfiles/hyprland/laptop/.config/rofi/config-themes.rasi
new file mode 100755
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/rofi/config-themes.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/rofi/config.rasi b/configs/dotfiles/hyprland/laptop/.config/rofi/config.rasi
new file mode 100755
index 0000000..f45262e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/rofi/config.rasi
@@ -0,0 +1,241 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: "";
+ display-run: "";
+ display-filebrowser: "";
+ display-window: "";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ height: 20em;
+ width: 35em;
+ transparency: "real";
+ fullscreen: false;
+ enabled: true;
+ cursor: "default";
+ spacing: 0em;
+ padding: 0em;
+ border: @border-width;
+ border-color: @color11;
+ border-radius: @border-radius;
+ background-color: @background;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: vertical;
+ children: [ "inputbar" , "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 2em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 0em 0em 1em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: horizontal;
+ children: [ "listview" , "mode-switcher" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1.5em;
+ spacing: 0.5em;
+ enabled: true;
+ columns: 2;
+ lines: 3;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ spacing: 0em;
+ padding: 0.5em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 1em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.1;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+// Error message //
+error-message {
+ text-color: @foreground;
+ background-color: @background;
+ text-transform: capitalize;
+ children: [ "textbox" ];
+}
+
+textbox {
+ text-color: inherit;
+ background-color: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-hyprland.conf b/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-hyprland.conf
new file mode 100755
index 0000000..84e2394
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-hyprland.conf
@@ -0,0 +1,18 @@
+$background = rgb({background.strip})
+$foreground = rgb({foreground.strip})
+$color0 = rgb({color0.strip})
+$color1 = rgb({color1.strip})
+$color2 = rgb({color2.strip})
+$color3 = rgb({color3.strip})
+$color4 = rgb({color4.strip})
+$color5 = rgb({color5.strip})
+$color6 = rgb({color6.strip})
+$color7 = rgb({color7.strip})
+$color8 = rgb({color8.strip})
+$color9 = rgb({color9.strip})
+$color10 = rgb({color10.strip})
+$color11 = rgb({color11.strip})
+$color12 = rgb({color12.strip})
+$color13 = rgb({color13.strip})
+$color14 = rgb({color14.strip})
+$color15 = rgb({color15.strip})
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-rofi-pywal.rasi b/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-rofi-pywal.rasi
new file mode 100755
index 0000000..f0b1665
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-rofi-pywal.rasi
@@ -0,0 +1,20 @@
+* {{
+ background: rgba(0,0,1,0.5);
+ foreground: #FFFFFF;
+ color0: {color0};
+ color1: {color1};
+ color2: {color2};
+ color3: {color3};
+ color4: {color4};
+ color5: {color5};
+ color6: {color6};
+ color7: {color7};
+ color8: {color8};
+ color9: {color9};
+ color10: {color10};
+ color11: {color11};
+ color12: {color12};
+ color13: {color13};
+ color14: {color14};
+ color15: {color15};
+}}
diff --git a/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-waybar.css b/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-waybar.css
new file mode 100755
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-waybar.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-wlogout.css b/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-wlogout.css
new file mode 100755
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/wal/templates/colors-wlogout.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/launch.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/launch.sh
new file mode 100755
index 0000000..8ae9e4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/launch.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# ____ _ _ __ __ _
+# / ___|| |_ __ _ _ __| |_ \ \ / /_ _ _ _| |__ __ _ _ __
+# \___ \| __/ _` | '__| __| \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# ___) | || (_| | | | |_ \ V V / (_| | |_| | |_) | (_| | |
+# |____/ \__\__,_|_| \__| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Quit all running waybar instances
+# -----------------------------------------------------
+killall waybar
+pkill waybar
+sleep 0.5
+
+# -----------------------------------------------------
+# Default theme: /THEMEFOLDER;/VARIATION
+# -----------------------------------------------------
+themestyle="/ml4w;/ml4w/light"
+
+# -----------------------------------------------------
+# Get current theme information from ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ -f ~/.config/ml4w/settings/waybar-theme.sh ]; then
+ themestyle=$(cat ~/.config/ml4w/settings/waybar-theme.sh)
+else
+ touch ~/.config/ml4w/settings/waybar-theme.sh
+ echo "$themestyle" > ~/.config/ml4w/settings/waybar-theme.sh
+fi
+
+IFS=';' read -ra arrThemes <<< "$themestyle"
+echo ":: Theme: ${arrThemes[0]}"
+
+if [ ! -f ~/.config/waybar/themes${arrThemes[1]}/style.css ]; then
+ themestyle="/ml4w;/ml4w/light"
+fi
+
+# -----------------------------------------------------
+# Loading the configuration
+# -----------------------------------------------------
+config_file="config"
+style_file="style.css"
+
+# Standard files can be overwritten with an existing config-custom or style-custom.css
+if [ -f ~/.config/waybar/themes${arrThemes[0]}/config-custom ] ;then
+ config_file="config-custom"
+fi
+if [ -f ~/.config/waybar/themes${arrThemes[1]}/style-custom.css ] ;then
+ style_file="style-custom.css"
+fi
+
+# Check if waybar-disabled file exists
+if [ ! -f $HOME/.cache/waybar-disabled ] ;then
+ waybar -c ~/.config/waybar/themes${arrThemes[0]}/$config_file -s ~/.config/waybar/themes${arrThemes[1]}/$style_file &
+fi
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/modules.json b/configs/dotfiles/hyprland/laptop/.config/waybar/modules.json
new file mode 100755
index 0000000..04caaa9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/modules.json
@@ -0,0 +1,379 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+{
+ // Workspaces
+ "hyprland/workspaces": {
+ "on-scroll-up": "hyprctl dispatch workspace r-1",
+ "on-scroll-down": "hyprctl dispatch workspace r+1",
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": ["Alacritty", "kitty"],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // Empty
+ "custom/empty": {
+ "format": ""
+ },
+
+ // Tools
+ "custom/tools": {
+ "format": "",
+ "tooltip-format": "Tools"
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip-format": "Left: Open clipboard Manager\nRight: Delete an entry\nMiddle: Clear list"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "interval": 1800,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "bash -c waypaper &",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip-format": "Left: Select a wallpaper\nRight: Select wallpaper effect"
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip-format": "Select a waybar theme"
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "sleep 0.1 && com.ml4w.dotfilessettings",
+ "tooltip-format": "ML4W Dotfiles Settings"
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": " ",
+ "on-click": "~/.config/ml4w/settings/ai.sh",
+ "tooltip-format": "AI Support"
+ },
+
+ // Calculator
+ "custom/calculator": {
+ "format": "",
+ "on-click": "qalculate-gtk",
+ "tooltip-format": "Open calculator"
+ },
+
+ // Windows VM
+ "custom/windowsvm": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/launchvm.sh",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ // START APPS LABEL
+ "format": "Apps",
+ // END APPS LABEL
+ "on-click": "sleep 0.2;pkill rofi || rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenuicon": {
+ "format": "",
+ "on-click": "sleep 0.2;rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/wlogout.sh",
+ "on-click-right": "hyprlock",
+ "tooltip-format": "Left: Power menu\nRight: Lock screen"
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "tooltip-format": "Toggle Screen Shader",
+ "on-click": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh rofi"
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle"
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "gnome-calendar",
+ "timezone": "America/Chicago",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "CPU: {usage}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Memory
+ "memory": {
+ "format": "| RAM: {}% | ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "Disk: {percentage_used}%",
+ "path": "/",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": ["custom/system", "cpu", "memory", "disk"]
+ },
+
+ // Group Tools
+ "group/tools": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/tools",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade"
+ ]
+ },
+
+ // Group Links
+ "group/links": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/chatgpt",
+ "custom/empty"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": true
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {signalStrength}%",
+ "format-ethernet": " {ifname}",
+ "format-disconnected": "Disconnected ⚠",
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}",
+ "tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "~/.config/ml4w/settings/networkmanager.sh",
+ "on-click-right": "~/.config/ml4w/scripts/nm-applet.sh toggle",
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format": "",
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false
+ },
+
+ // backlight:
+ "backlight": {
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "scroll-step": 1
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ai-icon-20.png b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ai-icon-20.png
new file mode 100755
index 0000000..a070dd4
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ai-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ai-icon.png b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ai-icon.png
new file mode 100755
index 0000000..398379b
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ai-icon.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/hyprland-icon-20.png b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/hyprland-icon-20.png
new file mode 100755
index 0000000..0d36ec2
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/hyprland-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/hyprland-icon.png b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/hyprland-icon.png
new file mode 100755
index 0000000..c87b767
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/hyprland-icon.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-20.png b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-20.png
new file mode 100755
index 0000000..df25ccb
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-black.svg b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-black.svg
new file mode 100755
index 0000000..011b817
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-black.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-dark.png b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-dark.png
new file mode 100755
index 0000000..73ec085
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-dark.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-white.svg b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-white.svg
new file mode 100755
index 0000000..c19407d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon-white.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon.png b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon.png
new file mode 100755
index 0000000..92a54e0
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon.svg b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon.svg
new file mode 100755
index 0000000..fa8e063
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/ml4w-icon.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai-black.svg b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai-black.svg
new file mode 100755
index 0000000..3b4eff9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai-black.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai-white.svg b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai-white.svg
new file mode 100755
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai-white.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai.svg b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai.svg
new file mode 100755
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/assets/openai.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/config b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/config
new file mode 100755
index 0000000..b02f10e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/config
@@ -0,0 +1,161 @@
+{
+ // "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["hyprland/workspaces","custom/waybarthemes"],
+ "modules-center": ["hyprland/window"],
+ "modules-right": ["custom/ml4w-welcome","mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "sway/language", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip": false
+ },
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "Themes",
+ "on-click": "~/.config/ml4w/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ "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": "{}% "
+ },
+ "temperature": {
+ "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": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, 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"
+ },
+ "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/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/config.sh
new file mode 100755
index 0000000..71a3429
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Default Theme"
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/style.css
new file mode 100755
index 0000000..cafc802
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/default/style.css
@@ -0,0 +1,289 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+}
+
+window#waybar {
+ background-color: rgba(43, 48, 59, 0.5);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+window#waybar.termite {
+ background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+ background-color: #000000;
+ border: none;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 15px;
+ background-image: url("../assets/ml4w-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 20px;
+ margin-right: 0px;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background-color: transparent;
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button.urgent {
+ background-color: #eb4d4b;
+}
+
+#mode {
+ background-color: #64727D;
+ border-bottom: 3px solid #ffffff;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#mpd {
+ padding: 0 10px;
+ color: #ffffff;
+}
+
+#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 {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+#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 {
+ 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 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#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/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/black/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
new file mode 100755
index 0000000..cea609a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/black/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/black/style.css
new file mode 100755
index 0000000..129c909
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/black/style.css
@@ -0,0 +1,29 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
new file mode 100755
index 0000000..7f55337
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/colored/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
new file mode 100755
index 0000000..de0b369
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/config b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/config
new file mode 100755
index 0000000..ea2b0cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
new file mode 100755
index 0000000..df6f8c2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/dark/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
new file mode 100755
index 0000000..54e8317
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/light/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
new file mode 100755
index 0000000..da067d2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Light"
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/light/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/light/style.css
new file mode 100755
index 0000000..5caa16a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
new file mode 100755
index 0000000..dea299a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
new file mode 100755
index 0000000..fe8dbb3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/white/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
new file mode 100755
index 0000000..1592654
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/white/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/white/style.css
new file mode 100755
index 0000000..a0ba4a7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur-bottom/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/black/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/black/config.sh
new file mode 100755
index 0000000..5c6fb05
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/black/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/black/style.css
new file mode 100755
index 0000000..b8a549a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/black/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/colored/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/colored/config.sh
new file mode 100755
index 0000000..7338fef
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/colored/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/colored/style.css
new file mode 100755
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/config b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/config
new file mode 100755
index 0000000..fcd29ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/dark/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/dark/config.sh
new file mode 100755
index 0000000..a3b9e88
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/dark/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/dark/style.css
new file mode 100755
index 0000000..8470788
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/light/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/light/config.sh
new file mode 100755
index 0000000..ca5fe11
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Light"
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/light/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/light/style.css
new file mode 100755
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/mixed/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/mixed/config.sh
new file mode 100755
index 0000000..eb698ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/mixed/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/mixed/style.css
new file mode 100755
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/style.css
new file mode 100755
index 0000000..12734d3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/style.css
@@ -0,0 +1,478 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left:14px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 8px 15px 8px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 14px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 20px;
+}
+
+#custom-settings {
+ margin-right:12px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+ opacity: 0.8;
+}
+
+#custom-chatgpt {
+ margin-right: 12px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 16px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 17px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 8px 16px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+ color: @textcolor3;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/white/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/white/config.sh
new file mode 100755
index 0000000..e458b19
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/white/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/white/style.css
new file mode 100755
index 0000000..f50cb7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-blur/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/black/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/black/config.sh
new file mode 100755
index 0000000..5837eb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/black/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/black/style.css
new file mode 100755
index 0000000..6bae0cd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/colored/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/colored/config.sh
new file mode 100755
index 0000000..0a31bac
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/colored/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/colored/style.css
new file mode 100755
index 0000000..53bf65c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/config b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/config
new file mode 100755
index 0000000..8e55c1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 14,
+ "layer": "top",
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/dark/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/dark/config.sh
new file mode 100755
index 0000000..a6fe8ff
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/dark/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/dark/style.css
new file mode 100755
index 0000000..2179f76
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/light/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/light/config.sh
new file mode 100755
index 0000000..e016502
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/light/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/light/style.css
new file mode 100755
index 0000000..833b8c4
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/mixed/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/mixed/config.sh
new file mode 100755
index 0000000..e5bc67e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/mixed/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/mixed/style.css
new file mode 100755
index 0000000..f3ee832
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/white/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/white/config.sh
new file mode 100755
index 0000000..71dd9f5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/white/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/white/style.css
new file mode 100755
index 0000000..704bfbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-bottom/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/config b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/config
new file mode 100755
index 0000000..4614d63
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/config
@@ -0,0 +1,88 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenuicon",
+ "hyprland/workspaces",
+ "group/links",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+ "custom/exit",
+ "clock",
+"tray",
+ "custom/ml4w-welcome"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/config.sh
new file mode 100755
index 0000000..eac2047
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Minimal"
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/style.css
new file mode 100755
index 0000000..be884b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-minimal/style.css
@@ -0,0 +1,431 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.4);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left: 10px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+ #workspaces {
+ margin: 3px 7px 3px 3px;
+ border: 0px;
+ font-size: 14px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ border: 0px;
+ margin:4px 5px 4px 0px;
+ padding:0px 4px 0px 4px;
+ color: @textcolor3;
+ transition: all 0.5s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 0px 15px 0px 0px;
+ border-radius: 12px;
+ color:@textcolor;
+ font-size:14px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 14px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-settings {
+ margin-right: 15px;
+}
+
+#custom-browser {
+ margin-right: 12px;
+}
+
+#custom-wallpaper {
+ margin-right: 14px;
+}
+
+#custom-chatgpt {
+ margin-right: 10px;
+ background-image: url("../assets/ai-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 23px;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-ml4w-hyprland-settings {
+ margin-right: 12px;
+ background-image: url("../assets/hyprland-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 16px;
+}
+
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 16px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 14px;
+ font-weight: bold;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenuicon {
+ font-size: 20px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:16px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#custom-updates.green {
+}
+
+#custom-updates.yellow {
+ color: #ff9a3c;
+}
+
+#custom-updates.red {
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Youtube
+ * ----------------------------------------------------- */
+
+#custom-youtube {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:14px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ font-size: 15px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+ background-color: transparent;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+ #pulseaudio {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#pulseaudio.muted {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#network.ethernet {
+ color: @textcolor;
+}
+
+#network.wifi {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/black/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/black/config.sh
new file mode 100755
index 0000000..63c42a1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/black/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/black/style.css
new file mode 100755
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/colored/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/colored/config.sh
new file mode 100755
index 0000000..61e80a5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/colored/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/colored/style.css
new file mode 100755
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/config b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/config
new file mode 100755
index 0000000..f570e02
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 14,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "hyprland/workspaces",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/dark/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/dark/config.sh
new file mode 100755
index 0000000..e6f8d5b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/dark/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/dark/style.css
new file mode 100755
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/light/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/light/config.sh
new file mode 100755
index 0000000..0c6cdb1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Light"
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/light/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/light/style.css
new file mode 100755
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/mixed/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/mixed/config.sh
new file mode 100755
index 0000000..46f3eb5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/mixed/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/mixed/style.css
new file mode 100755
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/style.css
new file mode 100755
index 0000000..12943e1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/style.css
@@ -0,0 +1,470 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+ * {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 18px 3px 1px;
+ padding: 0px 2px;
+ border-radius: 5px 5px 5px 5px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 6px;
+ margin: 3px 2px;
+ border-radius: 3px 3px 3px 3px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.1s linear;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 3px 3px 3px 3px;
+ min-width: 30px;
+ transition: all 0.1s linear;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 5px 5px 5px 5px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 3px 15px 3px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 5px 5px 5px 5px;
+ color:white;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 5px 5px 5px 5px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 10px 0px 10px;
+ margin: 2px 17px 2px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 3px 5px 3px 5px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 15px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/white/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/white/config.sh
new file mode 100755
index 0000000..efe0528
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/white/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/white/style.css
new file mode 100755
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w-modern/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/black/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/black/config.sh
new file mode 100755
index 0000000..39e19cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/black/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/black/style.css
new file mode 100755
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/colored/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/colored/config.sh
new file mode 100755
index 0000000..25dbee7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/colored/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/colored/style.css
new file mode 100755
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/config b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/config
new file mode 100755
index 0000000..df11393
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/config
@@ -0,0 +1,55 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 2,
+ "margin-bottom": 0,
+ "margin-left": 10,
+ "margin-right": 10,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+ "hyprland/workspaces",
+ //"custom/appmenu",
+ //"group/links",
+ //"wlr/taskbar",
+ //"group/quicklinks",
+ "hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "clock"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ //"custom/updates",
+ //"backlight",
+ "network",
+ "bluetooth",
+ "pulseaudio",
+ "battery",
+ "group/hardware",
+ "group/tools",
+ "tray",
+ "custom/exit",
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/dark/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/dark/config.sh
new file mode 100755
index 0000000..6c2cf9f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/dark/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/dark/style.css
new file mode 100755
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/light/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/light/config.sh
new file mode 100755
index 0000000..55e4ffd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light"
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/light/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/light/style.css
new file mode 100755
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/mixed/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/mixed/config.sh
new file mode 100755
index 0000000..c00e231
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/mixed/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/mixed/style.css
new file mode 100755
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/style.css
new file mode 100755
index 0000000..6bb3b9a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/style.css
@@ -0,0 +1,469 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 1px 1px 1px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 14px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 2px;
+ margin: 2px 1px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 30px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 14px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 5px 15px 5px 5px;
+ padding: 2px 10px 2px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:14px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 2px 10px 2px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 14px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 14px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 14px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 3px 17px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 8px 0px 8px;
+ margin: 5px 5px 5px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:14px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 14px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 10px 3px 10px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 8px 0px 8px;
+ margin: 5px 5px 5px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 8px 0px 8px;
+ margin: 5px 5px 5px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 8px 0px 8px;
+ margin: 5px 5px 5px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 8px 0px 8px;
+ margin: 5px 5px 5px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 8px 0px 8px;
+ margin: 5px 5px 5px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/white/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/white/config.sh
new file mode 100755
index 0000000..685088f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/white/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/white/style.css
new file mode 100755
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/ml4w/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/config b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/config
new file mode 100755
index 0000000..6084f60
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/config
@@ -0,0 +1,66 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+
+ // Position TOP
+ "layer": "top",
+ "margin-bottom": 0,
+
+ // Position BOTTOM
+ // "position": "bottom",
+ // "margin-top": 0,
+ // "margin-bottom": 14,
+
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/themes/starter/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "custom/settings",
+ //"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/starter"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/config.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/config.sh
new file mode 100755
index 0000000..a9399f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Starter"
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/modules.json b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/modules.json
new file mode 100755
index 0000000..51e0add
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/modules.json
@@ -0,0 +1,351 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // Workspaces
+ "hyprland/workspaces" : {
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": [
+ "Alacritty"
+ ],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip": false
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "on-click": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh rofi",
+ "tooltip": false
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle",
+ "on-click-right": "hyprlock"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "tooltip-format": "{}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "alacritty -e ~/.config/ml4w/scripts/installupdates.sh",
+ "tooltip": false
+ },
+
+ // Theme Starter Label
+ "custom/starter": {
+ "format": "THEME STARTER",
+ "tooltip": false
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "waypaper",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip": false
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage",
+ "tooltip": false
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Filemanager Launcher
+ "custom/filemanager": {
+ "format": "",
+ "on-click": "nautilus",
+ "tooltip": false
+ },
+
+ // Browser Launcher
+ "custom/browser": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip": false
+ },
+
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip-format": "Open Sidebar"
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": "",
+ "on-click": "chromium --app=https://chat.openai.com",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ "format": "Apps",
+ "on-click": "rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "wlogout",
+ "tooltip": false
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "ags -t calendar",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "alacritty -e htop"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/system",
+ "disk",
+ "cpu",
+ "memory",
+ "hyprland/language"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Group Quicklinks
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/filemanager",
+ "custom/browser"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {signalStrength}%",
+ "format-ethernet": " {ipaddr}",
+ "format-disconnected": "Not connected", //An empty format will hide the module.
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {essid} ({signalStrength}%)",
+ "tooltip-format-ethernet": " {ifname} ({ipaddr}/{cidr})",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "alacritty -e nmtui"
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false,
+ },
+
+ // Idle Inhibator
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "tooltip": true,
+ "format-icons":{
+ "activated": "",
+ "deactivated": ""
+ },
+ "on-click-right": "hyprlock"
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/style.css b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/style.css
new file mode 100755
index 0000000..21fdcfa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themes/starter/style.css
@@ -0,0 +1,457 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor3;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 10px 15px 10px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 23px;
+ font-size: 20px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 24px;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 10px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+/* -----------------------------------------------------
+ * Other
+ * ----------------------------------------------------- */
+
+label:focus {
+ background-color: #000000;
+}
+
+#backlight {
+ background-color: #90b1b1;
+}
+
+#network {
+ background-color: #2980b9;
+}
+
+#network.disconnected {
+ background-color: #f53c3c;
+}
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/themeswitcher.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/themeswitcher.sh
new file mode 100755
index 0000000..f3e4734
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/themeswitcher.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _ _
+# |_ _| |__ ___ _ __ ___ ___ _____ _(_) |_ ___| |__ ___ _ __
+# | | | '_ \ / _ \ '_ ` _ \ / _ \/ __\ \ /\ / / | __/ __| '_ \ / _ \ '__|
+# | | | | | | __/ | | | | | __/\__ \\ V V /| | || (__| | | | __/ |
+# |_| |_| |_|\___|_| |_| |_|\___||___/ \_/\_/ |_|\__\___|_| |_|\___|_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Default theme folder
+# -----------------------------------------------------
+themes_path="$HOME/.config/waybar/themes"
+
+# -----------------------------------------------------
+# Initialize arrays
+# -----------------------------------------------------
+listThemes=""
+listNames=""
+listNames2=""
+
+# -----------------------------------------------------
+# Read theme folder
+# -----------------------------------------------------
+sleep 0.2
+options=$(find $themes_path -maxdepth 2 -type d)
+for value in $options
+do
+ if [ ! $value == "$HOME/.config/waybar/themes/assets" ]; then
+ if [ ! $value == "$themes_path" ]; then
+ if [ $(find $value -maxdepth 1 -type d | wc -l) = 1 ]; then
+ result=$(echo $value | sed "s#$HOME/.config/waybar/themes/#/#g")
+ IFS='/' read -ra arrThemes <<< "$result"
+ listThemes[${#listThemes[@]}]="/${arrThemes[1]};$result"
+ if [ -f $themes_path$result/config.sh ]; then
+ source $themes_path$result/config.sh
+ listNames+="$theme_name\n"
+ listNames2+="$theme_name~"
+ else
+ listNames+="/${arrThemes[1]};$result\n"
+ listNames2+="/${arrThemes[1]};$result~"
+ fi
+ fi
+ fi
+ fi
+done
+
+# -----------------------------------------------------
+# Show rofi dialog
+# -----------------------------------------------------
+listNames=${listNames::-2}
+choice=$(echo -e "$listNames" | rofi -dmenu -replace -i -config ~/.config/rofi/config-themes.rasi -no-show-icons -width 30 -p "Themes" -format i)
+IFS="~"
+input=$listNames2
+read -ra array <<< "$input"
+
+# -----------------------------------------------------
+# Set new theme by writing the theme information to ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ "$choice" ]; then
+ echo "Loading waybar theme..."
+ echo "${listThemes[$choice+1]}" > ~/.config/ml4w/settings/waybar-theme.sh
+ ~/.config/waybar/launch.sh
+ notify-send "Waybar Theme changed" "to ${array[$choice]}"
+fi
diff --git a/configs/dotfiles/hyprland/laptop/.config/waybar/toggle.sh b/configs/dotfiles/hyprland/laptop/.config/waybar/toggle.sh
new file mode 100755
index 0000000..0d49a4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/waybar/toggle.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# _____ _ __ __ _
+# |_ _|__ __ _ __ _| | ___ \ \ / /_ _ _ _| |__ __ _ _ __
+# | |/ _ \ / _` |/ _` | |/ _ \ \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# | | (_) | (_| | (_| | | __/ \ V V / (_| | |_| | |_) | (_| | |
+# |_|\___/ \__, |\__, |_|\___| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/ |___/ |___/
+#
+
+if [ -f ~/.cache/waybar-disabled ] ;then
+ rm ~/.cache/waybar-disabled
+else
+ touch ~/.cache/waybar-disabled
+fi
+~/.config/waybar/launch.sh &
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/README.txt b/configs/dotfiles/hyprland/laptop/.config/wlogout/README.txt
new file mode 100755
index 0000000..4ceecd7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/wlogout/README.txt
@@ -0,0 +1,8 @@
+Select Logout Command depending on your setup:
+
+Use for Display Manager e.g., sddm (DEFAULT)
+sleep 1; hyprctl dispatch exit
+
+Use for Arch Linux text based login
+sleep 1; loginctl terminate-user $USER
+
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/hibernate.png b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/hibernate.png
new file mode 100755
index 0000000..bf2b001
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/hibernate.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/lock.png b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/lock.png
new file mode 100755
index 0000000..da59b10
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/lock.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/logout.png b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/logout.png
new file mode 100755
index 0000000..8a25922
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/logout.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/reboot.png b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/reboot.png
new file mode 100755
index 0000000..e5fd221
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/reboot.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/shutdown.png b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/shutdown.png
new file mode 100755
index 0000000..663ca03
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/shutdown.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/suspend.png b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/suspend.png
new file mode 100755
index 0000000..af099b9
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/wlogout/icons/suspend.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/layout b/configs/dotfiles/hyprland/laptop/.config/wlogout/layout
new file mode 100755
index 0000000..0dfb38a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/wlogout/layout
@@ -0,0 +1,30 @@
+{
+ "label" : "lock",
+ "action" : "~/.config/hypr/scripts/power.sh lock",
+ "text" : "Lock",
+ "keybind" : "l"
+}
+{
+ "label" : "logout",
+ "action" : "~/.config/hypr/scripts/power.sh exit",
+ "text" : "Log Out",
+ "keybind" : "e"
+}
+{
+ "label" : "suspend",
+ "action" : "~/.config/hypr/scripts/power.sh suspend",
+ "text" : "Suspend",
+ "keybind" : "u"
+}
+{
+ "label" : "reboot",
+ "action" : "~/.config/hypr/scripts/power.sh reboot",
+ "text" : "Restart",
+ "keybind" : "r"
+}
+{
+ "label" : "shutdown",
+ "action" : "~/.config/hypr/scripts/power.sh shutdown",
+ "text" : "Power Off",
+ "keybind" : "s"
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/noise.png b/configs/dotfiles/hyprland/laptop/.config/wlogout/noise.png
new file mode 100755
index 0000000..028b188
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop/.config/wlogout/noise.png differ
diff --git a/configs/dotfiles/hyprland/laptop/.config/wlogout/style.css b/configs/dotfiles/hyprland/laptop/.config/wlogout/style.css
new file mode 100755
index 0000000..f533d11
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/wlogout/style.css
@@ -0,0 +1,107 @@
+/*
+ _ _
+__ _| | ___ __ _ ___ _ _| |_
+\ \ /\ / / |/ _ \ / _` |/ _ \| | | | __|
+ \ V V /| | (_) | (_| | (_) | |_| | |_
+ \_/\_/ |_|\___/ \__, |\___/ \__,_|\__|
+ |___/
+
+by Stephan Raabe (2023)
+-----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../.cache/wal/colors-wlogout.css';
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ background-image: none;
+ transition: 20ms;
+ box-shadow: none;
+}
+
+window {
+ background: url("../ml4w/cache/blurred_wallpaper.png");
+ background-size: cover;
+ font-size: 16pt;
+ color: #cdd6f4;
+}
+
+button {
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 20%;
+ background-color: rgba(200, 220, 255, 0);
+ animation: gradient_f 20s ease-in infinite;
+ border-radius: 80px; /* Increased border radius for a more rounded look */
+ border:0px;
+ transition: all 0.3s cubic-bezier(.55, 0.0, .28, 1.682), box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
+}
+
+button:focus {
+ background-size: 22%;
+ border: 0px;
+}
+
+button:hover {
+ background-color: @color11;
+ opacity: 0.8;
+ color: #cdd6f4;
+ background-size: 30%;
+ margin: 30px;
+ border-radius: 80px;
+ box-shadow: 0 0 50px @color7;
+}
+
+/* Adjust the size of the icon or content inside the button */
+button span {
+ font-size: 1.2em; /* Increase the font size */
+}
+
+/*
+-----------------------------------------------------
+Buttons
+-----------------------------------------------------
+*/
+
+#lock {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/lock.png"));
+}
+
+#logout {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/logout.png"));
+}
+
+#suspend {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/suspend.png"));
+}
+
+#hibernate {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/hibernate.png"));
+}
+
+#shutdown {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/shutdown.png"));
+}
+
+#reboot {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/reboot.png"));
+}
diff --git a/configs/dotfiles/hyprland/laptop/.config/xsettingsd/xsettingsd.conf b/configs/dotfiles/hyprland/laptop/.config/xsettingsd/xsettingsd.conf
new file mode 100755
index 0000000..5065b09
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop/.config/xsettingsd/xsettingsd.conf
@@ -0,0 +1,9 @@
+Net/ThemeName "Adwaita"
+Net/IconThemeName "Papirus-Dark"
+Gtk/CursorThemeName "Bibata-Modern-Ice"
+Net/EnableEventSounds 1
+EnableInputFeedbackSounds 0
+Xft/Antialias 1
+Xft/Hinting 1
+Xft/HintStyle "hintslight"
+Xft/RGBA "rgb"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/Xresources b/configs/dotfiles/hyprland/laptop_default/.config/Xresources
new file mode 100644
index 0000000..6a1c856
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/Xresources
@@ -0,0 +1 @@
+Xcursor.theme: Bibata-Modern-Ice
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/app.ts b/configs/dotfiles/hyprland/laptop_default/.config/ags/app.ts
new file mode 100644
index 0000000..26c6a1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/app.ts
@@ -0,0 +1,11 @@
+import { App, Widget } from "astal/gtk3"
+import Calendar from "./widget/Calendar"
+import Sidebar from "./widget/Sidebar"
+
+App.start({
+ css: "./style.css",
+ main() {
+ Sidebar();
+ Calendar();
+ }
+})
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/application-exit-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/application-exit-symbolic.svg
new file mode 100644
index 0000000..66e44f1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/application-exit-symbolic.svg
@@ -0,0 +1,4 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg
new file mode 100644
index 0000000..b1ce05f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/arrow-circular-top-right-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/fileview-preview-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/fileview-preview-symbolic.svg
new file mode 100644
index 0000000..167090d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/fileview-preview-symbolic.svg
@@ -0,0 +1,13 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/image-loading-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/image-loading-symbolic.svg
new file mode 100644
index 0000000..b445ad1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/image-loading-symbolic.svg
@@ -0,0 +1,6 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/media-playback-paused-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/media-playback-paused-symbolic.svg
new file mode 100644
index 0000000..16d5de7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/media-playback-paused-symbolic.svg
@@ -0,0 +1,13 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/padlock2-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/padlock2-symbolic.svg
new file mode 100644
index 0000000..0d51118
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/padlock2-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg
new file mode 100644
index 0000000..541721c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/preferences-desktop-wallpaper-symbolic.svg
@@ -0,0 +1,5 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/turn-off-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/turn-off-symbolic.svg
new file mode 100644
index 0000000..db109c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/turn-off-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg
new file mode 100644
index 0000000..4536935
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/icons/xapp-prefs-preview-symbolic.svg
@@ -0,0 +1,3 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-dotfiles-settings.png b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-dotfiles-settings.png
new file mode 100644
index 0000000..938b6f7
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-dotfiles-settings.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-hyprland-settings.png b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-hyprland-settings.png
new file mode 100644
index 0000000..c7e8e29
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-hyprland-settings.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-welcome.png b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-welcome.png
new file mode 100644
index 0000000..7d4efe7
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/ags/assets/ml4w-welcome.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/env.d.ts b/configs/dotfiles/hyprland/laptop_default/.config/ags/env.d.ts
new file mode 100644
index 0000000..4e7e508
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/env.d.ts
@@ -0,0 +1,21 @@
+const SRC: string
+
+declare module "inline:*" {
+ const content: string
+ export default content
+}
+
+declare module "*.scss" {
+ const content: string
+ export default content
+}
+
+declare module "*.blp" {
+ const content: string
+ export default content
+}
+
+declare module "*.css" {
+ const content: string
+ export default content
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/scripts/run_themeswitcher.sh b/configs/dotfiles/hyprland/laptop_default/.config/ags/scripts/run_themeswitcher.sh
new file mode 100755
index 0000000..7c20589
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/scripts/run_themeswitcher.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/waybar/themeswitcher.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/scripts/run_wallpapereffects.sh b/configs/dotfiles/hyprland/laptop_default/.config/ags/scripts/run_wallpapereffects.sh
new file mode 100755
index 0000000..78dcaaf
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/scripts/run_wallpapereffects.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+$HOME/.config/hypr/scripts/wallpaper-effects.sh
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/style.css b/configs/dotfiles/hyprland/laptop_default/.config/ags/style.css
new file mode 100644
index 0000000..6cf06e8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/style.css
@@ -0,0 +1,211 @@
+@import url('../../.cache/wal/colors-waybar.css');
+
+* {
+ all:unset;
+ font-size: 14px;
+ font-family: "Fira Sans", sans-serif;
+ font-weight: normal;
+}
+
+.calendar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+ min-width:320px;
+}
+
+calendar:selected {
+ background-color:@color11;
+ padding:0px;
+}
+
+.sidebar {
+ background: #222222;
+ padding: 12px;
+ margin:14px;
+ border-radius: 12px;
+ font-weight: bold;
+ border: 3px solid @color11;
+ box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.8);
+ padding:20px;
+}
+
+.group {
+ padding:16px;
+ background-color: rgba(116, 116, 116, 0.1);
+ border-radius: 20px;
+}
+
+.ml4wwelcomeicon {
+ background:url("assets/ml4w-welcome.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4wsettingsicon {
+ background:url("assets/ml4w-dotfiles-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.ml4whyprlandicon {
+ background:url("assets/ml4w-hyprland-settings.png");
+ background-size:50px;
+ background-repeat: no-repeat;
+ background-position: top;
+ padding: 40px 50px 20px 50px;
+}
+
+.btnbar {
+ border: 1px solid #222222;
+ padding:5px;
+ min-height:24px;
+ border-radius: 24px;
+ min-width: 24px;
+ margin:0px 2px 0px 2px;
+}
+
+.btnbar.statusbar {
+ background:url("assets/icons/image-loading-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+ background-size:20px;
+}
+
+.btnbar.wallpaper {
+ background:url("assets/icons/fileview-preview-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+ background-size:20px;
+}
+
+.btnbar.wallpapereffects {
+ background:url("assets/icons/xapp-prefs-preview-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.lock {
+ background:url("assets/icons/padlock2-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.logout {
+ background:url("assets/icons/application-exit-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.restart {
+ background:url("assets/icons/arrow-circular-top-right-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.suspend {
+ background:url("assets/icons/media-playback-paused-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.btnbar.exit {
+ background:url("assets/icons/turn-off-symbolic.svg");
+ background-repeat:no-repeat;
+ background-position:center;
+ background-color: @color11;
+}
+
+.midbtn {
+ background-color: @color11;
+ font-size: 12px;
+ padding:10px;
+ border-radius: 20px;
+}
+
+.AudioSlider {
+ background-color:@color11;
+ border-radius:12px;
+ margin-bottom:10px;
+}
+
+.AudioSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.AudioSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.AudioSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.AudioSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider {
+ background-color:@color11;
+ border-radius:12px;
+}
+
+.MicrophoneSlider contents {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider value {
+ min-height: 20px;
+ background-color: #222222;
+}
+
+.MicrophoneSlider slider {
+ min-height: 20px;
+ background-color:@color15;
+ border-radius:12px;
+}
+
+.MicrophoneSlider highlight {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+ outline-width:3px;
+}
+
+.MicrophoneSlider fill {
+ min-height:20px;
+ background-color:@color11;
+ border-radius:12px;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/tsconfig.json b/configs/dotfiles/hyprland/laptop_default/.config/ags/tsconfig.json
new file mode 100644
index 0000000..b239e15
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "compilerOptions": {
+ "experimentalDecorators": true,
+ "strict": true,
+ "target": "ES2022",
+ "module": "ES2022",
+ "moduleResolution": "Bundler",
+ // "checkJs": true,
+ // "allowJs": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "/usr/share/astal/gjs/gtk3",
+ "paths": {
+ "astal": [
+ "/usr/share/astal/gjs"
+ ],
+ "astal/*": [
+ "/usr/share/astal/gjs/*"
+ ]
+ },
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Bar.tsx b/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Bar.tsx
new file mode 100644
index 0000000..ed1d845
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Bar.tsx
@@ -0,0 +1,29 @@
+import { App, Astal, Gtk, Gdk } from "astal/gtk3"
+import { Variable } from "astal"
+
+const time = Variable("").poll(1000, "date")
+
+export default function Bar(gdkmonitor: Gdk.Monitor) {
+ return
+
+
+
+
+
+
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Brightness.tsx b/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Brightness.tsx
new file mode 100644
index 0000000..86214f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Brightness.tsx
@@ -0,0 +1,72 @@
+// Thanks to https://gitlab.com/filippoaceto/
+import GObject, { register, property } from "astal/gobject"
+import { monitorFile, readFileAsync } from "astal/file"
+import { exec, execAsync } from "astal/process"
+
+const get = (args: string) => Number(exec(`brightnessctl ${args}`))
+const screen = exec(`bash -c "ls -w1 /sys/class/backlight | head -1"`)
+const kbd = exec(`bash -c "ls -w1 /sys/class/leds | head -1"`)
+
+@register({ GTypeName: "Brightness" })
+export default class Brightness extends GObject.Object {
+ static instance: Brightness
+ static get_default() {
+ if (!this.instance)
+ this.instance = new Brightness()
+
+ return this.instance
+ }
+
+ #kbdMax = get(`--device ${kbd} max`)
+ #kbd = get(`--device ${kbd} get`)
+ #screenMax = get("max")
+ #screen = get("get") / (get("max") || 1)
+
+ @property(Number)
+ get kbd() { return this.#kbd }
+
+ set kbd(value) {
+ if (value < 0 || value > this.#kbdMax)
+ return
+ execAsync(`brightnessctl -d ${kbd} s ${value} -q`).then(() => {
+ this.#kbd = value
+ this.notify("kbd")
+ })
+ }
+
+ @property(Number)
+ get screen() { return this.#screen }
+
+ set screen(percent) {
+ if (percent < 0)
+ percent = 0
+
+ if (percent > 1)
+ percent = 1
+
+ if (Math.floor(percent * 100) > 1)
+ execAsync(`brightnessctl set ${Math.floor(percent * 100)}% -q`).then(() => {
+ this.#screen = percent
+ this.notify("screen")
+ })
+ }
+
+ constructor() {
+ super()
+
+ const screenPath = `/sys/class/backlight/${screen}/brightness`
+ const kbdPath = `/sys/class/leds/${kbd}/brightness`
+
+ monitorFile(screenPath, async f => {
+ const v = await readFileAsync(f)
+ this.#screen = Number(v) / this.#screenMax
+ this.notify("screen")
+ })
+
+ monitorFile(kbdPath, async f => {
+ const v = await readFileAsync(f)
+ this.#kbd = Number(v) / this.#kbdMax
+ this.notify("kbd")
+ })
+ }
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Calendar.tsx b/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Calendar.tsx
new file mode 100644
index 0000000..263a77e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Calendar.tsx
@@ -0,0 +1,42 @@
+import { GObject } from "astal";
+import { astalify, ConstructProps, App, Astal, Gdk, Gtk } from "astal/gtk3"
+
+class CalendarGtk extends astalify(Gtk.Calendar) {
+ static {
+ GObject.registerClass(this);
+ }
+
+ constructor(
+ props: ConstructProps,
+ ) {
+ super(props as any);
+ }
+}
+
+export default function Calendar() {
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+ {new CalendarGtk({
+ hexpand: true,
+ vexpand: true,
+ showDayNames: true,
+ showDetails: false,
+ showHeading: true,
+ showWeekNumbers: true
+ })}
+
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Sidebar.tsx b/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Sidebar.tsx
new file mode 100644
index 0000000..d2672ba
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ags/widget/Sidebar.tsx
@@ -0,0 +1,167 @@
+import { App } from "astal/gtk3"
+import Apps from "gi://AstalApps"
+import Wp from "gi://AstalWp"
+import { Variable, GLib, bind } from "astal"
+import { subprocess, exec, execAsync } from "astal/process"
+import { Astal, Gtk, Gdk } from "astal/gtk3"
+import Brightness from "./Brightness"
+
+function BrightnessSlider() {
+ const brightness = Brightness.get_default()
+
+ return
+ brightness.screen = value}
+ />
+
+}
+
+function AudioSlider() {
+ const speaker = Wp.get_default()?.audio.defaultSpeaker!
+
+ return
+ speaker.volume = value}
+ value={bind(speaker, "volume")}
+ />
+
+}
+
+function MicrophoneSlider() {
+ const microphone = Wp.get_default()?.audio.defaultMicrophone!
+
+ return
+ microphone.volume = value}
+ value={bind(microphone, "volume")}
+ />
+
+}
+
+function openwelcomeapp() {
+ execAsync("com.ml4w.welcome")
+ App.get_window("sidebar")!.hide()
+}
+
+function opensettingsapp() {
+ execAsync("com.ml4w.dotfilessettings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openhyprlandapp() {
+ execAsync("com.ml4w.hyprland.settings")
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpaper() {
+ const proc = subprocess(["bash", "-c", "waypaper"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwallpapereffects() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/wallpaper-effects.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function openwaybarthemes() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/waybar/themeswitcher.sh"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerlock() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh lock"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerlogout() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh exit"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powersuspend() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh suspend"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerrestart() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh reboot"])
+ App.get_window("sidebar")!.hide()
+}
+
+function powerexit() {
+ const proc = subprocess(["bash", "-c", "$HOME/.config/hypr/scripts/power.sh shutdown"])
+ App.get_window("sidebar")!.hide()
+}
+
+export default function Sidebar() {
+
+ const anchor = Astal.WindowAnchor.TOP
+ | Astal.WindowAnchor.RIGHT
+
+ return
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/dunst/dunstrc b/configs/dotfiles/hyprland/laptop_default/.config/dunst/dunstrc
new file mode 100644
index 0000000..ed3be7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/dunst/dunstrc
@@ -0,0 +1,469 @@
+# _ _
+# __| |_ _ _ __ ___| |_
+# / _` | | | | '_ \/ __| __|
+# | (_| | |_| | | | \__ \ |_
+# \__,_|\__,_|_| |_|___/\__|
+#
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# 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 = (0,300)
+
+ # Position the notification in the top right corner
+ origin = top-center
+
+ # Offset from the origin
+ offset = 30x30
+
+ # Scale factor. It is auto-detected if value is 0.
+ scale = 0
+
+ # Maximum number of notification (0 means no limit)
+ notification_limit = 20
+
+ ### 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
+
+ # Corner radius for the progress bar. 0 disables rounded corners.
+ progress_bar_corner_radius = 10
+
+ # Corner radius for the icon image.
+ icon_corner_radius = 0
+
+ # 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 = 30
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ # If gap_size is greater than 0, this setting will be ignored.
+ 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 = "#ffffff"
+
+ # Size of gap to display between notifications - requires a compositor.
+ # If value is greater than 0, separator_height will be ignored and a border
+ # of size frame_width will be drawn around each notification instead.
+ # Click events on gaps do not currently propagate to applications below.
+ gap_size = 0
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ # A client can set the 'transient' hint to bypass this. See the rules
+ # section for how to disable this if necessary
+ # idle_threshold = 120
+
+ ### Text ###
+
+ font = "Fira Sans Semibold" 9
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
+ line_height = 1
+
+ # Possible values are:
+ # full: Allow a small subset of html markup in notifications:
+ # bold
+ # italic
+ # strikethrough
+ # underline
+ #
+ # For a complete reference see
+ # .
+ #
+ # strip: This setting is provided for compatibility with some broken
+ # clients that send markup even though it's not enabled on the
+ # server. Dunst will try to strip the markup but the parsing is
+ # simplistic so using this option outside of matching rules for
+ # specific applications *IS GREATLY DISCOURAGED*.
+ #
+ # no: Disable markup parsing, incoming notifications will be treated as
+ # plain text. Dunst will not advertise that it has the body-markup
+ # capability if this is set as a global setting.
+ #
+ # It's important to note that markup inside the format option will be parsed
+ # regardless of what this is set to.
+ markup = full
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "%s\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 = false
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = yes
+
+ ### Icons ###
+
+ # Recursive icon lookup. You can set a single theme, instead of having to
+ # define all lookup paths.
+ enable_recursive_icon_lookup = true
+
+ # Set icon theme (only used for recursive icon lookup)
+ icon_theme = "Papirus-Dark,Adwaita"
+ # You can also set multiple icon themes, with the leftmost one being used first.
+ # icon_theme = "Adwaita, breeze"
+
+ # Align icons left/right/top/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 = 32
+
+ # Scale larger icons down to this size, set to 0 to disable
+ max_icon_size = 128
+
+ # Paths to default icons (only neccesary when not using recursive icon lookup)
+ icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+ ### History ###
+
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = yes
+
+ # Maximum amount of notifications kept in history
+ history_length = 20
+
+ ### Misc/Advanced ###
+
+ # dmenu path.
+ dmenu = /usr/bin/dmenu -p dunst:
+
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/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 = 10
+
+ # Ignore the dbus closeNotification message.
+ # Useful to enforce the timeout set by dunst configuration. Without this
+ # parameter, an application may close the notification sent before the
+ # user defined timeout.
+ ignore_dbusclose = false
+
+ ### Wayland ###
+ # These settings are Wayland-specific. They have no effect when using X11
+
+ # Uncomment this if you want to let notications appear under fullscreen
+ # applications (default: overlay)
+ # layer = top
+
+ # Set this to true to use X11 output on Wayland.
+ force_xwayland = false
+
+ ### Legacy
+
+ # Use the Xinerama extension instead of RandR for multi-monitor support.
+ # This setting is provided for compatibility with older nVidia drivers that
+ # do not support RandR and using it on systems that support RandR is highly
+ # discouraged.
+ #
+ # By enabling this setting dunst will not be able to detect when a monitor
+ # is connected or disconnected which might break follow mode if the screen
+ # layout changes.
+ force_xinerama = false
+
+ ### mouse
+
+ # Defines list of actions for each mouse event
+ # Possible values are:
+ # * none: Don't do anything.
+ # * do_action: Invoke the action determined by the action_name rule. If there is no
+ # such action, open the context menu.
+ # * open_url: If the notification has exactly one url, open it. If there are multiple
+ # ones, open the context menu.
+ # * close_current: Close current notification.
+ # * close_all: Close all notifications.
+ # * context: Open context menu for the notification.
+ # * context_all: Open context menu for all notifications.
+ # These values can be strung together for each mouse event, and
+ # will be executed in sequence.
+ mouse_left_click = close_current
+ mouse_middle_click = do_action, close_current
+ mouse_right_click = close_all
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+ # Calculate the dpi to use on a per-monitor basis.
+ # If this setting is enabled the Xft.dpi value will be ignored and instead
+ # dunst will attempt to calculate an appropriate dpi value for each monitor
+ # using the resolution and physical size. This might be useful in setups
+ # where there are multiple screens with very different dpi values.
+ per_monitor_dpi = false
+
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#000000CC"
+ foreground = "#888888"
+ timeout = 6
+ # Icon for notifications with low urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_normal]
+ background = "#000000CC"
+ foreground = "#ffffff"
+ timeout = 6
+ # Icon for notifications with normal urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+[urgency_critical]
+ background = "#900000CC"
+ foreground = "#ffffff"
+ frame_color = "#ffffff"
+ timeout = 6
+ # Icon for notifications with critical urgency, uncomment to enable
+ #default_icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+#
+# Messages can be matched by
+# appname (discouraged, see desktop_entry)
+# body
+# category
+# desktop_entry
+# icon
+# match_transient
+# msg_urgency
+# stack_tag
+# summary
+#
+# and you can override the
+# background
+# foreground
+# format
+# frame_color
+# fullscreen
+# new_icon
+# set_stack_tag
+# set_transient
+# set_category
+# timeout
+# urgency
+# icon_position
+# skip_display
+# history_ignore
+# action_name
+# word_wrap
+# ellipsize
+# alignment
+# hide_text
+#
+# 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/configs/dotfiles/hyprland/laptop_default/.config/fastfetch/config.jsonc b/configs/dotfiles/hyprland/laptop_default/.config/fastfetch/config.jsonc
new file mode 100644
index 0000000..658682c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/fastfetch/config.jsonc
@@ -0,0 +1,104 @@
+// Thanks to Bina
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "padding": {
+ "top": 2
+ }
+ },
+ "display": {
+ "separator": " ➜ "
+ },
+ "modules": [
+ "break",
+ "break",
+ "break",
+ {
+ "type": "os",
+ "key": "OS ",
+ "keyColor": "31", // = color1
+ },
+ {
+ "type": "kernel",
+ "key": " ├ ",
+ "keyColor": "31",
+ },
+ {
+ "type": "shell",
+ "key": " └ ",
+ "keyColor": "31",
+ },
+ "break",
+ {
+ "type": "wm",
+ "key": "WM ",
+ "keyColor": "32",
+ },
+ {
+ "type": "wmtheme",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "icons",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "cursor",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminal",
+ "key": " ├ ",
+ "keyColor": "32",
+ },
+ {
+ "type": "terminalfont",
+ "key": " └ ",
+ "keyColor": "32",
+ },
+ "break",
+ {
+ "type": "host",
+ "format": "{5} {1} Type {2}",
+ "key": "PC ",
+ "keyColor": "33",
+ },
+ {
+ "type": "cpu",
+ "format": "{1} ({3}) @ {7} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "gpu",
+ "format": "{1} {2} @ {12} GHz",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "memory",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "swap",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "disk",
+ "key": " ├ ",
+ "keyColor": "33",
+ },
+ {
+ "type": "monitor",
+ "key": " └ ",
+ "keyColor": "33",
+ },
+ "break",
+ "break",
+ ]
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animation.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animation.conf
new file mode 100644
index 0000000..a210389
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animation.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/animations/default.conf
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-classic.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-classic.conf
new file mode 100644
index 0000000..11ce3c9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-classic.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# Animations
+# name "Classic"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ animation = windows, 1, 7, myBezier
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-dynamic.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-dynamic.conf
new file mode 100644
index 0000000..3e88cd9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-dynamic.conf
@@ -0,0 +1,19 @@
+# -----------------------------------------------------
+# Animations
+# name "Dynamic"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, loop
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-fast.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-fast.conf
new file mode 100644
index 0000000..a74f411
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-fast.conf
@@ -0,0 +1,23 @@
+# -----------------------------------------------------
+# Animations
+# name "Fast"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = linear, 0, 0, 1, 1
+ bezier = md3_standard, 0.2, 0, 0, 1
+ bezier = md3_decel, 0.05, 0.7, 0.1, 1
+ bezier = md3_accel, 0.3, 0, 0.8, 0.15
+ bezier = overshot, 0.05, 0.9, 0.1, 1.1
+ bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
+ bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
+ bezier = fluent_decel, 0.1, 1, 0, 1
+ bezier = easeInOutCirc, 0.85, 0, 0.15, 1
+ bezier = easeOutCirc, 0, 0.55, 0.45, 1
+ bezier = easeOutExpo, 0.16, 1, 0.3, 1
+ animation = windows, 1, 3, md3_decel, popin 60%
+ animation = border, 1, 10, default
+ animation = fade, 1, 2.5, md3_decel
+ animation = workspaces, 1, 3.5, easeOutExpo, slide
+ animation = specialWorkspace, 1, 3, md3_decel, slidevert
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-high.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-high.conf
new file mode 100644
index 0000000..2fc765f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-high.conf
@@ -0,0 +1,19 @@
+# -----------------------------------------------------
+# Animations
+# name: "High"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, loop
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-moving.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-moving.conf
new file mode 100644
index 0000000..7c43e04
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/animations-moving.conf
@@ -0,0 +1,18 @@
+# -----------------------------------------------------
+# Animations
+# name "Moving"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = overshot, 0.05, 0.9, 0.1, 1.05
+ bezier = smoothOut, 0.5, 0, 0.99, 0.99
+ bezier = smoothIn, 0.5, -0.5, 0.68, 1.5
+ animation = windows, 1, 5, overshot, slide
+ animation = windowsOut, 1, 3, smoothOut
+ animation = windowsIn, 1, 3, smoothOut
+ animation = windowsMove, 1, 4, smoothIn, slide
+ animation = border, 1, 5, default
+ animation = fade, 1, 5, smoothIn
+ animation = fadeDim, 1, 5, smoothIn
+ animation = workspaces, 1, 6, default
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/default.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/default.conf
new file mode 100644
index 0000000..978b436
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/default.conf
@@ -0,0 +1,19 @@
+# -----------------------------------------------------
+# Animations
+# name "Dynamic"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = wind, 0.05, 0.9, 0.1, 1.05
+ bezier = winIn, 0.1, 1.1, 0.1, 1.1
+ bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = liner, 1, 1, 1, 1
+ animation = windows, 1, 6, wind, slide
+ animation = windowsIn, 1, 6, winIn, slide
+ animation = windowsOut, 1, 5, winOut, slide
+ animation = windowsMove, 1, 5, wind, slide
+ animation = border, 1, 1, liner
+ animation = borderangle, 1, 30, liner, once
+ animation = fade, 1, 10, default
+ animation = workspaces, 1, 5, wind
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/disabled.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/disabled.conf
new file mode 100644
index 0000000..c9e31c4
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/disabled.conf
@@ -0,0 +1,7 @@
+# -----------------------------------------------------
+# Animations
+# name "Default"
+# -----------------------------------------------------
+animations {
+ enabled = false
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/standard.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/standard.conf
new file mode 100644
index 0000000..ba78c65
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/animations/standard.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# Animations
+# name "Default"
+# -----------------------------------------------------
+animations {
+ enabled = true
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ animation = windows, 1, 7, myBezier
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/autostart.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/autostart.conf
new file mode 100644
index 0000000..91614c1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/autostart.conf
@@ -0,0 +1,41 @@
+# ___ __ __ __
+# / _ |__ __/ /____ ___ / /____ _____/ /_
+# / __ / // / __/ _ \(_- __/ _ `/ __/ __/
+# /_/ |_\_,_/\__/\___/___/\__/\_,_/_/ \__/
+#
+
+# Setup XDG for screen sharing and start waypaper and waybar
+exec-once = ~/.config/hypr/scripts/xdg.sh
+
+# Load Wallpaper
+exec-once = ~/.config/hypr/scripts/wallpaper-restore.sh
+
+# Start Polkit
+exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+
+# Load Notification Daemon
+exec-once = ~/.config/ml4w/settings/notification.sh
+
+# Load GTK settings
+exec-once = ~/.config/hypr/scripts/gtk.sh
+
+# Using hypridle to start hyprlock
+exec-once = hypridle
+
+# Load cliphist history
+exec-once = wl-paste --watch cliphist store
+
+# Autostart ML4W App
+exec-once = ~/.config/ml4w/scripts/ml4w-autostart.sh
+
+# Start ags
+exec-once = ~/.config/ml4w/scripts/ags.sh
+
+# Start autostart cleanup
+exec-once = ~/.config/hypr/scripts/cleanup.sh
+
+# Load configuration from ML4W Hyprland Settings App
+exec = ~/.config/ml4w-hyprland-settings/hyprctl.sh
+
+# Dock
+exec-once = ~/.config/nwg-dock-hyprland/launch.sh
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/cursor.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/cursor.conf
new file mode 100644
index 0000000..311593d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/cursor.conf
@@ -0,0 +1,6 @@
+exec-once = hyprctl setcursor Bibata-Modern-Ice 24
+
+# No Hardware Cursor
+cursor {
+ no_hardware_cursors = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/custom.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/custom.conf
new file mode 100644
index 0000000..1e24aae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/custom.conf
@@ -0,0 +1,24 @@
+# Add your additional Hyprland configurations here
+#
+# This is an additional key binding
+# bind = $mainMod CTRL, up, workspace, empty
+#
+# Example for xwayland
+# xwayland {
+# force_zero_scaling = true
+# }
+
+# qt5ct environment variable
+# env = QT_QPA_PLATFORMTHEME,qt5ct
+
+# SDL version
+env = SDL_VIDEODRIVER,wayland
+# env = SDL_VIDEODRIVER,x11
+
+# No Hardware Cursor
+# cursor {
+# no_hardware_cursors = false
+# }
+
+# Blur for waybar
+#layerrule = blur, waybar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decoration.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decoration.conf
new file mode 100644
index 0000000..9e49187
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decoration.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/decorations/default.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/default.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/default.conf
new file mode 100644
index 0000000..86adbde
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/default.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Default"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/no-rounding-more-blur.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/no-rounding-more-blur.conf
new file mode 100644
index 0000000..97a62ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/no-rounding-more-blur.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "No Rounding More Blur"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 0
+ active_opacity = 1.0
+ inactive_opacity = 0.6
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 12
+ passes = 6
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/no-rounding.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/no-rounding.conf
new file mode 100644
index 0000000..445d9a3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/no-rounding.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "No Rounding"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 0
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-all-blur-no-shadows.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-all-blur-no-shadows.conf
new file mode 100644
index 0000000..7e6b58d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-all-blur-no-shadows.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Rounding All Blur No Shadows"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 0.9
+ inactive_opacity = 0.6
+ fullscreen_opacity = 0.9
+
+ blur {
+ enabled = true
+ size = 12
+ passes = 4
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ blurls = waybar
+ }
+
+ shadow {
+ enabled = false
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-all-blur.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-all-blur.conf
new file mode 100644
index 0000000..c610cee
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-all-blur.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Rounding All Blur"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 0.9
+ inactive_opacity = 0.6
+ fullscreen_opacity = 0.9
+
+ blur {
+ enabled = true
+ size = 12
+ passes = 4
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-more-blur.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-more-blur.conf
new file mode 100644
index 0000000..656c402
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding-more-blur.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Rounding More Blur"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.6
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 12
+ passes = 6
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding.conf
new file mode 100644
index 0000000..86adbde
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/decorations/rounding.conf
@@ -0,0 +1,28 @@
+# -----------------------------------------------------
+# General window decoration
+# name: "Default"
+# -----------------------------------------------------
+
+decoration {
+ rounding = 10
+ active_opacity = 1.0
+ inactive_opacity = 0.8
+ fullscreen_opacity = 1.0
+
+ blur {
+ enabled = true
+ size = 6
+ passes = 2
+ new_optimizations = on
+ ignore_opacity = true
+ xray = true
+ # blurls = waybar
+ }
+
+ shadow {
+ enabled = true
+ range = 30
+ render_power = 3
+ color = 0x66000000
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environment.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environment.conf
new file mode 100644
index 0000000..44e6f6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environment.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/environments/default.conf
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/default.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/default.conf
new file mode 100644
index 0000000..5ec2bfe
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/default.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Environment Variables
+# name: "Default"
+# -----------------------------------------------------
+
+# Default Settings in ml4w.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/kvm.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/kvm.conf
new file mode 100644
index 0000000..87b16a1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/kvm.conf
@@ -0,0 +1,10 @@
+# -----------------------------------------------------
+# Environment Variables
+# name: "KVM"
+# -----------------------------------------------------
+
+# Default Settings in ml4w.conf
+
+# KVM Environment
+env = WLR_RENDERER_ALLOW_SOFTWARE, 1
+# env = LIBGL_ALWAYS_SOFTWARE,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/nvidia.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/nvidia.conf
new file mode 100644
index 0000000..c10643e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/environments/nvidia.conf
@@ -0,0 +1,29 @@
+# -----------------------------------------------------
+# Environment Variables
+# name: "Nvidia"
+# -----------------------------------------------------
+
+# Default Settings in ml4w.conf
+
+# NVIDIA https://wiki.hyprland.org/Nvidia/
+env = GBM_BACKEND,nvidia-drm
+env = LIBVA_DRIVER_NAME,nvidia
+env = SDL_VIDEODRIVER,wayland
+env = WLR_DRM_NO_ATOMIC,1
+# env = __GL_VRR_ALLOWED,1
+env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+env = __NV_PRIME_RENDER_OFFLOAD,1
+env = __VK_LAYER_NV_optimus,NVIDIA_only
+
+# FOR VM and POSSIBLY NVIDIA
+env = WLR_NO_HARDWARE_CURSORS,1 # On hyprland >v0.41, now configured on variable cursor section
+env = WLR_RENDERER_ALLOW_SOFTWARE,1
+
+# nvidia firefox (for hardware acceleration on FF)?
+# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration
+env = MOZ_DISABLE_RDD_SANDBOX,1
+env = EGL_PLATFORM,wayland
+
+cursor {
+ no_hardware_cursors = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybinding.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybinding.conf
new file mode 100644
index 0000000..b3b4d58
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybinding.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/keybindings/default.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybindings/default.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybindings/default.conf
new file mode 100644
index 0000000..a573a61
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybindings/default.conf
@@ -0,0 +1,122 @@
+# -----------------------------------------------------
+# Key bindings
+# name: "Default"
+# -----------------------------------------------------
+
+# SUPER KEY
+$mainMod = SUPER
+$HYPRSCRIPTS = ~/.config/hypr/scripts
+$SCRIPTS = ~/.config/ml4w/scripts
+
+# Applications
+bind = $mainMod, RETURN, exec, ~/.config/ml4w/settings/terminal.sh # Open the terminal
+bind = $mainMod, B, exec, ~/.config/ml4w/settings/browser.sh # Open the browser
+bind = $mainMod, E, exec, ~/.config/ml4w/settings/filemanager.sh # Open the filemanager
+bind = $mainMod CTRL, E, exec, ~/.config/ml4w/settings/emojipicker.sh # Open the emoji picker
+bind = $mainMod CTRL, C, exec, ~/.config/ml4w/settings/calculator.sh # Open the calculator
+
+# Windows
+bind = $mainMod, Q, killactive # Kill active window
+bind = $mainMod SHIFT, Q, exec, hyprctl activewindow | grep pid | tr -d 'pid:'| xargs kill
+bind = $mainMod, F, fullscreen, 0 # Set active window to fullscreen
+bind = $mainMod, M, fullscreen, 1
+bind = $mainMod, T, togglefloating # Toggle active windows into floating mode
+bind = $mainMod SHIFT, T, exec, $HYPRSCRIPTS/toggleallfloat.sh # Toggle all windows into floating mode
+bind = $mainMod, J, togglesplit # Toggle split
+bind = $mainMod, left, movefocus, l # Move focus left
+bind = $mainMod, right, movefocus, r # Move focus right
+bind = $mainMod, up, movefocus, u # Move focus up
+bind = $mainMod, down, movefocus, d # Move focus down
+bindm = $mainMod, mouse:272, movewindow # Move window with the mouse
+bindm = $mainMod, mouse:273, resizewindow # Resize window with the mouse
+bind = $mainMod SHIFT, right, resizeactive, 100 0 # Increase window width with keyboard
+bind = $mainMod SHIFT, left, resizeactive, -100 0 # Reduce window width with keyboard
+bind = $mainMod SHIFT, down, resizeactive, 0 100 # Increase window height with keyboard
+bind = $mainMod SHIFT, up, resizeactive, 0 -100 # Reduce window height with keyboard
+bind = $mainMod, G, togglegroup # Toggle window group
+bind = $mainMod, K, swapsplit # Swapsplit
+
+# Actions
+bind = $mainMod SHIFT, A, exec, $HYPRSCRIPTS/toggle-animations.sh # Toggle animations
+bind = $mainMod, PRINT, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot
+bind = $mainMod SHIFT, S, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot
+bind = $mainMod CTRL, Q, exec, ~/.config/ml4w/scripts/wlogout.sh # Start wlogout
+bind = $mainMod SHIFT, W, exec, waypaper --random # Change the wallpaper
+bind = $mainMod CTRL, W, exec, waypaper # Open wallpaper selector
+bind = $mainMod ALT, W, exec, $HYPRSCRIPTS/wallpaper-automation.sh # Start random wallpaper script
+bind = $mainMod CTRL, RETURN, exec, pkill rofi || rofi -show drun -replace -i # Open application launcher
+bind = $mainMod CTRL, K, exec, $HYPRSCRIPTS/keybindings.sh # Show keybindings
+bind = $mainMod SHIFT, B, exec, ~/.config/waybar/launch.sh # Reload waybar
+bind = $mainMod CTRL, B, exec, ~/.config/waybar/toggle.sh # Toggle waybar
+bind = $mainMod SHIFT, R, exec, $HYPRSCRIPTS/loadconfig.sh # Reload hyprland config
+bind = $mainMod, V, exec, $SCRIPTS/cliphist.sh # Open clipboard manager
+bind = $mainMod CTRL, T, exec, ~/.config/waybar/themeswitcher.sh # Open waybar theme switcher
+bind = $mainMod CTRL, S, exec, ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+bind = $mainMod SHIFT, H, exec, $HYPRSCRIPTS/hyprshade.sh # Toggle screenshader
+bind = $mainMod ALT, G, exec, $HYPRSCRIPTS/gamemode.sh # Toggle game mode
+bind = $mainMod, Z, exec, missioncenter # Open Mission Center
+
+# Workspaces
+bind = $mainMod, 1, workspace, 1 # Open workspace 1
+bind = $mainMod, 2, workspace, 2 # Open workspace 2
+bind = $mainMod, 3, workspace, 3 # Open workspace 3
+bind = $mainMod, 4, workspace, 4 # Open workspace 4
+bind = $mainMod, 5, workspace, 5 # Open workspace 5
+bind = $mainMod, 6, workspace, 6 # Open workspace 6
+bind = $mainMod, 7, workspace, 7 # Open workspace 7
+bind = $mainMod, 8, workspace, 8 # Open workspace 8
+bind = $mainMod, 9, workspace, 9 # Open workspace 9
+bind = $mainMod, 0, workspace, 10 # Open workspace 10
+
+bind = $mainMod SHIFT, 1, movetoworkspace, 1 # Move active window to workspace 1
+bind = $mainMod SHIFT, 2, movetoworkspace, 2 # Move active window to workspace 2
+bind = $mainMod SHIFT, 3, movetoworkspace, 3 # Move active window to workspace 3
+bind = $mainMod SHIFT, 4, movetoworkspace, 4 # Move active window to workspace 4
+bind = $mainMod SHIFT, 5, movetoworkspace, 5 # Move active window to workspace 5
+bind = $mainMod SHIFT, 6, movetoworkspace, 6 # Move active window to workspace 6
+bind = $mainMod SHIFT, 7, movetoworkspace, 7 # Move active window to workspace 7
+bind = $mainMod SHIFT, 8, movetoworkspace, 8 # Move active window to workspace 8
+bind = $mainMod SHIFT, 9, movetoworkspace, 9 # Move active window to workspace 9
+bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Move active window to workspace 10
+
+bind = $mainMod, Tab, workspace, m+1 # Open next workspace
+bind = $mainMod SHIFT, Tab, workspace, m-1 # Open previous workspace
+
+bind = $mainMod CTRL, 1, exec, $HYPRSCRIPTS/moveTo.sh 1 # Move all windows to workspace 1
+bind = $mainMod CTRL, 2, exec, $HYPRSCRIPTS/moveTo.sh 2 # Move all windows to workspace 2
+bind = $mainMod CTRL, 3, exec, $HYPRSCRIPTS/moveTo.sh 3 # Move all windows to workspace 3
+bind = $mainMod CTRL, 4, exec, $HYPRSCRIPTS/moveTo.sh 4 # Move all windows to workspace 4
+bind = $mainMod CTRL, 5, exec, $HYPRSCRIPTS/moveTo.sh 5 # Move all windows to workspace 5
+bind = $mainMod CTRL, 6, exec, $HYPRSCRIPTS/moveTo.sh 6 # Move all windows to workspace 6
+bind = $mainMod CTRL, 7, exec, $HYPRSCRIPTS/moveTo.sh 7 # Move all windows to workspace 7
+bind = $mainMod CTRL, 8, exec, $HYPRSCRIPTS/moveTo.sh 8 # Move all windows to workspace 8
+bind = $mainMod CTRL, 9, exec, $HYPRSCRIPTS/moveTo.sh 9 # Move all windows to workspace 9
+bind = $mainMod CTRL, 0, exec, $HYPRSCRIPTS/moveTo.sh 10 # Move all windows to workspace 10
+
+bind = $mainMod, mouse_down, workspace, e+1 # Open next workspace
+bind = $mainMod, mouse_up, workspace, e-1 # Open previous workspace
+bind = $mainMod CTRL, down, workspace, empty # Open the next empty workspace
+
+# Passthrough SUPER KEY to Virtual Machine
+# bind = $mainMod, P, submap, passthru # Passthrough SUPER key to virtual machine
+# submap = passthru
+# bind = SUPER, Escape, submap, reset # Get SUPER key back from virtual machine
+# submap = reset
+
+# Fn keys
+bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10% # Increase brightness by 10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%- # Reduce brightness by 10%
+bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% # Increase volume by 5%
+bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% # Reduce volume by 5%
+bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Toggle mute
+bind = , XF86AudioPlay, exec, playerctl play-pause # Audio play pause
+bind = , XF86AudioPause, exec, playerctl pause # Audio pause
+bind = , XF86AudioNext, exec, playerctl next # Audio next
+bind = , XF86AudioPrev, exec, playerctl previous # Audio previous
+bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # Toggle microphone
+bind = , XF86Calculator, exec, ~/.config/ml4w/settings/calculator.sh # Open calculator
+bind = , XF86Lock, exec, hyprlock # Open screenlock
+bind = , XF86Tools, exec, $(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+
+bind = , code:238, exec, brightnessctl -d smc::kbd_backlight s +10
+bind = , code:237, exec, brightnessctl -d smc::kbd_backlight s 10-
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybindings/fr.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybindings/fr.conf
new file mode 100644
index 0000000..9e1937e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keybindings/fr.conf
@@ -0,0 +1,120 @@
+# -----------------------------------------------------
+# Key bindings
+# name: "Default"
+# -----------------------------------------------------
+
+# SUPER KEY
+$mainMod = SUPER
+$HYPRSCRIPTS = ~/.config/hypr/scripts
+$SCRIPTS = ~/.config/ml4w/scripts
+
+# Applications
+bind = $mainMod, RETURN, exec, ~/.config/ml4w/settings/terminal.sh # Open the terminal
+bind = $mainMod, B, exec, ~/.config/ml4w/settings/browser.sh # Open the browser
+bind = $mainMod, E, exec, ~/.config/ml4w/settings/filemanager.sh # Open the filemanager
+bind = $mainMod CTRL, E, exec, ~/.config/ml4w/settings/emojipicker.sh # Open the emoji picker
+bind = $mainMod CTRL, C, exec, ~/.config/ml4w/settings/calculator.sh # Open the calculator
+
+# Windows
+bind = $mainMod, Q, killactive # Kill active window
+bind = $mainMod, F, fullscreen # Set active window to fullscreen
+bind = $mainMod, T, togglefloating # Toggle active windows into floating mode
+bind = $mainMod SHIFT, T, exec, $HYPRSCRIPTS/toggleallfloat.sh # Toggle all windows into floating mode
+bind = $mainMod, J, togglesplit # Toggle split
+bind = $mainMod, left, movefocus, l # Move focus left
+bind = $mainMod, right, movefocus, r # Move focus right
+bind = $mainMod, up, movefocus, u # Move focus up
+bind = $mainMod, down, movefocus, d # Move focus down
+bindm = $mainMod, mouse:272, movewindow # Move window with the mouse
+bindm = $mainMod, mouse:273, resizewindow # Resize window with the mouse
+bind = $mainMod SHIFT, right, resizeactive, 100 0 # Increase window width with keyboard
+bind = $mainMod SHIFT, left, resizeactive, -100 0 # Reduce window width with keyboard
+bind = $mainMod SHIFT, down, resizeactive, 0 100 # Increase window height with keyboard
+bind = $mainMod SHIFT, up, resizeactive, 0 -100 # Reduce window height with keyboard
+bind = $mainMod, G, togglegroup # Toggle window group
+bind = $mainMod, K, swapsplit # Swapsplit
+
+# Actions
+bind = $mainMod SHIFT, A, exec, $HYPRSCRIPTS/toggle-animations.sh # Toggle animations
+bind = $mainMod, PRINT, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot
+bind = $mainMod SHIFT, S, exec, $HYPRSCRIPTS/screenshot.sh # Take a screenshot
+bind = $mainMod CTRL, Q, exec, ~/.config/ml4w/scripts/wlogout.sh # Start wlogout
+bind = $mainMod SHIFT, W, exec, waypaper --random # Change the wallpaper
+bind = $mainMod CTRL, W, exec, waypaper # Open wallpaper selector
+bind = $mainMod ALT, W, exec, $HYPRSCRIPTS/wallpaper-automation.sh # Start random wallpaper script
+bind = $mainMod CTRL, RETURN, exec, pkill rofi || rofi -show drun -replace -i # Open application launcher
+bind = $mainMod CTRL, K, exec, $HYPRSCRIPTS/keybindings.sh # Show keybindings
+bind = $mainMod SHIFT, B, exec, ~/.config/waybar/launch.sh # Reload waybar
+bind = $mainMod CTRL, B, exec, ~/.config/waybar/toggle.sh # Toggle waybar
+bind = $mainMod SHIFT, R, exec, $HYPRSCRIPTS/loadconfig.sh # Reload hyprland config
+bind = $mainMod, V, exec, $SCRIPTS/cliphist.sh # Open clipboard manager
+bind = $mainMod CTRL, T, exec, ~/.config/waybar/themeswitcher.sh # Open waybar theme switcher
+bind = $mainMod CTRL, S, exec, ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+bind = $mainMod SHIFT, H, exec, $HYPRSCRIPTS/hyprshade.sh # Toggle screenshader
+bind = $mainMod ALT, G, exec, $HYPRSCRIPTS/gamemode.sh # Toggle game mode
+bind = $mainMod, Z, exec, missioncenter # Open Mission Center
+
+# Workspaces
+bind = $mainMod, ampersand, workspace, 1 # Open workspace 1
+bind = $mainMod, eacute, workspace, 2 # Open workspace 2
+bind = $mainMod, quotedbl, workspace, 3 # Open workspace 3
+bind = $mainMod, apostrophe, workspace, 4 # Open workspace 4
+bind = $mainMod, parenleft, workspace, 5 # Open workspace 5
+bind = $mainMod, minus, workspace, 6 # Open workspace 6
+bind = $mainMod, egrave, workspace, 7 # Open workspace 7
+bind = $mainMod, underscore, workspace, 8 # Open workspace 8
+bind = $mainMod, ccedilla, workspace, 9 # Open workspace 9
+bind = $mainMod, agrave, workspace, 10 # Open workspace 10
+
+bind = $mainMod SHIFT, ampersand, movetoworkspace, 1 # Move active window to workspace 1
+bind = $mainMod SHIFT, eacute, movetoworkspace, 2 # Move active window to workspace 2
+bind = $mainMod SHIFT, quotedbl, movetoworkspace, 3 # Move active window to workspace 3
+bind = $mainMod SHIFT, apostrophe, movetoworkspace, 4 # Move active window to workspace 4
+bind = $mainMod SHIFT, parenleft, movetoworkspace, 5 # Move active window to workspace 5
+bind = $mainMod SHIFT, minus, movetoworkspace, 6 # Move active window to workspace 6
+bind = $mainMod SHIFT, egrave, movetoworkspace, 7 # Move active window to workspace 7
+bind = $mainMod SHIFT, underscore, movetoworkspace, 8 # Move active window to workspace 8
+bind = $mainMod SHIFT, ccedilla, movetoworkspace, 9 # Move active window to workspace 9
+bind = $mainMod SHIFT, agrave, movetoworkspace, 10 # Move active window to workspace 10
+
+bind = $mainMod, Tab, workspace, m+1 # Open next workspace
+bind = $mainMod SHIFT, Tab, workspace, m-1 # Open previous workspace
+
+bind = $mainMod CTRL, ampersand, exec, $HYPRSCRIPTS/moveTo.sh 1 # Move all windows to workspace 1
+bind = $mainMod CTRL, eacute, exec, $HYPRSCRIPTS/moveTo.sh 2 # Move all windows to workspace 2
+bind = $mainMod CTRL, quotedbl, exec, $HYPRSCRIPTS/moveTo.sh 3 # Move all windows to workspace 3
+bind = $mainMod CTRL, apostrophe, exec, $HYPRSCRIPTS/moveTo.sh 4 # Move all windows to workspace 4
+bind = $mainMod CTRL, parenleft, exec, $HYPRSCRIPTS/moveTo.sh 5 # Move all windows to workspace 5
+bind = $mainMod CTRL, minus, exec, $HYPRSCRIPTS/moveTo.sh 6 # Move all windows to workspace 6
+bind = $mainMod CTRL, egrave, exec, $HYPRSCRIPTS/moveTo.sh 7 # Move all windows to workspace 7
+bind = $mainMod CTRL, underscore, exec, $HYPRSCRIPTS/moveTo.sh 8 # Move all windows to workspace 8
+bind = $mainMod CTRL, ccedilla, exec, $HYPRSCRIPTS/moveTo.sh 9 # Move all windows to workspace 9
+bind = $mainMod CTRL, agrave, exec, $HYPRSCRIPTS/moveTo.sh 10 # Move all windows to workspace 10
+
+bind = $mainMod, mouse_down, workspace, e+1 # Open next workspace
+bind = $mainMod, mouse_up, workspace, e-1 # Open previous workspace
+bind = $mainMod CTRL, down, workspace, empty # Open the next empty workspace
+
+# Passthrough SUPER KEY to Virtual Machine
+# bind = $mainMod, P, submap, passthru # Passthrough SUPER key to virtual machine
+# submap = passthru
+# bind = SUPER, Escape, submap, reset # Get SUPER key back from virtual machine
+# submap = reset
+
+# Fn keys
+bind = , XF86MonBrightnessUp, exec, brightnessctl -q s +10% # Increase brightness by 10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%- # Reduce brightness by 10%
+bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% # Increase volume by 5%
+bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% # Reduce volume by 5%
+bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Toggle mute
+bind = , XF86AudioPlay, exec, playerctl play-pause # Audio play pause
+bind = , XF86AudioPause, exec, playerctl pause # Audio pause
+bind = , XF86AudioNext, exec, playerctl next # Audio next
+bind = , XF86AudioPrev, exec, playerctl previous # Audio previous
+bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # Toggle microphone
+bind = , XF86Calculator, exec, ~/.config/ml4w/settings/calculator.sh # Open calculator
+bind = , XF86Lock, exec, hyprlock # Open screenlock
+bind = , XF86Tools, exec, alacritty --class dotfiles-floating -e ~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage # Open ML4W Dotfiles Settings app
+
+bind = , code:238, exec, brightnessctl -d smc::kbd_backlight s +10
+bind = , code:237, exec, brightnessctl -d smc::kbd_backlight s 10-
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keyboard.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keyboard.conf
new file mode 100644
index 0000000..1b57d6f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/keyboard.conf
@@ -0,0 +1,35 @@
+# -----------------------------------------------------
+# Keyboard Layout
+# https://wiki.hyprland.org/Configuring/Variables/#input
+# -----------------------------------------------------
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ numlock_by_default = true
+ mouse_refocus = false
+
+ # For United States
+ # kb_layout = us
+ # kb_variant = intl
+ # kb_model = pc105
+ # kb_options =
+
+ follow_mouse = 1
+ touchpad {
+ # for desktop
+ natural_scroll = false
+
+ # for laptop
+ # natural_scroll = yes
+ # middle_button_emulation = true
+ # clickfinger_behavior = false
+ scroll_factor = 1.0 # Touchpad scroll factor
+ }
+ sensitivity = 0 # Pointer speed: -1.0 - 1.0, 0 means no modification.
+}
+
+gestures {
+ workspace_swipe = true
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layout.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layout.conf
new file mode 100644
index 0000000..e009ed3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layout.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/layouts/default.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layouts/default.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layouts/default.conf
new file mode 100644
index 0000000..3c3c155
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layouts/default.conf
@@ -0,0 +1,23 @@
+# -----------------------------------------------------
+# Layouts
+# -----------------------------------------------------
+
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+
+master {
+ # Commented out due to compatibility reasons
+ # new_status = master
+}
+
+gestures {
+ workspace_swipe = false
+}
+
+binds {
+ workspace_back_and_forth = true
+ allow_workspace_cycles = true
+ pass_mouse_when_bound = false
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layouts/laptop.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layouts/laptop.conf
new file mode 100644
index 0000000..cb863a2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/layouts/laptop.conf
@@ -0,0 +1,30 @@
+# -----------------------------------------------------
+# Layouts
+# -----------------------------------------------------
+
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+
+master {
+ # Commented out due to compatibility reasons
+ # new_status = master
+}
+
+gestures {
+ workspace_swipe = true
+ workspace_swipe_fingers = 3
+ workspace_swipe_distance = 500
+ workspace_swipe_invert = true
+ workspace_swipe_min_speed_to_force = 30
+ workspace_swipe_cancel_ratio = 0.5
+ workspace_swipe_create_new = true
+ workspace_swipe_forever = true
+}
+
+binds {
+ workspace_back_and_forth = true
+ allow_workspace_cycles = true
+ pass_mouse_when_bound = false
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/misc.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/misc.conf
new file mode 100644
index 0000000..982954c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/misc.conf
@@ -0,0 +1,9 @@
+# -----------------------------------------------------
+# Misc settings
+# -----------------------------------------------------
+
+misc {
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ initial_workspace_tracking = 1
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/ml4w.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/ml4w.conf
new file mode 100644
index 0000000..582cb02
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/ml4w.conf
@@ -0,0 +1,124 @@
+# __ _____ _____ __ _____ ___
+# / |/ / / / / / | /| / / / ___/__ ___ / _/
+# / /|_/ / /_/_ _/ |/ |/ / / /__/ _ \/ _ \/ _/
+# /_/ /_/____//_/ |__/|__/ \___/\___/_//_/_/
+#
+
+# Pavucontrol floating
+windowrulev2 = float,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = size 700 600,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = center,class:(.*org.pulseaudio.pavucontrol.*)
+windowrulev2 = pin,class:(.*org.pulseaudio.pavucontrol.*)
+
+# OpenAI ChatGPT floating
+windowrulev2 = float,title:(ChatGPT.*)
+windowrulev2 = float,title:(.*chat.openai.com.*)
+windowrulev2 = size 500 50%,title:(.*chat.openai.com.*)
+windowrulev2 = move 20 70,title:(.*chat.openai.com.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(.*waypaper.*)
+windowrulev2 = size 900 700,class:(.*waypaper.*)
+windowrulev2 = center,class:(.*waypaper.*)
+windowrulev2 = pin,class:(.*waypaper.*)
+
+# ML4W Welcome App floating
+windowrulev2 = float,class:(com.ml4w.welcome)
+windowrulev2 = size 700 600,class:(com.ml4w.welcome)
+windowrulev2 = center,class:(com.ml4w.welcome)
+windowrulev2 = pin,class:(com.ml4w.welcome)
+
+windowrulev2 = float,class:(ml4w-welcome.py)
+windowrulev2 = size 400 500,class:(ml4w-welcome.py)
+windowrulev2 = center,class:(ml4w-welcome.py)
+windowrulev2 = pin,class:(ml4w-welcome.py)
+
+# ML4W Settings App floating
+windowrulev2 = float,class:(com.ml4w.dotfilessettings)
+windowrulev2 = size 700 600,class:(com.ml4w.dotfilessettings)
+windowrulev2 = move 10% 20%,class:(com.ml4w.dotfilessettings)
+windowrulev2 = pin,class:(com.ml4w.dotfilessettings)
+
+windowrulev2 = float,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = size 400 500,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = move 10% 20%,class:(ml4w-dotfiles-settings.py)
+windowrulev2 = pin,class:(ml4w-dotfiles-settings.py)
+
+# ML4W Hyprland App floating
+windowrulev2 = float,class:(com.ml4w.hyprland.settings)
+windowrulev2 = size 700 600,class:(com.ml4w.hyprland.settings)
+windowrulev2 = center,class:(com.ml4w.hyprland.settings)
+windowrulev2 = pin,class:(com.ml4w.hyprland.settings)
+
+windowrulev2 = float,class:(ml4w-hyprland-settings.py)
+windowrulev2 = size 700 600,class:(ml4w-hyprland-settings.py)
+windowrulev2 = center,class:(ml4w-hyprland-settings.py)
+windowrulev2 = pin,class:(ml4w-hyprland-settings.py)
+
+# System Mission Center
+windowrulev2 = float, class:(io.missioncenter.MissionCenter)
+windowrulev2 = pin, class:(io.missioncenter.MissionCenter)
+windowrulev2 = center, class:(io.missioncenter.MissionCenter)
+windowrulev2 = size 900 600, class:(io.missioncenter.MissionCenter)
+
+# System Mission Center Preference Window
+windowrulev2 = float, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = pin, class:(missioncenter), title:^(Preferences)$
+windowrulev2 = center, class:(missioncenter), title:^(Preferences)$
+
+# Gnome Calculator
+windowrulev2 = float,class:(org.gnome.Calculator)
+windowrulev2 = size 700 600,class:(org.gnome.Calculator)
+windowrulev2 = center,class:(org.gnome.Calculator)
+
+# Emoji Picker Smile
+windowrulev2 = float,class:(it.mijorus.smile)
+windowrulev2 = pin, class:(it.mijorus.smile)
+windowrulev2 = move 100%-w-40 90,class:(it.mijorus.smile)
+
+# Hyprland Share Picker
+windowrulev2 = float, class:(hyprland-share-picker)
+windowrulev2 = pin, class:(hyprland-share-picker)
+windowrulev2 = center, title:class:(hyprland-share-picker)
+windowrulev2 = size 600 400,class:(hyprland-share-picker)
+
+# General floating
+windowrulev2 = float,class:(dotfiles-floating)
+windowrulev2 = size 1000 700,class:(dotfiles-floating)
+windowrulev2 = center,class:(dotfiles-floating)
+windowrulev2 = pin, class:(dotfiles-floating)
+
+# XDG Desktop Portal
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+
+# QT
+env = QT_QPA_PLATFORM,wayland;xcb
+env = QT_QPA_PLATFORMTHEME,qt6ct
+env = QT_QPA_PLATFORMTHEME,qt5ct
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+
+# GDK
+env = GDK_SCALE,1
+
+# Toolkit Backend
+env = GDK_BACKEND,wayland,x11,*
+env = CLUTTER_BACKEND,wayland
+
+# Mozilla
+env = MOZ_ENABLE_WAYLAND,1
+
+# Set the cursor size for xcursor
+env = XCURSOR_SIZE,24
+
+# Disable appimage launcher by default
+env = APPIMAGELAUNCHER_DISABLE,1
+
+# Ozone
+env = OZONE_PLATFORM,wayland
+env = ELECTRON_OZONE_PLATFORM_HINT,wayland
+
+# Python
+# env = PYTHONPATH,/usr/lib/python3.12/site-packages:/usr/lib/python3.13/site-packages:$PYTHONPATH
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitor.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitor.conf
new file mode 100644
index 0000000..5b3f3c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitor.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/monitors/default.conf
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1366x768.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1366x768.conf
new file mode 100644
index 0000000..0b6a7ca
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1366x768.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1366x768"
+# -----------------------------------------------------
+
+monitor=,1366x768,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1440x1080.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1440x1080.conf
new file mode 100644
index 0000000..032c75b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1440x1080.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1440x1080"
+# -----------------------------------------------------
+
+monitor=,1440x1080,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1600x900.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1600x900.conf
new file mode 100644
index 0000000..d3d9713
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1600x900.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1600x900"
+# -----------------------------------------------------
+
+monitor=,1600x900,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1920x1080.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1920x1080.conf
new file mode 100644
index 0000000..0f654be
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1920x1080.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1920x1080"
+# -----------------------------------------------------
+
+monitor=,1920x1080,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1920x1200.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1920x1200.conf
new file mode 100644
index 0000000..aac5f4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/1920x1200.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "1920x1200"
+# -----------------------------------------------------
+
+monitor=,1920x1200,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440.conf
new file mode 100644
index 0000000..cbb7710
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "2560x1440"
+# -----------------------------------------------------
+
+monitor=,2560x1440,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440@120.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440@120.conf
new file mode 100644
index 0000000..f777ec1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440@120.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "2560x1440@120"
+# -----------------------------------------------------
+
+monitor=,2560x1440@120,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440@120x125.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440@120x125.conf
new file mode 100644
index 0000000..b7b3e3a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/2560x1440@120x125.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "2560x1440@120x125"
+# -----------------------------------------------------
+
+monitor=,2560x1440@120,auto,1.25
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/3440x1440.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/3440x1440.conf
new file mode 100644
index 0000000..3e0ee1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/3440x1440.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "3440x1440"
+# -----------------------------------------------------
+
+monitor=,3440x1440,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/default.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/default.conf
new file mode 100644
index 0000000..1eced60
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/default.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "Default"
+# -----------------------------------------------------
+
+monitor=,preferred,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/highres.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/highres.conf
new file mode 100644
index 0000000..8cb32bd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/monitors/highres.conf
@@ -0,0 +1,6 @@
+# -----------------------------------------------------
+# Monitor Setup
+# name: "Highres"
+# -----------------------------------------------------
+
+monitor=,highres,auto,1
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/restorevariations.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/restorevariations.sh
new file mode 100755
index 0000000..a9c6e6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/restorevariations.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+clear
+cat <<"EOF"
+ ___ __
+ / _ \___ ___ / /____ _______
+ / , _/ -_|_- __/ _ \/ __/ -_)
+/_/|_|\__/___/\__/\___/_/ \__/
+
+EOF
+echo "You can restore to the default ML4W variations."
+echo "PLEASE NOTE: You can reactivate to a customized variation or selection in the settings script."
+echo "Your customized variation will not be overwritten or deleted."
+
+if gum confirm "Do you want to restore all variations to the default values?" ;then
+ echo
+
+ echo "source = ~/.config/hypr/conf/keybindings/default.conf" > ~/.config/hypr/conf/keybinding.conf
+ echo "Hyprland keybinding.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/environments/default.conf" > ~/.config/hypr/conf/environment.conf
+ echo "Hyprland environment.conf restored!"
+
+ echo "source = ~.config/hypr/conf/windowrules/default.conf" > ~/.config/hypr/conf/windowrule.conf
+ echo "Hyprland windowrule.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/animations/default.conf" > ~/.config/hypr/conf/animation.conf
+ echo "Hyprland animation.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/decorations/default.conf" > ~/.config/hypr/conf/decoration.conf
+ echo "Hyprland decoration.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/windows/default.conf" > ~/.config/hypr/conf/window.conf
+ echo "Hyprland window.conf restored!"
+
+ echo "source = ~/.config/hypr/conf/monitors/default.conf" > ~/.config/hypr/conf/monitor.conf
+ echo "Hyprland monitor.conf restored!"
+
+ echo
+ echo ":: Restore done!"
+else
+ echo ":: Restore canceled!"
+ exit
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/window.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/window.conf
new file mode 100644
index 0000000..8269a9e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/window.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/windows/default.conf
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windowrule.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windowrule.conf
new file mode 100644
index 0000000..5f41c07
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windowrule.conf
@@ -0,0 +1 @@
+source = ~/.config/hypr/conf/windowrules/default.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windowrules/default.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windowrules/default.conf
new file mode 100644
index 0000000..b9bae08
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windowrules/default.conf
@@ -0,0 +1,16 @@
+# -----------------------------------------------------
+# Window rules
+# -----------------------------------------------------
+
+windowrule = tile,^(Microsoft-edge)$
+windowrule = tile,^(Brave-browser)$
+windowrule = tile,^(Chromium)$
+windowrule = float,^(pavucontrol)$
+windowrule = float,^(blueman-manager)$
+windowrule = float,^(nm-connection-editor)$
+windowrule = float,^(qalculate-gtk)$
+
+# Browser Picture in Picture
+windowrulev2 = float, title:^(Picture-in-Picture)$
+windowrulev2 = pin, title:^(Picture-in-Picture)$
+windowrulev2 = move 69.5% 4%, title:^(Picture-in-Picture)$
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-1-reverse.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-1-reverse.conf
new file mode 100644
index 0000000..fb233e7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-1-reverse.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 1
+ col.active_border = rgba(ffffffff)
+ col.inactive_border = $color11
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-1.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-1.conf
new file mode 100644
index 0000000..9f3283b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-1.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 1
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-2-reverse.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-2-reverse.conf
new file mode 100644
index 0000000..da6dcf5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-2-reverse.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 2
+ col.active_border = rgba(ffffffff)
+ col.inactive_border = $color11
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-2.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-2.conf
new file mode 100644
index 0000000..a37cde1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-2.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 2
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-3-reverse.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-3-reverse.conf
new file mode 100644
index 0000000..157ae7b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-3-reverse.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = rgba(ffffffff)
+ col.inactive_border = $color11
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-3.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-3.conf
new file mode 100644
index 0000000..1b52af4
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-3.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-4-reverse.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-4-reverse.conf
new file mode 100644
index 0000000..05c51fe
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-4-reverse.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 4
+ col.active_border = rgba(ffffffff)
+ col.inactive_border = $color11
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-4.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-4.conf
new file mode 100644
index 0000000..f437e98
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/border-4.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 4
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/default.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/default.conf
new file mode 100644
index 0000000..1b52af4
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/default.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "Default"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 3
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/no-border-more-gaps.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/no-border-more-gaps.conf
new file mode 100644
index 0000000..383aa72
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/no-border-more-gaps.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "No Border More Gaps"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 20
+ gaps_out = 40
+ border_size = 0
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/no-border.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/no-border.conf
new file mode 100644
index 0000000..71ff4e5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/conf/windows/no-border.conf
@@ -0,0 +1,14 @@
+# -----------------------------------------------------
+# General window layout and colors
+# name: "No Border"
+# -----------------------------------------------------
+
+general {
+ gaps_in = 10
+ gaps_out = 14
+ border_size = 0
+ col.active_border = $color11
+ col.inactive_border = rgba(ffffffff)
+ layout = dwindle
+ resize_on_border = true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite
new file mode 100644
index 0000000..0f985b3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite
@@ -0,0 +1 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-blur b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-blur
new file mode 100644
index 0000000..85a5a51
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-blur
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness40 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness40
new file mode 100644
index 0000000..97cafb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness60 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness60
new file mode 100644
index 0000000..3dc7788
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness80 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness80
new file mode 100644
index 0000000..67bb0ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blackwhite-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -set colorspace Gray -separate -average $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1
new file mode 100644
index 0000000..f401e1a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1
@@ -0,0 +1 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness40 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness40
new file mode 100644
index 0000000..d79704a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness60 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness60
new file mode 100644
index 0000000..73028f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness80 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness80
new file mode 100644
index 0000000..c1984aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur1-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -blur "50x30" $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur2 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur2
new file mode 100644
index 0000000..cb13630
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/blur2
@@ -0,0 +1 @@
+magick $wallpaper -blur "10x30" $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate
new file mode 100644
index 0000000..971c7aa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate
@@ -0,0 +1 @@
+magick $wallpaper -negate $used_wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness40 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness40
new file mode 100644
index 0000000..f6b8bd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness40
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -60% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness60 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness60
new file mode 100644
index 0000000..bf45cd6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness60
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -40% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness80 b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness80
new file mode 100644
index 0000000..2d342c1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/effects/wallpaper/negate-brightness80
@@ -0,0 +1,2 @@
+magick $wallpaper -negate $used_wallpaper
+magick $used_wallpaper -brightness-contrast -20% $used_wallpaper
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/hypridle.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/hypridle.conf
new file mode 100644
index 0000000..d02b4ea
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/hypridle.conf
@@ -0,0 +1,47 @@
+# _ _ _ _
+# | |__ _ _ _ __ _ __(_) __| | | ___
+# | '_ \| | | | '_ \| '__| |/ _` | |/ _ \
+# | | | | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+# Version 2.8.3
+# DO NOT REMOVE THE REPLACEMENT COMMENTS
+# REQUIRED BY THE ML4W SETTINGS APP
+# https://wiki.hyprland.org/Hypr-Ecosystem/hypridle/
+
+# general {
+# ignore_dbus_inhibit = false
+# }
+
+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.
+}
+
+# Screenlock
+listener {
+ # HYPRLOCK TIMEOUT
+ timeout = 600
+ # HYPRLOCK ONTIMEOUT
+ on-timeout = loginctl lock-session
+}
+
+# dpms
+listener {
+ # DPMS TIMEOUT
+ timeout = 660
+ # DPMS ONTIMEOUT
+ on-timeout = hyprctl dispatch dpms off
+ # DPMS ONRESUME
+ on-resume = hyprctl dispatch dpms on
+}
+
+# Suspend
+listener {
+ # SUSPEND TIMEOUT
+ timeout = 1800
+ #SUSPEND ONTIMEOUT
+ on-timeout = systemctl suspend
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprland.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..69b80f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprland.conf
@@ -0,0 +1,71 @@
+# _ _ _ _
+# | | | |_ _ _ __ _ __| | __ _ _ __ __| |
+# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` |
+# | _ | |_| | |_) | | | | (_| | | | | (_| |
+# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_|
+# |___/|_|
+#
+# -----------------------------------------------------
+# IMPORTANT: Don't overwrite ML4W configuration.
+# Create your own custom configuration variation instead.
+# https://github.com/mylinuxforwork/dotfiles/wiki/Configuration-Variations
+
+# -----------------------------------------------------
+# Monitor
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/monitor.conf
+
+# -----------------------------------------------------
+# Cursor
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/cursor.conf
+
+# -----------------------------------------------------
+# Environment
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/environment.conf
+
+# -----------------------------------------------------
+# Keyboard
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/keyboard.conf
+
+# -----------------------------------------------------
+# Load pywal color file
+# -----------------------------------------------------
+source = ~/.cache/wal/colors-hyprland.conf
+
+# -----------------------------------------------------
+# Autostart
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/autostart.conf
+
+# -----------------------------------------------------
+# Load configuration files
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/window.conf
+source = ~/.config/hypr/conf/decoration.conf
+source = ~/.config/hypr/conf/layout.conf
+source = ~/.config/hypr/conf/misc.conf
+source = ~/.config/hypr/conf/keybinding.conf
+source = ~/.config/hypr/conf/windowrule.conf
+
+# -----------------------------------------------------
+# Animation
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/animation.conf
+
+# -----------------------------------------------------
+# Custom
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/custom.conf
+
+# -----------------------------------------------------
+# ML4W Configuration
+# -----------------------------------------------------
+source = ~/.config/hypr/conf/ml4w.conf
+
+# -----------------------------------------------------
+# Environment for xdg-desktop-portal-hyprland
+# -----------------------------------------------------
+exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprlock.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..d7e0fda
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprlock.conf
@@ -0,0 +1,88 @@
+# _ _ _
+# | |__ _ _ _ __ _ __| | ___ ___| | __
+# | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ /
+# | | | | |_| | |_) | | | | (_) | (__| <
+# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
+# |___/|_|
+#
+
+general {
+ ignore_empty_input = true
+}
+
+background {
+ monitor =
+ path = $HOME/.config/ml4w/cache/blurred_wallpaper.png # only png supported for now
+}
+
+input-field {
+ monitor =
+ size = 200, 50
+ outline_thickness = 3
+ dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15 # 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 = rgb(151515)
+ inner_color = rgb(FFFFFF)
+ font_color = rgb(10, 10, 10)
+ fade_on_empty = true
+ fade_timeout = 1000 # 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 = rgb(204, 136, 34)
+ fail_color = rgb(204, 34, 34) # 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
+ swap_font_color = false # see below
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ #clock
+ text = cmd[update:1000] echo "$TIME"
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 55
+ font_family = Fira Semibold
+ position = -100, 70
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+label {
+ monitor =
+ text = $USER
+ color = rgba(200, 200, 200, 1.0)
+ font_size = 20
+ font_family = Fira Semibold
+ position = -100, 160
+ halign = right
+ valign = bottom
+ shadow_passes = 5
+ shadow_size = 10
+}
+
+image {
+ monitor =
+ path = $HOME/.config/ml4w/cache/square_wallpaper.png
+ size = 280 # lesser side if not 1:1 ratio
+ rounding = -1 # negative values mean circle
+ border_size = 4
+ border_color = rgb(221, 221, 221)
+ rotate = 0 # degrees, counter-clockwise
+ reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
+# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
+ position = 0, 200
+ halign = center
+ valign = center
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprpaper.conf b/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprpaper.conf
new file mode 100644
index 0000000..7456413
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/hyprpaper.conf
@@ -0,0 +1,3 @@
+preload = $HOME/.config/ml4w/assets/blank.png
+wallpaper = ,$HOME/.config/ml4w/assets/blank.png
+splash = false
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/cleanup.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/cleanup.sh
new file mode 100755
index 0000000..af4196d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/cleanup.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ____ _
+# / ___| | ___ __ _ _ __ _ _ _ __
+# | | | |/ _ \/ _` | '_ \| | | | '_ \
+# | |___| | __/ (_| | | | | |_| | |_) |
+# \____|_|\___|\__,_|_| |_|\__,_| .__/
+# |_|
+#
+
+# Remove gamemode flag
+if [ -f ~/.cache/gamemode ] ;then
+ rm ~/.cache/gamemode
+ echo ":: ~/.cache/gamemode removed"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/disabledm.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/disabledm.sh
new file mode 100755
index 0000000..ee5e612
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/disabledm.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+clear
+figlet -f smslant "Disable DM"
+echo "Hyprland recommends the start with the tty login."
+echo "You can deactivate the current display manager (if exists)."
+echo ""
+echo "-> Do you really want to deactivate the display manager?"
+while true; do
+ read -p "Do you want to enable the sddm display manager and setup theme? (Yy/Nn): " yn
+ case $yn in
+ [Yy]* )
+ if [ -f /etc/systemd/system/display-manager.service ]; then
+ sudo rm /etc/systemd/system/display-manager.service
+ echo "Current display manager removed."
+ else
+ echo "No active display manager found."
+ fi
+ break;;
+ [Nn]* )
+ exit
+ break;;
+ * ) echo "Please answer yes or no.";;
+ esac
+done
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/gamemode.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/gamemode.sh
new file mode 100755
index 0000000..09708fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/gamemode.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ____ _
+# / ___| __ _ _ __ ___ ___ _ __ ___ ___ __| | ___
+# | | _ / _` | '_ ` _ \ / _ \ '_ ` _ \ / _ \ / _` |/ _ \
+# | |_| | (_| | | | | | | __/ | | | | | (_) | (_| | __/
+# \____|\__,_|_| |_| |_|\___|_| |_| |_|\___/ \__,_|\___|
+#
+#
+
+if [ -f ~/.cache/gamemode ] ;then
+ hyprctl reload
+ rm ~/.cache/gamemode
+ notify-send "Gamemode deactivated" "Animations and blur enabled"
+else
+ 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"
+ touch ~/.cache/gamemode
+ notify-send "Gamemode activated" "Animations and blur disabled"
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/gtk.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/gtk.sh
new file mode 100755
index 0000000..1b080de
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/gtk.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# ____ _____ _ __
+# / ___|_ _| |/ /
+# | | _ | | | ' /
+# | |_| | | | | . \
+# \____| |_| |_|\_\
+#
+# Source: https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
+
+config="$HOME/.config/gtk-3.0/settings.ini"
+if [ ! -f "$config" ]; then exit 1; fi
+
+gnome_schema="org.gnome.desktop.interface"
+gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
+cursor_size="$(grep 'gtk-cursor-theme-size' "$config" | sed 's/.*\s*=\s*//')"
+font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
+terminal=$(cat $HOME/.config/ml4w/settings/terminal.sh)
+
+echo $gtk_theme
+echo $icon_theme
+echo $cursor_theme
+echo $cursor_size
+echo $font_name
+echo $terminal
+
+gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
+gsettings set "$gnome_schema" icon-theme "$icon_theme"
+gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
+gsettings set "$gnome_schema" font-name "$font_name"
+gsettings set "$gnome_schema" color-scheme "prefer-dark"
+
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal "$terminal"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal use-generic-terminal-name "true"
+gsettings set com.github.stunkymonkey.nautilus-open-any-terminal keybindings "t"
+
+if [ -f ~/.config/hypr/conf/cursor.conf ] ;then
+ echo "exec-once = hyprctl setcursor $cursor_theme $cursor_size" > ~/.config/hypr/conf/cursor.conf
+ hyprctl setcursor $cursor_theme $cursor_size
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/hypridle.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/hypridle.sh
new file mode 100755
index 0000000..6296fa0
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/hypridle.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | | |_ _ _ __ _ __(_) __| | | ___
+# | |_| | | | | '_ \| '__| |/ _` | |/ _ \
+# | _ | |_| | |_) | | | | (_| | | __/
+# |_| |_|\__, | .__/|_| |_|\__,_|_|\___|
+# |___/|_|
+#
+
+SERVICE="hypridle"
+if [[ "$1" == "status" ]]; then
+ sleep 1
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ echo '{"text": "RUNNING", "class": "active", "tooltip": "Screen locking active\nLeft: Deactivate\nRight: Lock Screen"}'
+ else
+ echo '{"text": "NOT RUNNING", "class": "notactive", "tooltip": "Screen locking deactivated\nLeft: Activate\nRight: Lock Screen"}'
+ fi
+fi
+if [[ "$1" == "toggle" ]]; then
+ if pgrep -x "$SERVICE" >/dev/null ;then
+ killall hypridle
+ else
+ hypridle
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/hyprshade.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/hyprshade.sh
new file mode 100755
index 0000000..037441c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/hyprshade.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ _ _ __ _ __ ___| |__ __ _ __| | ___
+# | |_| | | | | '_ \| '__/ __| '_ \ / _` |/ _` |/ _ \
+# | _ | |_| | |_) | | \__ \ | | | (_| | (_| | __/
+# |_| |_|\__, | .__/|_| |___/_| |_|\__,_|\__,_|\___|
+# |___/|_|
+#
+
+if [[ "$1" == "rofi" ]]; then
+
+ # Open rofi to select the Hyprshade filter for toggle
+ options="$(hyprshade ls)\noff"
+
+ # Open rofi
+ choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-hyprshade.rasi -i -no-show-icons -l 4 -width 30 -p "Hyprshade")
+ if [ ! -z $choice ] ;then
+ echo "hyprshade_filter=\"$choice\"" > ~/.config/ml4w/settings/hyprshade.sh
+ if [ "$choice" == "off" ] ;then
+ hyprshade off
+ notify-send "Hyprshade deactivated"
+ echo ":: hyprshade turned off"
+ else
+ notify-send "Changing Hyprshade to $choice" "Toggle shader with SUPER+SHIFT+S"
+ fi
+ fi
+
+else
+
+ # Toggle Hyprshade based on the selected filter
+ hyprshade_filter="blue-light-filter-50"
+
+ # Check if hyprshade.sh settings file exists and load
+ if [ -f ~/.config/ml4w/settings/hyprshade.sh ] ;then
+ source ~/.config/ml4w/settings/hyprshade.sh
+ fi
+
+ # Toggle Hyprshade
+ if [ "$hyprshade_filter" != "off" ] ;then
+ if [ -z $(hyprshade current) ] ;then
+ echo ":: hyprshade is not running"
+ hyprshade on $hyprshade_filter
+ notify-send "Hyprshade activated" "with $(hyprshade current)"
+ echo ":: hyprshade started with $(hyprshade current)"
+ else
+ notify-send "Hyprshade deactivated"
+ echo ":: Current hyprshade $(hyprshade current)"
+ echo ":: Switching hyprshade off"
+ hyprshade off
+ fi
+ else
+ hyprshade off
+ echo ":: hyprshade turned off"
+ fi
+
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/init-wallpaper-engine.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/init-wallpaper-engine.sh
new file mode 100755
index 0000000..6751156
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/init-wallpaper-engine.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# __ ______ _____ _
+# \ \ / / _ \ | ____|_ __ __ _(_)_ __ ___
+# \ \ /\ / /| |_) | | _| | '_ \ / _` | | '_ \ / _ \
+# \ V V / | __/ | |___| | | | (_| | | | | | __/
+# \_/\_/ |_| |_____|_| |_|\__, |_|_| |_|\___|
+# |___/
+#
+
+wallpaper_engine=$(cat $HOME/.config/ml4w/settings/wallpaper-engine.sh)
+if [ "$wallpaper_engine" == "swww" ] ;then
+ # swww
+ echo ":: Using swww"
+ swww init
+ swww-daemon --format xrgb
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+elif [ "$wallpaper_engine" == "hyprpaper" ] ;then
+ # hyprpaper
+ echo ":: Using hyprpaper"
+ sleep 0.5
+ ~/.config/hypr/scripts/wallpaper.sh init
+else
+ echo ":: Wallpaper Engine disabled"
+ ~/.config/hypr/scripts/wallpaper.sh init
+fi
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/keybindings.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/keybindings.sh
new file mode 100755
index 0000000..d0b9150
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/keybindings.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# _ _ _ _ _
+# | | _____ _ _| |__ (_)_ __ __| (_)_ __ __ _ ___
+# | |/ / _ \ | | | '_ \| | '_ \ / _` | | '_ \ / _` / __|
+# | < __/ |_| | |_) | | | | | (_| | | | | | (_| \__ \
+# |_|\_\___|\__, |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___/
+# |___/ |___/
+#
+# -----------------------------------------------------
+# Get keybindings location based on variation
+# -----------------------------------------------------
+config_file=$(cat ~/.config/hypr/conf/keybinding.conf)
+config_file=${config_file/source = ~/}
+config_file=${config_file/source=~/}
+
+# -----------------------------------------------------
+# Path to keybindings config file
+# -----------------------------------------------------
+config_file="/home/$USER$config_file"
+echo "Reading from: $config_file"
+
+keybinds=""
+
+# Detect Start String
+while read -r line
+do
+ if [[ "$line" == "bind"* ]]; then
+
+ line="$(echo "$line" | sed 's/$mainMod/SUPER/g')"
+ line="$(echo "$line" | sed 's/bind = //g')"
+ line="$(echo "$line" | sed 's/bindm = //g')"
+
+ IFS='#'
+ read -a strarr <<<"$line"
+ kb_str=${strarr[0]}
+ cm_str=${strarr[1]}
+
+ IFS=','
+ read -a kbarr <<<"$kb_str"
+
+ item="${kbarr[0]} + ${kbarr[1]}"$'\r'"${cm_str:1}"
+ keybinds=$keybinds$item$'\n'
+ fi
+done < "$config_file"
+
+sleep 0.2
+rofi -dmenu -i -markup -eh 2 -replace -p "Keybinds" -config ~/.config/rofi/config-compact.rasi <<< "$keybinds"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/loadconfig.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/loadconfig.sh
new file mode 100755
index 0000000..a51ce6d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/loadconfig.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+hyprctl reload
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/moveTo.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/moveTo.sh
new file mode 100755
index 0000000..de2492b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/moveTo.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# __ __ _
+# | \/ | _____ _____ | |_ ___
+# | |\/| |/ _ \ \ / / _ \ | __/ _ \
+# | | | | (_) \ V / __/ | || (_) |
+# |_| |_|\___/ \_/ \___| \__\___/
+#
+
+# Function to log messages (useful for debugging)
+log_message() {
+ # echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> ~/moveto_log.txt
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
+}
+
+# Get the target workspace from the argument
+target_workspace=$1
+
+# Check if a target workspace was provided
+if [ -z "$target_workspace" ]; then
+ log_message "Error: No target workspace provided"
+ exit 1
+fi
+
+# Get the current active workspace
+current_workspace=$(hyprctl activewindow -j | jq '.workspace.id')
+
+if [ -z "$current_workspace" ]; then
+ log_message "Error: Couldn't determine current workspace"
+ exit 1
+fi
+
+log_message "Moving from workspace $current_workspace to $target_workspace"
+
+# Get all window addresses in the current workspace
+window_addresses=$(hyprctl clients -j | jq -r ".[] | select(.workspace.id == $current_workspace) | .address")
+
+# Move each window to the target workspace
+for address in $window_addresses; do
+ log_message "Moving window $address to workspace $target_workspace"
+ hyprctl dispatch movetoworkspacesilent "$target_workspace,address:$address"
+done
+
+log_message "Finished moving windows"
+
+# Switch to the target workspace
+hyprctl dispatch workspace "$target_workspace"
+
+log_message "Switched to workspace $target_workspace"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/power.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/power.sh
new file mode 100755
index 0000000..8037fbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/power.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# ____
+# | _ \ _____ _____ _ __
+# | |_) / _ \ \ /\ / / _ \ '__|
+# | __/ (_) \ V V / __/ |
+# |_| \___/ \_/\_/ \___|_|
+#
+
+# Check if eww is open
+FILE="$HOME/.cache/ml4w_sidebar"
+
+if [[ "$1" == "exit" ]]; then
+ echo ":: Exit"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ killall -9 Hyprland
+ sleep 2
+fi
+
+if [[ "$1" == "lock" ]]; then
+ echo ":: Lock"
+ sleep 0.5
+ hyprlock
+fi
+
+if [[ "$1" == "reboot" ]]; then
+ echo ":: Reboot"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl reboot
+fi
+
+if [[ "$1" == "shutdown" ]]; then
+ echo ":: Shutdown"
+ if [[ -f "$FILE" ]]; then
+ rm $FILE
+ fi
+ sleep 0.5
+ systemctl poweroff
+fi
+
+if [[ "$1" == "suspend" ]]; then
+ echo ":: Suspend"
+ sleep 0.5
+ systemctl suspend
+fi
+
+if [[ "$1" == "hibernate" ]]; then
+ echo ":: Hibernate"
+ sleep 1;
+ systemctl hibernate
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/restart-hypridle.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/restart-hypridle.sh
new file mode 100755
index 0000000..fe29461
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/restart-hypridle.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+killall hypridle
+sleep 1
+hypridle &
+notify-send "hypridle has been restarted."
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/screenshot.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/screenshot.sh
new file mode 100755
index 0000000..d08557a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/screenshot.sh
@@ -0,0 +1,224 @@
+#!/bin/bash
+# ____ _ _
+# / ___| ___ _ __ ___ ___ _ __ ___| |__ ___ | |_
+# \___ \ / __| '__/ _ \/ _ \ '_ \/ __| '_ \ / _ \| __|
+# ___) | (__| | | __/ __/ | | \__ \ | | | (_) | |_
+# |____/ \___|_| \___|\___|_| |_|___/_| |_|\___/ \__|
+#
+# Based on https://github.com/hyprwm/contrib/blob/main/grimblast/screenshot.sh
+# -----------------------------------------------------
+
+# Screenshots will be stored in $HOME by default.
+# The screenshot will be moved into the screenshot directory
+
+# Add this to ~/.config/user-dirs.dirs to save screenshots in a custom folder:
+# XDG_SCREENSHOTS_DIR="$HOME/Screenshots"
+
+prompt='Screenshot'
+mesg="DIR: ~/Screenshots"
+
+# Screenshot Filename
+source ~/.config/ml4w/settings/screenshot-filename.sh
+
+# Screenshot Folder
+source ~/.config/ml4w/settings/screenshot-folder.sh
+
+# Screenshot Editor
+export GRIMBLAST_EDITOR="$(cat ~/.config/ml4w/settings/screenshot-editor.sh)"
+
+# Example for keybindings
+# bind = SUPER, p, exec, grimblast save active
+# bind = SUPER SHIFT, p, exec, grimblast save area
+# bind = SUPER ALT, p, exec, grimblast save output
+# bind = SUPER CTRL, p, exec, grimblast save screen
+
+# Options
+option_1="Immediate"
+option_2="Delayed"
+
+option_capture_1="Capture Everything"
+option_capture_2="Capture Active Display"
+option_capture_3="Capture Selection"
+
+option_time_1="5s"
+option_time_2="10s"
+option_time_3="20s"
+option_time_4="30s"
+option_time_5="60s"
+#option_time_4="Custom (in seconds)" # Roadmap or someone contribute :)
+
+list_col='1'
+list_row='2'
+
+copy='Copy'
+save='Save'
+copy_save='Copy & Save'
+edit='Edit'
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 2 -width 30 -p "Take screenshot"
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$option_1\n$option_2" | rofi_cmd
+}
+
+####
+# Choose Timer
+# CMD
+timer_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 5 -width 30 -p "Choose timer"
+}
+
+# Ask for confirmation
+timer_exit() {
+ echo -e "$option_time_1\n$option_time_2\n$option_time_3\n$option_time_4\n$option_time_5" | timer_cmd
+}
+
+# Confirm and execute
+timer_run() {
+ selected_timer="$(timer_exit)"
+ if [[ "$selected_timer" == "$option_time_1" ]]; then
+ countdown=5
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_2" ]]; then
+ countdown=10
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_3" ]]; then
+ countdown=20
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_4" ]]; then
+ countdown=30
+ ${1}
+ elif [[ "$selected_timer" == "$option_time_5" ]]; then
+ countdown=60
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Chose Screenshot Type
+# CMD
+type_screenshot_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 3 -width 30 -p "Type of screenshot"
+}
+
+# Ask for confirmation
+type_screenshot_exit() {
+ echo -e "$option_capture_1\n$option_capture_2\n$option_capture_3" | type_screenshot_cmd
+}
+
+# Confirm and execute
+type_screenshot_run() {
+ selected_type_screenshot="$(type_screenshot_exit)"
+ if [[ "$selected_type_screenshot" == "$option_capture_1" ]]; then
+ option_type_screenshot=screen
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_2" ]]; then
+ option_type_screenshot=output
+ ${1}
+ elif [[ "$selected_type_screenshot" == "$option_capture_3" ]]; then
+ option_type_screenshot=area
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+####
+# Choose to save or copy photo
+# CMD
+copy_save_editor_cmd() {
+ rofi -dmenu -replace -config ~/.config/rofi/config-screenshot.rasi -i -no-show-icons -l 4 -width 30 -p "How to save"
+}
+
+# Ask for confirmation
+copy_save_editor_exit() {
+ echo -e "$copy\n$save\n$copy_save\n$edit" | copy_save_editor_cmd
+}
+
+# Confirm and execute
+copy_save_editor_run() {
+ selected_chosen="$(copy_save_editor_exit)"
+ if [[ "$selected_chosen" == "$copy" ]]; then
+ option_chosen=copy
+ ${1}
+ elif [[ "$selected_chosen" == "$save" ]]; then
+ option_chosen=save
+ ${1}
+ elif [[ "$selected_chosen" == "$copy_save" ]]; then
+ option_chosen=copysave
+ ${1}
+ elif [[ "$selected_chosen" == "$edit" ]]; then
+ option_chosen=edit
+ ${1}
+ else
+ exit
+ fi
+}
+###
+
+timer() {
+ if [[ $countdown -gt 10 ]]; then
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown_less_10=$((countdown - 10))
+ sleep $countdown_less_10
+ countdown=10
+ fi
+ while [[ $countdown -ne 0 ]]; do
+ notify-send -t 1000 "Taking screenshot in ${countdown} seconds"
+ countdown=$((countdown - 1))
+ sleep 1
+ done
+}
+
+# take shots
+takescreenshot() {
+ sleep 1
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+takescreenshot_timer() {
+ sleep 1
+ timer
+ grimblast --notify "$option_chosen" "$option_type_screenshot" $NAME
+ if [ -f $HOME/$NAME ] ;then
+ if [ -d $screenshot_folder ] ;then
+ mv $HOME/$NAME $screenshot_folder/
+ fi
+ fi
+}
+
+# Execute Command
+run_cmd() {
+ if [[ "$1" == '--opt1' ]]; then
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot"
+ elif [[ "$1" == '--opt2' ]]; then
+ timer_run
+ type_screenshot_run
+ copy_save_editor_run "takescreenshot_timer"
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+$option_1)
+ run_cmd --opt1
+ ;;
+$option_2)
+ run_cmd --opt2
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/toggle-animations.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/toggle-animations.sh
new file mode 100755
index 0000000..7eedb1d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/toggle-animations.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+cache_file="$HOME/.cache/toggle_animation"
+if [[ $(cat $HOME/.config/hypr/conf/animation.conf) == *"disabled"* ]]; then
+ echo ":: Toggle blocked by disabled.conf variation."
+else
+ if [ -f $cache_file ] ;then
+ hyprctl keyword animations:enabled true
+ rm $cache_file
+ else
+ hyprctl keyword animations:enabled false
+ touch $cache_file
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/toggleallfloat.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/toggleallfloat.sh
new file mode 100755
index 0000000..3fc12e2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/toggleallfloat.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+# _ _ _ __ _ _
+# / \ | | |/ _| | ___ __ _| |_
+# / _ \ | | | |_| |/ _ \ / _` | __|
+# / ___ \| | | _| | (_) | (_| | |_
+# /_/ \_\_|_|_| |_|\___/ \__,_|\__|
+#
+
+hyprctl dispatch workspaceopt allfloat
+notify-send "Windows on this workspace toggled to floating/tiling"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-automation.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-automation.sh
new file mode 100755
index 0000000..e3d1f1e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-automation.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# _ _ __ ______
+# / \ _ _| |_ ___ \ \ / / _ \
+# / _ \| | | | __/ _ \ \ \ /\ / /| |_) |
+# / ___ \ |_| | || (_) | \ V V / | __/
+# /_/ \_\__,_|\__\___/ \_/\_/ |_|
+#
+
+sec=$(cat ~/.config/ml4w/settings/wallpaper-automation.sh)
+_setWallpaperRandomly() {
+ waypaper --random
+ echo ":: Next wallpaper in 60 seconds..."
+ sleep $sec
+ _setWallpaperRandomly
+}
+
+if [ ! -f ~/.config/ml4w/cache/wallpaper-automation ] ;then
+ touch ~/.config/ml4w/cache/wallpaper-automation
+ echo ":: Start wallpaper automation script"
+ notify-send "Wallpaper automation process started" "Wallpaper will be changed every $sec seconds."
+ _setWallpaperRandomly
+else
+ rm ~/.config/ml4w/cache/wallpaper-automation
+ notify-send "Wallpaper automation process stopped."
+ echo ":: Wallpaper automation script process $wp stopped"
+ wp=$(pgrep -f wallpaper-automation.sh)
+ kill -KILL $wp
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-cache.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-cache.sh
new file mode 100755
index 0000000..899a06a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-cache.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+generated_versions="$HOME/.config/ml4w/cache/wallpaper-generated"
+rm $generated_versions/*
+echo ":: Wallpaper cache cleared"
+notify-send "Wallpaper cache cleared"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-effects.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-effects.sh
new file mode 100755
index 0000000..83dbca8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-effects.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ ______ _____ __ __ _
+# \ \ / / _ \ | ____|/ _|/ _| ___ ___| |_ ___
+# \ \ /\ / /| |_) | | _| | |_| |_ / _ \/ __| __/ __|
+# \ V V / | __/ | |___| _| _| __/ (__| |_\__ \
+# \_/\_/ |_| |_____|_| |_| \___|\___|\__|___/
+#
+
+# Get current wallpaper
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# Open rofi to select the Hyprshade filter for toggle
+options="$(ls ~/.config/hypr/effects/wallpaper/)\noff"
+
+# Open rofi
+choice=$(echo -e "$options" | rofi -dmenu -replace -config ~/.config/rofi/config-themes.rasi -i -no-show-icons -l 5 -width 30 -p "Hyprshade")
+if [ ! -z $choice ] ;then
+ echo "$choice" > ~/.config/ml4w/settings/wallpaper-effect.sh
+ notify-send "Changing Wallpaper Effect to " "$choice"
+ waypaper --wallpaper $(cat $cache_file)
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-restore.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-restore.sh
new file mode 100755
index 0000000..2eb7d7c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper-restore.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Restore last wallpaper
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+defaultwallpaper="$HOME/wallpaper/default.jpg"
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+
+# -----------------------------------------------------
+# Get current wallpaper
+# -----------------------------------------------------
+
+if [ -f "$cachefile" ]; then
+ sed -i "s|~|$HOME|g" "$cachefile"
+ wallpaper=$(cat $cachefile)
+ if [ -f $wallpaper ]; then
+ echo ":: Wallpaper $wallpaper exists"
+ else
+ echo ":: Wallpaper $wallpaper does not exist. Using default."
+ wallpaper=$defaultwallpaper
+ fi
+else
+ echo ":: $cachefile does not exist. Using default wallpaper."
+ wallpaper=$defaultwallpaper
+fi
+
+# -----------------------------------------------------
+# Set wallpaper
+# -----------------------------------------------------
+
+echo ":: Setting wallpaper with source image $wallpaper"
+waypaper --wallpaper "$wallpaper"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper.sh
new file mode 100755
index 0000000..49fbaac
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/wallpaper.sh
@@ -0,0 +1,172 @@
+#!/bin/bash
+# _ _
+# __ ____ _| | |_ __ __ _ _ __ ___ _ __
+# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
+# \ V V / (_| | | | |_) | (_| | |_) | __/ |
+# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
+# |_| |_|
+#
+# -----------------------------------------------------
+# Check to use wallpaper cache
+# -----------------------------------------------------
+
+if [ -f ~/.config/ml4w/settings/wallpaper_cache ]; then
+ use_cache=1
+ echo ":: Using Wallpaper Cache"
+else
+ use_cache=0
+ echo ":: Wallpaper Cache disabled"
+fi
+
+# -----------------------------------------------------
+# Set defaults
+# -----------------------------------------------------
+
+force_generate=0
+generatedversions="$HOME/.config/ml4w/cache/wallpaper-generated"
+waypaperrunning=$HOME/.config/ml4w/cache/waypaper-running
+cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
+blurredwallpaper="$HOME/.config/ml4w/cache/blurred_wallpaper.png"
+squarewallpaper="$HOME/.config/ml4w/cache/square_wallpaper.png"
+rasifile="$HOME/.config/ml4w/cache/current_wallpaper.rasi"
+blurfile="$HOME/.config/ml4w/settings/blur.sh"
+defaultwallpaper="$HOME/wallpaper/default.jpg"
+wallpapereffect="$HOME/.config/ml4w/settings/wallpaper-effect.sh"
+blur="50x30"
+blur=$(cat $blurfile)
+
+# Ensures that the script only run once if wallpaper effect enabled
+if [ -f $waypaperrunning ]; then
+ rm $waypaperrunning
+ exit
+fi
+
+# Create folder with generated versions of wallpaper if not exists
+if [ ! -d $generatedversions ]; then
+ mkdir $generatedversions
+fi
+
+# -----------------------------------------------------
+# Get selected wallpaper
+# -----------------------------------------------------
+
+if [ -z $1 ]; then
+ if [ -f $cachefile ]; then
+ wallpaper=$(cat $cachefile)
+ else
+ wallpaper=$defaultwallpaper
+ fi
+else
+ wallpaper=$1
+fi
+used_wallpaper=$wallpaper
+echo ":: Setting wallpaper with source image $wallpaper"
+tmpwallpaper=$wallpaper
+
+# -----------------------------------------------------
+# Copy path of current wallpaper to cache file
+# -----------------------------------------------------
+
+if [ ! -f $cachefile ]; then
+ touch $cachefile
+fi
+echo "$wallpaper" > $cachefile
+echo ":: Path of current wallpaper copied to $cachefile"
+
+# -----------------------------------------------------
+# Get wallpaper filename
+# -----------------------------------------------------
+wallpaperfilename=$(basename $wallpaper)
+echo ":: Wallpaper Filename: $wallpaperfilename"
+
+# -----------------------------------------------------
+# Wallpaper Effects
+# -----------------------------------------------------
+
+if [ -f $wallpapereffect ]; then
+ effect=$(cat $wallpapereffect)
+ if [ ! "$effect" == "off" ]; then
+ used_wallpaper=$generatedversions/$effect-$wallpaperfilename
+ if [ -f $generatedversions/$effect-$wallpaperfilename ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper $effect-$wallpaperfilename"
+ else
+ echo ":: Generate new cached wallpaper $effect-$wallpaperfilename with effect $effect"
+ notify-send --replace-id=1 "Using wallpaper effect $effect..." "with image $wallpaperfilename" -h int:value:33
+ source $HOME/.config/hypr/effects/wallpaper/$effect
+ fi
+ echo ":: Loading wallpaper $generatedversions/$effect-$wallpaperfilename with effect $effect"
+ echo ":: Setting wallpaper with $used_wallpaper"
+ touch $waypaperrunning
+ waypaper --wallpaper $used_wallpaper
+ else
+ echo ":: Wallpaper effect is set to off"
+ fi
+else
+ effect="off"
+fi
+
+# -----------------------------------------------------
+# Execute pywal
+# -----------------------------------------------------
+
+echo ":: Execute pywal with $used_wallpaper"
+wal -q -i "$used_wallpaper"
+source "$HOME/.cache/wal/colors.sh"
+
+# -----------------------------------------------------
+# Reload Waybar
+# -----------------------------------------------------
+
+killall -SIGUSR2 waybar
+
+# -----------------------------------------------------
+# Pywalfox
+# -----------------------------------------------------
+
+if type pywalfox > /dev/null 2>&1; then
+ pywalfox update
+fi
+
+# -----------------------------------------------------
+# Created blurred wallpaper
+# -----------------------------------------------------
+
+if [ -f $generatedversions/blur-$blur-$effect-$wallpaperfilename.png ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
+ echo ":: Use cached wallpaper blur-$blur-$effect-$wallpaperfilename"
+else
+ echo ":: Generate new cached wallpaper blur-$blur-$effect-$wallpaperfilename with blur $blur"
+ # notify-send --replace-id=1 "Generate new blurred version" "with blur $blur" -h int:value:66
+ magick $used_wallpaper -resize 75% $blurredwallpaper
+ echo ":: Resized to 75%"
+ if [ ! "$blur" == "0x0" ]; then
+ magick $blurredwallpaper -blur $blur $blurredwallpaper
+ cp $blurredwallpaper $generatedversions/blur-$blur-$effect-$wallpaperfilename.png
+ echo ":: Blurred"
+ fi
+fi
+cp $generatedversions/blur-$blur-$effect-$wallpaperfilename.png $blurredwallpaper
+
+# -----------------------------------------------------
+# Create rasi file
+# -----------------------------------------------------
+
+if [ ! -f $rasifile ]; then
+ touch $rasifile
+fi
+echo "* { current-image: url(\"$blurredwallpaper\", height); }" > "$rasifile"
+
+# -----------------------------------------------------
+# Created square wallpaper
+# -----------------------------------------------------
+
+echo ":: Generate new cached wallpaper square-$wallpaperfilename"
+magick $tmpwallpaper -gravity Center -extent 1:1 $squarewallpaper
+cp $squarewallpaper $generatedversions/square-$wallpaperfilename.png
+
+# -----------------------------------------------------
+# Reload AGS
+# -----------------------------------------------------
+
+ags quit &
+sleep 0.2
+ags run &
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/xdg.sh b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/xdg.sh
new file mode 100755
index 0000000..f7d0fec
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/scripts/xdg.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# __ ______ ____
+# \ \/ / _ \ / ___|
+# \ /| | | | | _
+# / \| |_| | |_| |
+# /_/\_\____/ \____|
+#
+
+# Setup Timers
+_sleep1="0.1"
+_sleep2="0.5"
+_sleep3="2"
+
+# Kill all possible running xdg-desktop-portals
+killall -e xdg-desktop-portal-hyprland
+killall -e xdg-desktop-portal-gnome
+killall -e xdg-desktop-portal-kde
+killall -e xdg-desktop-portal-lxqt
+killall -e xdg-desktop-portal-wlr
+killall -e xdg-desktop-portal-gtk
+killall -e xdg-desktop-portal
+
+# Set required environment variables
+dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=hyprland
+
+# Stop all services
+systemctl --user stop pipewire
+systemctl --user stop wireplumber
+systemctl --user stop xdg-desktop-portal
+systemctl --user stop xdg-desktop-portal-gnome
+systemctl --user stop xdg-desktop-portal-kde
+systemctl --user stop xdg-desktop-portal-wlr
+systemctl --user stop xdg-desktop-portal-hyprland
+sleep $_sleep1
+
+# Start xdg-desktop-portal-hyprland
+/usr/lib/xdg-desktop-portal-hyprland &
+sleep $_sleep1
+
+# Start xdg-desktop-portal-gtk
+if [ -f /usr/lib/xdg-desktop-portal-gtk ] ;then
+ /usr/lib/xdg-desktop-portal-gtk &
+ sleep $_sleep1
+fi
+
+# Start xdg-desktop-portal
+/usr/lib/xdg-desktop-portal &
+sleep $_sleep2
+
+# Start required services
+systemctl --user start pipewire
+systemctl --user start wireplumber
+systemctl --user start xdg-desktop-portal
+systemctl --user start xdg-desktop-portal-hyprland
+
+# Run waybar
+sleep $_sleep3
+~/.config/waybar/launch.sh
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-25.glsl b/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-25.glsl
new file mode 100644
index 0000000..149b143
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-25.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.25;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-50.glsl b/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-50.glsl
new file mode 100644
index 0000000..ac5ea21
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-50.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.5;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-75.glsl b/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-75.glsl
new file mode 100644
index 0000000..c8c1b23
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/blue-light-filter-75.glsl
@@ -0,0 +1,43 @@
+// from https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
+
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+const float temperature = 3000.0;
+const float temperatureStrength = 0.75;
+
+#define WithQuickAndDirtyLuminancePreservation
+const float LuminancePreservationFactor = 1.0;
+
+// function from https://www.shadertoy.com/view/4sc3D7
+// valid from 1000 to 40000 K (and additionally 0 for pure full white)
+vec3 colorTemperatureToRGB(const in float temperature) {
+ // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
+ mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690),
+ vec3(0.0, 1669.5803561666639, 2575.2827530017594),
+ vec3(1.0, 1.3302673723350029, 1.8993753891711275))
+ : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690),
+ vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594),
+ vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275));
+ return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)),
+ vec3(1.0), smoothstep(1000.0, 0.0, temperature));
+}
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+
+ // RGB
+ vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]);
+
+#ifdef WithQuickAndDirtyLuminancePreservation
+ color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5),
+ LuminancePreservationFactor);
+#endif
+
+ color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength);
+
+ vec4 outCol = vec4(color, pixColor[3]);
+
+ gl_FragColor = outCol;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/invert-colors.glsl b/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/invert-colors.glsl
new file mode 100644
index 0000000..a504901
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/hypr/shaders/invert-colors.glsl
@@ -0,0 +1,8 @@
+precision highp float;
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+
+void main() {
+ vec4 pixColor = texture2D(tex, v_texcoord);
+ gl_FragColor = vec4(1.0 - pixColor.r, 1.0 - pixColor.g, 1.0 - pixColor.b, pixColor.a);
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/assets/blank.png b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/assets/blank.png
new file mode 100644
index 0000000..f7aa3f8
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/assets/blank.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/cache/current_wallpaper b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/cache/current_wallpaper
new file mode 100644
index 0000000..86d5756
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/cache/current_wallpaper
@@ -0,0 +1 @@
+/home/gib/wallpaper/default.jpg
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/cache/current_wallpaper.rasi b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/cache/current_wallpaper.rasi
new file mode 100644
index 0000000..1c8f319
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/cache/current_wallpaper.rasi
@@ -0,0 +1 @@
+* { current-image: url("/home/gib/wallpaper/default.jpg", height); }
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/login/issue b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/login/issue
new file mode 100644
index 0000000..d3f99f3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/login/issue
@@ -0,0 +1,11 @@
+ _ _
+ | | ___ __ _(_)_ __
+ | | / _ \\ / _' | | '_ \\
+ | |__| (_) | (_| | | | | |
+ |_____\\___/ \\__, |_|_| |_|
+ |___/
+
+Today is \d \t @ \n
+--------------------------------------------------------------
+\r (\l)
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/ags.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/ags.sh
new file mode 100755
index 0000000..8c1ba75
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/ags.sh
@@ -0,0 +1 @@
+ags run
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/cleanup.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/cleanup.sh
new file mode 100755
index 0000000..3e509c9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/cleanup.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+clear
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+figlet -f smslant "Cleanup"
+echo
+$aur_helper -Scc
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/installprinters.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/installprinters.sh
new file mode 100755
index 0000000..67812c8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/installprinters.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _____ __
+# | __ \ (_) | | / ____| / _|
+# | |__) | __ _ _ __ | |_ ___ _ __ | | ___ _ __ | |_
+# | ___/ '__| | '_ \| __/ _ \ '__| | | / _ \| '_ \| _|
+# | | | | | | | | | || __/ | | |___| (_) | | | | |
+# |_| |_| |_|_| |_|\__\___|_| \_____\___/|_| |_|_|
+#
+# By @krystalsavage
+
+sleep 1
+clear
+figlet -f smslant "Printers"
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START TO INSTALL PRINTER SYSTEM NOW?" ;then
+ echo
+ echo ":: Install started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Install canceled."
+ exit;
+fi
+
+if [[ $(_isInstalledYay "timeshift") == "0" ]] ;then
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot canceled."
+ exit 130
+ else
+ echo ":: Snapshot canceled."
+ fi
+ echo
+fi
+
+yay -S cups cups-pdf cups-filters nss-mdns system-config-printer foomatic-db footmatic-db-engine foomatic-db-nonfree doomatic-db-nonfree-ppds foomatic-db-ppds cups-browsed libusb ipp-usb xdg-utils colord logrotate
+
+notify-send "Installing printer system complete"
+echo
+echo ":: Installing printer system complete"
+sleep 2
+
+if [ -f ~/.config/ml4w/settings/printer-drivers.sh ] ;then
+ if gum confirm "DO YOU WANT TO INSTALL PRINTER DRIVERS NOW?" ;then
+ echo
+ echo ":: Install started."
+ elif [ $? -eq 130 ]; then
+ exit 130
+ else
+ echo
+ echo ":: Install cancelled."
+ exit;
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/installtimeshift.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/installtimeshift.sh
new file mode 100755
index 0000000..06265ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/installtimeshift.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# _____ _ _ _ __ _
+# |_ _(_)_ __ ___ ___ ___| |__ (_)/ _| |_
+# | | | | '_ ` _ \ / _ \/ __| '_ \| | |_| __|
+# | | | | | | | | | __/\__ \ | | | | _| |_
+# |_| |_|_| |_| |_|\___||___/_| |_|_|_| \__|
+#
+
+sleep 1
+clear
+figlet -f smslant "Timeshift"
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+_isInstalledAUR() {
+ package="$1";
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+timeshift_installed=$(_isInstalledAUR "timeshift")
+grubbtrfs_installed=$(_isInstalledAUR "grub-btrfs")
+
+if [[ $timeshift_installed == "0" ]] ;then
+ echo ":: Timeshift is already installed"
+else
+ if gum confirm "DO YOU WANT TO INSTALL Timeshift now?" ;then
+ $aur_helper -S timeshift
+ fi
+fi
+if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "0" ]] ;then
+ echo ":: grub-btrfs is already installed"
+else
+ echo ":: grub-btrfs is required to select a snapshot on grub bootloader."
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ fi
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/lid-improvements.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/lid-improvements.sh
new file mode 100755
index 0000000..2ffad61
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/lid-improvements.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+while IFS= read -r line; do
+ # If the line starts with # and the next line is not the lines to be added
+ if [[ $line == \#HandleLidSwitchDocked=ignore ]]; then
+ # Add the new lines
+ echo "HandleLidSwitchDocked=ignore" | sudo tee -a /etc/systemd/logind.conf > /dev/null
+ fi
+ if [[ $line == \#HoldoffTimeoutSec=5s ]]; then
+ # Add the new lines
+ echo "HoldoffTimeoutSec=5s" | sudo tee -a /etc/systemd/logind.conf > /dev/null
+ fi
+done < /etc/systemd/logind.conf
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/pacman.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/pacman.sh
new file mode 100755
index 0000000..d6a2903
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/pacman.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# ____
+# | _ \ __ _ ___ _ __ ___ __ _ _ __
+# | |_) / _` |/ __| '_ ` _ \ / _` | '_ \
+# | __/ (_| | (__| | | | | | (_| | | | |
+# |_| \__,_|\___|_| |_| |_|\__,_|_| |_|
+#
+
+sleep 1
+clear
+figlet -f smslant "pacman.conf"
+echo
+echo ":: This script will activate or deactivate additions for your pacman.conf."
+echo
+if grep -Fq "#ParallelDownloads" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate parallel downloads?" ;then
+ sudo sed -i 's/^#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf
+ else
+ echo ":: Activation of parallel downloads skipped."
+ fi
+else
+ echo ":: Parallel downloads are already activated."
+fi
+
+if grep -Fxq "#Color" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate colors?" ;then
+ sudo sed -i 's/^#Color/Color/' /etc/pacman.conf
+ else
+ echo ":: Activation of Color skipped."
+ fi
+else
+ echo ":: Color is already activated."
+fi
+
+if grep -Fxq "#VerbosePkgLists" /etc/pacman.conf
+then
+ if gum confirm "Do you want to activate VerbosePkgLists?" ;then
+ sudo sed -i 's/^#VerbosePkgLists/VerbosePkgLists/' /etc/pacman.conf
+ else
+ echo ":: Activation of VerbosePkgLists skipped."
+ fi
+else
+ echo ":: VerbosePkgLists is already activated."
+fi
+
+if grep -Fxq "ILoveCandy" /etc/pacman.conf
+then
+ echo ":: ILoveCandy is already activated."
+else
+ if gum confirm "Do you want to activate ILoveCandy?" ;then
+ sudo sed -i '/^ParallelDownloads = .*/a ILoveCandy' /etc/pacman.conf
+ else
+ echo ":: Activation of ILoveCandy skipped."
+ fi
+fi
+echo
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/snapshot.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/snapshot.sh
new file mode 100755
index 0000000..7ce1acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/snapshot.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+# ____ _ _
+# / ___| _ __ __ _ _ __ ___| |__ ___ | |_
+# \___ \| '_ \ / _` | '_ \/ __| '_ \ / _ \| __|
+# ___) | | | | (_| | |_) \__ \ | | | (_) | |_
+# |____/|_| |_|\__,_| .__/|___/_| |_|\___/ \__|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+sleep 1
+clear
+figlet -f smslant "Snapshot"
+aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+_isInstalledAUR() {
+ package="$1";
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+timeshift_installed=$(_isInstalledAUR "timeshift")
+grubbtrfs_installed=$(_isInstalledAUR "grub-btrfs")
+
+if [[ $timeshift_installed == "0" ]] ;then
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ if [[ -d /boot/grub ]] ;then
+ if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "1" ]] ;then
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ else
+ exit
+ fi
+ fi
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ fi
+ echo "DONE. Snapshot $c created!"
+else
+ echo "ERROR: Timeshift is not installed."
+ if gum confirm "DO YOU WANT TO INSTALL Timeshift now?" ;then
+ $aur_helper -S timeshift
+ echo
+ echo ":: Timeshift has been installed. Please restart this script."
+ if [[ -d /boot/grub ]] && [[ $grubbtrfs_installed == "1" ]] ;then
+ echo ":: grub-btrfs is required to select a snapshot on grub bootloader."
+ if gum confirm "DO YOU WANT TO INSTALL grub-btrfs now?" ;then
+ $aur_helper -S grub-btrfs
+ else
+ exit
+ fi
+ fi
+ fi
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/unlock-pacman.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/unlock-pacman.sh
new file mode 100755
index 0000000..33b7de0
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/arch/unlock-pacman.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+sleep 1
+if [ -f /var/lib/pacman/db.lck ]; then
+ sudo rm /var/lib/pacman/db.lck
+ echo ":: Unlock complete"
+else
+ echo ":: Pacman database is not locked"
+fi
+sleep 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/cliphist.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/cliphist.sh
new file mode 100755
index 0000000..b9a2acc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/cliphist.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# ____ _ _ _ _ _
+# / ___| (_)_ __ | |__ (_)___| |_
+# | | | | | '_ \| '_ \| / __| __|
+# | |___| | | |_) | | | | \__ \ |_
+# \____|_|_| .__/|_| |_|_|___/\__|
+# |_|
+#
+
+case $1 in
+ d) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist delete
+ ;;
+
+ w) if [ `echo -e "Clear\nCancel" | rofi -dmenu -config ~/.config/rofi/config-short.rasi` == "Clear" ] ; then
+ cliphist wipe
+ fi
+ ;;
+
+ *) cliphist list | rofi -dmenu -replace -config ~/.config/rofi/config-cliphist.rasi | cliphist decode | wl-copy
+ ;;
+esac
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/figlet.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/figlet.sh
new file mode 100755
index 0000000..7a5ff4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/figlet.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+figlet -f smslant "Figlet"
+echo
+# ------------------------------------------------
+# Script to create ascii font based header on user input
+# and copy the result to the clipboard
+# -----------------------------------------------------
+
+read -p "Enter the text for ascii encoding: " mytext
+
+if [ -f ~/figlet.txt ]; then
+ touch ~/figlet.txt
+fi
+
+echo "cat <<\"EOF\"" > ~/figlet.txt
+figlet -f smslant "$mytext" >> ~/figlet.txt
+echo "" >> ~/figlet.txt
+echo "EOF" >> ~/figlet.txt
+
+lines=$( cat ~/figlet.txt )
+wl-copy "$lines"
+xclip -sel clip ~/figlet.txt
+
+echo "Text copied to clipboard!"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/installupdates.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/installupdates.sh
new file mode 100755
index 0000000..b4605b5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/installupdates.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# ____ __ ____ __ __
+# / _/__ ___ / /____ _/ / / __ _____ ___/ /__ _/ /____ ___
+# _/ // _ \(_- __/ _ `/ / / / // / _ \/ _ / _ `/ __/ -_|_-<
+# /___/_//_/___/\__/\_,_/_/_/ \_,_/ .__/\_,_/\_,_/\__/\__/___/
+# /_/
+#
+
+sleep 1
+clear
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+figlet -f smslant "Updates"
+echo
+
+# ------------------------------------------------------
+# Confirm Start
+# ------------------------------------------------------
+
+if gum confirm "DO YOU WANT TO START THE UPDATE NOW?" ;then
+ echo
+ echo ":: Update started."
+elif [ $? -eq 130 ]; then
+ exit 130
+else
+ echo
+ echo ":: Update canceled."
+ exit;
+fi
+
+_isInstalled() {
+ package="$1";
+ case $install_platform in
+ arch)
+ check="$($aur_helper -Qs --color always "${package}" | grep "local" | grep "${package} ")";
+ ;;
+ fedora)
+ check="$(dnf repoquery --quiet --installed ""${package}*"")"
+ ;;
+ *)
+ ;;
+ esac
+
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+echo 1; #'1' means 'false' in Bash
+return; #false
+}
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ if [[ $(_isInstalled "timeshift") == "0" ]] ;then
+ echo
+ if gum confirm "DO YOU WANT TO CREATE A SNAPSHOT?" ;then
+ echo
+ c=$(gum input --placeholder "Enter a comment for the snapshot...")
+ sudo timeshift --create --comments "$c"
+ sudo timeshift --list
+ sudo grub-mkconfig -o /boot/grub/grub.cfg
+ echo ":: DONE. Snapshot $c created!"
+ echo
+ elif [ $? -eq 130 ]; then
+ echo ":: Snapshot skipped."
+ exit 130
+ else
+ echo ":: Snapshot skipped."
+ fi
+ echo
+ fi
+
+ $aur_helper
+
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ fedora)
+ sudo dnf upgrade
+ if [[ $(_isInstalled "flatpak") == "0" ]] ;then
+ flatpak upgrade
+ fi
+ ;;
+ *)
+ echo ":: ERROR - Platform not supported"
+ echo "Press [ENTER] to close."
+ read
+ ;;
+esac
+
+notify-send "Update complete"
+echo
+echo ":: Update complete"
+echo
+echo
+
+echo "Press [ENTER] to close."
+read
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/ml4w-autostart.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/ml4w-autostart.sh
new file mode 100755
index 0000000..d153c4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/ml4w-autostart.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# Compare installed version with running dotfiles
+if [ -f ~/.config/ml4w/version/compare.sh ] ;then
+ $HOME/.config/ml4w/version/compare.sh
+fi
+
+# Start ML4W Welcome App
+if [ ! -f $HOME/.cache/ml4w-welcome-autostart ] ;then
+ echo ":: Starting ML4W Welcome App ..."
+ sleep 2
+ com.ml4w.welcome
+else
+ echo ":: Autostart of ML4W Welcome App disabled."
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/nm-applet.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/nm-applet.sh
new file mode 100755
index 0000000..52af715
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/nm-applet.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# __ __
+# ___ __ _ ___ ____ ___ / /__ / /_
+# / _ \/ ' \/ _ `/ _ \/ _ \/ / -_) __/
+# /_//_/_/_/_/\_,_/ .__/ .__/_/\__/\__/
+# /_/ /_/
+#
+if [[ "$1" == "stop" ]]; then
+ killall nm-applet
+elif [[ "$1" == "toggle" ]]; then
+ if pgrep -x "nm-applet" > /dev/null
+ then
+ echo "Running"
+ killall nm-applet
+ else
+ echo "Stopped"
+ nm-applet --indicator &
+ fi
+else
+ nm-applet --indicator &
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/sddm-wallpaper.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/sddm-wallpaper.sh
new file mode 100755
index 0000000..eccad59
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/sddm-wallpaper.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# _ _ _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___ __| | __| |_ __ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \ / __|/ _` |/ _` | '_ ` _ \
+# | |_| | |_) | (_| | (_| | || __/ \__ \ (_| | (_| | | | | | |
+# \___/| .__/ \__,_|\__,_|\__\___| |___/\__,_|\__,_|_| |_| |_|
+# |_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+sleep 1
+clear
+cache_file="$HOME/.config/ml4w/cache/current_wallpaper"
+current_wallpaper=$(cat "$cache_file")
+extension="${current_wallpaper##*.}"
+
+echo -e "${GREEN}"
+figlet -f smslant "SDDM Wallpaper"
+echo -e "${NONE}"
+
+sddm_theme_name="sequoia"
+sddm_asset_folder="/usr/share/sddm/themes/$sddm_theme_name/backgrounds"
+
+sddm_theme_tpl="/usr/share/ml4w-hyprland/sddm/theme.conf"
+if [ -f $HOME/.config/ml4w/settings/sddm/theme.conf ]; then
+ sddm_theme_tpl="$HOME/.config/ml4w/settings/sddm/theme.conf"
+ echo ":: Using custum theme.conf"
+fi
+
+
+if [ ! -f $current_wallpaper ]; then
+ gum spin --spinner dot --title "File $current_wallpaper does not exist" -- sleep 3
+ exit
+fi
+
+echo ":: Set the current wallpaper $current_wallpaper as SDDM wallpaper."
+echo
+
+if [ ! -d /etc/sddm.conf.d/ ]; then
+ sudo mkdir /etc/sddm.conf.d
+ echo ":: Folder /etc/sddm.conf.d created."
+fi
+
+sudo cp /usr/share/ml4w-hyprland/sddm/sddm.conf /etc/sddm.conf.d/
+echo ":: File /etc/sddm.conf.d/sddm.conf updated."
+
+sudo cp $current_wallpaper $sddm_asset_folder/current_wallpaper.$extension
+echo ":: Current wallpaper copied into $sddm_asset_folder"
+
+sudo cp $sddm_theme_tpl /usr/share/sddm/themes/$sddm_theme_name/
+sudo sed -i 's/CURRENTWALLPAPER/'"current_wallpaper.$extension"'/' /usr/share/sddm/themes/$sddm_theme_name/theme.conf
+echo ":: File theme.conf updated in /usr/share/sddm/themes/$sddm_theme_name/"
+echo
+
+echo ":: You can preview your updated SDDM Login screen. (Close it with SUPER+Q)"
+echo
+if gum confirm "Do you want to preview the result?"; then
+ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sequoia
+fi
+
+echo
+gum spin --spinner dot --title "Please logout to see the result." -- sleep 3
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/shell.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/shell.sh
new file mode 100755
index 0000000..9cb6a94
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/shell.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+# ____ _ _ _
+# / ___|| |__ ___| | |
+# \___ \| '_ \ / _ \ | |
+# ___) | | | | __/ | |
+# |____/|_| |_|\___|_|_|
+#
+
+sleep 1
+
+_isInstalledYay() {
+ package="$1";
+ check="$(yay -Qs --color always "${package}" | grep "local" | grep "\." | grep "${package} ")";
+ if [ -n "${check}" ] ; then
+ echo 0; #'0' means 'true' in Bash
+ return; #true
+ fi;
+ echo 1; #'1' means 'false' in Bash
+ return; #false
+}
+
+clear
+figlet -f smslant "Shell"
+
+echo ":: Please select your preferred shell"
+echo
+shell=$(gum choose "bash" "zsh" "Cancel")
+# -----------------------------------------------------
+# Activate bash
+# -----------------------------------------------------
+if [[ $shell == "bash" ]] ;then
+
+ # Change shell to bash
+ while ! chsh -s $(which bash); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now bash."
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Activate zsh
+# -----------------------------------------------------
+elif [[ $shell == "zsh" ]] ;then
+
+ # Change shell to shh
+ while ! chsh -s $(which zsh); do
+ echo "ERROR: Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ echo ":: Shell is now zsh."
+
+ # Installing oh-my-posh
+ yay -S oh-my-posh-bin
+
+ # Installing oh-my-zsh
+ if [ ! -d "$HOME/.oh-my-zsh" ]; then
+ echo ":: Installing oh-my-zsh"
+ sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
+ cp ~/.config/ml4w/tpl/.zshrc ~/
+ else
+ echo ":: oh-my-zsh already installed"
+ fi
+
+ # Installing zsh-autosuggestions
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
+ echo ":: Installing zsh-autosuggestions"
+ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
+ else
+ echo ":: zsh-autosuggestions already installed"
+ fi
+
+ # Installing zsh-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
+ echo ":: Installing zsh-syntax-highlighting"
+ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
+ else
+ echo ":: zsh-syntax-highlighting already installed"
+ fi
+
+ # Installing fast-syntax-highlighting
+ if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/fast-syntax-highlighting" ]; then
+ echo ":: Installing fast-syntax-highlighting"
+ git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
+ else
+ echo ":: fast-syntax-highlighting already installed"
+ fi
+
+ gum spin --spinner dot --title "Please reboot your system." -- sleep 3
+
+# -----------------------------------------------------
+# Cencel
+# -----------------------------------------------------
+else
+ echo ":: Changing shell canceled"
+ exit
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/thunarterminal.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/thunarterminal.sh
new file mode 100755
index 0000000..777be5f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/thunarterminal.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+clear
+if [ -f ~/.config/ml4w/settings/terminal.sh ]; then
+ terminal="$(cat ~/.config/ml4w/settings/terminal.sh)"
+ echo ":: Installing $terminal"
+ if [ -d ~/.config/xfce4 ]; then
+ if [ ! -f ~/.config/xfce4/helpers.rc ]; then
+ touch ~/.config/xfce4/helpers.rc
+ fi
+ echo "TerminalEmulator=$terminal" > ~/.config/xfce4/helpers.rc
+ echo ":: $terminal defined as Thunar Terminal Emulator."
+ else
+ echo "ERROR: ~/.config/xfce4 not found. Please open Thunar once to create it."
+ echo "Then start this script again."
+ fi
+else
+ echo "ERROR: ~/.config/ml4w/settings/terminal.sh not found"
+fi
+sleep 3
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/updates.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/updates.sh
new file mode 100755
index 0000000..505d126
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/updates.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# _ _ _ _
+# | | | |_ __ __| | __ _| |_ ___ ___
+# | | | | '_ \ / _` |/ _` | __/ _ \/ __|
+# | |_| | |_) | (_| | (_| | || __/\__ \
+# \___/| .__/ \__,_|\__,_|\__\___||___/
+# |_|
+#
+
+# -----------------------------------------------------
+# Define threshholds for color indicators
+# -----------------------------------------------------
+
+threshhold_green=0
+threshhold_yellow=25
+threshhold_red=100
+install_platform="$(cat ~/.config/ml4w/settings/platform.sh)"
+
+# Check if platform is supported
+case $install_platform in
+ arch)
+ aur_helper="$(cat ~/.config/ml4w/settings/aur.sh)"
+
+ # -----------------------------------------------------
+ # Calculate available updates
+ # -----------------------------------------------------
+
+ # flatpak remote-ls --updates
+
+ updates=$(checkupdates-with-aur | wc -l)
+ ;;
+ fedora)
+ updates=$(dnf check-update -q|grep -c ^[a-z0-9])
+ ;;
+ *)
+ updates=0
+ ;;
+esac
+
+# -----------------------------------------------------
+# Output in JSON format for Waybar Module custom-updates
+# -----------------------------------------------------
+
+css_class="green"
+
+if [ "$updates" -gt $threshhold_yellow ]; then
+ css_class="yellow"
+fi
+
+if [ "$updates" -gt $threshhold_red ]; then
+ css_class="red"
+fi
+
+if [ "$updates" -gt $threshhold_green ]; then
+ printf '{"text": "%s", "alt": "%s", "tooltip": "Click to update your system", "class": "%s"}' "$updates" "$updates" "$css_class"
+else
+ printf '{"text": "0", "alt": "0", "tooltip": "No updates available", "class": "green"}'
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/wlogout.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/wlogout.sh
new file mode 100755
index 0000000..2b540eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/scripts/wlogout.sh
@@ -0,0 +1,5 @@
+res_w=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width')
+res_h=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .height')
+h_scale=$(hyprctl -j monitors | jq '.[] | select (.focused == true) | .scale' | sed 's/\.//')
+w_margin=$(( res_h * 27 / h_scale ))
+wlogout -b 5 -T $w_margin -B $w_margin
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/ai.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/ai.sh
new file mode 100755
index 0000000..74e2499
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/ai.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/browser.sh) --new-window https://chat.openai.com
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/aur.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/aur.sh
new file mode 100644
index 0000000..fc0e7cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/aur.sh
@@ -0,0 +1 @@
+yay
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/blur.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/blur.sh
new file mode 100644
index 0000000..4ffc966
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/blur.sh
@@ -0,0 +1 @@
+50x30
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/browser.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/browser.sh
new file mode 100755
index 0000000..dbfb8f9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/browser.sh
@@ -0,0 +1 @@
+firefox
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/calculator.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/calculator.sh
new file mode 100755
index 0000000..7321b2e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/calculator.sh
@@ -0,0 +1 @@
+gnome-calculator
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/dotfiles-folder.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/dotfiles-folder.sh
new file mode 100644
index 0000000..e9d50f8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/dotfiles-folder.sh
@@ -0,0 +1 @@
+Documents/Configs/hyprland/laptop
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/dunst_position.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/dunst_position.sh
new file mode 100644
index 0000000..181d3ca
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/dunst_position.sh
@@ -0,0 +1 @@
+top-center
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/editor.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/editor.sh
new file mode 100755
index 0000000..4bb243e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/editor.sh
@@ -0,0 +1 @@
+gnome-text-editor
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/emojipicker.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/emojipicker.sh
new file mode 100755
index 0000000..36d697f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/emojipicker.sh
@@ -0,0 +1 @@
+smile
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/eww-monitor.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/eww-monitor.sh
new file mode 100755
index 0000000..4d18c3e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/eww-monitor.sh
@@ -0,0 +1 @@
+auto
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/filemanager.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/filemanager.sh
new file mode 100755
index 0000000..9f0175d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/filemanager.sh
@@ -0,0 +1 @@
+nautilus
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_dpms_timeout.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_dpms_timeout.sh
new file mode 100644
index 0000000..9ecf271
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_dpms_timeout.sh
@@ -0,0 +1 @@
+660
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_hyprlock_timeout.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
new file mode 100644
index 0000000..73623d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_hyprlock_timeout.sh
@@ -0,0 +1 @@
+600
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_suspend_timeout.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_suspend_timeout.sh
new file mode 100644
index 0000000..2974009
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hypridle_suspend_timeout.sh
@@ -0,0 +1 @@
+1800
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hyprpaper.tpl b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hyprpaper.tpl
new file mode 100644
index 0000000..3033ff3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hyprpaper.tpl
@@ -0,0 +1,8 @@
+# Preload Wallpapers
+preload = WALLPAPER
+
+# Set Wallpapers
+wallpaper = ,WALLPAPER
+
+# Disable Splash
+splash = false
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hyprshade.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hyprshade.sh
new file mode 100644
index 0000000..1865560
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/hyprshade.sh
@@ -0,0 +1 @@
+hyprshade_filter="blue-light-filter-50"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/ml4w-sidebar.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/ml4w-sidebar.sh
new file mode 100755
index 0000000..b1ab0ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/ml4w-sidebar.sh
@@ -0,0 +1 @@
+ags toggle sidebar
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/networkmanager.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/networkmanager.sh
new file mode 100755
index 0000000..b2a0141
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/networkmanager.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e nmtui
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/notification.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/notification.sh
new file mode 100755
index 0000000..936c7eb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/notification.sh
@@ -0,0 +1 @@
+dunst
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/platform.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/platform.sh
new file mode 100644
index 0000000..35a143b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/platform.sh
@@ -0,0 +1 @@
+fedora
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/printer-drivers.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/printer-drivers.sh
new file mode 100644
index 0000000..444839f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/printer-drivers.sh
@@ -0,0 +1,4 @@
+# Installation of Printer Drivers
+# Please add your drivers to the package list
+# Example:
+# yay -S brother-hll2360dw-lpr-bin brother-hll2360dw-cups-bin brother-mfc-l3770cdw brscan-skey brscan4 skanpage
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-border-radius.rasi b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-border-radius.rasi
new file mode 100644
index 0000000..7cbaeeb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-border-radius.rasi
@@ -0,0 +1 @@
+* { border-radius: 2em; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-border.rasi b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-border.rasi
new file mode 100644
index 0000000..e533468
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-border.rasi
@@ -0,0 +1 @@
+* { border-width: 3px; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-font.rasi b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-font.rasi
new file mode 100644
index 0000000..a2497c3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi-font.rasi
@@ -0,0 +1 @@
+configuration { font: "Fira Sans 11"; }
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi_bordersize.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi_bordersize.sh
new file mode 100644
index 0000000..e440e5c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/rofi_bordersize.sh
@@ -0,0 +1 @@
+3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-editor.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-editor.sh
new file mode 100644
index 0000000..5f0900f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-editor.sh
@@ -0,0 +1 @@
+pinta
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-filename.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-filename.sh
new file mode 100644
index 0000000..f81ad3c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-filename.sh
@@ -0,0 +1 @@
+NAME="screenshot_$(date +%d%m%Y_%H%M%S).jpg"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-folder.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-folder.sh
new file mode 100644
index 0000000..a1bf821
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/screenshot-folder.sh
@@ -0,0 +1 @@
+screenshot_folder="$HOME/Pictures"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/sddm/theme.tpl b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/sddm/theme.tpl
new file mode 100644
index 0000000..f4ae01f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/sddm/theme.tpl
@@ -0,0 +1,132 @@
+[General]
+
+# Set to your screen resolution for better results
+width=1680
+height=1050
+
+backgroundColour="black"
+
+wallpaper="backgrounds/CURRENTWALLPAPER"
+
+# Whether to scale the image to fit on the screen, might leave some blank spaces
+# will scale and crop the wallpaper if left false
+fitWallpaper=false
+
+# Main font
+fontFamily="Noto Sans"
+
+# Set to a patched NerdFont if some icons don't display properly
+# or leave empty to use the main font family
+iconFont=""
+
+# Set this if fonts are the wrong size for your resolution
+fontSize=14
+
+# Whether to show icons inside menus
+iconsInMenus=true
+
+
+# [Colour_Palette]
+
+# The main colour for text and icons
+primaryColour="white"
+
+# The background colour of popup panels
+popupsBackgroundColour="white"
+
+# Used for the text and icons inside popup panels
+popupsForegroundColour="black"
+
+# Colour used for selected and focused items
+accentColour="#a7d9ea"
+
+
+# [Greeting_Screen]
+
+# Set true to be taken directly to the login screen
+skipToLogin=false
+
+# Supports Markdown formatting, leave empty to not display any text
+greeting="Welcome back!"
+
+# Adjusts the font size for the greeting message, clock and date
+fontSizeMultiplier=2
+
+# For help with date and time formatting see https://doc.qt.io/qt-5/qml-qtqml-date.html#format-strings
+clockFormat="HH:mm"
+dateFormat="dddd, dd MMMM"
+
+# Set this in case the date isn't in your system locale or you wish to use a different one
+locale=""
+
+# Styles the clock font
+# Set to 'outline' for alternate style
+clockStyle=fill
+
+# Anchor the clock to a side or corner of the screen, horizontal position is susceptible to layout mirroring
+# Syntax: vertical | horizontal
+# possible vertical values: top - center - bottom
+# and horizontal: left - center - right
+dateTimePosition="bottom right"
+
+# Defines how far away the date and time are from the edges of the screen
+dateTimePadding=55
+
+# Defines the behaviour of the sliding transition from greeting to login form
+# Set to +/- x or y
+transitionDirection="x"
+
+# [Login_Screen]
+
+# The maximum radius allowed is 16 per loop
+blurRadius=10
+blurRecursiveLoops=5
+
+# Used to dim the background
+darkenWallpaper=0.3
+
+# Purely cosmetic, has no effect on login credentials
+capitaliseUsername=false
+
+# 'mask' - hides your password by replacing the characters with something else
+# 'off' - also hides the length of your password by disabling echoing
+passwordEchoStyle=mask
+
+allowEmptyPassword=false
+
+# Set false to hide the selected session's name next to the menu icon
+displaySession=true
+
+
+# [Translations]
+# SDDM may not have translations for every element, or you might want to change some text to something else
+# setting these will override the text constants
+
+virtualKeyboard=""
+poweroff=""
+reboot=""
+suspend=""
+hibernate=""
+password=""
+username=""
+loginFailed=""
+
+
+# [Accessibility]
+
+# Set false to set all transition durations to 0
+enableAnimations=true
+
+# 'auto' - activates mirroring based on the system locale
+# 'false' - never mirror layout
+# 'true' - always mirrors
+mirrorLayout=auto
+
+# Whether the on-screen keyboard should be activated by default
+# It can always be de/activated through the accessibility panel
+virtualKeyboardStartActive=false
+
+# Normally the on-screen keyboard only shows up when text fields are focused
+# Set this true to have the keyboard always be visible once activated
+# This will render the hide button on the keyboard non-functional
+forceKeyboardVisible=false
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/software.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/software.sh
new file mode 100755
index 0000000..d10bc37
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/software.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e pacseek
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/system-monitor.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/system-monitor.sh
new file mode 100755
index 0000000..a7b1e4f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/system-monitor.sh
@@ -0,0 +1 @@
+$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e htop
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/terminal.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/terminal.sh
new file mode 100755
index 0000000..659fb6b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/terminal.sh
@@ -0,0 +1 @@
+kitty
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-automation.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-automation.sh
new file mode 100644
index 0000000..2b82dfe
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-automation.sh
@@ -0,0 +1 @@
+60
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-effect.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-effect.sh
new file mode 100644
index 0000000..cfb931e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-effect.sh
@@ -0,0 +1 @@
+off
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-engine.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-engine.sh
new file mode 100644
index 0000000..b6923b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-engine.sh
@@ -0,0 +1 @@
+hyprpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-folder.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-folder.sh
new file mode 100644
index 0000000..8d138d1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wallpaper-folder.sh
@@ -0,0 +1,2 @@
+# Enter the path to the folder that includes your wallpapers
+wallpaper_folder=$HOME/wallpaper
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar-quicklinks.json b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar-quicklinks.json
new file mode 100644
index 0000000..7d61906
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar-quicklinks.json
@@ -0,0 +1,45 @@
+{
+ "custom/quicklink1": {
+ "format": "",
+ "on-click": "chromium",
+ "tooltip-format": "Open Chromium"
+ },
+ "custom/quicklink2": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip-format": "Open Firefox"
+ },
+ "custom/quicklink3": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/filemanager.sh",
+ "tooltip-format": "Open filemanager"
+ },
+ "custom/quicklink4": {
+ "format": "",
+ "on-click": "betterbird",
+ "tooltip-format": "Open Betterbird"
+ },
+ "custom/quicklink5": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/calculator.sh",
+ "tooltip-format": "Open calculator"
+ },
+ "custom/quicklink6": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/emojipicker.sh",
+ "tooltip-format": "Open emoji picker"
+ },
+ "custom/quicklinkempty": {
+ },
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/quicklink2",
+ "custom/quicklink3",
+ /*
+ "custom/quicklink4",
+ */
+ "custom/quicklinkempty"
+ ]
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_appmenu.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_appmenu.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_appmenu.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_backlight.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_backlight.sh
new file mode 100644
index 0000000..c1f22fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_backlight.sh
@@ -0,0 +1 @@
+False
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_chatgpt.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_chatgpt.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_chatgpt.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_custom_timedateformat.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_custom_timedateformat.sh
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_dateformat.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_dateformat.sh
new file mode 100644
index 0000000..05696fa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_dateformat.sh
@@ -0,0 +1 @@
+%a
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_network.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_network.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_network.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_quicklinks.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_quicklinks.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_quicklinks.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_screenlock.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_screenlock.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_screenlock.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_settings.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_settings.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_settings.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_systray.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_systray.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_systray.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_taskbar.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_taskbar.sh
new file mode 100644
index 0000000..c1f22fb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_taskbar.sh
@@ -0,0 +1 @@
+False
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_timeformat.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_timeformat.sh
new file mode 100644
index 0000000..3d87f12
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_timeformat.sh
@@ -0,0 +1 @@
+%H:%M
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_timezone.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_timezone.sh
new file mode 100644
index 0000000..e69de29
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_toggle.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_toggle.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_toggle.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_window.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_window.sh
new file mode 100644
index 0000000..4791ed5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_window.sh
@@ -0,0 +1 @@
+True
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_workspaces.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_workspaces.sh
new file mode 100644
index 0000000..7813681
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/waybar_workspaces.sh
@@ -0,0 +1 @@
+5
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wlogout-parameters.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wlogout-parameters.sh
new file mode 100644
index 0000000..50e2452
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/settings/wlogout-parameters.sh
@@ -0,0 +1 @@
+-b 3
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/tpl/.zshrc b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/tpl/.zshrc
new file mode 100644
index 0000000..9968f7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/tpl/.zshrc
@@ -0,0 +1,23 @@
+# _
+# _______| |__ _ __ ___
+# |_ / __| '_ \| '__/ __|
+# _ / /\__ \ | | | | | (__
+# (_)___|___/_| |_|_| \___|
+#
+# -----------------------------------------------------
+# ML4W zshrc loader
+# -----------------------------------------------------
+
+# DON'T CHANGE THIS FILE
+
+# You can define your custom configuration by adding
+# files in ~/.config/zshrc
+# or by creating a folder ~/.config/zshrc/custom
+# with you own zshrc configuration
+# -----------------------------------------------------
+
+if [ -d ~/.config/zshrc/custom ] ;then
+ for f in ~/.config/zshrc/custom/*; do source $f; done
+else
+ for f in ~/.config/zshrc/*; do source $f; done
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/compare.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/compare.sh
new file mode 100755
index 0000000..1b18b98
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/compare.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Compare installed version with used version
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+if [ -f /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name ] ;then
+ installed_version=$(cat /usr/share/ml4w-hyprland/dotfiles/.config/ml4w/version/name)
+ used_version=$(cat ~/.config/ml4w/version/name)
+ if [[ $(testvercomp $used_version $installed_version "<") == "0" ]] ;then
+ notify-send "Please run ml4w-hyprland-setup" "Installed version is newer then the version you're currently using."
+ fi
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/library.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/library.sh
new file mode 100644
index 0000000..94e5fbe
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/library.sh
@@ -0,0 +1,42 @@
+vercomp () {
+ if [[ $1 == $2 ]]
+ then
+ return 0
+ fi
+ local IFS=.
+ local i ver1=($1) ver2=($2)
+ # fill empty fields in ver1 with zeros
+ for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
+ do
+ ver1[i]=0
+ done
+ for ((i=0; i<${#ver1[@]}; i++))
+ do
+ if ((10#${ver1[i]:=0} > 10#${ver2[i]:=0}))
+ then
+ return 1
+ fi
+ if ((10#${ver1[i]} < 10#${ver2[i]}))
+ then
+ return 2
+ fi
+ done
+ return 0
+}
+
+testvercomp () {
+ vercomp $1 $2
+ case $? in
+ 0) op='=';;
+ 1) op='>';;
+ 2) op='<';;
+ esac
+ if [[ $op != $3 ]]
+ then
+ # No update available
+ echo "1"
+ else
+ # Update available
+ echo "0"
+ fi
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/name b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/name
new file mode 100644
index 0000000..92db042
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/name
@@ -0,0 +1 @@
+2.9.7.4
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/update.sh b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/update.sh
new file mode 100755
index 0000000..efe9403
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ml4w/version/update.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# ------------------------------------------------------
+# Check for updates
+# ------------------------------------------------------
+
+source ~/.config/ml4w/version/library.sh
+
+# Get latest tag from GitHub
+get_latest_release() {
+ v_online=$(curl --silent "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=ml4w-hyprland")
+ v_full_online=$(grep -m 1 'pkgver' <<< $v_online | sed 's/^$/pkgver/')
+ echo ${v_full_online/pkgver=/}
+}
+
+# Check for internet connection
+if ping -q -c 1 -W 1 google.com >/dev/null; then
+
+ version=$(cat ~/.config/ml4w/version/name)
+ online=$(get_latest_release "mylinuxforwork/hyprland-dotfiles")
+ echo $version "<" $online
+ testvercomp $version $online "<"
+else
+ # Network is down
+ echo "1"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/nwg-dock-hyprland/launch.sh b/configs/dotfiles/hyprland/laptop_default/.config/nwg-dock-hyprland/launch.sh
new file mode 100755
index 0000000..af98c1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/nwg-dock-hyprland/launch.sh
@@ -0,0 +1,9 @@
+# ___ __
+# / _ \___ ____/ /__
+# / // / _ \/ __/ '_/
+# /____/\___/\__/_/\_\
+#
+
+if [ -f $HOME/.config/ml4w/settings/nwg-dock-hyprland.sh ] ;then
+ nwg-dock-hyprland -i 32 -w 5 -mb 10 -ml 10 -mr 10 -x -c "rofi -show drun"
+fi
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/nwg-dock-hyprland/style.css b/configs/dotfiles/hyprland/laptop_default/.config/nwg-dock-hyprland/style.css
new file mode 100644
index 0000000..20a6067
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/nwg-dock-hyprland/style.css
@@ -0,0 +1,43 @@
+window {
+ background: rgba(0, 0, 0, 0.8);
+ border-radius: 10px;
+ border-style: solid;
+ border-width: 3px;
+ border-color: #ffffff;
+ opacity:0.8;
+}
+
+#box {
+ /* Define attributes of the box surrounding icons here */
+ padding: 10px
+}
+
+#active {
+ /* This is to underline the button representing the currently active window */
+ border-bottom: solid 0px;
+ border-color: #FFFFFF
+}
+
+button, image {
+ background: none;
+ border-style: none;
+ box-shadow: none;
+ color: #999
+}
+
+button {
+ padding: 4px;
+ margin-left: 4px;
+ margin-right: 4px;
+ color: #eee;
+ font-size: 12px
+}
+
+button:hover {
+ background-color: rgba(255, 255, 255, 0.15);
+ border-radius: 10px;
+}
+
+button:focus {
+ box-shadow: none
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ohmyposh/EDM115-newline.omp.json b/configs/dotfiles/hyprland/laptop_default/.config/ohmyposh/EDM115-newline.omp.json
new file mode 100644
index 0000000..ce4f834
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ohmyposh/EDM115-newline.omp.json
@@ -0,0 +1,192 @@
+{
+ "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
+ "transient_prompt": {
+ "template": " ❯❯ {{ .AbsolutePWD }} : ",
+ "foreground": "#f8f8f2",
+ "background": "transparent",
+ "newline": true
+ },
+ "blocks": [
+ {
+ "type": "prompt",
+ "alignment": "left",
+ "segments": [
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "\n\u256d\u2500",
+ "foreground": "#f8f8f2",
+ "type": "text",
+ "style": "plain"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "leading_diamond": "\ue0b6",
+ "template": "{{ .UserName }}",
+ "foreground": "#f8f8f2",
+ "background": "#282a36",
+ "type": "session",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "\udb85\udc0b",
+ "foreground": "#ff5555",
+ "powerline_symbol": "\ue0b0",
+ "background": "#282a36",
+ "type": "root",
+ "style": "powerline"
+ },
+ {
+ "properties": {
+ "cache_duration": "none"
+ },
+ "template": "{{ .Icon }} ",
+ "foreground": "#f8f8f2",
+ "powerline_symbol": "\ue0b0",
+ "background": "#282a36",
+ "type": "os",
+ "style": "powerline"
+ },
+ {
+ "properties": {
+ "cache_duration": "none",
+ "style": "full"
+ },
+ "trailing_diamond": "\ue0b4",
+ "template": " \udb80\ude56 {{ path .Path .Location }}",
+ "foreground": "#282a36",
+ "background": "#cccccc",
+ "type": "path",
+ "style": "diamond"
+ }
+ ]
+ },
+ {
+ "type": "prompt",
+ "alignment": "right",
+ "segments": [
+ {
+ "properties": {
+ "branch_icon": "",
+ "cache_duration": "none",
+ "display_changing_color": true,
+ "fetch_status": true,
+ "fetch_upstream_icon": true,
+ "full_branch_path": true
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue725 ({{ url .UpstreamIcon .UpstreamURL }} {{ url .HEAD .UpstreamURL }}){{ if gt .Ahead 0 }}<#50fa7b> +{{ .Ahead }}>{{ end }}{{ if gt .Behind 0 }}<#ff5555> -{{ .Behind }}>{{ end }}{{ if .Working.Changed }}<#f8f8f2> \uf044 {{ .Working.String }}>{{ end }}{{ if .Staging.Changed }}<#f8f8f2> \uf046 {{ .Staging.String }}>{{ end }}",
+ "foreground": "#282a36",
+ "background": "#ffb86c",
+ "type": "git",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue718 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#50fa7b",
+ "type": "node",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files",
+ "extensions": [
+ "package-lock.json"
+ ]
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue71e {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ff5555",
+ "type": "npm",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files",
+ "extensions": [
+ "pnpm-lock.yaml"
+ ]
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\udb80\udec1 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ffb86c",
+ "type": "pnpm",
+ "style": "diamond"
+ },
+ {
+ "properties": {
+ "display_mode": "files"
+ },
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue73c {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#50fa7b",
+ "type": "python",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue738 {{ .Full }}",
+ "foreground": "#282a36",
+ "background": "#ff79c6",
+ "type": "java",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\uf308 {{ .Context }}",
+ "foreground": "#282a36",
+ "background": "#8be9fd",
+ "type": "docker",
+ "style": "diamond"
+ },
+ {
+ "leading_diamond": "\ue0b6",
+ "trailing_diamond": "\ue0b4",
+ "template": "\ue73d {{ .Full }}",
+ "foreground": "#f8f8f2",
+ "background": "#6272a4",
+ "type": "php",
+ "style": "diamond"
+ }
+ ]
+ },
+ {
+ "type": "prompt",
+ "alignment": "left",
+ "segments": [
+ {
+ "properties": {
+ "always_enabled": true,
+ "cache_duration": "none"
+ },
+ "template": "\u2570\u2500 ❯❯",
+ "foreground": "#f8f8f2",
+ "type": "text",
+ "style": "diamond"
+ }
+ ],
+ "newline": true
+ }
+ ],
+ "version": 3,
+ "patch_pwsh_bleed": true,
+ "final_space": true
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/ohmyposh/zen.toml b/configs/dotfiles/hyprland/laptop_default/.config/ohmyposh/zen.toml
new file mode 100644
index 0000000..832848d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/ohmyposh/zen.toml
@@ -0,0 +1,74 @@
+#:schema https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
+
+version = 2
+final_space = true
+console_title_template = '{{ .Shell }} in {{ .Folder }}'
+
+[[blocks]]
+ type = 'prompt'
+ alignment = 'left'
+ newline = true
+
+ [[blocks.segments]]
+ type = 'path'
+ style = 'plain'
+ background = 'transparent'
+ foreground = 'blue'
+ template = '{{ .Path }}'
+
+ [blocks.segments.properties]
+ style = 'full'
+
+ [[blocks.segments]]
+ type = 'git'
+ style = 'plain'
+ foreground = 'p:grey'
+ background = 'transparent'
+ template = ' {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}*{{ end }} {{ if gt .Behind 0 }}⇣{{ end }}{{ if gt .Ahead 0 }}⇡{{ end }}>'
+
+ [blocks.segments.properties]
+ branch_icon = ''
+ commit_icon = '@'
+ fetch_status = true
+
+[[blocks]]
+ type = 'rprompt'
+ overflow = 'hidden'
+
+ [[blocks.segments]]
+ type = 'executiontime'
+ style = 'plain'
+ foreground = 'yellow'
+ background = 'transparent'
+ template = '{{ .FormattedMs }}'
+
+ [blocks.segments.properties]
+ threshold = 5000
+
+[[blocks]]
+ type = 'prompt'
+ alignment = 'left'
+ newline = true
+
+ [[blocks.segments]]
+ type = 'text'
+ style = 'plain'
+ foreground_templates = [
+ "{{if gt .Code 0}}red{{end}}",
+ "{{if eq .Code 0}}magenta{{end}}",
+ ]
+ background = 'transparent'
+ template = '❯'
+
+[transient_prompt]
+ foreground_templates = [
+ "{{if gt .Code 0}}red{{end}}",
+ "{{if eq .Code 0}}magenta{{end}}",
+ ]
+ background = 'transparent'
+ template = '❯ '
+
+[secondary_prompt]
+ foreground = 'magenta'
+ background = 'transparent'
+ template = '❯❯ '
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/qt6ct/qt6ct.conf b/configs/dotfiles/hyprland/laptop_default/.config/qt6ct/qt6ct.conf
new file mode 100644
index 0000000..e5ace90
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/qt6ct/qt6ct.conf
@@ -0,0 +1,32 @@
+[Appearance]
+color_scheme_path=/usr/share/qt6ct/colors/darker.conf
+custom_palette=true
+icon_theme=breeze-dark
+standard_dialogs=default
+style=Breeze
+
+[Fonts]
+fixed="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+general="Noto Sans,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=0
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+gui_effects=@Invalid()
+keyboard_scheme=2
+menus_have_icons=true
+show_shortcuts_in_context_menus=true
+stylesheets=@Invalid()
+toolbutton_style=4
+underline_shortcut=1
+wheel_scroll_lines=3
+
+[SettingsWindow]
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x4\xe1\0\0\x2\x97\0\0\0\0\0\0\0\0\xff\xff\xff\xfe\xff\xff\xff\xfe\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x4\xe1\0\0\x2\x97)
+
+[Troubleshooting]
+force_raster_widgets=1
+ignored_applications=@Invalid()
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-cliphist.rasi b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-cliphist.rasi
new file mode 100644
index 0000000..a2cbd7a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-cliphist.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-compact.rasi b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-compact.rasi
new file mode 100644
index 0000000..4e59ac5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-compact.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 30em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-hyprshade.rasi b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-hyprshade.rasi
new file mode 100644
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-hyprshade.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-old.rasi b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-old.rasi
new file mode 100644
index 0000000..06fb55f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-old.rasi
@@ -0,0 +1,266 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: "APPS";
+ display-run: "RUN";
+ display-filebrowser: "FILES";
+ display-window: "WINDOW";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@import "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+/* ---- Window ---- */
+window {
+ width: 900px;
+ x-offset: 0px;
+ y-offset: 0px;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: #FFFFFF;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+/* ---- Mainbox ---- */
+mainbox {
+ enabled: true;
+ orientation: horizontal;
+ spacing: 0px;
+ margin: 0px;
+ background-color: @background;
+ background-image: @current-image;
+ children: ["imagebox","listbox"];
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 18px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "inputbar", "dummy", "mode-switcher" ];
+}
+
+/* ---- Listbox ---- */
+listbox {
+ spacing: 20px;
+ background-color: transparent;
+ orientation: vertical;
+ children: [ "message", "listview" ];
+}
+
+/* ---- Dummy ---- */
+dummy {
+ background-color: transparent;
+}
+
+/* ---- Inputbar ---- */
+inputbar {
+ enabled: true;
+ text-color: @foreground;
+ spacing: 10px;
+ padding: 15px;
+ border-radius: 10px;
+ border-color: @foreground;
+ background-color: @background;
+ children: [ "textbox-prompt-colon", "entry" ];
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "";
+ padding: 0px 5px 0px 0px;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+entry {
+ enabled: true;
+ background-color: transparent;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+/* ---- Mode Switcher ---- */
+mode-switcher{
+ enabled: true;
+ spacing: 20px;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+button {
+ padding: 10px;
+ border-radius: 10px;
+ background-color: @background;
+ text-color: inherit;
+ cursor: pointer;
+ border: 0px;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+/* ---- Listview ---- */
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ spacing: 0px;
+ padding: 10px;
+ margin: 0px;
+ background-color: @background;
+ border:0px;
+}
+
+/* ---- Element ---- */
+element {
+ enabled: true;
+ padding: 10px;
+ margin: 5px;
+ cursor: pointer;
+ background-color: @background;
+ border-radius: 10px;
+ border: @border-width;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 32px;
+ cursor: inherit;
+}
+
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border:0px;
+ margin:20px 0px 0px 0px;
+ padding:0px;
+ spacing:0px;
+ border-radius: 10px;
+}
+
+textbox {
+ padding: 15px;
+ margin: 0px;
+ border-radius: 0px;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 15px;
+ border-radius: 20px;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-screenshot.rasi b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-screenshot.rasi
new file mode 100644
index 0000000..d4e70ed
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-screenshot.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 0em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0em;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-short.rasi b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-short.rasi
new file mode 100644
index 0000000..dcb8cd8
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-short.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 20em;
+ x-offset: -2em;
+ y-offset: 2em;
+ spacing: 0px;
+ padding: 0px;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: northeast;
+ anchor: northeast;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/blurred_wallpaper.png", width);
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 2;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+// Elements //
+element {
+ enabled: true;
+ padding: 1em;
+ margin: 0em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 0em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+ content: "";
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-themes.rasi b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-themes.rasi
new file mode 100644
index 0000000..da2c3fc
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config-themes.rasi
@@ -0,0 +1,267 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "Tela-circle-dracula";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ width: 25em;
+ x-offset: 0em;
+ y-offset: 2em;
+ spacing: 0em;
+ padding: 0em;
+ margin: 0px;
+ color: #FFFFFF;
+ border: @border-width;
+ border-color: @color11;
+ cursor: "default";
+ transparency: "real";
+ location: north;
+ anchor: north;
+ fullscreen: false;
+ enabled: true;
+ border-radius: @border-radius;
+ background-color: transparent;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: horizontal;
+ children: [ "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+/* ---- Imagebox ---- */
+imagebox {
+ padding: 1em;
+ background-color: transparent;
+ orientation: horizontal;
+ children: [ "inputbar" ];
+}
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 1em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 1em 0em 0em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: vertical;
+ children: [ "inputbar", "listview" , "message" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1em;
+ spacing: 0em;
+ margin: 0em;
+ enabled: true;
+ columns: 1;
+ lines: 8;
+ cycle: false;
+ dynamic: false;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color5;
+ text-color: @background;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ padding: 0.8em;
+ margin: 0.6em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+ border-radius: 1.1em;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 7.2em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+/*****----- Message -----*****/
+message {
+ background-color: transparent;
+ border: 0em;
+ margin: 2.2em 0em 0em 0em;
+ padding: 0em;
+ spacing: 0em;
+ border-radius: 1.1em;
+}
+
+textbox {
+ padding: 2em;
+ margin: 0em;
+ border-radius: 0em;
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+error-message {
+ padding: 2em;
+ border-radius: 2.1em;
+ background-color: @background;
+ text-color: @foreground;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/rofi/config.rasi b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config.rasi
new file mode 100644
index 0000000..50b759b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/rofi/config.rasi
@@ -0,0 +1,241 @@
+/*
+# ____ __ _
+# | _ \ ___ / _(_)
+# | |_) / _ \| |_| |
+# | _ < (_) | _| |
+# |_| \_\___/|_| |_|
+#
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+*/
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun,filebrowser,window,run";
+ font: "Fira Sans 11";
+ show-icons: true;
+ icon-theme: "kora";
+ display-drun: " ";
+ display-run: " ";
+ display-filebrowser: " ";
+ display-window: " ";
+ drun-display-format: "{name}";
+ hover-select: false;
+ scroll-method: 1;
+ me-select-entry: "";
+ me-accept-entry: "MousePrimary";
+ window-format: "{w} · {c} · {t}";
+
+}
+
+/* ---- Load font ---- */
+@import "~/.config/ml4w/settings/rofi-font.rasi"
+
+/* ---- Load pywal colors (custom wal template) ---- */
+@theme "~/.cache/wal/colors-rofi-pywal"
+
+/* ---- Load wallpaper ---- */
+@import "~/.config/ml4w/cache/current_wallpaper.rasi"
+
+/* ---- Load border width ---- */
+@import "~/.config/ml4w/settings/rofi-border.rasi"
+
+/* ---- Load border radius ---- */
+@import "~/.config/ml4w/settings/rofi-border-radius.rasi"
+
+// Main //
+window {
+ height: 35em;
+ width: 56em;
+ transparency: "real";
+ fullscreen: false;
+ enabled: true;
+ cursor: "default";
+ spacing: 0em;
+ padding: 0em;
+ border: @border-width;
+ border-color: @color11;
+ border-radius: @border-radius;
+ background-color: @background;
+}
+
+mainbox {
+ enabled: true;
+ spacing: 0em;
+ padding: 0em;
+ orientation: vertical;
+ children: [ "inputbar" , "listbox" ];
+ background-color: transparent;
+ background-image: @current-image;
+}
+
+
+// Inputs //
+inputbar {
+ enabled: true;
+ spacing: 0em;
+ padding: 5em;
+ children: [ "textbox-prompt-colon", "entry" ];
+ background-color: transparent;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: " ";
+ padding: 1em 0em 0em 1em;
+ text-color: @foreground;
+ border-radius: 2em 0em 0em 2em;
+ background-color: @background;
+ background-image: url("~/.config/ml4w/cache/current_wallpaper", width);
+}
+
+entry {
+ enabled: true;
+ border-radius: 0em 2em 2em 0em;
+ spacing: 1em;
+ padding: 1em;
+ background-color: @background;
+ text-color: @foreground;
+ cursor: text;
+ placeholder: "Search";
+ placeholder-color: inherit;
+}
+
+// Lists //
+listbox {
+ padding: 0em;
+ spacing: 0em;
+ orientation: horizontal;
+ children: [ "listview" , "mode-switcher" ];
+ background-color: @background;
+}
+
+listview {
+ padding: 1.5em;
+ spacing: 0.5em;
+ enabled: true;
+ columns: 2;
+ lines: 3;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+ cursor: "default";
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+
+// Modes //
+mode-switcher {
+ orientation: vertical;
+ width: 6.6em;
+ enabled: true;
+ padding: 1.5em;
+ spacing: 1.5em;
+ background-color: transparent;
+}
+
+button {
+ cursor: pointer;
+ border-radius: 2em;
+ background-color: @background;
+ text-color: @foreground;
+}
+
+button selected {
+ background-color: @color11;
+ text-color: @foreground;
+}
+
+
+// Elements //
+element {
+ enabled: true;
+ spacing: 0em;
+ padding: 0.5em;
+ cursor: pointer;
+ background-color: transparent;
+ text-color: @foreground;
+}
+
+element selected.normal {
+ background-color: @color11;
+ text-color: @foreground;
+ border-radius: 1.5em;
+}
+
+element normal.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element normal.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element selected.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.normal {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.urgent {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element alternate.active {
+ background-color: inherit;
+ text-color: @foreground;
+}
+
+element-icon {
+ size: 3em;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+element-text {
+ vertical-align: 0.5;
+ horizontal-align: 0.1;
+ cursor: inherit;
+ background-color: transparent;
+ text-color: inherit;
+}
+
+// Error message //
+error-message {
+ text-color: @foreground;
+ background-color: @background;
+ text-transform: capitalize;
+ children: [ "textbox" ];
+}
+
+textbox {
+ text-color: inherit;
+ background-color: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.5;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-hyprland.conf b/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-hyprland.conf
new file mode 100644
index 0000000..84e2394
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-hyprland.conf
@@ -0,0 +1,18 @@
+$background = rgb({background.strip})
+$foreground = rgb({foreground.strip})
+$color0 = rgb({color0.strip})
+$color1 = rgb({color1.strip})
+$color2 = rgb({color2.strip})
+$color3 = rgb({color3.strip})
+$color4 = rgb({color4.strip})
+$color5 = rgb({color5.strip})
+$color6 = rgb({color6.strip})
+$color7 = rgb({color7.strip})
+$color8 = rgb({color8.strip})
+$color9 = rgb({color9.strip})
+$color10 = rgb({color10.strip})
+$color11 = rgb({color11.strip})
+$color12 = rgb({color12.strip})
+$color13 = rgb({color13.strip})
+$color14 = rgb({color14.strip})
+$color15 = rgb({color15.strip})
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-rofi-pywal.rasi b/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-rofi-pywal.rasi
new file mode 100644
index 0000000..f0b1665
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-rofi-pywal.rasi
@@ -0,0 +1,20 @@
+* {{
+ background: rgba(0,0,1,0.5);
+ foreground: #FFFFFF;
+ color0: {color0};
+ color1: {color1};
+ color2: {color2};
+ color3: {color3};
+ color4: {color4};
+ color5: {color5};
+ color6: {color6};
+ color7: {color7};
+ color8: {color8};
+ color9: {color9};
+ color10: {color10};
+ color11: {color11};
+ color12: {color12};
+ color13: {color13};
+ color14: {color14};
+ color15: {color15};
+}}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-waybar.css b/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-waybar.css
new file mode 100644
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-waybar.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-wlogout.css b/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-wlogout.css
new file mode 100644
index 0000000..c9cced6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/wal/templates/colors-wlogout.css
@@ -0,0 +1,20 @@
+@define-color foreground {foreground};
+@define-color background {background};
+@define-color cursor {cursor};
+
+@define-color color0 {color0};
+@define-color color1 {color1};
+@define-color color2 {color2};
+@define-color color3 {color3};
+@define-color color4 {color4};
+@define-color color5 {color5};
+@define-color color6 {color6};
+@define-color color7 {color7};
+@define-color color8 {color8};
+@define-color color9 {color9};
+@define-color color10 {color10};
+@define-color color11 {color11};
+@define-color color12 {color12};
+@define-color color13 {color13};
+@define-color color14 {color14};
+@define-color color15 {color15};
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/launch.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/launch.sh
new file mode 100755
index 0000000..8ae9e4d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/launch.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# ____ _ _ __ __ _
+# / ___|| |_ __ _ _ __| |_ \ \ / /_ _ _ _| |__ __ _ _ __
+# \___ \| __/ _` | '__| __| \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# ___) | || (_| | | | |_ \ V V / (_| | |_| | |_) | (_| | |
+# |____/ \__\__,_|_| \__| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/
+# by Stephan Raabe (2023)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Quit all running waybar instances
+# -----------------------------------------------------
+killall waybar
+pkill waybar
+sleep 0.5
+
+# -----------------------------------------------------
+# Default theme: /THEMEFOLDER;/VARIATION
+# -----------------------------------------------------
+themestyle="/ml4w;/ml4w/light"
+
+# -----------------------------------------------------
+# Get current theme information from ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ -f ~/.config/ml4w/settings/waybar-theme.sh ]; then
+ themestyle=$(cat ~/.config/ml4w/settings/waybar-theme.sh)
+else
+ touch ~/.config/ml4w/settings/waybar-theme.sh
+ echo "$themestyle" > ~/.config/ml4w/settings/waybar-theme.sh
+fi
+
+IFS=';' read -ra arrThemes <<< "$themestyle"
+echo ":: Theme: ${arrThemes[0]}"
+
+if [ ! -f ~/.config/waybar/themes${arrThemes[1]}/style.css ]; then
+ themestyle="/ml4w;/ml4w/light"
+fi
+
+# -----------------------------------------------------
+# Loading the configuration
+# -----------------------------------------------------
+config_file="config"
+style_file="style.css"
+
+# Standard files can be overwritten with an existing config-custom or style-custom.css
+if [ -f ~/.config/waybar/themes${arrThemes[0]}/config-custom ] ;then
+ config_file="config-custom"
+fi
+if [ -f ~/.config/waybar/themes${arrThemes[1]}/style-custom.css ] ;then
+ style_file="style-custom.css"
+fi
+
+# Check if waybar-disabled file exists
+if [ ! -f $HOME/.cache/waybar-disabled ] ;then
+ waybar -c ~/.config/waybar/themes${arrThemes[0]}/$config_file -s ~/.config/waybar/themes${arrThemes[1]}/$style_file &
+fi
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/modules.json b/configs/dotfiles/hyprland/laptop_default/.config/waybar/modules.json
new file mode 100644
index 0000000..28fb988
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/modules.json
@@ -0,0 +1,387 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+{
+ // Workspaces
+ "hyprland/workspaces": {
+ "on-scroll-up": "hyprctl dispatch workspace r-1",
+ "on-scroll-down": "hyprctl dispatch workspace r+1",
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": ["Alacritty", "kitty"],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip-format": "Open Sidebar"
+ },
+
+ // Empty
+ "custom/empty": {
+ "format": ""
+ },
+
+ // Tools
+ "custom/tools": {
+ "format": "",
+ "tooltip-format": "Tools"
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip-format": "Left: Open clipboard Manager\nRight: Delete an entry\nMiddle: Clear list"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "interval": 1800,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "bash -c waypaper &",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip-format": "Left: Select a wallpaper\nRight: Select wallpaper effect"
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip-format": "Select a waybar theme"
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "sleep 0.1 && com.ml4w.dotfilessettings",
+ "tooltip-format": "ML4W Dotfiles Settings"
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": " ",
+ "on-click": "~/.config/ml4w/settings/ai.sh",
+ "tooltip-format": "AI Support"
+ },
+
+ // Calculator
+ "custom/calculator": {
+ "format": "",
+ "on-click": "qalculate-gtk",
+ "tooltip-format": "Open calculator"
+ },
+
+ // Windows VM
+ "custom/windowsvm": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/launchvm.sh",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ // START APPS LABEL
+ "format": "Apps",
+ // END APPS LABEL
+ "on-click": "sleep 0.2;pkill rofi || rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenuicon": {
+ "format": "",
+ "on-click": "sleep 0.2;rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip-format": "Left: Open the application launcher\nRight: Show all keybindings"
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "~/.config/ml4w/scripts/wlogout.sh",
+ "on-click-right": "hyprlock",
+ "tooltip-format": "Left: Power menu\nRight: Lock screen"
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "tooltip-format": "Toggle Screen Shader",
+ "on-click": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.5; ~/.config/hypr/scripts/hyprshade.sh rofi"
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle"
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "ags toggle calendar",
+ "timezone": "",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "~/.config/ml4w/settings/system-monitor.sh"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": ["custom/system", "disk", "cpu", "memory", "hyprland/language"]
+ },
+
+ // Group Tools
+ "group/tools": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/tools",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade"
+ ]
+ },
+
+ // Group Links
+ "group/links": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/chatgpt",
+ "custom/empty"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": true
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {essid} ({signalStrength}%)",
+ "format-ethernet": " {ifname}",
+ "format-disconnected": "Disconnected ⚠",
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {ifname} @ {essid}\nIP: {ipaddr}\nStrength: {signalStrength}%\nFreq: {frequency}MHz\nUp: {bandwidthUpBits} Down: {bandwidthDownBits}",
+ "tooltip-format-ethernet": " {ifname}\nIP: {ipaddr}\n up: {bandwidthUpBits} down: {bandwidthDownBits}",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "~/.config/ml4w/settings/networkmanager.sh",
+ "on-click-right": "~/.config/ml4w/scripts/nm-applet.sh toggle",
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format": " {status}",
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false
+ },
+
+ // backlight:
+ "backlight": {
+ "format": "{icon} {percent}%",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "scroll-step": 1
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ai-icon-20.png b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ai-icon-20.png
new file mode 100644
index 0000000..a070dd4
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ai-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ai-icon.png b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ai-icon.png
new file mode 100644
index 0000000..398379b
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ai-icon.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/hyprland-icon-20.png b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/hyprland-icon-20.png
new file mode 100644
index 0000000..0d36ec2
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/hyprland-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/hyprland-icon.png b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/hyprland-icon.png
new file mode 100644
index 0000000..c87b767
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/hyprland-icon.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-20.png b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-20.png
new file mode 100644
index 0000000..df25ccb
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-20.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-black.svg b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-black.svg
new file mode 100644
index 0000000..011b817
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-black.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-dark.png b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-dark.png
new file mode 100644
index 0000000..73ec085
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-dark.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-white.svg b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-white.svg
new file mode 100644
index 0000000..c19407d
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon-white.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon.png b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon.png
new file mode 100644
index 0000000..92a54e0
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon.svg b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon.svg
new file mode 100644
index 0000000..fa8e063
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/ml4w-icon.svg
@@ -0,0 +1,18 @@
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai-black.svg b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai-black.svg
new file mode 100644
index 0000000..3b4eff9
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai-black.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai-white.svg b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai-white.svg
new file mode 100644
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai-white.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai.svg b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai.svg
new file mode 100644
index 0000000..24e0cf7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/assets/openai.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/config b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/config
new file mode 100644
index 0000000..b02f10e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/config
@@ -0,0 +1,161 @@
+{
+ // "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["hyprland/workspaces","custom/waybarthemes"],
+ "modules-center": ["hyprland/window"],
+ "modules-right": ["custom/ml4w-welcome","mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "sway/language", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip": false
+ },
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "Themes",
+ "on-click": "~/.config/ml4w/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 2,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": " ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ "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": "{}% "
+ },
+ "temperature": {
+ "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": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, 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"
+ },
+ "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/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/config.sh
new file mode 100644
index 0000000..71a3429
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Default Theme"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/style.css
new file mode 100644
index 0000000..cafc802
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/default/style.css
@@ -0,0 +1,289 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+}
+
+window#waybar {
+ background-color: rgba(43, 48, 59, 0.5);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+window#waybar.termite {
+ background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+ background-color: #000000;
+ border: none;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 15px;
+ background-image: url("../assets/ml4w-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 20px;
+ margin-right: 0px;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background-color: transparent;
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button.urgent {
+ background-color: #eb4d4b;
+}
+
+#mode {
+ background-color: #64727D;
+ border-bottom: 3px solid #ffffff;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#mpd {
+ padding: 0 10px;
+ color: #ffffff;
+}
+
+#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 {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+#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 {
+ 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 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#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/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/black/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
new file mode 100644
index 0000000..cea609a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/black/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/black/style.css
new file mode 100644
index 0000000..129c909
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/black/style.css
@@ -0,0 +1,29 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
new file mode 100644
index 0000000..7f55337
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/colored/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
new file mode 100644
index 0000000..de0b369
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/config b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/config
new file mode 100644
index 0000000..ea2b0cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
new file mode 100644
index 0000000..df6f8c2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/dark/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
new file mode 100644
index 0000000..54e8317
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/light/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
new file mode 100644
index 0000000..da067d2
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Light"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/light/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/light/style.css
new file mode 100644
index 0000000..5caa16a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
new file mode 100644
index 0000000..dea299a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
new file mode 100644
index 0000000..fe8dbb3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/white/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
new file mode 100644
index 0000000..1592654
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Bottom White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/white/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/white/style.css
new file mode 100644
index 0000000..a0ba4a7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur-bottom/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w-blur/style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/black/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/black/config.sh
new file mode 100644
index 0000000..5c6fb05
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/black/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/black/style.css
new file mode 100644
index 0000000..b8a549a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/black/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/colored/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/colored/config.sh
new file mode 100644
index 0000000..7338fef
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/colored/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/config b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/config
new file mode 100644
index 0000000..fcd29ce
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 0,
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/dark/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/dark/config.sh
new file mode 100644
index 0000000..a3b9e88
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/dark/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/dark/style.css
new file mode 100644
index 0000000..8470788
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/dark/style.css
@@ -0,0 +1,20 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/light/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/light/config.sh
new file mode 100644
index 0000000..ca5fe11
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Light"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/light/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/mixed/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/mixed/config.sh
new file mode 100644
index 0000000..eb698ad
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/mixed/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/style.css
new file mode 100644
index 0000000..12734d3
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/style.css
@@ -0,0 +1,478 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left:14px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 8px 15px 8px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 14px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 20px;
+}
+
+#custom-settings {
+ margin-right:12px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+ opacity: 0.8;
+}
+
+#custom-chatgpt {
+ margin-right: 12px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 16px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 17px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 8px 16px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 8px 15px 8px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+ color: @textcolor3;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/white/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/white/config.sh
new file mode 100644
index 0000000..e458b19
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Blur White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/white/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/white/style.css
new file mode 100644
index 0000000..f50cb7e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-blur/white/style.css
@@ -0,0 +1,28 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+window#waybar {
+ background-color: rgba(255,255,255,0.1);
+}
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/black/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/black/config.sh
new file mode 100644
index 0000000..5837eb6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/black/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/black/style.css
new file mode 100644
index 0000000..6bae0cd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #000000;
+@define-color backgrounddark #000000;
+@define-color workspacesbackground1 #000000;
+@define-color workspacesbackground2 #222222;
+@define-color bordercolor #000000;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #000000;
+@define-color iconcolor #000000;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/colored/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/colored/config.sh
new file mode 100644
index 0000000..0a31bac
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/colored/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/colored/style.css
new file mode 100644
index 0000000..53bf65c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/config b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/config
new file mode 100644
index 0000000..8e55c1b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "position": "bottom",
+ "margin-top": 0,
+ "margin-bottom": 14,
+ "layer": "top",
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/dark/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/dark/config.sh
new file mode 100644
index 0000000..a6fe8ff
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/dark/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/dark/style.css
new file mode 100644
index 0000000..2179f76
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/light/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/light/config.sh
new file mode 100644
index 0000000..e016502
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/light/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/light/style.css
new file mode 100644
index 0000000..833b8c4
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/mixed/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/mixed/config.sh
new file mode 100644
index 0000000..e5bc67e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/mixed/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/mixed/style.css
new file mode 100644
index 0000000..f3ee832
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/white/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/white/config.sh
new file mode 100644
index 0000000..71dd9f5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White Bottom"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/white/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/white/style.css
new file mode 100644
index 0000000..704bfbd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-bottom/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../../ml4w/style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/config b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/config
new file mode 100644
index 0000000..4614d63
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/config
@@ -0,0 +1,88 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-bottom": 0,
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/ml4w/scripts/installupdates.sh",
+ "on-click-right": "~/.config/ml4w/settings/software.sh"
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenuicon",
+ "hyprland/workspaces",
+ "group/links",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+ "custom/exit",
+ "clock",
+"tray",
+ "custom/ml4w-welcome"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/config.sh
new file mode 100644
index 0000000..eac2047
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Minimal"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/style.css
new file mode 100644
index 0000000..be884b6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-minimal/style.css
@@ -0,0 +1,431 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.4);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+.modules-left {
+ padding-left: 10px;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+ #workspaces {
+ margin: 3px 7px 3px 3px;
+ border: 0px;
+ font-size: 14px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ border: 0px;
+ margin:4px 5px 4px 0px;
+ padding:0px 4px 0px 4px;
+ color: @textcolor3;
+ transition: all 0.5s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 0px 15px 0px 0px;
+ border-radius: 12px;
+ color:@textcolor;
+ font-size:14px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-wallpaper,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 14px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-settings {
+ margin-right: 15px;
+}
+
+#custom-browser {
+ margin-right: 12px;
+}
+
+#custom-wallpaper {
+ margin-right: 14px;
+}
+
+#custom-chatgpt {
+ margin-right: 10px;
+ background-image: url("../assets/ai-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 23px;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-ml4w-hyprland-settings {
+ margin-right: 12px;
+ background-image: url("../assets/hyprland-icon-20.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 16px;
+}
+
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 16px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 14px;
+ font-weight: bold;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenuicon {
+ font-size: 20px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:16px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#custom-updates.green {
+}
+
+#custom-updates.yellow {
+ color: #ff9a3c;
+}
+
+#custom-updates.red {
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Youtube
+ * ----------------------------------------------------- */
+
+#custom-youtube {
+ background-color: @backgroundlight;
+ font-size: 14px;
+ color: @textcolor2;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:14px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ font-size: 15px;
+ color: @textcolor;
+ margin: 0px 15px 0px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+ background-color: transparent;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+ #pulseaudio {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#pulseaudio.muted {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 0px 15px 0px 0px;
+}
+
+#network.ethernet {
+ color: @textcolor;
+}
+
+#network.wifi {
+ color: @textcolor;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ font-size: 14px;
+ color: @textcolor;
+ border-radius: 15px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/black/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/black/config.sh
new file mode 100644
index 0000000..63c42a1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/black/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/black/style.css
new file mode 100644
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/colored/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/colored/config.sh
new file mode 100644
index 0000000..61e80a5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/colored/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/config b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/config
new file mode 100644
index 0000000..f570e02
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/config
@@ -0,0 +1,57 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 14,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "hyprland/workspaces",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/dark/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/dark/config.sh
new file mode 100644
index 0000000..e6f8d5b
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/dark/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/dark/style.css
new file mode 100644
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/light/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/light/config.sh
new file mode 100644
index 0000000..0c6cdb1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Light"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/light/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/mixed/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/mixed/config.sh
new file mode 100644
index 0000000..46f3eb5
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/mixed/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/style.css
new file mode 100644
index 0000000..12943e1
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/style.css
@@ -0,0 +1,470 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+ * {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 18px 3px 1px;
+ padding: 0px 2px;
+ border-radius: 5px 5px 5px 5px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 6px;
+ margin: 3px 2px;
+ border-radius: 3px 3px 3px 3px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.1s linear;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 3px 3px 3px 3px;
+ min-width: 30px;
+ transition: all 0.1s linear;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 5px 5px 5px 5px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ margin: 3px 15px 3px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 5px 5px 5px 5px;
+ color:white;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 5px 5px 5px 5px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 5px 5px 5px 5px;
+ padding: 0px 10px 0px 10px;
+ margin: 2px 17px 2px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 3px 5px 3px 5px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 10px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 5px 5px 5px 5px;
+ padding: 2px 15px 0px 10px;
+ margin: 3px 15px 3px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/white/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/white/config.sh
new file mode 100644
index 0000000..efe0528
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Modern White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/white/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/white/style.css
new file mode 100644
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w-modern/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/black/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/black/config.sh
new file mode 100644
index 0000000..39e19cb
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/black/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Black"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/black/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/black/style.css
new file mode 100644
index 0000000..00b3413
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/black/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+ @import '../../../../../.cache/wal/colors-waybar.css';
+
+ @define-color backgroundlight #000000;
+ @define-color backgrounddark #000000;
+ @define-color workspacesbackground1 #000000;
+ @define-color workspacesbackground2 #222222;
+ @define-color bordercolor #000000;
+ @define-color textcolor1 #FFFFFF;
+ @define-color textcolor2 #FFFFFF;
+ @define-color textcolor3 #000000;
+ @define-color iconcolor #000000;
+
+ @import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-black.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-black.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/colored/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/colored/config.sh
new file mode 100644
index 0000000..25dbee7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/colored/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Colored"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/colored/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/colored/style.css
new file mode 100644
index 0000000..f9008da
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/colored/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color5;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 @color5;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor @color11;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/config b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/config
new file mode 100644
index 0000000..12ba709
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/config
@@ -0,0 +1,56 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+ "layer": "top",
+ "margin-top": 14,
+ "margin-bottom": 0,
+ "margin-left": 14,
+ "margin-right": 14,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "group/links",
+//"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/empty"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "group/tools",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/dark/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/dark/config.sh
new file mode 100644
index 0000000..6c2cf9f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/dark/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Dark"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/dark/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/dark/style.css
new file mode 100644
index 0000000..9e0e318
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/dark/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor @color8;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/light/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/light/config.sh
new file mode 100644
index 0000000..55e4ffd
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/light/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Light"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/light/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/light/style.css
new file mode 100644
index 0000000..738cd66
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/light/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark @color11;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 @color11;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #FFFFFF;
+@define-color textcolor2 @color11;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/mixed/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/mixed/config.sh
new file mode 100644
index 0000000..c00e231
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/mixed/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W Mixed"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/mixed/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/mixed/style.css
new file mode 100644
index 0000000..09032ae
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/mixed/style.css
@@ -0,0 +1,16 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight @color8;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 @color8;
+@define-color workspacesbackground2 #FFFFFF;
+@define-color bordercolor @color8;
+@define-color textcolor1 @color8;
+@define-color textcolor2 #FFFFFF;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/style.css
new file mode 100644
index 0000000..68a179c
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/style.css
@@ -0,0 +1,471 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.8);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ background: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ background: @workspacesbackground1;
+ margin: 2px 1px 3px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.3s ease-in-out;
+ opacity: 0.4;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+ opacity:1.0;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ opacity:0.7;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 5px 15px 5px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+ opacity:0.8;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 3px 15px 3px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ opacity:0.8;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+#taskbar.empty {
+ background:transparent;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-tools,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 16px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10 {
+ margin-right: 24px;
+}
+
+#custom-tools {
+ margin-right:12px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 20px;
+}
+
+#custom-chatgpt {
+ margin-right: 16px;
+ background-image: url("../assets/openai.svg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ padding-right: 18px;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+#idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 0px 10px 0px 10px;
+ margin: 3px 17px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 13px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+ opacity: 0.8;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+#disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 1px 10px 0px 10px;
+ margin: 3px 0px 3px 0px;
+ opacity:0.8;
+ border:3px solid @bordercolor;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+#backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+#bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 5px 15px 5px 0px;
+ opacity:0.8;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ padding: 0px 15px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+}
+
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/white/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/white/config.sh
new file mode 100644
index 0000000..685088f
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/white/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="ML4W White"
\ No newline at end of file
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/white/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/white/style.css
new file mode 100644
index 0000000..a113c46
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/ml4w/white/style.css
@@ -0,0 +1,24 @@
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../../../../.cache/wal/colors-waybar.css';
+
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #000000;
+@define-color iconcolor #FFFFFF;
+
+@import '../style.css';
+
+#custom-ml4w-welcome {
+ background-image: url("../../assets/ml4w-icon-white.svg");
+}
+
+#custom-chatgpt {
+ background-image: url("../../assets/openai-white.svg");
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/config b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/config
new file mode 100644
index 0000000..6084f60
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/config
@@ -0,0 +1,66 @@
+// __ __ _
+// \ \ / /_ _ _ _| |__ __ _ _ __
+// \ \ /\ / / _` | | | | '_ \ / _` | '__|
+// \ V V / (_| | |_| | |_) | (_| | |
+// \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+// |___/
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // General Settings
+
+ // Position TOP
+ "layer": "top",
+ "margin-bottom": 0,
+
+ // Position BOTTOM
+ // "position": "bottom",
+ // "margin-top": 0,
+ // "margin-bottom": 14,
+
+ "layer": "top",
+ "margin-left": 0,
+ "margin-right": 0,
+ "spacing": 0,
+
+ // Load Modules
+ "include": [
+ "~/.config/ml4w/settings/waybar-quicklinks.json",
+ "~/.config/waybar/themes/starter/modules.json"
+ ],
+
+ // Modules Left
+ "modules-left": [
+"custom/appmenu",
+ "custom/settings",
+ //"wlr/taskbar",
+ "group/quicklinks",
+"hyprland/window",
+ "custom/starter"
+ ],
+
+ // Modules Center
+ "modules-center": [
+ "hyprland/workspaces"
+ ],
+
+ // Modules Right
+ "modules-right": [
+ "custom/updates",
+ "pulseaudio",
+//"backlight",
+ "bluetooth",
+ "battery",
+"network",
+ "group/hardware",
+ "custom/cliphist",
+ "custom/hypridle",
+ "custom/hyprshade",
+"tray",
+ "custom/exit",
+ "custom/ml4w-welcome",
+ "clock"
+ ]
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/config.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/config.sh
new file mode 100644
index 0000000..a9399f6
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/config.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+theme_name="Waybar Starter"
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/modules.json b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/modules.json
new file mode 100644
index 0000000..51e0add
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/modules.json
@@ -0,0 +1,351 @@
+// __ __ _ _
+// | \/ | ___ __| |_ _| | ___ ___
+// | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
+// | | | | (_) | (_| | |_| | | __/\__ \
+// |_| |_|\___/ \__,_|\__,_|_|\___||___/
+//
+//
+// by Stephan Raabe (2023)
+// -----------------------------------------------------
+//
+{
+ // Workspaces
+ "hyprland/workspaces" : {
+ "on-click": "activate",
+ "active-only": false,
+ "all-outputs": true,
+ "format": "{}",
+ "format-icons": {
+ "urgent": "",
+ "active": "",
+ "default": ""
+ },
+ "persistent-workspaces": {
+ "*": 5
+ }
+ },
+
+ // Taskbar
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "icon-size": 18,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": [
+ "Alacritty"
+ ],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition"
+ },
+ "rewrite": {
+ "Firefox Web Browser": "Firefox",
+ "Foot Server": "Terminal"
+ }
+ },
+
+ // Hyprland Window
+ "hyprland/window": {
+ "rewrite": {
+ "(.*) - Brave": "$1",
+ "(.*) - Chromium": "$1",
+ "(.*) - Brave Search": "$1",
+ "(.*) - Outlook": "$1",
+ "(.*) Microsoft Teams": "$1"
+ },
+ "separate-outputs": true
+ },
+
+ // Cliphist
+ "custom/cliphist": {
+ "format": "",
+ "on-click": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh",
+ "on-click-right": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && ~/.config/ml4w/scripts/cliphist.sh w",
+ "tooltip": false
+ },
+
+ // Hyprshade
+ "custom/hyprshade": {
+ "format": "",
+ "on-click": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh",
+ "on-click-right": "sleep 0.1; ~/.config/hypr/scripts/hyprshade.sh rofi",
+ "tooltip": false
+ },
+
+ // Hypridle inhibitor
+ "custom/hypridle": {
+ "format": "",
+ "return-type": "json",
+ "escape": true,
+ "exec-on-event": true,
+ "interval": 60,
+ "exec": "~/.config/hypr/scripts/hypridle.sh status",
+ "on-click": "~/.config/hypr/scripts/hypridle.sh toggle",
+ "on-click-right": "hyprlock"
+ },
+
+ // Updates Count
+ "custom/updates": {
+ "format": " {}",
+ "tooltip-format": "{}",
+ "escape": true,
+ "return-type": "json",
+ "exec": "~/.config/ml4w/scripts/updates.sh",
+ "restart-interval": 60,
+ "on-click": "alacritty -e ~/.config/ml4w/scripts/installupdates.sh",
+ "tooltip": false
+ },
+
+ // Theme Starter Label
+ "custom/starter": {
+ "format": "THEME STARTER",
+ "tooltip": false
+ },
+
+ // Wallpaper
+ "custom/wallpaper": {
+ "format": "",
+ "on-click": "waypaper",
+ "on-click-right": "~/.config/hypr/scripts/wallpaper-effects.sh",
+ "tooltip": false
+ },
+
+ // Waybar Themes
+ "custom/waybarthemes": {
+ "format": "",
+ "on-click": "~/.config/waybar/themeswitcher.sh",
+ "tooltip": false
+ },
+
+ // Settings
+ "custom/settings": {
+ "format": "",
+ "on-click": "~/.config/ml4w/apps/ML4W_Dotfiles_Settings-x86_64.AppImage",
+ "tooltip": false
+ },
+
+ // Keybindings
+ "custom/keybindings": {
+ "format": "",
+ "on-click": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Filemanager Launcher
+ "custom/filemanager": {
+ "format": "",
+ "on-click": "nautilus",
+ "tooltip": false
+ },
+
+ // Browser Launcher
+ "custom/browser": {
+ "format": "",
+ "on-click": "~/.config/ml4w/settings/browser.sh",
+ "tooltip": false
+ },
+
+ // ML4W Welcome App
+ "custom/ml4w-welcome": {
+ "on-click": "sleep 0.1 && ~/.config/ml4w/settings/ml4w-sidebar.sh",
+ "on-click-right": "sleep 0.1 && com.ml4w.welcome",
+ "format": " ",
+ "tooltip-format": "Open Sidebar"
+ },
+
+ // ChatGPT Launcher
+ "custom/chatgpt": {
+ "format": "",
+ "on-click": "chromium --app=https://chat.openai.com",
+ "tooltip": false
+ },
+
+ // Rofi Application Launcher
+ "custom/appmenu": {
+ "format": "Apps",
+ "on-click": "rofi -show drun -replace",
+ "on-click-right": "~/.config/hypr/scripts/keybindings.sh",
+ "tooltip": false
+ },
+
+ // Power Menu
+ "custom/exit": {
+ "format": "",
+ "on-click": "wlogout",
+ "tooltip": false
+ },
+
+ // Keyboard State
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+
+ // System tray
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+
+ // Clock
+ "clock": {
+ "format": "{:%H:%M %a}",
+ "on-click": "ags -t calendar",
+ "tooltip": false
+ },
+
+ // System
+ "custom/system": {
+ "format": "",
+ "tooltip": false
+ },
+
+ // CPU
+ "cpu": {
+ "format": "/ C {usage}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Memory
+ "memory": {
+ "format": "/ M {}% ",
+ "on-click": "alacritty -e htop"
+ },
+
+ // Harddisc space used
+ "disk": {
+ "interval": 30,
+ "format": "D {percentage_used}% ",
+ "path": "/",
+ "on-click": "alacritty -e htop"
+ },
+
+ "hyprland/language": {
+ "format": "/ K {short}"
+ },
+
+ // Group Hardware
+ "group/hardware": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/system",
+ "disk",
+ "cpu",
+ "memory",
+ "hyprland/language"
+ ]
+ },
+
+ // Group Settings
+ "group/settings": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 300,
+ "children-class": "not-memory",
+ "transition-left-to-right": false
+ },
+ "modules": [
+ "custom/settings",
+ "custom/waybarthemes",
+ "custom/wallpaper"
+ ]
+ },
+
+ // Group Quicklinks
+ "group/quicklinks": {
+ "orientation": "horizontal",
+ "modules": [
+ "custom/filemanager",
+ "custom/browser"
+ ]
+ },
+
+ // Network
+ "network": {
+ "format": "{ifname}",
+ "format-wifi": " {signalStrength}%",
+ "format-ethernet": " {ipaddr}",
+ "format-disconnected": "Not connected", //An empty format will hide the module.
+ "tooltip-format": " {ifname} via {gwaddri}",
+ "tooltip-format-wifi": " {essid} ({signalStrength}%)",
+ "tooltip-format-ethernet": " {ifname} ({ipaddr}/{cidr})",
+ "tooltip-format-disconnected": "Disconnected",
+ "max-length": 50,
+ "on-click": "alacritty -e nmtui"
+ },
+
+ // Battery
+ "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": [" ", " ", " ", " ", " "]
+ },
+
+ // Pulseaudio
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon} {volume}%",
+ "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"
+ },
+
+ // Bluetooth
+ "bluetooth": {
+ "format-disabled": "",
+ "format-off": "",
+ "interval": 30,
+ "on-click": "blueman-manager",
+ "format-no-controller": ""
+ },
+
+ // Other
+ "user": {
+ "format": "{user}",
+ "interval": 60,
+ "icon": false,
+ },
+
+ // Idle Inhibator
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "tooltip": true,
+ "format-icons":{
+ "activated": "",
+ "deactivated": ""
+ },
+ "on-click-right": "hyprlock"
+ }
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/style.css b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/style.css
new file mode 100644
index 0000000..21fdcfa
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themes/starter/style.css
@@ -0,0 +1,457 @@
+/*
+ * __ __ _ ____ _ _
+ * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___
+ * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \
+ * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/
+ * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___|
+ * |___/ |___/
+ *
+ * by Stephan Raabe (2023)
+ * -----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+/* @import 'style-light.css'; */
+@define-color backgroundlight #FFFFFF;
+@define-color backgrounddark #FFFFFF;
+@define-color workspacesbackground1 #FFFFFF;
+@define-color workspacesbackground2 #CCCCCC;
+@define-color bordercolor #FFFFFF;
+@define-color textcolor1 #000000;
+@define-color textcolor2 #000000;
+@define-color textcolor3 #FFFFFF;
+@define-color iconcolor #FFFFFF;
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ border: none;
+ border-radius: 0px;
+}
+
+window#waybar {
+ background-color: rgba(0,0,0,0.2);
+ border-bottom: 0px solid #ffffff;
+ /* color: #FFFFFF; */
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+/* -----------------------------------------------------
+ * Workspaces
+ * ----------------------------------------------------- */
+
+#workspaces {
+ margin: 5px 1px 6px 1px;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 0px;
+ font-weight: bold;
+ font-style: normal;
+ font-size: 16px;
+ color: @textcolor1;
+}
+
+#workspaces button {
+ padding: 0px 5px;
+ margin: 4px 3px;
+ border-radius: 15px;
+ border: 0px;
+ color: @textcolor3;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button.active {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+ min-width: 40px;
+ transition: all 0.3s ease-in-out;
+}
+
+#workspaces button:hover {
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 15px;
+}
+
+/* -----------------------------------------------------
+ * Tooltips
+ * ----------------------------------------------------- */
+
+tooltip {
+ border-radius: 16px;
+ background-color: @backgroundlight;
+ opacity:0.9;
+ padding:20px;
+ margin:0px;
+}
+
+tooltip label {
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Window
+ * ----------------------------------------------------- */
+
+#window {
+ background: @backgroundlight;
+ margin: 10px 15px 10px 0px;
+ padding: 2px 10px 0px 10px;
+ border-radius: 12px;
+ color:@textcolor2;
+ font-size:16px;
+ font-weight:normal;
+}
+
+window#waybar.empty #window {
+ background-color:transparent;
+}
+
+/* -----------------------------------------------------
+ * Taskbar
+ * ----------------------------------------------------- */
+
+#taskbar {
+ background: @backgroundlight;
+ margin: 6px 15px 6px 0px;
+ padding:0px;
+ border-radius: 15px;
+ font-weight: normal;
+ font-style: normal;
+ border: 3px solid @backgroundlight;
+}
+
+#taskbar button {
+ margin:0;
+ border-radius: 15px;
+ padding: 0px 5px 0px 5px;
+}
+
+/* -----------------------------------------------------
+ * Modules
+ * ----------------------------------------------------- */
+
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+/* -----------------------------------------------------
+ * Custom Quicklinks
+ * ----------------------------------------------------- */
+
+#custom-brave,
+#custom-browser,
+#custom-keybindings,
+#custom-outlook,
+#custom-filemanager,
+#custom-teams,
+#custom-chatgpt,
+#custom-calculator,
+#custom-windowsvm,
+#custom-cliphist,
+#custom-settings,
+#custom-wallpaper,
+#custom-system,
+#custom-hyprshade,
+#custom-hypridle,
+#custom-quicklink1,
+#custom-quicklink2,
+#custom-quicklink3,
+#custom-quicklink4,
+#custom-quicklink5,
+#custom-quicklink6,
+#custom-quicklink7,
+#custom-quicklink8,
+#custom-quicklink9,
+#custom-quicklink10,
+#custom-waybarthemes {
+ margin-right: 23px;
+ font-size: 20px;
+ font-weight: bold;
+ color: @iconcolor;
+}
+
+#custom-hyprshade {
+ margin-right:12px;
+}
+
+#custom-hypridle {
+ margin-right:16px;
+}
+
+#custom-hypridle.active {
+ color: @iconcolor;
+}
+
+#custom-hypridle.notactive {
+ color: #dc2f2f;
+}
+
+#custom-waybarthemes,#custom-system {
+ margin-right:15px;
+}
+
+#custom-ml4w-welcome {
+ margin-right: 12px;
+ background-image: url("../assets/ml4w-icon.svg");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ padding-right: 24px;
+}
+
+/* -----------------------------------------------------
+ * Idle Inhibator
+ * ----------------------------------------------------- */
+
+ #idle_inhibitor {
+ margin-right: 15px;
+ font-size: 22px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: @iconcolor;
+}
+
+#idle_inhibitor.activated {
+ margin-right: 15px;
+ font-size: 20px;
+ font-weight: bold;
+ opacity: 0.8;
+ color: #dc2f2f;
+}
+
+/* -----------------------------------------------------
+ * Custom Modules
+ * ----------------------------------------------------- */
+
+#custom-appmenu {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 10px;
+}
+
+/* -----------------------------------------------------
+ * Custom Exit
+ * ----------------------------------------------------- */
+
+#custom-exit {
+ margin: 0px 20px 0px 0px;
+ padding:0px;
+ font-size:20px;
+ color: @iconcolor;
+}
+
+/* -----------------------------------------------------
+ * Custom Updates
+ * ----------------------------------------------------- */
+
+#custom-updates {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#custom-updates.green {
+ background-color: @backgroundlight;
+}
+
+#custom-updates.yellow {
+ background-color: #ff9a3c;
+ color: #FFFFFF;
+}
+
+#custom-updates.red {
+ background-color: #dc2f2f;
+ color: #FFFFFF;
+}
+
+/* -----------------------------------------------------
+ * Hardware Group
+ * ----------------------------------------------------- */
+
+ #disk,#memory,#cpu,#language {
+ margin:0px;
+ padding:0px;
+ font-size:16px;
+ color:@iconcolor;
+}
+
+#language {
+ margin-right:10px;
+}
+
+/* -----------------------------------------------------
+ * Clock
+ * ----------------------------------------------------- */
+
+#clock {
+ background-color: @backgrounddark;
+ font-size: 16px;
+ color: @textcolor1;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Backlight
+ * ----------------------------------------------------- */
+
+ #backlight {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+/* -----------------------------------------------------
+ * Pulseaudio
+ * ----------------------------------------------------- */
+
+#pulseaudio {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#pulseaudio.muted {
+ background-color: @backgrounddark;
+ color: @textcolor1;
+}
+
+/* -----------------------------------------------------
+ * Network
+ * ----------------------------------------------------- */
+
+#network {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#network.ethernet {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+#network.wifi {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+}
+
+/* -----------------------------------------------------
+ * Bluetooth
+ * ----------------------------------------------------- */
+
+ #bluetooth, #bluetooth.on, #bluetooth.connected {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 10px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#bluetooth.off {
+ background-color: transparent;
+ padding: 0px;
+ margin: 0px;
+}
+
+/* -----------------------------------------------------
+ * Battery
+ * ----------------------------------------------------- */
+
+#battery {
+ background-color: @backgroundlight;
+ font-size: 16px;
+ color: @textcolor2;
+ border-radius: 15px;
+ padding: 2px 15px 0px 10px;
+ margin: 10px 15px 10px 0px;
+}
+
+#battery.charging, #battery.plugged {
+ color: @textcolor2;
+ background-color: @backgroundlight;
+}
+
+@keyframes blink {
+ to {
+ background-color: @backgroundlight;
+ color: @textcolor2;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: @textcolor3;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+/* -----------------------------------------------------
+ * Tray
+ * ----------------------------------------------------- */
+
+#tray {
+ margin:0px 10px 0px 0px;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+/* -----------------------------------------------------
+ * Other
+ * ----------------------------------------------------- */
+
+label:focus {
+ background-color: #000000;
+}
+
+#backlight {
+ background-color: #90b1b1;
+}
+
+#network {
+ background-color: #2980b9;
+}
+
+#network.disconnected {
+ background-color: #f53c3c;
+}
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/themeswitcher.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themeswitcher.sh
new file mode 100755
index 0000000..f3e4734
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/themeswitcher.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# _____ _ _ _ _
+# |_ _| |__ ___ _ __ ___ ___ _____ _(_) |_ ___| |__ ___ _ __
+# | | | '_ \ / _ \ '_ ` _ \ / _ \/ __\ \ /\ / / | __/ __| '_ \ / _ \ '__|
+# | | | | | | __/ | | | | | __/\__ \\ V V /| | || (__| | | | __/ |
+# |_| |_| |_|\___|_| |_| |_|\___||___/ \_/\_/ |_|\__\___|_| |_|\___|_|
+#
+# by Stephan Raabe (2024)
+# -----------------------------------------------------
+
+# -----------------------------------------------------
+# Default theme folder
+# -----------------------------------------------------
+themes_path="$HOME/.config/waybar/themes"
+
+# -----------------------------------------------------
+# Initialize arrays
+# -----------------------------------------------------
+listThemes=""
+listNames=""
+listNames2=""
+
+# -----------------------------------------------------
+# Read theme folder
+# -----------------------------------------------------
+sleep 0.2
+options=$(find $themes_path -maxdepth 2 -type d)
+for value in $options
+do
+ if [ ! $value == "$HOME/.config/waybar/themes/assets" ]; then
+ if [ ! $value == "$themes_path" ]; then
+ if [ $(find $value -maxdepth 1 -type d | wc -l) = 1 ]; then
+ result=$(echo $value | sed "s#$HOME/.config/waybar/themes/#/#g")
+ IFS='/' read -ra arrThemes <<< "$result"
+ listThemes[${#listThemes[@]}]="/${arrThemes[1]};$result"
+ if [ -f $themes_path$result/config.sh ]; then
+ source $themes_path$result/config.sh
+ listNames+="$theme_name\n"
+ listNames2+="$theme_name~"
+ else
+ listNames+="/${arrThemes[1]};$result\n"
+ listNames2+="/${arrThemes[1]};$result~"
+ fi
+ fi
+ fi
+ fi
+done
+
+# -----------------------------------------------------
+# Show rofi dialog
+# -----------------------------------------------------
+listNames=${listNames::-2}
+choice=$(echo -e "$listNames" | rofi -dmenu -replace -i -config ~/.config/rofi/config-themes.rasi -no-show-icons -width 30 -p "Themes" -format i)
+IFS="~"
+input=$listNames2
+read -ra array <<< "$input"
+
+# -----------------------------------------------------
+# Set new theme by writing the theme information to ~/.config/ml4w/settings/waybar-theme.sh
+# -----------------------------------------------------
+if [ "$choice" ]; then
+ echo "Loading waybar theme..."
+ echo "${listThemes[$choice+1]}" > ~/.config/ml4w/settings/waybar-theme.sh
+ ~/.config/waybar/launch.sh
+ notify-send "Waybar Theme changed" "to ${array[$choice]}"
+fi
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waybar/toggle.sh b/configs/dotfiles/hyprland/laptop_default/.config/waybar/toggle.sh
new file mode 100755
index 0000000..0d49a4e
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waybar/toggle.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# _____ _ __ __ _
+# |_ _|__ __ _ __ _| | ___ \ \ / /_ _ _ _| |__ __ _ _ __
+# | |/ _ \ / _` |/ _` | |/ _ \ \ \ /\ / / _` | | | | '_ \ / _` | '__|
+# | | (_) | (_| | (_| | | __/ \ V V / (_| | |_| | |_) | (_| | |
+# |_|\___/ \__, |\__, |_|\___| \_/\_/ \__,_|\__, |_.__/ \__,_|_|
+# |___/ |___/ |___/
+#
+
+if [ -f ~/.cache/waybar-disabled ] ;then
+ rm ~/.cache/waybar-disabled
+else
+ touch ~/.cache/waybar-disabled
+fi
+~/.config/waybar/launch.sh &
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/waypaper/config.ini b/configs/dotfiles/hyprland/laptop_default/.config/waypaper/config.ini
new file mode 100644
index 0000000..98ebe47
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/waypaper/config.ini
@@ -0,0 +1,21 @@
+[Settings]
+language = en
+folder = ~/wallpaper
+wallpaper = ~/wallpaper/default.jpg
+backend = hyprpaper
+monitors = All
+fill = fill
+sort = name
+color = #ffffff
+subfolders = False
+show_hidden = False
+show_gifs_only = False
+post_command = ~/.config/hypr/scripts/wallpaper.sh "$wallpaper"
+number_of_columns = 3
+swww_transition_type = any
+swww_transition_step = 90
+swww_transition_angle = 0
+swww_transition_duration = 2
+swww_transition_fps = 60
+use_xdg_state = False
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/README.txt b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/README.txt
new file mode 100644
index 0000000..4ceecd7
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/README.txt
@@ -0,0 +1,8 @@
+Select Logout Command depending on your setup:
+
+Use for Display Manager e.g., sddm (DEFAULT)
+sleep 1; hyprctl dispatch exit
+
+Use for Arch Linux text based login
+sleep 1; loginctl terminate-user $USER
+
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/hibernate.png b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/hibernate.png
new file mode 100644
index 0000000..bf2b001
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/hibernate.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/lock.png b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/lock.png
new file mode 100644
index 0000000..da59b10
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/lock.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/logout.png b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/logout.png
new file mode 100644
index 0000000..8a25922
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/logout.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/reboot.png b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/reboot.png
new file mode 100644
index 0000000..e5fd221
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/reboot.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/shutdown.png b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/shutdown.png
new file mode 100644
index 0000000..663ca03
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/shutdown.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/suspend.png b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/suspend.png
new file mode 100644
index 0000000..af099b9
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/icons/suspend.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/layout b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/layout
new file mode 100644
index 0000000..0dfb38a
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/layout
@@ -0,0 +1,30 @@
+{
+ "label" : "lock",
+ "action" : "~/.config/hypr/scripts/power.sh lock",
+ "text" : "Lock",
+ "keybind" : "l"
+}
+{
+ "label" : "logout",
+ "action" : "~/.config/hypr/scripts/power.sh exit",
+ "text" : "Log Out",
+ "keybind" : "e"
+}
+{
+ "label" : "suspend",
+ "action" : "~/.config/hypr/scripts/power.sh suspend",
+ "text" : "Suspend",
+ "keybind" : "u"
+}
+{
+ "label" : "reboot",
+ "action" : "~/.config/hypr/scripts/power.sh reboot",
+ "text" : "Restart",
+ "keybind" : "r"
+}
+{
+ "label" : "shutdown",
+ "action" : "~/.config/hypr/scripts/power.sh shutdown",
+ "text" : "Power Off",
+ "keybind" : "s"
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/noise.png b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/noise.png
new file mode 100644
index 0000000..028b188
Binary files /dev/null and b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/noise.png differ
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/wlogout/style.css b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/style.css
new file mode 100644
index 0000000..f533d11
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/wlogout/style.css
@@ -0,0 +1,107 @@
+/*
+ _ _
+__ _| | ___ __ _ ___ _ _| |_
+\ \ /\ / / |/ _ \ / _` |/ _ \| | | | __|
+ \ V V /| | (_) | (_| | (_) | |_| | |_
+ \_/\_/ |_|\___/ \__, |\___/ \__,_|\__|
+ |___/
+
+by Stephan Raabe (2023)
+-----------------------------------------------------
+*/
+
+/* -----------------------------------------------------
+ * Import Pywal colors
+ * ----------------------------------------------------- */
+@import '../../.cache/wal/colors-wlogout.css';
+
+/* -----------------------------------------------------
+ * General
+ * ----------------------------------------------------- */
+
+* {
+ font-family: "Fira Sans Semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ background-image: none;
+ transition: 20ms;
+ box-shadow: none;
+}
+
+window {
+ background: url("../ml4w/cache/blurred_wallpaper.png");
+ background-size: cover;
+ font-size: 16pt;
+ color: #cdd6f4;
+}
+
+button {
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 20%;
+ background-color: rgba(200, 220, 255, 0);
+ animation: gradient_f 20s ease-in infinite;
+ border-radius: 80px; /* Increased border radius for a more rounded look */
+ border:0px;
+ transition: all 0.3s cubic-bezier(.55, 0.0, .28, 1.682), box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
+}
+
+button:focus {
+ background-size: 22%;
+ border: 0px;
+}
+
+button:hover {
+ background-color: @color11;
+ opacity: 0.8;
+ color: #cdd6f4;
+ background-size: 30%;
+ margin: 30px;
+ border-radius: 80px;
+ box-shadow: 0 0 50px @color7;
+}
+
+/* Adjust the size of the icon or content inside the button */
+button span {
+ font-size: 1.2em; /* Increase the font size */
+}
+
+/*
+-----------------------------------------------------
+Buttons
+-----------------------------------------------------
+*/
+
+#lock {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/lock.png"));
+}
+
+#logout {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/logout.png"));
+}
+
+#suspend {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/suspend.png"));
+}
+
+#hibernate {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/hibernate.png"));
+}
+
+#shutdown {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/shutdown.png"));
+}
+
+#reboot {
+ margin: 10px;
+ border-radius: 20px;
+ background-image: image(url("icons/reboot.png"));
+}
diff --git a/configs/dotfiles/hyprland/laptop_default/.config/xsettingsd/xsettingsd.conf b/configs/dotfiles/hyprland/laptop_default/.config/xsettingsd/xsettingsd.conf
new file mode 100644
index 0000000..5065b09
--- /dev/null
+++ b/configs/dotfiles/hyprland/laptop_default/.config/xsettingsd/xsettingsd.conf
@@ -0,0 +1,9 @@
+Net/ThemeName "Adwaita"
+Net/IconThemeName "Papirus-Dark"
+Gtk/CursorThemeName "Bibata-Modern-Ice"
+Net/EnableEventSounds 1
+EnableInputFeedbackSounds 0
+Xft/Antialias 1
+Xft/Hinting 1
+Xft/HintStyle "hintslight"
+Xft/RGBA "rgb"
diff --git a/configs/dotfiles/kitty/kitty.conf b/configs/dotfiles/kitty/kitty.conf
index 35bced2..df7c134 100644
--- a/configs/dotfiles/kitty/kitty.conf
+++ b/configs/dotfiles/kitty/kitty.conf
@@ -753,7 +753,7 @@ inactive_border_color #2f334d
#: Fade the text in inactive windows by the specified amount (a number
#: between zero and one, with zero being fully faded).
-# hide_window_decorations no
+hide_window_decorations yes
#: Hide the window decorations (title-bar and window borders) with
#: yes. On macOS, titlebar-only can be used to only hide the titlebar.
@@ -988,7 +988,7 @@ background #222436
#: The foreground and background colors.
-background_opacity 0.90
+background_opacity 0.95
#: The opacity of the background. A number between zero and one, where
#: one is opaque and zero is fully transparent. This will only work if
@@ -1009,7 +1009,7 @@ background_opacity 0.90
#: this option when reloading the config will only work if
#: dynamic_background_opacity was enabled in the original config.
-background_image ~/Pictures/Wallpapers/Best_of_the_best/ogbackground.png
+#background_image ~/Pictures/Wallpapers/ogbackground.png
#: Path to a background image. Must be in PNG format.
@@ -1023,7 +1023,7 @@ background_image_layout scaled
#: When background image is scaled, whether linear interpolation
#: should be used.
-# dynamic_background_opacity yes
+ #dynamic_background_opacity yes
#: Allow changing of the background_opacity dynamically, using either
#: keyboard shortcuts (increase_background_opacity and
@@ -1504,7 +1504,7 @@ wayland_titlebar_color #2e2f3d
#: configuration will change this value only for newly created OS
#: windows.
-linux_display_server X11
+#linux_display_server x11
#: Choose between Wayland and X11 backends. By default, an appropriate
#: backend based on the system state is chosen automatically. Set it
diff --git a/configs/dotfiles/nvim/lazy-lock.json b/configs/dotfiles/nvim/lazy-lock.json
index 534d9a2..e31d334 100644
--- a/configs/dotfiles/nvim/lazy-lock.json
+++ b/configs/dotfiles/nvim/lazy-lock.json
@@ -1,40 +1,48 @@
{
- "LuaSnip": { "branch": "master", "commit": "33b06d72d220aa56a7ce80a0dd6f06c70cd82b9d" },
+ "LuaSnip": { "branch": "master", "commit": "c1851d5c519611dfc451b6582961b2602e0af89b" },
+ "avante.nvim": { "branch": "main", "commit": "d4672b7e1ee8bf94df5e1d3482e81418187f42aa" },
"barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" },
"cloak.nvim": { "branch": "main", "commit": "648aca6d33ec011dc3166e7af3b38820d01a71e4" },
- "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
- "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" },
+ "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
+ "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
- "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
+ "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
- "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
- "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" },
- "image.nvim": { "branch": "master", "commit": "b991fc7f845bc6ab40c6ec00b39750dcd5190010" },
- "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" },
+ "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
+ "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
+ "fzf-lua": { "branch": "main", "commit": "5af306b30f699513669efdf51cf50a6deab53968" },
+ "gitsigns.nvim": { "branch": "main", "commit": "e399f9748d7cfd8859747c8d6c4e9c8b4d50a1bd" },
+ "golf": { "branch": "main", "commit": "abf1bc0c1c4a5482b4a4b36b950b49aaa0f39e69" },
+ "image.nvim": { "branch": "master", "commit": "4c51d6202628b3b51e368152c053c3fb5c5f76f2" },
+ "img-clip.nvim": { "branch": "main", "commit": "08a02e14c8c0d42fa7a92c30a98fd04d6993b35d" },
+ "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"leetcode.nvim": { "branch": "master", "commit": "db7e1cd6b9191b34b4c1f2f96e4e3949cde9f951" },
- "lsp-zero.nvim": { "branch": "v3.x", "commit": "ab2a3413646fedd77aa0eab4214a6473e62f6a64" },
- "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" },
- "mason-lspconfig.nvim": { "branch": "main", "commit": "c6c686781f9841d855bf1b926e10aa5e19430a38" },
- "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
- "neo-tree.nvim": { "branch": "v3.x", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" },
- "nerdcommenter": { "branch": "master", "commit": "66c07e4083ab02ed2540ac289cc602c70b858c13" },
- "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" },
- "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" },
- "nvim-cmp": { "branch": "main", "commit": "b555203ce4bd7ff6192e759af3362f9d217e8c89" },
- "nvim-lspconfig": { "branch": "master", "commit": "ff2b85abaa810f6611233dbe6d31c07510ebf43d" },
- "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" },
- "nvim-treesitter": { "branch": "master", "commit": "17678b00fa5c2712890a0ec2e269d0a4de1207df" },
- "nvim-treesitter-context": { "branch": "master", "commit": "2bcf700b59bc92850ca83a1c02e86ba832e0fae0" },
- "nvim-ts-autotag": { "branch": "main", "commit": "1cca23c9da708047922d3895a71032bc0449c52d" },
- "nvim-web-devicons": { "branch": "master", "commit": "63f552a7f59badc6e6b6d22e603150f0d5abebb7" },
- "nvim-window-picker": { "branch": "main", "commit": "41cfaa428577c53552200a404ae9b3a0b5719706" },
+ "lsp-zero.nvim": { "branch": "v3.x", "commit": "77550f2f6cbf0959ef1583d845661af075f3442b" },
+ "lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
+ "lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" },
+ "mason-lspconfig.nvim": { "branch": "main", "commit": "d39a75bbce4b8aad5d627191ea915179c77c100f" },
+ "mason.nvim": { "branch": "main", "commit": "888d6ee499d8089a3a4be4309d239d6be1c1e6c0" },
+ "neo-tree.nvim": { "branch": "v3.x", "commit": "f481de16a0eb59c985abac8985e3f2e2f75b4875" },
+ "nerdcommenter": { "branch": "master", "commit": "02a3b6455fa07b61b9440a78732f1e9b7876c991" },
+ "nui.nvim": { "branch": "main", "commit": "f535005e6ad1016383f24e39559833759453564e" },
+ "nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
+ "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
+ "nvim-lspconfig": { "branch": "master", "commit": "ac1dfbe3b60e5e23a2cff90e3bd6a3bc88031a57" },
+ "nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" },
+ "nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" },
+ "nvim-treesitter-context": { "branch": "master", "commit": "5c48b8ba1b0b7b25feb6e34e7eb293ea893aedc4" },
+ "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
+ "nvim-web-devicons": { "branch": "master", "commit": "d360317f8f509b99229bb31d42269987696df6ff" },
+ "nvim-window-picker": { "branch": "main", "commit": "6382540b2ae5de6c793d4aa2e3fe6dbb518505ec" },
"playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" },
- "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
- "refactoring.nvim": { "branch": "master", "commit": "2db6d378e873de31d18ade549c2edba64ff1c2e3" },
+ "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
+ "refactoring.nvim": { "branch": "master", "commit": "2be7ea3f10b7e59658f5abf6dffc50b5d61964d6" },
+ "render-markdown.nvim": { "branch": "main", "commit": "a1b0988f5ab26698afb56b9c2f0525a4de1195c1" },
+ "rest.nvim": { "branch": "main", "commit": "2ded89dbda1fd3c1430685ffadf2df8beb28336d" },
"supermaven-nvim": { "branch": "main", "commit": "07d20fce48a5629686aefb0a7cd4b25e33947d50" },
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
- "tokyonight.nvim": { "branch": "main", "commit": "45d22cf0e1b93476d3b6d362d720412b3d34465c" },
- "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" },
- "undotree": { "branch": "master", "commit": "78b5241191852ffa9bb5da5ff2ee033160798c3b" },
- "vim-fugitive": { "branch": "master", "commit": "fcb4db52e7f65b95705aa58f0f2df1312c1f2df2" }
+ "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
+ "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
+ "undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" },
+ "vim-fugitive": { "branch": "master", "commit": "4a745ea72fa93bb15dd077109afbb3d1809383f2" }
}
diff --git a/configs/dotfiles/nvim/lua/gib_nvim/avante.lua b/configs/dotfiles/nvim/lua/gib_nvim/avante.lua
new file mode 100644
index 0000000..8e64359
--- /dev/null
+++ b/configs/dotfiles/nvim/lua/gib_nvim/avante.lua
@@ -0,0 +1,126 @@
+require('avante').setup({
+ --provider = "openai",
+ --openai = {
+ --endpoint = "https://api.openai.com/v1",
+ --model = "gpt-4o", -- your desired model (or use gpt-4o, etc.)
+ --timeout = 30000, -- Timeout in milliseconds, increase this for reasoning models
+ --temperature = 0,
+ --max_completion_tokens = 8192, -- Increase this to include reasoning tokens (for reasoning models)
+ ----reasoning_effort = "medium", -- low|medium|high, only used for reasoning models
+ --},
+ provider = "claude",
+ mode = "agentic",
+ auto_suggestions_provider = "claude",
+ claude = {
+ endpoint = "https://api.anthropic.com",
+ model = "claude-3-7-sonnet-latest",
+ temperature = 0,
+ max_tokens = 4096,
+ },
+ dual_boost = {
+ enabled = false,
+ --first_provider = "openai",
+ --second_provider = "claude",
+ --prompt = "Based on the two reference outputs below, generate a response that incorporates elements from both but reflects your own judgment and unique perspective. Do not provide any explanation, just give the response directly. Reference Output 1: [{{provider1_output}}], Reference Output 2: [{{provider2_output}}]",
+ --timeout = 60000, -- in milliseconds
+ },
+ behaviour = {
+ --auto_suggestions = false,
+ --auto_set_highlight_group = true,
+ --auto_set_keymaps = true,
+ --auto_apply_diff_after_generation = false,
+ --support_paste_from_clipboard = false,
+ --minimize_diff = true, -- Whether to remove unchanged lines when applying a code block
+ --enable_token_counting = true, -- Whether to enable token counting. Default to true.
+ },
+ mappings = {
+ --- @class AvanteConflictMappings
+ diff = {
+ ours = "co",
+ theirs = "ct",
+ all_theirs = "ca",
+ both = "cb",
+ cursor = "cc",
+ next = "]x",
+ prev = "[x",
+ },
+ suggestion = {
+ accept = "",
+ next = "",
+ prev = "",
+ dismiss = "",
+ },
+ jump = {
+ next = "]]",
+ prev = "[[",
+ },
+ submit = {
+ normal = "",
+ insert = "",
+ },
+ cancel = {
+ normal = { "", "", "q" },
+ insert = { "" },
+ },
+ sidebar = {
+ apply_all = "A",
+ apply_cursor = "a",
+ retry_user_request = "r",
+ edit_user_request = "e",
+ switch_windows = "",
+ reverse_switch_windows = "",
+ remove_file = "d",
+ add_file = "@",
+ close = { "", "q" },
+ close_from_input = nil, -- e.g., { normal = "", insert = "" }
+ },
+ },
+ hints = { enabled = true },
+ windows = {
+ ---@type "right" | "left" | "top" | "bottom"
+ position = "right", -- the position of the sidebar
+ wrap = true, -- similar to vim.o.wrap
+ width = 30, -- default % based on available width
+ sidebar_header = {
+ enabled = true, -- true, false to enable/disable the header
+ align = "center", -- left, center, right for title
+ rounded = true,
+ },
+ input = {
+ prefix = "> ",
+ height = 8, -- Height of the input window in vertical layout
+ },
+ edit = {
+ border = "rounded",
+ start_insert = true, -- Start insert mode when opening the edit window
+ },
+ ask = {
+ floating = false, -- Open the 'AvanteAsk' prompt in a floating window
+ start_insert = true, -- Start insert mode when opening the ask window
+ border = "rounded",
+ ---@type "ours" | "theirs"
+ focus_on_apply = "ours", -- which diff to focus after applying
+ },
+ },
+ highlights = {
+ ---@type AvanteConflictHighlights
+ diff = {
+ current = "DiffText",
+ incoming = "DiffAdd",
+ },
+ },
+ --- @class AvanteConflictUserConfig
+ diff = {
+ autojump = true,
+ ---@type string | fun(): any
+ list_opener = "copen",
+ --- Override the 'timeoutlen' setting while hovering over a diff (see :help timeoutlen).
+ --- Helps to avoid entering operator-pending mode with diff mappings starting with `c`.
+ --- Disable by setting to -1.
+ override_timeoutlen = 500,
+ },
+ suggestion = {
+ debounce = 600,
+ throttle = 600,
+ },
+})
diff --git a/configs/dotfiles/nvim/lua/gib_nvim/image.lua b/configs/dotfiles/nvim/lua/gib_nvim/image.lua
new file mode 100644
index 0000000..692d7d6
--- /dev/null
+++ b/configs/dotfiles/nvim/lua/gib_nvim/image.lua
@@ -0,0 +1,24 @@
+require('image').setup({
+ backend = "kitty",
+ integrations = {
+ markdown = {
+ enabled = true,
+ clear_in_insert_mode = false,
+ download_remote_images = true,
+ only_render_image_at_cursor = false,
+ filetypes = { "markdown", "vimwiki" }, -- markdown extensions (ie. quarto) can go here
+ },
+ neorg = {
+ enabled = true,
+ clear_in_insert_mode = false,
+ download_remote_images = true,
+ only_render_image_at_cursor = false,
+ filetypes = { "norg" },
+ },
+ },
+ max_width = nil,
+ max_height = nil,
+ max_width_window_percentage = nil,
+ max_height_window_percentage = 50,
+ kitty_method = "normal",
+})
diff --git a/configs/dotfiles/nvim/lua/gib_nvim/init.lua b/configs/dotfiles/nvim/lua/gib_nvim/init.lua
index 07f19d7..cbdc02f 100644
--- a/configs/dotfiles/nvim/lua/gib_nvim/init.lua
+++ b/configs/dotfiles/nvim/lua/gib_nvim/init.lua
@@ -11,6 +11,7 @@ require("gib_nvim.nerdcomments")
require("gib_nvim.refactoring")
require("gib_nvim.telescope")
require("gib_nvim.treesitter")
-require("gib_nvim.trouble")
require("gib_nvim.undotree")
require("gib_nvim.barbar")
+require("gib_nvim.avante")
+require("gib_nvim.image")
diff --git a/configs/dotfiles/nvim/lua/gib_nvim/lazy.lua b/configs/dotfiles/nvim/lua/gib_nvim/lazy.lua
index bd3f2fc..88a79b2 100644
--- a/configs/dotfiles/nvim/lua/gib_nvim/lazy.lua
+++ b/configs/dotfiles/nvim/lua/gib_nvim/lazy.lua
@@ -21,8 +21,44 @@ require("lazy").setup({
priority = 1000,
},
{
- 'folke/trouble.nvim', dependencies =
- { 'nvim-tree/nvim-web-devicons' }
+ "folke/trouble.nvim",
+ dependencies = {
+ "nvim-tree/nvim-web-devicons",
+ },
+ opts = {}, -- for default options, refer to the configuration section for custom setup.
+ cmd = "Trouble",
+ keys = {
+ {
+ "xx",
+ "Trouble diagnostics toggle",
+ desc = "Diagnostics (Trouble)",
+ },
+ {
+ "xX",
+ "Trouble diagnostics toggle filter.buf=0",
+ desc = "Buffer Diagnostics (Trouble)",
+ },
+ {
+ "cs",
+ "Trouble symbols toggle focus=false",
+ desc = "Symbols (Trouble)",
+ },
+ {
+ "cl",
+ "Trouble lsp toggle focus=false win.position=right",
+ desc = "LSP Definitions / references / ... (Trouble)",
+ },
+ {
+ "xL",
+ "Trouble loclist toggle",
+ desc = "Location List (Trouble)",
+ },
+ {
+ "xQ",
+ "Trouble qflist toggle",
+ desc = "Quickfix List (Trouble)",
+ },
+ },
},
{
'nvim-treesitter/nvim-treesitter',
@@ -58,6 +94,7 @@ require("lazy").setup({
{'hrsh7th/cmp-path'},
{'hrsh7th/cmp-buffer'},
{'hrsh7th/cmp-nvim-lua'},
+ {'onsails/lspkind.nvim'},
{'L3MON4D3/LuaSnip'},
{'saadparwaiz1/cmp_luasnip'},
{'rafamadriz/friendly-snippets'},
@@ -70,7 +107,7 @@ require("lazy").setup({
clear_suggestion = '',
accept_word = '',
},
- disable_inline_completion = false, -- for cmp
+ disable_inline_completion = true, -- for cmp
})
end,
},
@@ -112,23 +149,6 @@ require("lazy").setup({
end,
},
},
- config = function()
- require('neo-tree').setup({
- close_if_last_window = true,
- popup_border_style = "rounded",
- enable_git_status = true,
- enable_diagnostics = true,
- default_component_configs = {
- container = {
- enable_character_fade = true
- },
- indent = {
- indent_size = 2,
- padding = 1,
- }
- }
- })
- end,
},
{
'romgrk/barbar.nvim', dependencies = {
@@ -177,29 +197,56 @@ require("lazy").setup({
dependencies = {
"nvim-treesitter/nvim-treesitter",
},
- opts = {
- backend = "kitty",
- integrations = {
- markdown = {
- enabled = true,
- clear_in_insert_mode = false,
- download_remote_images = true,
- only_render_image_at_cursor = false,
- filetypes = { "markdown", "vimwiki" }, -- markdown extensions (ie. quarto) can go here
- },
- neorg = {
- enabled = true,
- clear_in_insert_mode = false,
- download_remote_images = true,
- only_render_image_at_cursor = false,
- filetypes = { "norg" },
+ },
+ {
+ "rest-nvim/rest.nvim",
+ dependencies = {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function (_, opts)
+ opts.ensure_installed = opts.ensure_installed or {}
+ table.insert(opts.ensure_installed, "http")
+ end,
+ }
+ },
+ {
+ "yetone/avante.nvim",
+ event = "VeryLazy",
+ version = false, -- Never set this value to "*"! Never!
+ build = "make", -- or `make BUILD_FROM_SOURCE=true`
+ -- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows
+ dependencies = {
+ "nvim-treesitter/nvim-treesitter",
+ "stevearc/dressing.nvim",
+ "nvim-lua/plenary.nvim",
+ "MunifTanjim/nui.nvim",
+ --- The below dependencies are optional,
+ "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
+ "ibhagwan/fzf-lua", -- for file_selector provider fzf
+ "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
+ {
+ -- support for image pasting
+ "HakonHarnes/img-clip.nvim",
+ event = "VeryLazy",
+ opts = {
+ -- recommended settings
+ default = {
+ embed_image_as_base64 = false,
+ prompt_for_file_name = false,
+ drag_and_drop = {
+ insert_mode = true,
+ },
+ },
},
},
- max_width = nil,
- max_height = nil,
- max_width_window_percentage = nil,
- max_height_window_percentage = 50,
- kitty_method = "normal",
+ {
+ -- Make sure to set this up properly if you have lazy=true
+ 'MeanderingProgrammer/render-markdown.nvim',
+ opts = {
+ file_types = { "markdown", "Avante" },
+ },
+ ft = { "markdown", "Avante" },
+ },
},
},
+ { 'vuciv/golf' },
})
diff --git a/configs/dotfiles/nvim/lua/gib_nvim/lsp.lua b/configs/dotfiles/nvim/lua/gib_nvim/lsp.lua
index 4cc125b..9f115bd 100644
--- a/configs/dotfiles/nvim/lua/gib_nvim/lsp.lua
+++ b/configs/dotfiles/nvim/lua/gib_nvim/lsp.lua
@@ -1,4 +1,5 @@
local lsp = require('lsp-zero')
+local lspkind = require('lspkind')
lsp.preset('recommended')
@@ -29,8 +30,6 @@ require('mason').setup({
require('mason-lspconfig').setup({
ensure_installed = {
'bashls',
- 'cssls',
- 'cssmodules_ls',
'docker_compose_language_service',
'dockerls',
'eslint',
@@ -40,7 +39,6 @@ require('mason-lspconfig').setup({
'pyright',
'rust_analyzer',
'sqlls',
- 'svelte',
'tailwindcss',
'yamlls',
},
@@ -63,20 +61,63 @@ cmp.setup({
end,
},
sources = {
- --{name = 'supermaven'},
+ {name = 'supermaven'},
{name = 'path'},
{name = 'nvim_lsp'},
{name = 'nvim_lua'},
{name = 'luasnip', keyword_length = 2},
{name = 'buffer', keyword_length = 3},
},
- formatting = lsp.cmp_format(),
+ formatting = {
+ format = lspkind.cmp_format({
+ mode = 'symbol',
+ maxwidth = {
+ menu = 50,
+ abbr = 50,
+ },
+ symbol_map = {
+ Supermaven = "",
+ },
+ ellipsis_char = '...',
+ show_labelDetails = true,
+ before = function (entry, vim_item)
+ -- ...
+ return vim_item
+ end
+ })
+ },
mapping = cmp.mapping.preset.insert({
- [''] = cmp.mapping.select_prev_item(cmp_select),
- [''] = cmp.mapping.select_next_item(cmp_select),
+ -- Tab to select the next item
+ [''] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ if cmp.get_selected_entry() then
+ cmp.confirm({select = false})
+ else
+ cmp.select_next_item()
+ end
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+
[''] = cmp.mapping.confirm({ select = true }),
[''] = cmp.mapping.complete(),
+ [''] = cmp.mapping.abort(),
+ [''] = cmp.mapping.select_prev_item(cmp_select),
+ [''] = cmp.mapping.select_next_item(cmp_select),
+ [''] = cmp.mapping.scroll_docs(4),
+ [''] = cmp.mapping.scroll_docs(-4),
}),
+ preselect = cmp.PreselectMode.Item,
+ completion = {
+ completeopt = 'menu,menuone,noinsert',
+ }
+ --mapping = cmp.mapping.preset.insert({
+ --[''] = cmp.mapping.select_prev_item(cmp_select),
+ --[''] = cmp.mapping.select_next_item(cmp_select),
+ --[''] = cmp.mapping.confirm({ select = true }),
+ --[''] = cmp.mapping.complete(),
+ --}),
})
lsp.setup()
diff --git a/configs/dotfiles/nvim/lua/gib_nvim/neotree.lua b/configs/dotfiles/nvim/lua/gib_nvim/neotree.lua
index 387bce3..5308d9b 100644
--- a/configs/dotfiles/nvim/lua/gib_nvim/neotree.lua
+++ b/configs/dotfiles/nvim/lua/gib_nvim/neotree.lua
@@ -196,6 +196,30 @@ require("neo-tree").setup({
-- window like netrw would, regardless of window.position
-- "disabled", -- netrw left alone, neo-tree does not handle opening dirs
use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes
+
+ commands = {
+ avante_add_files = function(state)
+ local node = state.tree:get_node()
+ local filepath = node:get_id()
+ local relative_path = require('avante.utils').relative_path(filepath)
+
+ local sidebar = require('avante').get()
+
+ local open = sidebar:is_open()
+ -- ensure avante sidebar is open
+ if not open then
+ require('avante.api').ask()
+ sidebar = require('avante').get()
+ end
+
+ sidebar.file_selector:add_selected_file(relative_path)
+
+ -- remove neo tree buffer
+ if not open then
+ sidebar.file_selector:remove_selected_file('neo-tree filesystem [1]')
+ end
+ end,
+ },
-- instead of relying on nvim autocmd events.
window = {
mappings = {
@@ -211,6 +235,7 @@ require("neo-tree").setup({
["[g"] = "prev_git_modified",
["]g"] = "next_git_modified",
["o"] = { "show_help", nowait=false, config = { title = "Order by", prefix_key = "o" }},
+ ['oa'] = 'avante_add_files',
["oc"] = { "order_by_created", nowait = false },
["od"] = { "order_by_diagnostics", nowait = false },
["og"] = { "order_by_git_status", nowait = false },
@@ -227,7 +252,6 @@ require("neo-tree").setup({
},
},
- commands = {} -- Add a custom command or override a global one using the same function name
},
buffers = {
follow_current_file = {
diff --git a/configs/dotfiles/nvim/lua/gib_nvim/set.lua b/configs/dotfiles/nvim/lua/gib_nvim/set.lua
index 0d8a3f0..d0f92ba 100644
--- a/configs/dotfiles/nvim/lua/gib_nvim/set.lua
+++ b/configs/dotfiles/nvim/lua/gib_nvim/set.lua
@@ -25,6 +25,8 @@ vim.opt.signcolumn = "yes"
vim.opt.isfname:append("@-@")
vim.opt.updatetime = 50
+vim.cmd([[set list]])
+vim.cmd([[set listchars=trail:⋅]])
vim.opt.colorcolumn = "120"
vim.o.background = "dark" -- or "light" for light mode
diff --git a/configs/dotfiles/nvim/lua/gib_nvim/treesitter.lua b/configs/dotfiles/nvim/lua/gib_nvim/treesitter.lua
index 088cbda..dfc3205 100644
--- a/configs/dotfiles/nvim/lua/gib_nvim/treesitter.lua
+++ b/configs/dotfiles/nvim/lua/gib_nvim/treesitter.lua
@@ -1,6 +1,38 @@
require'nvim-treesitter.configs'.setup {
-- A list of parser names, or "all"
- ensure_installed = { "bash", "c", "c_sharp", "cmake", "cpp", "css", "dockerfile", "git_config", "git_rebase", "gitattributes", "gitcommit", "gitignore", "haskell", "html", "java", "javascript", "jq", "json", "kotlin", "lua", "make", "matlab", "php", "python", "rust", "scala", "sql", "svelte", "swift", "typescript", "vimdoc", "yaml", "zig" },
+ ensure_installed = {
+ "bash",
+ "c",
+ "cmake",
+ "cpp",
+ "css",
+ "dockerfile",
+ "git_config",
+ "git_rebase",
+ "gitattributes",
+ "gitcommit",
+ "gitignore",
+ "haskell",
+ "html",
+ "java",
+ "javascript",
+ "json",
+ "kotlin",
+ "lua",
+ "make",
+ "php",
+ "python",
+ "rust",
+ "scala",
+ "sql",
+ "svelte",
+ "swift",
+ "tsx",
+ "typescript",
+ "vimdoc",
+ "yaml",
+ "zig"
+ },
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
@@ -9,14 +41,24 @@ require'nvim-treesitter.configs'.setup {
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
- highlight = {
- -- `false` will disable the whole extension
- enable = true,
+
+ highlight = {
+ enable = true,
+ disable = function(lang, buf)
+ local max_filesize = 80 * 1024 -- 80 KB
+ if lang == "tsx" then
+ local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
+ if ok and stats and stats.size > max_filesize then
+ return true
+ end
+ end
+ end,
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
- additional_vim_regex_highlighting = false,
+ --additional_vim_regex_highlighting = true,
+ additional_vim_regex_highlighting = {"tsx"},
},
}
diff --git a/configs/dotfiles/powerline/colors.json b/configs/dotfiles/powerline/colors.json
deleted file mode 100644
index 8c655e0..0000000
--- a/configs/dotfiles/powerline/colors.json
+++ /dev/null
@@ -1,132 +0,0 @@
-{
- "colors": {
- "black": 16,
- "black2": 18,
- "white": 231,
-
- "green": 2,
- "darkestgreen": 22,
- "darkgreen": 28,
- "mediumgreen": 70,
- "brightgreen": 148,
-
- "darkestcyan": 23,
- "darkcyan": 75,
- "mediumcyan": 117,
- "brightcyan": 159,
-
- "goodblue": 12,
- "darkestblue": 24,
- "darkblue": 31,
-
- "red": 1,
- "darkestred": 52,
- "darkred": 88,
- "mediumred": 124,
- "brightred": 160,
- "brightestred": 196,
-
- "darkestpurple": 55,
- "mediumpurple": 98,
- "brightpurple": 189,
-
- "darkorange": 67,
- "mediumorange": 67,
- "brightorange": 67,
- "brightestorange": 67,
- "darkornge": 94,
- "mediumornge": 166,
- "brightornge": 208,
- "brightestornge": 214,
-
-
- "yellow": 11,
- "brightyellow": 189,
-
- "goodgray": 8,
- "gray0": 233,
- "gray1": 235,
- "gray2": 236,
- "gray3": 238,
- "gray4": 240,
- "gray5": 241,
- "gray6": 244,
- "gray7": 245,
- "gray8": 247,
- "gray9": 250,
- "gray10": 252,
-
- "gray11": 234,
- "gray90": 254,
-
- "gray70": [249, "b3b3b3"],
-
- "lightyellowgreen": 106,
- "gold3": 178,
- "orangered": 202,
-
- "steelblue": 67,
- "darkorange3": 166,
- "skyblue1": 117,
- "khaki1": 228,
-
- "solarized:base03": [8, "002b36"],
- "solarized:base02": [0, "073642"],
- "solarized:base01": [10, "586e75"],
- "solarized:base00": [11, "657b83"],
- "solarized:base0": [12, "839496"],
- "solarized:base1": [14, "93a1a1"],
- "solarized:base2": [7, "eee8d5"],
- "solarized:base3": [15, "fdf6e3"],
- "solarized:yellow": [3, "b58900"],
- "solarized:orange": [9, "cb4b16"],
- "solarized:red": [1, "dc322f"],
- "solarized:magenta": [5, "d33682"],
- "solarized:violet": [13, "6c71c4"],
- "solarized:blue": [4, "268bd2"],
- "solarized:cyan": [6, "2aa198"],
- "solarized:green": [2, "859900"]
- },
- "gradients": {
- "dark_GREEN_Orange_red": [
- [22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 94, 94, 94, 94, 94, 94, 94, 88, 52],
- ["006000", "006000", "006000", "006000", "006000", "006000", "006000", "006000", "006000", "036000", "076000", "0a6000", "0d6000", "106000", "126000", "146000", "166000", "186000", "1a6000", "1b6000", "1d6000", "1e6000", "206000", "216000", "236000", "246000", "256000", "266000", "286000", "296000", "2a6000", "2b6000", "2c6100", "2d6100", "2f6100", "306100", "316100", "326100", "336100", "346100", "356100", "366100", "376100", "386100", "386100", "396100", "3a6100", "3b6100", "3c6100", "3d6100", "3e6100", "3f6100", "406100", "406100", "416100", "426000", "436000", "446000", "456000", "456000", "466000", "476000", "486000", "496000", "496000", "4a6000", "4b6000", "4c6000", "4d6000", "4d6000", "4e6000", "4f6000", "506000", "506000", "516000", "526000", "536000", "536000", "546000", "556000", "566000", "566000", "576000", "586000", "596000", "596000", "5a6000", "5d6000", "616000", "646000", "686000", "6b6000", "6f6000", "726000", "766000", "796000", "7d6000", "806000", "7e5500", "6f3105", "5d0001"]
- ],
- "GREEN_Orange_red": [
- [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1],
- ["005f00", "015f00", "025f00", "035f00", "045f00", "055f00", "065f00", "075f00", "085f00", "095f00", "0b5f00", "0c5f00", "0d5f00", "0e5f00", "0f5f00", "105f00", "115f00", "125f00", "135f00", "145f00", "165f00", "175f00", "185f00", "195f00", "1a5f00", "1b5f00", "1c5f00", "1d5f00", "1e5f00", "1f5f00", "215f00", "225f00", "235f00", "245f00", "255f00", "265f00", "275f00", "285f00", "295f00", "2a5f00", "2c5f00", "2d5f00", "2e5f00", "2f5f00", "305f00", "315f00", "325f00", "335f00", "345f00", "355f00", "375f00", "385f00", "395f00", "3a5f00", "3b5f00", "3c5f00", "3d5f00", "3e5f00", "3f5f00", "415f00", "425f00", "435f00", "445f00", "455f00", "465f00", "475f00", "485f00", "495f00", "4a5f00", "4c5f00", "4d5f00", "4e5f00", "4f5f00", "505f00", "515f00", "525f00", "535f00", "545f00", "555f00", "575f00", "585f00", "595f00", "5a5f00", "5b5f00", "5c5f00", "5d5f00", "5e5f00", "615f00", "655f00", "685f00", "6c5f00", "6f5f00", "735f00", "765f00", "7a5f00", "7d5f00", "815f00", "845f00", "815200", "702900"]
- ],
- "green_yellow_red": [
- [190, 184, 178, 172, 166, 160],
- ["8ae71c", "8ce71c", "8fe71c", "92e71c", "95e71d", "98e71d", "9ae71d", "9de71d", "a0e71e", "a3e71e", "a6e71e", "a8e71e", "abe71f", "aee71f", "b1e71f", "b4e71f", "b6e720", "b9e720", "bce720", "bfe720", "c2e821", "c3e721", "c5e621", "c7e521", "c9e522", "cbe422", "cde322", "cfe222", "d1e223", "d3e123", "d5e023", "d7df23", "d9df24", "dbde24", "dddd24", "dfdc24", "e1dc25", "e3db25", "e5da25", "e7d925", "e9d926", "e9d626", "e9d426", "e9d126", "e9cf27", "e9cc27", "e9ca27", "e9c727", "e9c528", "e9c228", "e9c028", "e9bd28", "e9bb29", "e9b829", "e9b629", "e9b329", "e9b12a", "e9ae2a", "e9ac2a", "e9a92a", "eaa72b", "eaa42b", "eaa22b", "ea9f2b", "ea9d2c", "ea9b2c", "ea982c", "ea962c", "ea942d", "ea912d", "ea8f2d", "ea8d2d", "ea8a2e", "ea882e", "ea862e", "ea832e", "ea812f", "ea7f2f", "ea7c2f", "ea7a2f", "eb7830", "eb7530", "eb7330", "eb7130", "eb6f31", "eb6c31", "eb6a31", "eb6831", "eb6632", "eb6332", "eb6132", "eb5f32", "eb5d33", "eb5a33", "eb5833", "eb5633", "eb5434", "eb5134", "eb4f34", "eb4d34", "ec4b35"]
- ],
- "green_yellow_orange_red": [
- [2, 3, 9, 1],
- ["719e07", "739d06", "759c06", "779c06", "799b06", "7b9a05", "7d9a05", "7f9905", "819805", "839805", "859704", "879704", "899604", "8b9504", "8d9504", "8f9403", "919303", "949303", "969203", "989102", "9a9102", "9c9002", "9e9002", "a08f02", "a28e01", "a48e01", "a68d01", "a88c01", "aa8c01", "ac8b00", "ae8a00", "b08a00", "b28900", "b58900", "b58700", "b68501", "b78302", "b78102", "b87f03", "b97d04", "b97b04", "ba7905", "bb7806", "bb7606", "bc7407", "bd7208", "bd7008", "be6e09", "bf6c0a", "bf6a0a", "c0690b", "c1670c", "c1650c", "c2630d", "c3610e", "c35f0e", "c45d0f", "c55b10", "c55a10", "c65811", "c75612", "c75412", "c85213", "c95014", "c94e14", "ca4c15", "cb4b16", "cb4a16", "cc4917", "cc4818", "cd4719", "cd4719", "ce461a", "ce451b", "cf441c", "cf441c", "d0431d", "d0421e", "d1411f", "d1411f", "d24020", "d23f21", "d33e22", "d33e22", "d43d23", "d43c24", "d53b25", "d53b25", "d63a26", "d63927", "d73828", "d73828", "d83729", "d8362a", "d9352b", "d9352b", "da342c", "da332d", "db322e", "dc322f"]
- ],
- "yellow_red": [
- [220, 178, 172, 166, 160],
- ["ffd700", "fdd500", "fbd300", "fad200", "f8d000", "f7cf00", "f5cd00", "f3cb00", "f2ca00", "f0c800", "efc700", "edc500", "ebc300", "eac200", "e8c000", "e7bf00", "e5bd00", "e3bb00", "e2ba00", "e0b800", "dfb700", "ddb500", "dbb300", "dab200", "d8b000", "d7af00", "d7ad00", "d7ab00", "d7aa00", "d7a800", "d7a700", "d7a500", "d7a300", "d7a200", "d7a000", "d79f00", "d79d00", "d79b00", "d79a00", "d79800", "d79700", "d79500", "d79300", "d79200", "d79000", "d78f00", "d78d00", "d78b00", "d78a00", "d78800", "d78700", "d78500", "d78300", "d78200", "d78000", "d77f00", "d77d00", "d77b00", "d77a00", "d77800", "d77700", "d77500", "d77300", "d77200", "d77000", "d76f00", "d76d00", "d76b00", "d76a00", "d76800", "d76700", "d76500", "d76300", "d76200", "d76000", "d75f00", "d75b00", "d75700", "d75300", "d74f00", "d74c00", "d74800", "d74400", "d74000", "d73c00", "d73900", "d73500", "d73100", "d72d00", "d72900", "d72600", "d72200", "d71e00", "d71a00", "d71600", "d71300", "d70f00", "d70b00", "d70700"]
- ],
- "yellow_orange_red": [
- [3, 9, 1],
- ["b58900", "b58700", "b58600", "b68501", "b68401", "b78202", "b78102", "b88003", "b87f03", "b87d03", "b97c04", "b97b04", "ba7a05", "ba7805", "bb7706", "bb7606", "bc7507", "bc7307", "bc7207", "bd7108", "bd7008", "be6e09", "be6d09", "bf6c0a", "bf6b0a", "c06a0b", "c0680b", "c0670b", "c1660c", "c1650c", "c2630d", "c2620d", "c3610e", "c3600e", "c35e0e", "c45d0f", "c45c0f", "c55b10", "c55910", "c65811", "c65711", "c75612", "c75412", "c75312", "c85213", "c85113", "c94f14", "c94e14", "ca4d15", "ca4c15", "cb4b16", "cb4a16", "cb4a17", "cc4917", "cc4918", "cc4818", "cd4819", "cd4719", "cd471a", "ce461a", "ce461b", "ce451b", "cf451c", "cf441c", "cf441d", "d0431d", "d0431e", "d0421e", "d1421f", "d1411f", "d14120", "d24020", "d24021", "d23f21", "d33f22", "d33e22", "d33e23", "d43d23", "d43d24", "d43c24", "d53c25", "d53b25", "d53b26", "d63a26", "d63a27", "d63927", "d73928", "d73828", "d73829", "d83729", "d8372a", "d8362a", "d9362b", "d9352b", "d9352c", "da342c", "da342d", "da332d", "db332e"]
- ],
- "blue_red": [
- [39, 74, 68, 67, 103, 97, 96, 132, 131, 167, 203, 197],
- ["19b4fe", "1bb2fc", "1db1fa", "1faff8", "22aef6", "24adf4", "26abf2", "29aaf0", "2ba9ee", "2da7ec", "30a6ea", "32a5e8", "34a3e6", "36a2e4", "39a0e2", "3b9fe1", "3d9edf", "409cdd", "429bdb", "449ad9", "4798d7", "4997d5", "4b96d3", "4d94d1", "5093cf", "5292cd", "5490cb", "578fc9", "598dc7", "5b8cc6", "5e8bc4", "6089c2", "6288c0", "6487be", "6785bc", "6984ba", "6b83b8", "6e81b6", "7080b4", "727eb2", "757db0", "777cae", "797aac", "7b79ab", "7e78a9", "8076a7", "8275a5", "8574a3", "8772a1", "89719f", "8c709d", "8e6e9b", "906d99", "926b97", "956a95", "976993", "996791", "9c668f", "9e658e", "a0638c", "a3628a", "a56188", "a75f86", "a95e84", "ac5c82", "ae5b80", "b05a7e", "b3587c", "b5577a", "b75678", "ba5476", "bc5374", "be5273", "c05071", "c34f6f", "c54e6d", "c74c6b", "ca4b69", "cc4967", "ce4865", "d14763", "d34561", "d5445f", "d7435d", "da415b", "dc4059", "de3f58", "e13d56", "e33c54", "e53a52", "e83950", "ea384e", "ec364c", "ee354a", "f13448", "f33246", "f53144", "f83042", "fa2e40"]
- ],
- "white_red": [
- [231, 255, 223, 216, 209, 202, 196],
- ["ffffff", "fefefe", "fdfdfd", "fdfdfd", "fcfcfc", "fbfbfb", "fafafa", "fafafa", "f9f9f9", "f8f8f8", "f7f7f7", "f7f7f7", "f6f6f6", "f5f5f5", "f4f4f4", "f4f3f4", "f3f3f3", "f2f2f2", "f1f1f1", "f0f0f0", "f0f0f0", "efefef", "eeeeee", "efecea", "f1eae4", "f2e8de", "f3e6d8", "f5e4d3", "f6e2cd", "f7e0c7", "f8dec2", "f9dcbc", "fadab6", "fad8b1", "fbd5ac", "fbd2a9", "fbcea5", "fbcaa1", "fbc79e", "fbc39a", "fbc097", "fbbc93", "fbb88f", "fbb58c", "fab188", "faad85", "faaa81", "fba67e", "fba37a", "fb9f76", "fb9c73", "fb986f", "fb946c", "fb9168", "fa8d65", "fa8961", "fa865c", "fa8256", "fb7f4f", "fb7b48", "fb7841", "fb743a", "fb7133", "fb6d2c", "fa6a23", "fa661a", "fa620e", "fa5f03", "fa5d03", "fa5b03", "fa5a03", "fa5803", "fa5703", "fa5503", "fa5303", "fa5103", "fa4f03", "fa4e03", "fa4c03", "fa4a04", "fa4804", "fa4604", "fa4404", "fa4204", "fa3f04", "fa3d04", "fa3b04", "fa3805", "fa3605", "fa3305", "fb3105", "fb2e05", "fb2a05", "fb2705", "fb2306", "fb1f06", "fb1b06", "fb1506", "fb0e06", "fa0506", "fa0007"]
- ],
- "dark_green_gray": [
- [70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247],
- ["51b000", "52b000", "54b000", "55b002", "56b007", "57b00d", "58b011", "59af15", "5aaf18", "5caf1b", "5daf1e", "5eaf21", "5faf23", "60ae25", "61ae27", "62ae2a", "63ae2c", "64ae2e", "65ae30", "66ae31", "67ad33", "68ad35", "69ad37", "69ad38", "6aad3a", "6bad3c", "6cac3d", "6dac3f", "6eac40", "6fac42", "70ac44", "70ac45", "71ab47", "72ab48", "73ab49", "74ab4b", "75ab4c", "75ab4e", "76aa4f", "77aa51", "78aa52", "79aa53", "79aa55", "7aaa56", "7ba957", "7ca959", "7ca95a", "7da95b", "7ea95d", "7fa95e", "7fa85f", "80a861", "81a862", "81a863", "82a865", "83a766", "83a767", "84a768", "85a76a", "85a76b", "86a66c", "87a66d", "87a66f", "88a670", "89a671", "89a672", "8aa574", "8ba575", "8ba576", "8ca577", "8da579", "8da47a", "8ea47b", "8ea47c", "8fa47d", "90a47f", "90a380", "91a381", "91a382", "92a384", "93a385", "93a286", "94a287", "94a288", "95a28a", "95a18b", "96a18c", "97a18d", "97a18e", "98a190", "98a091", "99a092", "99a093", "9aa094", "9aa096", "9b9f97", "9b9f98", "9c9f99", "9c9f9a", "9d9e9c", "9d9e9d"]
- ],
- "light_green_gray": [
- [148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250],
- ["a3d900", "a4d800", "a4d800", "a5d805", "a5d80d", "a6d714", "a6d719", "a6d71d", "a7d621", "a7d625", "a8d628", "a8d62b", "a8d52e", "a9d531", "a9d533", "aad536", "aad438", "aad43a", "abd43d", "abd33f", "abd341", "acd343", "acd345", "acd247", "add249", "add24b", "add14d", "aed14f", "aed151", "aed152", "afd054", "afd056", "afd058", "b0d059", "b0cf5b", "b0cf5d", "b1cf5e", "b1ce60", "b1ce62", "b1ce63", "b2ce65", "b2cd67", "b2cd68", "b3cd6a", "b3cc6b", "b3cc6d", "b3cc6e", "b4cc70", "b4cb71", "b4cb73", "b4cb75", "b5ca76", "b5ca78", "b5ca79", "b5ca7a", "b6c97c", "b6c97d", "b6c97f", "b6c880", "b6c882", "b7c883", "b7c885", "b7c786", "b7c788", "b7c789", "b8c68a", "b8c68c", "b8c68d", "b8c68f", "b8c590", "b9c591", "b9c593", "b9c494", "b9c496", "b9c497", "b9c498", "bac39a", "bac39b", "bac39d", "bac29e", "bac29f", "bac2a1", "bac2a2", "bac1a4", "bbc1a5", "bbc1a6", "bbc0a8", "bbc0a9", "bbc0aa", "bbc0ac", "bbbfad", "bbbfae", "bbbfb0", "bbbeb1", "bcbeb3", "bcbeb4", "bcbdb5", "bcbdb7", "bcbdb8", "bcbdb9", "bcbcbb"]
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/default.json b/configs/dotfiles/powerline/colorschemes/default.json
deleted file mode 100644
index 3db0ffa..0000000
--- a/configs/dotfiles/powerline/colorschemes/default.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "Default",
- "groups": {
- "information:additional": { "fg": "goodblue", "bg": "goodgray", "attrs": [] },
- "information:regular": { "fg": "goodblue", "bg": "goodgray", "attrs": ["bold"] },
- "information:highlighted": { "fg": "white", "bg": "gray4", "attrs": [] },
- "information:priority": { "fg": "brightpurple", "bg": "steelblue", "attrs": [] },
- "warning:regular": { "fg": "white", "bg": "brightred", "attrs": ["bold"] },
- "critical:failure": { "fg": "white", "bg": "darkestred", "attrs": [] },
- "critical:success": { "fg": "white", "bg": "darkestgreen", "attrs": [] },
- "background": { "fg": "white", "bg": "gray0", "attrs": [] },
- "background:divider": { "fg": "gray5", "bg": "gray0", "attrs": [] },
- "session": { "fg": "black", "bg": "gray10", "attrs": ["bold"] },
- "date": { "fg": "gray8", "bg": "gray2", "attrs": [] },
- "time": { "fg": "gray10", "bg": "gray2", "attrs": ["bold"] },
- "time:divider": { "fg": "gray5", "bg": "gray2", "attrs": [] },
- "email_alert": "warning:regular",
- "email_alert_gradient": { "fg": "white", "bg": "yellow_orange_red", "attrs": ["bold"] },
- "hostname": { "fg": "black", "bg": "gray10", "attrs": ["bold"] },
- "weather": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "weather_temp_gradient": { "fg": "blue_red", "bg": "gray0", "attrs": [] },
- "weather_condition_hot": { "fg": "khaki1", "bg": "gray0", "attrs": [] },
- "weather_condition_snowy": { "fg": "skyblue1", "bg": "gray0", "attrs": [] },
- "weather_condition_rainy": { "fg": "skyblue1", "bg": "gray0", "attrs": [] },
- "uptime": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "external_ip": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "internal_ip": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "network_load": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "network_load_gradient": { "fg": "green_yellow_orange_red", "bg": "gray0", "attrs": [] },
- "network_load_sent_gradient": "network_load_gradient",
- "network_load_recv_gradient": "network_load_gradient",
- "network_load:divider": "background:divider",
- "system_load": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "system_load_gradient": { "fg": "green_yellow_orange_red", "bg": "gray0", "attrs": [] },
- "environment": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "cpu_load_percent": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "cpu_load_percent_gradient": { "fg": "green_yellow_orange_red", "bg": "gray0", "attrs": [] },
- "battery": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "battery_gradient": { "fg": "white_red", "bg": "gray0", "attrs": [] },
- "battery_full": { "fg": "red", "bg": "gray0", "attrs": [] },
- "battery_empty": { "fg": "white", "bg": "gray0", "attrs": [] },
- "player": { "fg": "gray10", "bg": "black", "attrs": [] },
- "user": { "fg": "gray1", "bg": "goodblue", "attrs": ["bold"] },
- "branch": { "fg": "gray9", "bg": "gray2", "attrs": [] },
- "branch_dirty": { "fg": "brightyellow", "bg": "gray2", "attrs": [] },
- "branch_clean": { "fg": "gray9", "bg": "gray2", "attrs": [] },
- "branch:divider": { "fg": "gray7", "bg": "gray2", "attrs": [] },
- "stash": "branch_dirty",
- "stash:divider": "branch:divider",
- "cwd": "information:additional",
- "cwd:current_folder": "information:regular",
- "cwd:divider": { "fg": "goodblue", "bg": "goodgray", "attrs": [] },
- "virtualenv": { "fg": "white", "bg": "darkcyan", "attrs": [] },
- "attached_clients": { "fg": "gray8", "bg": "gray0", "attrs": [] },
- "workspace": "information:regular"
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/ipython/__main__.json b/configs/dotfiles/powerline/colorschemes/ipython/__main__.json
deleted file mode 100644
index 982ea35..0000000
--- a/configs/dotfiles/powerline/colorschemes/ipython/__main__.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "groups": {
- "prompt": "information:additional",
- "prompt_count": "information:highlighted"
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/pdb/__main__.json b/configs/dotfiles/powerline/colorschemes/pdb/__main__.json
deleted file mode 100644
index 01a51fe..0000000
--- a/configs/dotfiles/powerline/colorschemes/pdb/__main__.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "groups": {
- "current_code_name": "information:additional",
- "current_context": "current_code_name",
- "current_line": "information:regular",
- "current_file": "information:regular"
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/pdb/default.json b/configs/dotfiles/powerline/colorschemes/pdb/default.json
deleted file mode 100644
index b97acf7..0000000
--- a/configs/dotfiles/powerline/colorschemes/pdb/default.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "groups": {
- "stack_depth": { "fg": "gray1", "bg": "gray10", "attrs": ["bold"] }
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/pdb/solarized.json b/configs/dotfiles/powerline/colorschemes/pdb/solarized.json
deleted file mode 100644
index 2e1c787..0000000
--- a/configs/dotfiles/powerline/colorschemes/pdb/solarized.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "groups": {
- "stack_depth": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": ["bold"] }
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/shell/__main__.json b/configs/dotfiles/powerline/colorschemes/shell/__main__.json
deleted file mode 100644
index 6e3856f..0000000
--- a/configs/dotfiles/powerline/colorschemes/shell/__main__.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "groups": {
- "continuation": "cwd",
- "continuation:current": "cwd:current_folder",
- "exit_fail": "critical:failure",
- "exit_success": "critical:success",
- "jobnum": "information:priority",
- "superuser": "warning:regular"
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/shell/default.json b/configs/dotfiles/powerline/colorschemes/shell/default.json
deleted file mode 100644
index 1126feb..0000000
--- a/configs/dotfiles/powerline/colorschemes/shell/default.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "Default color scheme for shell prompts",
- "groups": {
- "hostname": { "fg": "brightyellow", "bg": "mediumorange", "attrs": [] },
- "environment": { "fg": "white", "bg": "darkestgreen", "attrs": [] },
- "mode": { "fg": "darkestgreen", "bg": "brightgreen", "attrs": ["bold"] },
- "attached_clients": { "fg": "white", "bg": "darkestgreen", "attrs": [] }
- },
- "mode_translations": {
- "vicmd": {
- "groups": {
- "mode": {"fg": "darkestcyan", "bg": "white", "attrs": ["bold"]}
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/shell/solarized.json b/configs/dotfiles/powerline/colorschemes/shell/solarized.json
deleted file mode 100644
index 69dcab1..0000000
--- a/configs/dotfiles/powerline/colorschemes/shell/solarized.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "name": "Solarized dark for shell",
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": ["bold"] }
- },
- "mode_translations": {
- "vicmd": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/solarized.json b/configs/dotfiles/powerline/colorschemes/solarized.json
deleted file mode 100644
index 7951f0b..0000000
--- a/configs/dotfiles/powerline/colorschemes/solarized.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "Solarized dark",
- "groups": {
- "information:additional": { "fg": "solarized:base2", "bg": "solarized:base01", "attrs": [] },
- "information:regular": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": ["bold"] },
- "information:highlighted": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": ["bold"]},
- "information:priority": { "fg": "solarized:base3", "bg": "solarized:yellow", "attrs": [] },
- "warning:regular": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": [] },
- "critical:failure": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": [] },
- "critical:success": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": [] },
- "background": { "fg": "solarized:base3", "bg": "solarized:base02", "attrs": [] },
- "background:divider": { "fg": "solarized:base1", "bg": "solarized:base03", "attrs": [] },
- "user": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] },
- "virtualenv": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": [] },
- "branch": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "branch_dirty": { "fg": "solarized:yellow", "bg": "solarized:base02", "attrs": [] },
- "branch_clean": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "stash": "branch_dirty",
- "email_alert_gradient": { "fg": "solarized:base3", "bg": "yellow_orange_red", "attrs": [] },
- "email_alert": "warning:regular",
- "cwd": "information:additional",
- "cwd:current_folder": "information:regular",
- "cwd:divider": { "fg": "solarized:base1", "bg": "solarized:base01", "attrs": [] },
- "network_load": { "fg": "solarized:base1", "bg": "solarized:base03", "attrs": [] },
- "network_load:divider": "network_load",
- "network_load_gradient": { "fg": "green_yellow_orange_red", "bg": "solarized:base03", "attrs": [] },
- "network_load_sent_gradient": "network_load_gradient",
- "network_load_recv_gradient": "network_load_gradient",
- "hostname": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": [] },
- "environment": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": [] },
- "attached_clients": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": [] },
- "date": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "time": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": ["bold"] },
- "time:divider": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "system_load": { "fg": "solarized:base1", "bg": "solarized:base03", "attrs": [] },
- "weather_temp_gradient": { "fg": "blue_red", "bg": "solarized:base03", "attrs": [] },
- "weather": { "fg": "solarized:base1", "bg": "solarized:base03", "attrs": [] },
- "uptime": { "fg": "solarized:base1", "bg": "solarized:base03", "attrs": [] }
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/tmux/default.json b/configs/dotfiles/powerline/colorschemes/tmux/default.json
deleted file mode 100644
index 8525fb0..0000000
--- a/configs/dotfiles/powerline/colorschemes/tmux/default.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "groups": {
- "active_window_status": {"fg": "darkblue", "bg": "gray0", "attrs": []},
- "window_status": {"fg": "gray70", "bg": "gray0", "attrs": []},
- "activity_status": {"fg": "yellow", "bg": "gray0", "attrs": []},
- "bell_status": {"fg": "red", "bg": "gray0", "attrs": []},
- "window": {"fg": "gray6", "bg": "gray0", "attrs": []},
- "window:divider": {"fg": "gray4", "bg": "gray0", "attrs": []},
- "window:current": {"fg": "mediumcyan", "bg": "darkblue", "attrs": []},
- "window_name": {"fg": "white", "bg": "darkblue", "attrs": ["bold"]},
- "session": {"fg": "black", "bg": "gray90", "attrs": ["bold"]},
- "session:prefix": {"fg": "gray90", "bg": "darkblue", "attrs": ["bold"]}
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/tmux/solarized.json b/configs/dotfiles/powerline/colorschemes/tmux/solarized.json
deleted file mode 100644
index 20c42d3..0000000
--- a/configs/dotfiles/powerline/colorschemes/tmux/solarized.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "groups": {
- "active_window_status": { "fg": "solarized:blue", "bg": "solarized:base02", "attrs": [] },
- "window_status": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "activity_status": { "fg": "solarized:yellow", "bg": "solarized:base02", "attrs": [] },
- "bell_status": { "fg": "solarized:red", "bg": "solarized:base02", "attrs": [] },
- "window": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "window:divider": { "fg": "solarized:base01", "bg": "solarized:base02", "attrs": [] },
- "window:current": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": [] },
- "window_name": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": ["bold"] },
- "session": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": [] },
- "session:prefix": { "fg": "solarized:base01", "bg": "solarized:base3", "attrs": [] }
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/vim/__main__.json b/configs/dotfiles/powerline/colorschemes/vim/__main__.json
deleted file mode 100644
index 4f2a817..0000000
--- a/configs/dotfiles/powerline/colorschemes/vim/__main__.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "groups": {
- "branch_clean": "branch",
- "environment": "information:unimportant",
- "file_size": "information:unimportant",
- "file_format": "information:unimportant",
- "file_encoding": "file_format",
- "file_bom": "file_format",
- "file_type": "file_format",
- "branch": "information:additional",
- "file_scheme": "file_name",
- "file_directory": "information:additional",
- "file_name_empty": "file_directory",
- "line_percent": "information:additional",
- "line_count": "line_current",
- "position": "information:additional",
- "single_tab": "line_current",
- "many_tabs": "line_current",
- "bufnr": "file_directory",
- "winnr": "information:unimportant",
- "tabnr": "file_directory",
- "capslock_indicator": "paste_indicator",
-
- "csv:column_number": "line_current",
- "csv:column_name": "line_current_symbol",
-
- "tab:background": "background",
- "tab:divider": "background:divider",
-
- "tab_nc:modified_indicator": "modified_indicator",
- "tab_nc:file_directory": "information:unimportant",
- "tab_nc:file_name": "tab_nc:file_directory",
- "tab_nc:tabnr": "tab_nc:file_directory",
-
- "buf_nc:file_directory": "tab_nc:file_directory",
- "buf_nc:file_name": "buf_nc:file_directory",
- "buf_nc:bufnr": "buf_nc:file_directory",
- "buf_nc:modified_indicator": "tab_nc:modified_indicator",
-
- "buf_nc_mod:file_directory": "tab_nc:file_directory",
- "buf_nc_mod:file_name": "buf_nc_mod:file_directory",
- "buf_nc_mod:bufnr": "buf_nc_mod:file_directory",
- "buf_nc_mod:modified_indicator": "tab_nc:modified_indicator",
-
-
- "commandt:label": "file_name",
- "commandt:background": "background",
- "commandt:finder": "file_name",
- "commandt:path": "file_directory"
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/vim/default.json b/configs/dotfiles/powerline/colorschemes/vim/default.json
deleted file mode 100644
index e02a160..0000000
--- a/configs/dotfiles/powerline/colorschemes/vim/default.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "name": "Default color scheme",
- "groups": {
- "information:unimportant": { "fg": "gray8", "bg": "gray2", "attrs": [] },
- "information:additional": { "fg": "gray9", "bg": "gray4", "attrs": [] },
- "background": { "fg": "white", "bg": "gray2", "attrs": [] },
- "background:divider": { "fg": "gray6", "bg": "gray2", "attrs": [] },
- "mode": { "fg": "darkestgreen", "bg": "brightgreen", "attrs": ["bold"] },
- "visual_range": { "fg": "brightestorange", "bg": "darkorange", "attrs": ["bold"] },
- "modified_indicator": { "fg": "brightyellow", "bg": "gray4", "attrs": ["bold"] },
- "paste_indicator": { "fg": "white", "bg": "mediumorange", "attrs": ["bold"] },
- "readonly_indicator": { "fg": "brightestred", "bg": "gray4", "attrs": [] },
- "branch_dirty": { "fg": "brightyellow", "bg": "gray4", "attrs": [] },
- "branch:divider": { "fg": "gray7", "bg": "gray4", "attrs": [] },
- "file_name": { "fg": "white", "bg": "gray4", "attrs": ["bold"] },
- "window_title": { "fg": "white", "bg": "gray4", "attrs": [] },
- "file_name_no_file": { "fg": "gray9", "bg": "gray4", "attrs": ["bold"] },
- "file_vcs_status": { "fg": "brightestred", "bg": "gray4", "attrs": [] },
- "file_vcs_status_M": { "fg": "brightyellow", "bg": "gray4", "attrs": [] },
- "file_vcs_status_A": { "fg": "brightgreen", "bg": "gray4", "attrs": [] },
- "line_percent": { "fg": "gray9", "bg": "gray4", "attrs": [] },
- "line_percent_gradient": { "fg": "dark_green_gray", "bg": "gray4", "attrs": [] },
- "position": { "fg": "gray9", "bg": "gray4", "attrs": [] },
- "position_gradient": { "fg": "green_yellow_red", "bg": "gray4", "attrs": [] },
- "line_current": { "fg": "gray1", "bg": "gray10", "attrs": ["bold"] },
- "line_current_symbol": { "fg": "gray1", "bg": "gray10", "attrs": [] },
- "virtcol_current_gradient": { "fg": "dark_GREEN_Orange_red", "bg": "gray10", "attrs": [] },
- "col_current": { "fg": "gray6", "bg": "gray10", "attrs": [] },
- "modified_buffers": { "fg": "brightyellow", "bg": "gray2", "attrs": [] },
- "attached_clients": { "fg": "gray8", "bg": "gray2", "attrs": [] },
- "error": { "fg": "brightestred", "bg": "darkred", "attrs": ["bold"] },
- "warning": { "fg": "brightyellow", "bg": "darkorange", "attrs": ["bold"] },
- "current_tag": { "fg": "gray9", "bg": "gray2", "attrs": [] },
-
- "tab_nc:modified_indicator": { "fg": "brightyellow", "bg": "gray2", "attrs": ["bold"] }
- },
- "mode_translations": {
- "nc": {
- "colors": {
- "brightyellow": "darkorange",
- "brightestred": "darkred",
- "gray0": "gray0",
- "gray1": "gray0",
- "gray2": "gray0",
- "gray3": "gray1",
- "gray4": "gray1",
- "gray5": "gray1",
- "gray6": "gray1",
- "gray7": "gray4",
- "gray8": "gray4",
- "gray9": "gray4",
- "gray10": "gray5",
- "white": "gray6",
- "dark_green_gray": "gray5"
- }
- },
- "i": {
- "colors": {
- "gray0": "darkestblue",
- "gray1": "darkestblue",
- "gray2": "darkestblue",
- "gray3": "darkblue",
- "gray4": "darkblue",
- "gray5": "darkestcyan",
- "gray6": "darkestcyan",
- "gray7": "darkestcyan",
- "gray8": "mediumcyan",
- "gray9": "mediumcyan",
- "gray10": "mediumcyan",
- "green_yellow_red": "gray5",
- "dark_green_gray": "light_green_gray"
- },
- "groups": {
- "mode": { "fg": "darkestcyan", "bg": "white", "attrs": ["bold"] },
- "background:divider": { "fg": "darkcyan", "bg": "darkestblue", "attrs": [] },
- "branch:divider": { "fg": "darkcyan", "bg": "darkblue", "attrs": [] }
- }
- },
- "ic": {
- "colors": {
- "gray0": "darkestblue",
- "gray1": "darkestblue",
- "gray2": "darkestblue",
- "gray3": "darkblue",
- "gray4": "darkblue",
- "gray5": "darkestcyan",
- "gray6": "darkestcyan",
- "gray7": "darkestcyan",
- "gray8": "mediumcyan",
- "gray9": "mediumcyan",
- "gray10": "mediumcyan",
- "green_yellow_red": "gray5",
- "dark_green_gray": "light_green_gray"
- },
- "groups": {
- "mode": { "fg": "darkestcyan", "bg": "white", "attrs": ["bold"] },
- "background:divider": { "fg": "darkcyan", "bg": "darkestblue", "attrs": [] },
- "branch:divider": { "fg": "darkcyan", "bg": "darkblue", "attrs": [] }
- }
- },
- "ix": {
- "colors": {
- "gray0": "darkestblue",
- "gray1": "darkestblue",
- "gray2": "darkestblue",
- "gray3": "darkblue",
- "gray4": "darkblue",
- "gray5": "darkestcyan",
- "gray6": "darkestcyan",
- "gray7": "darkestcyan",
- "gray8": "mediumcyan",
- "gray9": "mediumcyan",
- "gray10": "mediumcyan",
- "green_yellow_red": "gray5",
- "dark_green_gray": "light_green_gray"
- },
- "groups": {
- "mode": { "fg": "darkestcyan", "bg": "white", "attrs": ["bold"] },
- "background:divider": { "fg": "darkcyan", "bg": "darkestblue", "attrs": [] },
- "branch:divider": { "fg": "darkcyan", "bg": "darkblue", "attrs": [] }
- }
- },
- "v": {
- "groups": {
- "mode": { "fg": "darkorange", "bg": "brightestorange", "attrs": ["bold"] }
- }
- },
- "V": {
- "groups": {
- "mode": { "fg": "darkorange", "bg": "brightestorange", "attrs": ["bold"] }
- }
- },
- "^V": {
- "groups": {
- "mode": { "fg": "darkorange", "bg": "brightestorange", "attrs": ["bold"] }
- }
- },
- "R": {
- "groups": {
- "mode": { "fg": "white", "bg": "brightred", "attrs": ["bold"] }
- }
- },
- "Rc": {
- "groups": {
- "mode": { "fg": "white", "bg": "brightred", "attrs": ["bold"] }
- }
- },
- "Rx": {
- "groups": {
- "mode": { "fg": "white", "bg": "brightred", "attrs": ["bold"] }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/vim/solarized.json b/configs/dotfiles/powerline/colorschemes/vim/solarized.json
deleted file mode 100644
index 55cfaa7..0000000
--- a/configs/dotfiles/powerline/colorschemes/vim/solarized.json
+++ /dev/null
@@ -1,121 +0,0 @@
-{
- "name": "Solarized dark for vim",
- "groups": {
- "information:additional": { "fg": "solarized:base2", "bg": "solarized:base01", "attrs": [] },
- "information:unimportant": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": [] },
- "background": { "fg": "solarized:base3", "bg": "solarized:base02", "attrs": [] },
- "background:divider": { "fg": "solarized:base00", "bg": "solarized:base02", "attrs": [] },
- "mode": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": ["bold"] },
- "visual_range": { "fg": "solarized:green", "bg": "solarized:base3", "attrs": ["bold"] },
- "modified_indicator": { "fg": "solarized:yellow", "bg": "solarized:base01", "attrs": ["bold"] },
- "paste_indicator": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] },
- "readonly_indicator": { "fg": "solarized:red", "bg": "solarized:base01", "attrs": [] },
- "branch_dirty": { "fg": "solarized:yellow", "bg": "solarized:base01", "attrs": [] },
- "branch:divider": { "fg": "solarized:base1", "bg": "solarized:base01", "attrs": [] },
- "stash:divider": "branch:divider",
- "file_name": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": ["bold"] },
- "window_title": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": [] },
- "file_name_no_file": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": ["bold"] },
- "file_format": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "file_vcs_status": { "fg": "solarized:red", "bg": "solarized:base01", "attrs": [] },
- "file_vcs_status_M": { "fg": "solarized:yellow", "bg": "solarized:base01", "attrs": [] },
- "file_vcs_status_A": { "fg": "solarized:green", "bg": "solarized:base01", "attrs": [] },
- "line_percent": { "fg": "solarized:base3", "bg": "solarized:base00", "attrs": [] },
- "line_percent_gradient": { "fg": "green_yellow_orange_red", "bg": "solarized:base00", "attrs": [] },
- "position": { "fg": "solarized:base3", "bg": "solarized:base00", "attrs": [] },
- "position_gradient": { "fg": "green_yellow_orange_red", "bg": "solarized:base00", "attrs": [] },
- "line_current": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": ["bold"] },
- "line_current_symbol": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "virtcol_current_gradient": { "fg": "GREEN_Orange_red", "bg": "solarized:base2", "attrs": [] },
- "col_current": { "fg": "solarized:base0", "bg": "solarized:base2", "attrs": [] },
- "environment": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "attached_clients": { "fg": "solarized:base1", "bg": "solarized:base02", "attrs": [] },
- "error": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": ["bold"] },
- "warning": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] },
- "current_tag": { "fg": "solarized:base3", "bg": "solarized:base02", "attrs": ["bold"] }
- },
- "mode_translations": {
- "nc": {
- "colors": {
- "solarized:base01": "solarized:base02",
- "solarized:base00": "solarized:base02",
- "solarized:base0": "solarized:base01",
- "solarized:base1": "solarized:base00",
- "solarized:base2": "solarized:base0",
- "solarized:base3": "solarized:base1"
- }
- },
- "i": {
- "groups": {
- "background": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": [] },
- "background:divider": { "fg": "solarized:base2", "bg": "solarized:base01", "attrs": [] },
- "mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] },
- "modified_indicator": { "fg": "solarized:yellow", "bg": "solarized:base2", "attrs": ["bold"] },
- "paste_indicator": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] },
- "readonly_indicator": { "fg": "solarized:red", "bg": "solarized:base2", "attrs": [] },
- "branch": { "fg": "solarized:base01", "bg": "solarized:base2", "attrs": [] },
- "branch:divider": { "fg": "solarized:base00", "bg": "solarized:base2", "attrs": [] },
- "file_directory": { "fg": "solarized:base01", "bg": "solarized:base2", "attrs": [] },
- "file_name": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": ["bold"] },
- "file_size": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": [] },
- "file_name_no_file": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": ["bold"] },
- "file_name_empty": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": [] },
- "file_format": { "fg": "solarized:base2", "bg": "solarized:base01", "attrs": [] },
- "file_vcs_status": { "fg": "solarized:red", "bg": "solarized:base2", "attrs": [] },
- "file_vcs_status_M": { "fg": "solarized:yellow", "bg": "solarized:base2", "attrs": [] },
- "file_vcs_status_A": { "fg": "solarized:green", "bg": "solarized:base2", "attrs": [] },
- "line_percent": { "fg": "solarized:base3", "bg": "solarized:base1", "attrs": [] },
- "line_percent_gradient": { "fg": "solarized:base3", "bg": "solarized:base1", "attrs": [] },
- "position": { "fg": "solarized:base3", "bg": "solarized:base1", "attrs": [] },
- "position_gradient": { "fg": "solarized:base3", "bg": "solarized:base1", "attrs": [] },
- "line_current": { "fg": "solarized:base03", "bg": "solarized:base3", "attrs": ["bold"] },
- "line_current_symbol": { "fg": "solarized:base03", "bg": "solarized:base3", "attrs": [] },
- "col_current": { "fg": "solarized:base0", "bg": "solarized:base3", "attrs": [] }
- }
- },
- "ic": {
- "groups": {
- "background": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": [] },
- "background:divider": { "fg": "solarized:base2", "bg": "solarized:base01", "attrs": [] },
- "mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] }
- }
- },
- "ix": {
- "groups": {
- "background": { "fg": "solarized:base3", "bg": "solarized:base01", "attrs": [] },
- "background:divider": { "fg": "solarized:base2", "bg": "solarized:base01", "attrs": [] },
- "mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] }
- }
- },
- "v": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] }
- }
- },
- "V": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] }
- }
- },
- "^V": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] }
- }
- },
- "R": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": ["bold"] }
- }
- },
- "Rc": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": ["bold"] }
- }
- },
- "Rx": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": ["bold"] }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/colorschemes/vim/solarizedlight.json b/configs/dotfiles/powerline/colorschemes/vim/solarizedlight.json
deleted file mode 100644
index f862d39..0000000
--- a/configs/dotfiles/powerline/colorschemes/vim/solarizedlight.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "name": "Solarized light for vim",
- "groups": {
- "information:additional": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": [] },
- "information:unimportant": { "fg": "solarized:base1", "bg": "solarized:base01", "attrs": [] },
- "background": { "fg": "solarized:base03", "bg": "solarized:base01", "attrs": [] },
- "background:divider": { "fg": "solarized:base0", "bg": "solarized:base01", "attrs": [] },
- "mode": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": ["bold"] },
- "visual_range": { "fg": "solarized:green", "bg": "solarized:base3", "attrs": ["bold"] },
- "modified_indicator": { "fg": "solarized:yellow", "bg": "solarized:base2", "attrs": ["bold"] },
- "paste_indicator": { "fg": "solarized:red", "bg": "solarized:base2", "attrs": ["bold"] },
- "readonly_indicator": { "fg": "solarized:red", "bg": "solarized:base2", "attrs": [] },
- "branch_dirty": { "fg": "solarized:yellow", "bg": "solarized:base2", "attrs": [] },
- "branch:divider": { "fg": "solarized:base1", "bg": "solarized:base2", "attrs": [] },
- "stash": "branch_dirty",
- "stash:divider": "branch:divider",
- "file_name": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": ["bold"] },
- "window_title": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "file_size": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "file_name_no_file": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": ["bold"] },
- "file_name_empty": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "file_vcs_status": { "fg": "solarized:red", "bg": "solarized:base2", "attrs": [] },
- "file_vcs_status_M": { "fg": "solarized:yellow", "bg": "solarized:base2", "attrs": [] },
- "file_vcs_status_A": { "fg": "solarized:green", "bg": "solarized:base2", "attrs": [] },
- "line_percent": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "line_percent_gradient": { "fg": "green_yellow_orange_red", "bg": "solarized:base2", "attrs": [] },
- "position": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "position_gradient": { "fg": "green_yellow_orange_red", "bg": "solarized:base2", "attrs": [] },
- "line_current": { "fg": "solarized:base3", "bg": "solarized:base02", "attrs": ["bold"] },
- "line_current_symbol": { "fg": "solarized:base3", "bg": "solarized:base02", "attrs": [] },
- "virtcol_current_gradient": { "fg": "yellow_orange_red", "bg": "solarized:base02", "attrs": [] },
- "col_current": { "fg": "solarized:base00", "bg": "solarized:base02", "attrs": [] },
- "error": { "fg": "solarized:base03", "bg": "solarized:red", "attrs": ["bold"] },
- "warning": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": ["bold"] },
- "current_tag": { "fg": "solarized:base03", "bg": "solarized:base01", "attrs": ["bold"] }
- },
- "mode_translations": {
- "nc": {
- "colors": {
- "solarized:base2": "solarized:base01",
- "solarized:base0": "solarized:base01",
- "solarized:base00": "solarized:base2",
- "solarized:base1": "solarized:base0",
- "solarized:base02": "solarized:base00",
- "solarized:base03": "solarized:base1"
- }
- },
- "i": {
- "groups": {
- "background": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "background:divider": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": [] },
- "mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] },
- "modified_indicator": { "fg": "solarized:yellow", "bg": "solarized:base02", "attrs": ["bold"] },
- "paste_indicator": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] },
- "readonly_indicator": { "fg": "solarized:red", "bg": "solarized:base02", "attrs": [] },
- "branch": { "fg": "solarized:base2", "bg": "solarized:base02", "attrs": [] },
- "branch:divider": { "fg": "solarized:base0", "bg": "solarized:base02", "attrs": [] },
- "file_directory": { "fg": "solarized:base2", "bg": "solarized:base02", "attrs": [] },
- "file_name": { "fg": "solarized:base01", "bg": "solarized:base02", "attrs": ["bold"] },
- "file_size": { "fg": "solarized:base01", "bg": "solarized:base02", "attrs": [] },
- "file_name_no_file": { "fg": "solarized:base01", "bg": "solarized:base02", "attrs": ["bold"] },
- "file_name_empty": { "fg": "solarized:base01", "bg": "solarized:base02", "attrs": [] },
- "file_format": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": [] },
- "file_vcs_status": { "fg": "solarized:red", "bg": "solarized:base02", "attrs": [] },
- "file_vcs_status_M": { "fg": "solarized:yellow", "bg": "solarized:base02", "attrs": [] },
- "file_vcs_status_A": { "fg": "solarized:green", "bg": "solarized:base02", "attrs": [] },
- "line_percent": { "fg": "solarized:base03", "bg": "solarized:base1", "attrs": [] },
- "line_percent_gradient": { "fg": "solarized:base03", "bg": "solarized:base1", "attrs": [] },
- "position": { "fg": "solarized:base03", "bg": "solarized:base1", "attrs": [] },
- "position_gradient": { "fg": "solarized:base03", "bg": "solarized:base1", "attrs": [] },
- "line_current": { "fg": "solarized:base3", "bg": "solarized:base03", "attrs": ["bold"] },
- "line_current_symbol": { "fg": "solarized:base3", "bg": "solarized:base03", "attrs": [] },
- "virtcol_current_gradient": { "fg": "yellow_orange_red", "bg": "solarized:base03", "attrs": [] },
- "col_current": { "fg": "solarized:base00", "bg": "solarized:base03", "attrs": [] }
- }
- },
- "ic": {
- "groups": {
- "background": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "background:divider": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": [] },
- "mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] }
- }
- },
- "ix": {
- "groups": {
- "background": { "fg": "solarized:base03", "bg": "solarized:base2", "attrs": [] },
- "background:divider": { "fg": "solarized:base02", "bg": "solarized:base2", "attrs": [] },
- "mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] }
- }
- },
- "v": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] }
- }
- },
- "V": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] }
- }
- },
- "^V": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:orange", "attrs": ["bold"] }
- }
- },
- "R": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": ["bold"] }
- }
- },
- "Rc": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": ["bold"] }
- }
- },
- "Rx": {
- "groups": {
- "mode": { "fg": "solarized:base3", "bg": "solarized:red", "attrs": ["bold"] }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/config.json b/configs/dotfiles/powerline/config.json
deleted file mode 100644
index 4491885..0000000
--- a/configs/dotfiles/powerline/config.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "common": {
- "term_truecolor": false
- },
- "ext": {
- "ipython": {
- "colorscheme": "default",
- "theme": "in",
- "local_themes": {
- "rewrite": "rewrite",
- "out": "out",
- "in2": "in2"
- }
- },
- "pdb": {
- "colorscheme": "default",
- "theme": "default"
- },
- "shell": {
- "colorscheme": "default",
- "theme": "default",
- "local_themes": {
- "continuation": "continuation",
- "select": "select"
- }
- },
- "tmux": {
- "colorscheme": "default",
- "theme": "default"
- },
- "vim": {
- "colorscheme": "default",
- "theme": "default",
- "local_themes": {
- "__tabline__": "tabline",
-
- "cmdwin": "cmdwin",
- "help": "help",
- "quickfix": "quickfix",
-
- "powerline.matchers.vim.plugin.nerdtree.nerdtree": "plugin_nerdtree",
- "powerline.matchers.vim.plugin.commandt.commandt": "plugin_commandt",
- "powerline.matchers.vim.plugin.gundo.gundo": "plugin_gundo",
- "powerline.matchers.vim.plugin.gundo.gundo_preview": "plugin_gundo-preview"
- }
- },
- "wm": {
- "colorscheme": "default",
- "theme": "default",
- "update_interval": 2
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/ascii.json b/configs/dotfiles/powerline/themes/ascii.json
deleted file mode 100644
index 0ea05e7..0000000
--- a/configs/dotfiles/powerline/themes/ascii.json
+++ /dev/null
@@ -1,153 +0,0 @@
-{
- "use_non_breaking_spaces": false,
- "dividers": {
- "left": {
- "hard": " ",
- "soft": "| "
- },
- "right": {
- "hard": " ",
- "soft": " |"
- }
- },
- "spaces": 1,
- "segment_data": {
- "branch": {
- "before": "BR "
- },
- "stash": {
- "before": "ST "
- },
- "cwd": {
- "args": {
- "ellipsis": "..."
- }
- },
- "player": {
- "args": {
- "state_symbols": {
- "fallback": "",
- "play": ">",
- "pause": "~",
- "stop": "X"
- }
- }
- },
-
- "line_current_symbol": {
- "contents": "LN "
- },
-
- "time": {
- "before": ""
- },
-
- "powerline.segments.common.net.network_load": {
- "args": {
- "recv_format": "DL {value:>8}",
- "sent_format": "UL {value:>8}"
- }
- },
- "powerline.segments.common.net.hostname": {
- "before": "H "
- },
- "powerline.segments.common.bat.battery": {
- "args": {
- "full_heart": "O",
- "empty_heart": "O",
- "online": "C",
- "offline": " "
- }
- },
- "powerline.segments.common.sys.uptime": {
- "before": "UP "
- },
- "powerline.segments.common.mail.email_imap_alert": {
- "before": "MAIL "
- },
- "powerline.segments.common.env.virtualenv": {
- "before": "(e) "
- },
- "powerline.segments.common.wthr.weather": {
- "args": {
- "icons": {
- "day": "DAY",
- "blustery": "WIND",
- "rainy": "RAIN",
- "cloudy": "CLOUDS",
- "snowy": "SNOW",
- "stormy": "STORM",
- "foggy": "FOG",
- "sunny": "SUN",
- "night": "NIGHT",
- "windy": "WINDY",
- "not_available": "NA",
- "unknown": "UKN"
- },
- "temp_format": "{temp:.0f} C"
- }
- },
- "powerline.segments.common.time.fuzzy_time": {
- "args": {
- "unicode_text": false
- }
- },
-
- "powerline.segments.vim.mode": {
- "args": {
- "override": {
- "n": "NORMAL",
- "no": "N-OPER",
- "v": "VISUAL",
- "V": "V-LINE",
- "^V": "V-BLCK",
- "s": "SELECT",
- "S": "S-LINE",
- "^S": "S-BLCK",
- "i": "INSERT",
- "ic": "I-COMP",
- "ix": "I-C_X ",
- "R": "RPLACE",
- "Rv": "V-RPLC",
- "Rc": "R-COMP",
- "Rx": "R-C_X ",
- "c": "COMMND",
- "cv": "VIM-EX",
- "ce": "NRM-EX",
- "r": "PROMPT",
- "rm": "-MORE-",
- "r?": "CNFIRM",
- "!": "!SHELL",
- "t": "TERM "
- }
- }
- },
- "powerline.segments.vim.visual_range": {
- "args": {
- "CTRL_V_text": "{rows} x {vcols}",
- "v_text_oneline": "C:{vcols}",
- "v_text_multiline": "L:{rows}",
- "V_text": "L:{rows}"
- }
- },
- "powerline.segments.vim.readonly_indicator": {
- "args": {
- "text": "RO"
- }
- },
- "powerline.segments.vim.modified_indicator": {
- "args": {
- "text": "+"
- }
- },
-
- "powerline.segments.i3wm.scratchpad": {
- "args": {
- "icons": {
- "fresh": "O",
- "changed": "X"
- }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/ipython/in.json b/configs/dotfiles/powerline/themes/ipython/in.json
deleted file mode 100644
index edd4d29..0000000
--- a/configs/dotfiles/powerline/themes/ipython/in.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "function": "powerline.segments.common.env.virtualenv",
- "priority": 10
- },
- {
- "type": "string",
- "contents": "In [",
- "draw_soft_divider": false,
- "highlight_groups": ["prompt"]
- },
- {
- "function": "powerline.segments.ipython.prompt_count",
- "draw_soft_divider": false
- },
- {
- "type": "string",
- "contents": "]",
- "highlight_groups": ["prompt"]
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/ipython/in2.json b/configs/dotfiles/powerline/themes/ipython/in2.json
deleted file mode 100644
index 422c44b..0000000
--- a/configs/dotfiles/powerline/themes/ipython/in2.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "type": "string",
- "contents": "",
- "width": "auto",
- "highlight_groups": ["prompt"]
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/ipython/out.json b/configs/dotfiles/powerline/themes/ipython/out.json
deleted file mode 100644
index 2425d0b..0000000
--- a/configs/dotfiles/powerline/themes/ipython/out.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "default_module": "powerline.segments.ipython",
- "segments": {
- "left": [
- {
- "type": "string",
- "contents": "Out[",
- "draw_soft_divider": false,
- "width": "auto",
- "align": "r",
- "highlight_groups": ["prompt"]
- },
- {
- "function": "prompt_count",
- "draw_soft_divider": false
- },
- {
- "type": "string",
- "contents": "]",
- "highlight_groups": ["prompt"]
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/ipython/rewrite.json b/configs/dotfiles/powerline/themes/ipython/rewrite.json
deleted file mode 100644
index 8192fe4..0000000
--- a/configs/dotfiles/powerline/themes/ipython/rewrite.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "default_module": "powerline.segments.ipython",
- "segments": {
- "left": [
- {
- "type": "string",
- "contents": "",
- "draw_soft_divider": false,
- "width": "auto",
- "highlight_groups": ["prompt"]
- },
- {
- "function": "prompt_count",
- "draw_soft_divider": false
- },
- {
- "type": "string",
- "contents": ">",
- "highlight_groups": ["prompt"]
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/pdb/default.json b/configs/dotfiles/powerline/themes/pdb/default.json
deleted file mode 100644
index dcae108..0000000
--- a/configs/dotfiles/powerline/themes/pdb/default.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "default_module": "powerline.segments.pdb",
- "segments": {
- "left": [
- {
- "function": "stack_depth"
- },
- {
- "type": "segment_list",
- "function": "powerline.listers.pdb.frame_lister",
- "segments": [
- {
- "function": "current_file",
- "after": ":"
- },
- {
- "function": "current_line",
- "after": " "
- },
- {
- "function": "current_code_name"
- }
- ]
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/powerline.json b/configs/dotfiles/powerline/themes/powerline.json
deleted file mode 100644
index 366a7ea..0000000
--- a/configs/dotfiles/powerline/themes/powerline.json
+++ /dev/null
@@ -1,151 +0,0 @@
-{
- "dividers": {
- "left": {
- "hard": " ",
- "soft": " "
- },
- "right": {
- "hard": " ",
- "soft": " "
- }
- },
- "spaces": 1,
- "segment_data": {
- "branch": {
- "before": " "
- },
- "stash": {
- "before": "⌆ "
- },
- "cwd": {
- "args": {
- "ellipsis": "⋯"
- }
- },
-
- "line_current_symbol": {
- "contents": " "
- },
- "player": {
- "args": {
- "state_symbols": {
- "fallback": "♫",
- "play": "▶",
- "pause": "▮▮",
- "stop": "■"
- }
- }
- },
-
- "time": {
- "before": "⌚ "
- },
-
- "powerline.segments.common.net.network_load": {
- "args": {
- "recv_format": "⬇ {value:>8}",
- "sent_format": "⬆ {value:>8}"
- }
- },
- "powerline.segments.common.net.hostname": {
- "before": " "
- },
- "powerline.segments.common.bat.battery": {
- "args": {
- "full_heart": "♥",
- "empty_heart": "♥",
- "online": "⚡︎",
- "offline": " "
- }
- },
- "powerline.segments.common.sys.uptime": {
- "before": "⇑ "
- },
- "powerline.segments.common.mail.email_imap_alert": {
- "before": "✉ "
- },
- "powerline.segments.common.env.virtualenv": {
- "before": "ⓔ "
- },
- "powerline.segments.common.wthr.weather": {
- "args": {
- "icons": {
- "day": "〇",
- "blustery": "⚑",
- "rainy": "☔",
- "cloudy": "☁",
- "snowy": "❅",
- "stormy": "☈",
- "foggy": "≡",
- "sunny": "☼",
- "night": "☾",
- "windy": "☴",
- "not_available": "�",
- "unknown": "⚠"
- }
- }
- },
- "powerline.segments.common.time.fuzzy_time": {
- "args": {
- "unicode_text": true
- }
- },
-
- "powerline.segments.vim.mode": {
- "args": {
- "override": {
- "n": "NORMAL",
- "no": "N·OPER",
- "v": "VISUAL",
- "V": "V·LINE",
- "^V": "V·BLCK",
- "s": "SELECT",
- "S": "S·LINE",
- "^S": "S·BLCK",
- "i": "INSERT",
- "ic": "I·COMP",
- "ix": "I·C-X ",
- "R": "RPLACE",
- "Rv": "V·RPLC",
- "Rc": "R·COMP",
- "Rx": "R·C-X ",
- "c": "COMMND",
- "cv": "VIM·EX",
- "ce": "NRM·EX",
- "r": "PROMPT",
- "rm": "-MORE-",
- "r?": "CNFIRM",
- "!": "!SHELL",
- "t": "TERM "
- }
- }
- },
- "powerline.segments.vim.visual_range": {
- "args": {
- "CTRL_V_text": "↕{rows} ↔{vcols}",
- "v_text_oneline": "↔{vcols}",
- "v_text_multiline": "↕{rows}",
- "V_text": "⇕{rows}"
- }
- },
- "powerline.segments.vim.readonly_indicator": {
- "args": {
- "text": ""
- }
- },
- "powerline.segments.vim.modified_indicator": {
- "args": {
- "text": "+"
- }
- },
-
- "powerline.segments.i3wm.scratchpad": {
- "args": {
- "icons": {
- "fresh": "●",
- "changed": "○"
- }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/powerline_terminus.json b/configs/dotfiles/powerline/themes/powerline_terminus.json
deleted file mode 100644
index e5fb1c8..0000000
--- a/configs/dotfiles/powerline/themes/powerline_terminus.json
+++ /dev/null
@@ -1,151 +0,0 @@
-{
- "dividers": {
- "left": {
- "hard": " ",
- "soft": " "
- },
- "right": {
- "hard": " ",
- "soft": " "
- }
- },
- "spaces": 1,
- "segment_data": {
- "branch": {
- "before": " "
- },
- "stash": {
- "before": "ST "
- },
- "cwd": {
- "args": {
- "ellipsis": "…"
- }
- },
-
- "line_current_symbol": {
- "contents": " "
- },
- "player": {
- "args": {
- "state_symbols": {
- "fallback": "♫",
- "play": "▶",
- "pause": "▮▮",
- "stop": "■"
- }
- }
- },
-
- "time": {
- "before": ""
- },
-
- "powerline.segments.common.net.network_load": {
- "args": {
- "recv_format": "⇓ {value:>8}",
- "sent_format": "⇑ {value:>8}"
- }
- },
- "powerline.segments.common.net.hostname": {
- "before": " "
- },
- "powerline.segments.common.bat.battery": {
- "args": {
- "full_heart": "♥",
- "empty_heart": "♥",
- "online": "⚡︎",
- "offline": " "
- }
- },
- "powerline.segments.common.sys.uptime": {
- "before": "↑ "
- },
- "powerline.segments.common.mail.email_imap_alert": {
- "before": "MAIL "
- },
- "powerline.segments.common.env.virtualenv": {
- "before": "(e) "
- },
- "powerline.segments.common.wthr.weather": {
- "args": {
- "icons": {
- "day": "DAY",
- "blustery": "WIND",
- "rainy": "RAIN",
- "cloudy": "CLOUDS",
- "snowy": "SNOW",
- "stormy": "STORM",
- "foggy": "FOG",
- "sunny": "SUN",
- "night": "NIGHT",
- "windy": "WINDY",
- "not_available": "NA",
- "unknown": "UKN"
- }
- }
- },
- "powerline.segments.common.time.fuzzy_time": {
- "args": {
- "unicode_text": true
- }
- },
-
- "powerline.segments.vim.mode": {
- "args": {
- "override": {
- "n": "NORMAL",
- "no": "N·OPER",
- "v": "VISUAL",
- "V": "V·LINE",
- "^V": "V·BLCK",
- "s": "SELECT",
- "S": "S·LINE",
- "^S": "S·BLCK",
- "i": "INSERT",
- "ic": "I·COMP",
- "ix": "I·C-X ",
- "R": "RPLACE",
- "Rv": "V·RPLC",
- "Rc": "R·COMP",
- "Rx": "R·C-X ",
- "c": "COMMND",
- "cv": "VIM·EX",
- "ce": "NRM·EX",
- "r": "PROMPT",
- "rm": "-MORE-",
- "r?": "CNFIRM",
- "!": "!SHELL",
- "t": "TERM "
- }
- }
- },
- "powerline.segments.vim.visual_range": {
- "args": {
- "CTRL_V_text": "↕{rows} ↔{vcols}",
- "v_text_oneline": "↔{vcols}",
- "v_text_multiline": "↕{rows}",
- "V_text": "⇕{rows}"
- }
- },
- "powerline.segments.vim.readonly_indicator": {
- "args": {
- "text": ""
- }
- },
- "powerline.segments.vim.modified_indicator": {
- "args": {
- "text": "+"
- }
- },
-
- "powerline.segments.i3wm.scratchpad": {
- "args": {
- "icons": {
- "fresh": "●",
- "changed": "○"
- }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/powerline_unicode7.json b/configs/dotfiles/powerline/themes/powerline_unicode7.json
deleted file mode 100644
index bd62826..0000000
--- a/configs/dotfiles/powerline/themes/powerline_unicode7.json
+++ /dev/null
@@ -1,165 +0,0 @@
-{
- "dividers": {
- "left": {
- "hard": " ",
- "soft": " "
- },
- "right": {
- "hard": " ",
- "soft": " "
- }
- },
- "spaces": 1,
- "segment_data": {
- "branch": {
- "before": "🔀 "
- },
- "stash": {
- "before": "📝"
- },
- "cwd": {
- "args": {
- "ellipsis": "⋯"
- }
- },
-
- "line_current_symbol": {
- "contents": " "
- },
- "player": {
- "args": {
- "state_symbols": {
- "fallback": "♫",
- "play": "⏵",
- "pause": "⏸",
- "stop": "⏹"
- }
- }
- },
-
- "time": {
- "before": "🕐 "
- },
-
- "powerline.segments.common.net.network_load": {
- "args": {
- "recv_format": "⬇ {value:>8}",
- "sent_format": "⬆ {value:>8}"
- }
- },
- "powerline.segments.common.net.hostname": {
- "before": "🏠 "
- },
- "powerline.segments.common.bat.battery": {
- "args": {
- "full_heart": "💙",
- "empty_heart": "💛",
- "online": "⚡️",
- "offline": " "
- }
- },
- "powerline.segments.common.sys.uptime": {
- "before": "⇑ "
- },
- "powerline.segments.common.mail.email_imap_alert": {
- "before": "✉ "
- },
- "powerline.segments.common.env.virtualenv": {
- "before": "🐍 "
- },
- "powerline.segments.common.wthr.weather": {
- "args": {
- "icons": {
- "tornado": "🌪",
- "hurricane": "🌀",
- "showers": "☔",
- "scattered_showers": "☔",
- "thunderstorms": "🌩",
- "isolated_thunderstorms": "🌩",
- "scattered_thunderstorms": "🌩",
- "dust": "🌫",
- "fog": "🌫",
- "cold": "❄",
- "partly_cloudy_day": "🌤",
- "mostly_cloudy_day": "🌥",
- "sun": "🌣",
- "hot": "♨",
- "day": "☀",
- "blustery": "⚑",
- "rainy": "☂",
- "cloudy": "☁",
- "snowy": "☃",
- "stormy": "☈",
- "foggy": "🌁",
- "sunny": "🌣",
- "night": "☾",
- "windy": "☴",
- "not_available": "�",
- "unknown": "⚠"
- }
- }
- },
- "powerline.segments.common.time.fuzzy_time": {
- "args": {
- "unicode_text": true
- }
- },
-
- "powerline.segments.vim.mode": {
- "args": {
- "override": {
- "n": "NORMAL",
- "no": "N·OPER",
- "v": "VISUAL",
- "V": "V·LINE",
- "^V": "V·BLCK",
- "s": "SELECT",
- "S": "S·LINE",
- "^S": "S·BLCK",
- "i": "INSERT",
- "ic": "I·COMP",
- "ix": "I·C-X ",
- "R": "RPLACE",
- "Rv": "V·RPLC",
- "Rc": "R·COMP",
- "Rx": "R·C-X ",
- "c": "COMMND",
- "cv": "VIM·EX",
- "ce": "NRM·EX",
- "r": "PROMPT",
- "rm": "-MORE-",
- "r?": "CNFIRM",
- "!": "!SHELL",
- "t": "TERM "
- }
- }
- },
- "powerline.segments.vim.visual_range": {
- "args": {
- "CTRL_V_text": "↕{rows} ↔{vcols}",
- "v_text_oneline": "↔{vcols}",
- "v_text_multiline": "↕{rows}",
- "V_text": "⇕{rows}"
- }
- },
- "powerline.segments.vim.readonly_indicator": {
- "args": {
- "text": "🔏"
- }
- },
- "powerline.segments.vim.modified_indicator": {
- "args": {
- "text": "🖫⃥"
- }
- },
-
- "powerline.segments.i3wm.scratchpad": {
- "args": {
- "icons": {
- "fresh": "●",
- "changed": "○"
- }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/shell/__main__.json b/configs/dotfiles/powerline/themes/shell/__main__.json
deleted file mode 100644
index 13ae942..0000000
--- a/configs/dotfiles/powerline/themes/shell/__main__.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "segment_data": {
- "hostname": {
- "args": {
- "only_if_ssh": true
- }
- },
- "cwd": {
- "args": {
- "dir_limit_depth": 3
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/shell/continuation.json b/configs/dotfiles/powerline/themes/shell/continuation.json
deleted file mode 100644
index 9307fc0..0000000
--- a/configs/dotfiles/powerline/themes/shell/continuation.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "default_module": "powerline.segments.shell",
- "segments": {
- "left": [
- {
- "function": "continuation"
- }
- ],
- "right": [
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/shell/default.json b/configs/dotfiles/powerline/themes/shell/default.json
deleted file mode 100644
index 38039d8..0000000
--- a/configs/dotfiles/powerline/themes/shell/default.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "function": "powerline.segments.shell.mode"
- },
- {
- "function": "powerline.segments.common.net.hostname",
- "priority": 10
- },
- {
- "function": "powerline.segments.common.env.user",
- "priority": 30
- },
- {
- "function": "powerline.segments.common.env.virtualenv",
- "priority": 50
- },
- {
- "function": "powerline.segments.shell.cwd",
- "priority": 10
- },
- {
- "function": "powerline.segments.shell.jobnum",
- "priority": 20
- }
- ],
- "right": [
- {
- "function": "powerline.segments.shell.last_pipe_status",
- "priority": 10
- },
- {
- "function": "powerline.segments.common.vcs.stash",
- "priority": 50
- },
- {
- "function": "powerline.segments.common.vcs.branch",
- "priority": 40
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/shell/default_leftonly.json b/configs/dotfiles/powerline/themes/shell/default_leftonly.json
deleted file mode 100644
index b576273..0000000
--- a/configs/dotfiles/powerline/themes/shell/default_leftonly.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "function": "powerline.segments.common.net.hostname",
- "priority": 10
- },
- {
- "function": "powerline.segments.common.env.user",
- "priority": 30
- },
- {
- "function": "powerline.segments.common.env.virtualenv",
- "priority": 50
- },
- {
- "function": "powerline.segments.common.vcs.branch",
- "priority": 40
- },
- {
- "function": "powerline.segments.shell.cwd",
- "priority": 10
- },
- {
- "function": "powerline.segments.shell.jobnum",
- "priority": 20
- },
- {
- "function": "powerline.segments.shell.last_pipe_status",
- "priority": 10
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/shell/select.json b/configs/dotfiles/powerline/themes/shell/select.json
deleted file mode 100644
index 3d81408..0000000
--- a/configs/dotfiles/powerline/themes/shell/select.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "type": "string",
- "contents": "Select variant",
- "width": "auto",
- "align": "r",
- "highlight_groups": ["continuation:current"]
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/tmux/default.json b/configs/dotfiles/powerline/themes/tmux/default.json
deleted file mode 100644
index 4532ced..0000000
--- a/configs/dotfiles/powerline/themes/tmux/default.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "segments": {
- "right": [
- {
- "function": "powerline.segments.common.sys.uptime",
- "priority": 50
- },
- {
- "function": "powerline.segments.common.sys.system_load",
- "priority": 50
- },
- {
- "function": "powerline.segments.common.time.date"
- },
- {
- "function": "powerline.segments.common.time.date",
- "name": "time",
- "args": {
- "format": "%H:%M",
- "istime": true
- }
- },
- {
- "function": "powerline.segments.common.net.hostname"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/unicode.json b/configs/dotfiles/powerline/themes/unicode.json
deleted file mode 100644
index 0802852..0000000
--- a/configs/dotfiles/powerline/themes/unicode.json
+++ /dev/null
@@ -1,151 +0,0 @@
-{
- "dividers": {
- "left": {
- "hard": "▌ ",
- "soft": "│ "
- },
- "right": {
- "hard": " ▐",
- "soft": " │"
- }
- },
- "spaces": 1,
- "segment_data": {
- "branch": {
- "before": "⎇ "
- },
- "stash": {
- "before": "⌆"
- },
- "cwd": {
- "args": {
- "ellipsis": "⋯"
- }
- },
- "player": {
- "args": {
- "state_symbols": {
- "fallback": "♫",
- "play": "▶",
- "pause": "▮▮",
- "stop": "■"
- }
- }
- },
-
- "line_current_symbol": {
- "contents": " "
- },
-
- "time": {
- "before": "⌚ "
- },
-
- "powerline.segments.common.net.network_load": {
- "args": {
- "recv_format": "⬇ {value:>8}",
- "sent_format": "⬆ {value:>8}"
- }
- },
- "powerline.segments.common.net.hostname": {
- "before": "⌂ "
- },
- "powerline.segments.common.bat.battery": {
- "args": {
- "full_heart": "♥",
- "empty_heart": "♥",
- "online": "⚡︎",
- "offline": " "
- }
- },
- "powerline.segments.common.sys.uptime": {
- "before": "⇑ "
- },
- "powerline.segments.common.mail.email_imap_alert": {
- "before": "✉ "
- },
- "powerline.segments.common.env.virtualenv": {
- "before": "ⓔ "
- },
- "powerline.segments.common.wthr.weather": {
- "args": {
- "icons": {
- "day": "〇",
- "blustery": "⚑",
- "rainy": "☔",
- "cloudy": "☁",
- "snowy": "❅",
- "stormy": "☈",
- "foggy": "≡",
- "sunny": "☼",
- "night": "☾",
- "windy": "☴",
- "not_available": "�",
- "unknown": "⚠"
- }
- }
- },
- "powerline.segments.common.time.fuzzy_time": {
- "args": {
- "unicode_text": true
- }
- },
-
- "powerline.segments.vim.mode": {
- "args": {
- "override": {
- "n": "NORMAL",
- "no": "N·OPER",
- "v": "VISUAL",
- "V": "V·LINE",
- "^V": "V·BLCK",
- "s": "SELECT",
- "S": "S·LINE",
- "^S": "S·BLCK",
- "i": "INSERT",
- "ic": "I·COMP",
- "ix": "I·C-X ",
- "R": "RPLACE",
- "Rv": "V·RPLC",
- "Rc": "R·COMP",
- "Rx": "R·C-X ",
- "c": "COMMND",
- "cv": "VIM·EX",
- "ce": "NRM·EX",
- "r": "PROMPT",
- "rm": "-MORE-",
- "r?": "CNFIRM",
- "!": "!SHELL",
- "t": "TERM "
- }
- }
- },
- "powerline.segments.vim.visual_range": {
- "args": {
- "CTRL_V_text": "↕{rows} ↔{vcols}",
- "v_text_oneline": "↔{vcols}",
- "v_text_multiline": "↕{rows}",
- "V_text": "⇕{rows}"
- }
- },
- "powerline.segments.vim.readonly_indicator": {
- "args": {
- "text": "⊗"
- }
- },
- "powerline.segments.vim.modified_indicator": {
- "args": {
- "text": "+"
- }
- },
-
- "powerline.segments.i3wm.scratchpad": {
- "args": {
- "icons": {
- "fresh": "●",
- "changed": "○"
- }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/unicode_terminus.json b/configs/dotfiles/powerline/themes/unicode_terminus.json
deleted file mode 100644
index 9c76985..0000000
--- a/configs/dotfiles/powerline/themes/unicode_terminus.json
+++ /dev/null
@@ -1,151 +0,0 @@
-{
- "dividers": {
- "left": {
- "hard": "▌ ",
- "soft": "│ "
- },
- "right": {
- "hard": " ▐",
- "soft": " │"
- }
- },
- "spaces": 1,
- "segment_data": {
- "branch": {
- "before": "BR "
- },
- "stash": {
- "before": "ST "
- },
- "cwd": {
- "args": {
- "ellipsis": "…"
- }
- },
-
- "line_current_symbol": {
- "contents": " "
- },
- "player": {
- "args": {
- "state_symbols": {
- "fallback": "♫",
- "play": "▶",
- "pause": "▮▮",
- "stop": "■"
- }
- }
- },
-
- "time": {
- "before": ""
- },
-
- "powerline.segments.common.net.network_load": {
- "args": {
- "recv_format": "⇓ {value:>8}",
- "sent_format": "⇑ {value:>8}"
- }
- },
- "powerline.segments.common.net.hostname": {
- "before": "⌂ "
- },
- "powerline.segments.common.bat.battery": {
- "args": {
- "full_heart": "♥",
- "empty_heart": "♥",
- "online": "⚡︎",
- "offline": " "
- }
- },
- "powerline.segments.common.sys.uptime": {
- "before": "↑ "
- },
- "powerline.segments.common.mail.email_imap_alert": {
- "before": "MAIL "
- },
- "powerline.segments.common.env.virtualenv": {
- "before": "(e) "
- },
- "powerline.segments.common.wthr.weather": {
- "args": {
- "icons": {
- "day": "DAY",
- "blustery": "WIND",
- "rainy": "RAIN",
- "cloudy": "CLOUDS",
- "snowy": "SNOW",
- "stormy": "STORM",
- "foggy": "FOG",
- "sunny": "SUN",
- "night": "NIGHT",
- "windy": "WINDY",
- "not_available": "NA",
- "unknown": "UKN"
- }
- }
- },
- "powerline.segments.common.time.fuzzy_time": {
- "args": {
- "unicode_text": true
- }
- },
-
- "powerline.segments.vim.mode": {
- "args": {
- "override": {
- "n": "NORMAL",
- "no": "N·OPER",
- "v": "VISUAL",
- "V": "V·LINE",
- "^V": "V·BLCK",
- "s": "SELECT",
- "S": "S·LINE",
- "^S": "S·BLCK",
- "i": "INSERT",
- "ic": "I·COMP",
- "ix": "I·C-X ",
- "R": "RPLACE",
- "Rv": "V·RPLC",
- "Rc": "R·COMP",
- "Rx": "R·C-X ",
- "c": "COMMND",
- "cv": "VIM·EX",
- "ce": "NRM·EX",
- "r": "PROMPT",
- "rm": "-MORE-",
- "r?": "CNFIRM",
- "!": "!SHELL",
- "t": "TERM "
- }
- }
- },
- "powerline.segments.vim.visual_range": {
- "args": {
- "CTRL_V_text": "{rows} × {vcols}",
- "v_text_oneline": "C:{vcols}",
- "v_text_multiline": "L:{rows}",
- "V_text": "L:{rows}"
- }
- },
- "powerline.segments.vim.readonly_indicator": {
- "args": {
- "text": "RO"
- }
- },
- "powerline.segments.vim.modified_indicator": {
- "args": {
- "text": "+"
- }
- },
-
- "powerline.segments.i3wm.scratchpad": {
- "args": {
- "icons": {
- "fresh": "●",
- "changed": "○"
- }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/unicode_terminus_condensed.json b/configs/dotfiles/powerline/themes/unicode_terminus_condensed.json
deleted file mode 100644
index 421f5c8..0000000
--- a/configs/dotfiles/powerline/themes/unicode_terminus_condensed.json
+++ /dev/null
@@ -1,151 +0,0 @@
-{
- "dividers": {
- "left": {
- "hard": "▌",
- "soft": "│"
- },
- "right": {
- "hard": "▐",
- "soft": "│"
- }
- },
- "spaces": 0,
- "segment_data": {
- "branch": {
- "before": "B "
- },
- "stash": {
- "before": "S "
- },
- "cwd": {
- "args": {
- "use_path_separator": true,
- "ellipsis": "…"
- }
- },
-
- "line_current_symbol": {
- "contents": ""
- },
- "player": {
- "args": {
- "state_symbols": {
- "fallback": "♫",
- "play": "▶",
- "pause": "▮▮",
- "stop": "■"
- }
- }
- },
-
- "time": {
- "before": ""
- },
-
- "powerline.segments.common.net.network_load": {
- "args": {
- "recv_format": "⇓{value:>8}",
- "sent_format": "⇑{value:>8}"
- }
- },
- "powerline.segments.common.net.hostname": {
- "before": "⌂"
- },
- "powerline.segments.common.bat.battery": {
- "args": {
- "full_heart": "♥",
- "empty_heart": "♥",
- "online": "⚡︎",
- "offline": " "
- }
- },
- "powerline.segments.common.sys.uptime": {
- "before": "↑"
- },
- "powerline.segments.common.mail.email_imap_alert": {
- "before": "M "
- },
- "powerline.segments.common.env.virtualenv": {
- "before": "E "
- },
- "powerline.segments.common.wthr.weather": {
- "args": {
- "icons": {
- "day": "D",
- "blustery": "W",
- "rainy": "R",
- "cloudy": "c",
- "snowy": "*",
- "stormy": "S",
- "foggy": "f",
- "sunny": "s",
- "night": "N",
- "windy": "w",
- "not_available": "-",
- "unknown": "!"
- }
- }
- },
- "powerline.segments.common.time.fuzzy_time": {
- "args": {
- "unicode_text": true
- }
- },
-
- "powerline.segments.vim.mode": {
- "args": {
- "override": {
- "n": "NML",
- "no": "NOP",
- "v": "VIS",
- "V": "VLN",
- "^V": "VBL",
- "s": "SEL",
- "S": "SLN",
- "^S": "SBL",
- "i": "INS",
- "ic": "I-C",
- "ix": "I^X",
- "R": "REP",
- "Rv": "VRP",
- "Rc": "R-C",
- "Rx": "R^X",
- "c": "CMD",
- "cv": "VEX",
- "ce": " EX",
- "r": "PRT",
- "rm": "MOR",
- "r?": "CON",
- "!": " SH"
- }
- }
- },
- "powerline.segments.vim.visual_range": {
- "args": {
- "CTRL_V_text": "{rows}×{vcols}",
- "v_text_oneline": "↔{vcols}",
- "v_text_multiline": "↕{rows}",
- "V_text": "⇕{rows}"
- }
- },
- "powerline.segments.vim.readonly_indicator": {
- "args": {
- "text": "RO"
- }
- },
- "powerline.segments.vim.modified_indicator": {
- "args": {
- "text": "+"
- }
- },
-
- "powerline.segments.i3wm.scratchpad": {
- "args": {
- "icons": {
- "fresh": "●",
- "changed": "○"
- }
- }
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/__main__.json b/configs/dotfiles/powerline/themes/vim/__main__.json
deleted file mode 100644
index 7cd3305..0000000
--- a/configs/dotfiles/powerline/themes/vim/__main__.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "segment_data": {
- "line_percent": {
- "args": {
- "gradient": true
- },
- "after": "%"
- }
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/cmdwin.json b/configs/dotfiles/powerline/themes/vim/cmdwin.json
deleted file mode 100644
index e6a05b0..0000000
--- a/configs/dotfiles/powerline/themes/vim/cmdwin.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "type": "string",
- "contents": "Command Line",
- "highlight_groups": ["file_name"]
- },
- {
- "type": "string",
- "highlight_groups": ["background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/default.json b/configs/dotfiles/powerline/themes/vim/default.json
deleted file mode 100644
index 9b0c744..0000000
--- a/configs/dotfiles/powerline/themes/vim/default.json
+++ /dev/null
@@ -1,128 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "function": "mode",
- "exclude_modes": ["nc"]
- },
- {
- "function": "visual_range",
- "include_modes": ["v", "V", "^V", "s", "S", "^S"],
- "priority": 10
- },
- {
- "function": "paste_indicator",
- "exclude_modes": ["nc"],
- "priority": 10
- },
- {
- "function": "powerline.segments.vim.plugin.capslock.capslock_indicator",
- "include_modes": ["i", "R", "Rv"],
- "priority": 10
- },
- {
- "function": "branch",
- "exclude_modes": ["nc"],
- "priority": 30
- },
- {
- "function": "readonly_indicator",
- "draw_soft_divider": false,
- "after": " "
- },
- {
- "function": "file_scheme",
- "priority": 20
- },
- {
- "function": "file_directory",
- "priority": 40,
- "draw_soft_divider": false
- },
- {
- "function": "file_name",
- "draw_soft_divider": false
- },
- {
- "function": "file_vcs_status",
- "before": " ",
- "draw_soft_divider": false
- },
- {
- "function": "modified_indicator",
- "before": " "
- },
- {
- "exclude_modes": ["i", "R", "Rv"],
- "function": "trailing_whitespace",
- "display": false,
- "priority": 60
- },
- {
- "exclude_modes": ["nc"],
- "function": "powerline.segments.vim.plugin.syntastic.syntastic",
- "priority": 50
- },
- {
- "exclude_modes": ["nc"],
- "function": "powerline.segments.vim.plugin.tagbar.current_tag",
- "draw_soft_divider": false,
- "priority": 50
- },
- {
- "type": "string",
- "highlight_groups": ["background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ],
- "right": [
- {
- "function": "file_format",
- "draw_soft_divider": false,
- "exclude_modes": ["nc"],
- "priority": 60
- },
- {
- "function": "file_encoding",
- "exclude_modes": ["nc"],
- "priority": 60
- },
- {
- "function": "file_type",
- "exclude_modes": ["nc"],
- "priority": 60
- },
- {
- "function": "line_percent",
- "priority": 50,
- "width": 4,
- "align": "r"
- },
- {
- "function": "csv_col_current",
- "priority": 30
- },
- {
- "type": "string",
- "name": "line_current_symbol",
- "highlight_groups": ["line_current_symbol", "line_current"]
- },
- {
- "function": "line_current",
- "draw_soft_divider": false,
- "width": 3,
- "align": "r"
- },
- {
- "function": "virtcol_current",
- "draw_soft_divider": false,
- "priority": 20,
- "before": ":",
- "width": 3,
- "align": "l"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/help.json b/configs/dotfiles/powerline/themes/vim/help.json
deleted file mode 100644
index 45c9458..0000000
--- a/configs/dotfiles/powerline/themes/vim/help.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "function": "file_name",
- "draw_soft_divider": false
- },
- {
- "type": "string",
- "highlight_groups": ["background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ],
- "right": [
- {
- "function": "line_percent",
- "priority": 30,
- "width": 4,
- "align": "r"
- },
- {
- "type": "string",
- "name": "line_current_symbol",
- "highlight_groups": ["line_current_symbol", "line_current"]
- },
- {
- "function": "line_current",
- "draw_soft_divider": false,
- "width": 3,
- "align": "r"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/plugin_commandt.json b/configs/dotfiles/powerline/themes/vim/plugin_commandt.json
deleted file mode 100644
index dd6748f..0000000
--- a/configs/dotfiles/powerline/themes/vim/plugin_commandt.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "type": "string",
- "contents": "Command-T",
- "highlight_groups": ["commandt:label"]
- },
- {
- "function": "powerline.segments.vim.plugin.commandt.finder"
- },
- {
- "function": "powerline.segments.vim.plugin.commandt.path"
- },
- {
- "type": "string",
- "highlight_groups": ["commandt:background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ],
- "right": [
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/plugin_gundo-preview.json b/configs/dotfiles/powerline/themes/vim/plugin_gundo-preview.json
deleted file mode 100644
index ad8432c..0000000
--- a/configs/dotfiles/powerline/themes/vim/plugin_gundo-preview.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "type": "string",
- "highlight_groups": ["gundo:name", "file_name"],
- "contents": "Undo diff"
- },
- {
- "type": "string",
- "highlight_groups": ["gundo:background", "background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/plugin_gundo.json b/configs/dotfiles/powerline/themes/vim/plugin_gundo.json
deleted file mode 100644
index a03b256..0000000
--- a/configs/dotfiles/powerline/themes/vim/plugin_gundo.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "segments": {
- "left": [
- {
- "type": "string",
- "highlight_groups": ["gundo:name", "file_name"],
- "contents": "Undo tree"
- },
- {
- "type": "string",
- "highlight_groups": ["gundo:background", "background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/plugin_nerdtree.json b/configs/dotfiles/powerline/themes/vim/plugin_nerdtree.json
deleted file mode 100644
index 896d393..0000000
--- a/configs/dotfiles/powerline/themes/vim/plugin_nerdtree.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "default_module": "powerline.segments.vim.plugin.nerdtree",
- "segments": {
- "left": [
- {
- "function": "nerdtree"
- },
- {
- "type": "string",
- "highlight_groups": ["background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/quickfix.json b/configs/dotfiles/powerline/themes/vim/quickfix.json
deleted file mode 100644
index ae4d5a5..0000000
--- a/configs/dotfiles/powerline/themes/vim/quickfix.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "segment_data": {
- "buffer_name": {
- "contents": "Location List"
- }
- },
- "segments": {
- "left": [
- {
- "type": "string",
- "name": "buffer_name",
- "highlight_groups": ["file_name"]
- },
- {
- "function": "window_title",
- "draw_soft_divider": false
- },
- {
- "type": "string",
- "highlight_groups": ["background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ],
- "right": [
- {
- "type": "string",
- "name": "line_current_symbol",
- "highlight_groups": ["line_current_symbol", "line_current"]
- },
- {
- "function": "line_current",
- "draw_soft_divider": false,
- "width": 3,
- "align": "r"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/vim/tabline.json b/configs/dotfiles/powerline/themes/vim/tabline.json
deleted file mode 100644
index 1e3130e..0000000
--- a/configs/dotfiles/powerline/themes/vim/tabline.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "default_module": "powerline.segments.vim",
- "segments": {
- "left": [
- {
- "type": "segment_list",
- "function": "powerline.listers.vim.tablister",
- "exclude_function": "single_tab",
- "segments": [
- {
- "function": "tab"
- },
- {
- "function": "tabnr",
- "after": " ",
- "priority": 5
- },
- {
- "function": "file_directory",
- "priority": 40
- },
- {
- "function": "file_name",
- "args": {
- "display_no_file": true
- },
- "priority": 10
- },
- {
- "function": "tab_modified_indicator",
- "priority": 5
- }
- ]
- },
- {
- "function": "tab",
- "args": {
- "end": true
- }
- },
- {
- "type": "segment_list",
- "function": "powerline.listers.vim.bufferlister",
- "include_function": "single_tab",
- "segments": [
- {
- "function": "bufnr",
- "after": " ",
- "priority": 5
- },
- {
- "function": "file_directory",
- "priority": 40
- },
- {
- "function": "file_name",
- "args": {
- "display_no_file": true
- },
- "priority": 10
- },
- {
- "function": "modified_indicator",
- "priority": 5
- }
- ]
- },
- {
- "type": "string",
- "highlight_groups": ["tab:background"],
- "draw_soft_divider": false,
- "draw_hard_divider": false,
- "width": "auto"
- }
- ],
- "right": [
- {
- "type": "string",
- "contents": "Bufs",
- "name": "single_tab",
- "highlight_groups": ["single_tab"],
- "include_function": "single_tab"
- },
- {
- "type": "string",
- "contents": "Tabs",
- "name": "many_tabs",
- "highlight_groups": ["many_tabs"],
- "exclude_function": "single_tab"
- }
- ]
- }
-}
diff --git a/configs/dotfiles/powerline/themes/wm/default.json b/configs/dotfiles/powerline/themes/wm/default.json
deleted file mode 100644
index 3d468b4..0000000
--- a/configs/dotfiles/powerline/themes/wm/default.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "segments": {
- "right": [
- {
- "function": "powerline.segments.common.time.date"
- },
- {
- "function": "powerline.segments.common.time.date",
- "name": "time",
- "args": {
- "format": "%H:%M",
- "istime": true
- }
- }
- ]
- }
-}
diff --git a/configs/dotfiles/symlink_configs.sh b/configs/dotfiles/symlink_configs.sh
old mode 100755
new mode 100644
index 65f1d25..29e49f2
--- a/configs/dotfiles/symlink_configs.sh
+++ b/configs/dotfiles/symlink_configs.sh
@@ -1,19 +1,22 @@
#!/bin/bash
-#mv ~/.bashrc ./temp/.bashrc
-#ln -s /home/gib/Documents/Configs/bashrc /home/gib/.bashrc
-#mv ~/.config/espanso ./temp/espanso
-#ln -s /home/gib/Documents/Configs/espanso /home/gib/.config/espanso
+mv ~/.bashrc ./temp/.bashrc
+ln -s /home/gib/Documents/Configs/bashrc /home/gib/.bashrc
+mv ~/.config/espanso ./temp/espanso
+ln -s /home/gib/Documents/Configs/espanso /home/gib/.config/espanso
mv ~/.config/forge ./temp/forge
ln -s /home/gib/Documents/Configs/forge /home/gib/.config/forge
mv ~/.config/kitty ./temp/kitty
ln -s /home/gib/Documents/Configs/kitty /home/gib/.config/kitty
mv ~/.config/lobster ./temp/lobster
ln -s /home/gib/Documents/Configs/lobster /home/gib/.config/lobster
-#mv ~/.config/neomutt ./temp/neomutt
-#ln -s /home/gib/Documents/Configs/neomutt /home/gib/.config/neomutt
+mv ~/.config/neomutt ./temp/neomutt
+ln -s /home/gib/Documents/Configs/neomutt /home/gib/.config/neomutt
mv ~/.config/nvim ./temp/nvim
ln -s /home/gib/Documents/Configs/nvim /home/gib/.config/nvim
mv ~/.config/powerline ./temp/powerline
ln -s /home/gib/Documents/Configs/powerline /home/gib/.config/powerline
mv ~/.config/ranger ./temp/ranger
ln -s /home/gib/Documents/Configs/ranger /home/gib/.config/ranger
+mv ~/.config/hypr ./temp/hypr
+mv ~/config/waybar ./temp/waybar
+ln -s ~/Documetns/Configs/hyprland/