Commit 038406a

Ansari <ping@ansari.wtf>
2025-12-17 02:30:57
Add desktop entries and scripts for Docker Desktop and YT Music
1 parent 9fabb43
.assets/icons/docker.png
Binary file
.assets/icons/YT Music.png
Binary file
.config/hypr/modules/keybinds.conf
@@ -21,7 +21,7 @@ bind = $mainMod,    SPACE,  exec, $menu
 bind = CONTROLALT,  T,      exec, $terminal
 bind = $mainMod,    E,      exec, $fileManager
 bind = $mainMod,    L,      exec, hyprlock
-bind = $mainMod,    R,		exec, killall -9 waybar && waybar
+bind = $mainMod,    R,		  exec, killall -9 waybar && waybar
 bind = $mainMod,    V,      exec, $cliphistMenu
 bind = $mainMod,    period, exec, $emojiMenu
 bind = $mainMod SHIFT,S,    exec, $screenshotMenu
.config/hypr/modules/monitors.conf
@@ -1,36 +1,18 @@
 monitor=,preferred,auto,1
+monitor=FALLBACK,1920x1080@60,auto,1
 
-workspace=1,persistent:true
-workspace=2,persistent:true
-workspace=3,persistent:true
+# Floating windows
+windowrule = float true, match:tag floating-window
+windowrule = center true, match:tag floating-window
+windowrule = size 875 600, match:tag floating-window
 
-#Window rules
- 
-windowrule {
-    name = ghostty
-    match:class = com.mitchellh.ghostty
-    float = on
-    size = 900 700
-    center = on
-}
+windowrule = tag +floating-window, match:class (Thunar|thunar|org.gnome.Evince|org.wraith.*|org.pulseaudio.pavucontrol|com.mitchellh.ghostty)
+windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
 
-windowrule {
-		name = VolumeControl
-		match:class = org.pulseaudio.pavucontrol
-		float = on
-		size = 700 700
-		center = on
-}
+# Popped window rounding
+windowrule = rounding 8, match:tag pop
 
-windowrule {
-	name = ImageViewer
-	match:class = feh
-	float = on
-}
 
-windowrule {
-	name = Thunar
-	match:class = Thunar
-	float = on
-	center = on
-}
+
+# Apps Rules
+windowrule = workspace special:music, match:class ^(chrome-music\.youtube\..*)$
\ No newline at end of file
.config/hypr/modules/vars.conf
@@ -1,7 +1,7 @@
-$terminal = ghostty
+$terminal = uwsm-app -- xdg-terminal-exec
 $fileManager = thunar
 $menu = rofi -show drun
-$cliphistMenu = cliphist list | rofi -dmenu -p "๐Ÿ“‹:" | cliphist decode | wl-copy
+$cliphistMenu = cliphist list | rofi -dmenu -p "" -no-show-icons| cliphist decode | wl-copy
 $screenshotMenu = $HOME/.wraith/scripts/screenshot.sh
 $emojiMenu = rofimoji -a type copy type-numerical
 
.config/hypr/hypridle.conf
@@ -4,18 +4,18 @@ general {
     after_sleep_cmd = hyprctl dispatch dpms on  
 }
 
-listener {
-    timeout = 600                                
-    on-timeout = loginctl lock-session            
-}
+#listener {
+#    timeout = 10                                
+#    on-timeout = loginctl lock-session            
+#}
 
 listener {
-    timeout = 700                                                     
+    timeout = 600                                                     
     on-timeout = hyprctl dispatch dpms off                            
     on-resume = hyprctl dispatch dpms on
 }
 
-#listener {
-#    timeout = 30                               
-#    on-timeout = systemctl suspend                
-#}
+listener {
+    timeout = 700                               
+    on-timeout = systemctl suspend                
+}
.config/rofi/wraith-theme.rasi
@@ -1,6 +1,6 @@
 configuration{
     display-run: "CMD :";
-    display-drun: "Apps :";    
+    display-drun: "";    
     display-calc: "Calculate :";
     drun-display-format: "{icon} {name}";
     show-icons: true;
.config/waybar/config.jsonc
@@ -3,27 +3,34 @@
   "position": "top",
   "height": 32,
   "spacing": 0,
-  "modules-left": [
-    "clock",
-    "custom/packages"
-  ],
-  "modules-center": [
-    "hyprland/workspaces"
-  ],
+  "modules-left": ["clock", "custom/packages"],
+  "modules-center": ["hyprland/workspaces#main"],
   "modules-right": [
+    "hyprland/workspaces#special",
     "custom/brightness",
     "pulseaudio",
     "custom/power"
   ],
-  "hyprland/workspaces": {
+  "hyprland/workspaces#main": {
     "disable-scroll": false,
     "format": "{icon}",
     "active-only": true,
+    "show-special": false,
+      "persistent-workspaces": {
+    "*": [1, 2, 3]
+  },
     "format-icons": {
       "1": "๏ƒƒ",
       "2": "๎ฏŠ",
-      "3": "๏†‡",
-      "default": "๏™"
+      "3": "๏†‡"
+    }
+  },
+  "hyprland/workspaces#special": {
+    "format": "{icon}",
+    "show-special": true,
+    "ignore-workspaces": ["1", "2", "3"],
+    "format-icons": {
+      "music": "๓ฐš"
     }
   },
   "clock": {
@@ -47,14 +54,14 @@
     "exec": "$HOME/.wraith/scripts/packages.sh details",
     "interval": 5,
     "return-type": "json",
-    "cursor":false,
+    "cursor": false,
     "on-click": "$HOME/.wraith/scripts/packages.sh",
     "tooltip": true
   },
   "custom/power": {
     "format": "๓ฐฅ",
     "tooltip": false,
-    "cursor":false,
+    "cursor": false,
     "menu": "on-click",
     "menu-file": "~/.config/waybar/power_menu.xml",
     "menu-actions": {
@@ -69,13 +76,9 @@
     "format-icons": {
       "headphone": "๏€ฅ ",
       "headset": "๏€ฅ ",
-      "default": [
-        "๏€ฆ ",
-        "๏€ง  ",
-        "๏€จ  "
-      ]
+      "default": ["๏€ฆ ", "๏€ง  ", "๏€จ  "]
     },
-    "cursor":false,
+    "cursor": false,
     "on-click-right": "pavucontrol -t 3",
     "on-click": "pactl -- set-sink-mute 0 toggle",
     "tooltip": false
@@ -85,17 +88,13 @@
     "exec": "$HOME/.wraith/scripts/brightness.sh get",
     "return-type": "json",
     "format": "{icon}{percentage}%",
-    "cursor":false,
+    "cursor": false,
     "on-click": "$HOME/.wraith/scripts/brightness.sh set 10",
     "on-scroll-up": "$HOME/.wraith/scripts/brightness.sh set +5",
     "on-scroll-down": "$HOME/.wraith/scripts/brightness.sh set -5",
     "format-icons": {
-      "default": [
-        "๓ฐƒž  ",
-        "๓ฐƒŸ  ",
-        "๓ฐƒ   "
-      ]
+      "default": ["๓ฐƒž  ", "๓ฐƒŸ  ", "๓ฐƒ   "]
     },
     "tooltip": false
   }
-}
\ No newline at end of file
+}
.config/waybar/style.css
@@ -1,24 +1,26 @@
 * {
-  font-family: "JetBrains Nerd Font Propo", "Font Awesome 7 Free", "Font Awesome 7 Free Solid";
+  font-family: "JetBrains Nerd Font Propo",
+               "Font Awesome 7 Free",
+               "Font Awesome 7 Free Solid";
   font-weight: bold;
   font-size: 14px;
   color: #b4befe;
 }
 
 tooltip {
-    background: #1e1e2e;
-    border: 1px solid #b4befe;
-    padding: 16px 18px;
-    border-radius: 5px;
+  background: #1e1e2e;
+  border: 1px solid #b4befe;
+  padding: 16px 18px;
+  border-radius: 5px;
 }
 
 menu {
-    background: #161320;
-    color: #888888;
-    border-radius: 7px;
+  background: #161320;
+  color: #888888;
+  border-radius: 7px;
 }
 
-menuitem:hover{
+menuitem:hover {
   background-color: #888888;
 }
 
@@ -30,66 +32,76 @@ menuitem:hover{
 #custom-packages,
 #custom-power,
 #custom-brightness,
-#pulseaudio
-{
+#pulseaudio,
+#workspaces.special {
   background-color: #241f31;
   padding: 4px 10px;
-  font-size: 18px; 
-  margin-top : 10px;
+  font-size: 18px;
+  margin-top: 10px;
   border-radius: 7px;
 }
 
-#clock{
-    margin-left:14px;
+#clock {
+  margin-left: 14px;
+}
+
+#custom-packages {
+  margin-left: 10px;
+}
+
+#custom-power {
+  margin-right: 14px;
+  padding: 0px 10px;
+  min-width: 20px;
 }
 
-#custom-packages
-{
-  margin-left:10px;
+#custom-brightness,
+#pulseaudio {
+  min-width: 80px;
+  margin-right: 5px;
 }
 
-#workspaces{
+#workspaces.main {
   background-color: #241f31;
-  padding: 4px 6px; 
-  margin-top: 6px; 
+  padding: 4px 6px;
+  margin-top: 6px;
   margin-left: 6px;
   margin-right: 6px;
   border-radius: 7px;
   border-width: 0px;
 }
 
-#workspaces button{
+#workspaces.special {
+  padding: 0px;
+  margin-right: 5px;
+}
+
+#workspaces.main button,
+#workspaces.special button {
   background: #241f31;
   border: none;
   color: #888888;
   padding: 0px 8px;
-  padding-left:2px;
-  padding-right:4px;
+  padding-left: 2px;
+  padding-right: 4px;
   margin: 0 2px;
   font-weight: bold;
   min-width: 30px;
   transition: all 250ms ease-in-out;
 }
 
-#workspaces button.hover{
-  border:none;
-  margin: 0px;
-  font-weight: bold;
+#workspaces.main button:hover,
+#workspaces.special button:hover {
+  border: none;
+  text-shadow: none;
 }
 
-#workspaces button.active {
+#workspaces.main button.active {
   border: 1px solid #888888;
   min-width: 80px;
 }
 
-#custom-power{
-  margin-right: 14px;
-  padding:0px 10px;
-  min-width: 20px;
-}
-
-#custom-brightness,
-#pulseaudio{
-  min-width:80px;
-  margin-right: 5px;
+#workspaces.special button.active {
+  border: 1px solid #888888;
+  min-width: 40px;
 }
.local/share/applications/Docker Desktop.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Name=Docker-Desktop
+Comment=A simple terminal UI for Docker and Docker-compose
+Exec=xdg-terminal-exec --app-id=org.wraith.lazydocker -e lazydocker
+Terminal=True
+Type=Application
+Icon=~/.assets/icons/docker.png
+StartupNotify=false
\ No newline at end of file
.local/share/applications/YT Music.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Name=YT Music
+Comment=YT Music
+Exec=/home/robin/.wraith/scripts/launch-webapp https://music.youtube.com
+Terminal=false
+Type=Application
+Icon=/home/robin/.assets/icons/YT Music.png
+StartupNotify=true
.wraith/scripts/install-webapp
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+if [ "$#" -lt 3 ]; then
+  echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m"
+  APP_NAME=$(gum input --prompt "Name> " --placeholder "Github")
+  APP_URL=$(gum input --prompt "URL> " --placeholder "https://github.com")
+  ICON_REF=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)")
+  CUSTOM_EXEC=""
+  MIME_TYPES=""
+  INTERACTIVE_MODE=true
+else
+  APP_NAME="$1"
+  APP_URL="$2"
+  ICON_REF="$3"
+  CUSTOM_EXEC="$4" # Optional custom exec command
+  MIME_TYPES="$5"  # Optional mime types
+  INTERACTIVE_MODE=false
+fi
+
+# Ensure valid execution
+if [[ -z "$APP_NAME" || -z "$APP_URL" || -z "$ICON_REF" ]]; then
+  echo "You must set app name, app URL, and icon URL!"
+  exit 1
+fi
+
+# Refer to local icon or fetch remotely from URL
+ICON_DIR="$HOME/.assets/icons"
+if [[ $ICON_REF =~ ^https?:// ]]; then
+  ICON_PATH="$ICON_DIR/$APP_NAME.png"
+  if curl -sL -o "$ICON_PATH" "$ICON_REF"; then
+    ICON_PATH="$ICON_DIR/$APP_NAME.png"
+  else
+    echo "Error: Failed to download icon."
+    exit 1
+  fi
+else
+  ICON_PATH="$ICON_DIR/$ICON_REF"
+fi
+
+# Use custom exec if provided, otherwise default behavior
+if [[ -n $CUSTOM_EXEC ]]; then
+  EXEC_COMMAND="$CUSTOM_EXEC"
+else
+  EXEC_COMMAND="$HOME/.wraith/scripts/launch-webapp $APP_URL"
+fi
+
+# Create application .desktop file
+DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop"
+
+cat >"$DESKTOP_FILE" <<EOF
+[Desktop Entry]
+Version=1.0
+Name=$APP_NAME
+Comment=$APP_NAME
+Exec=$EXEC_COMMAND
+Terminal=false
+Type=Application
+Icon=$ICON_PATH
+StartupNotify=true
+EOF
+
+# Add mime types if provided
+if [[ -n $MIME_TYPES ]]; then
+  echo "MimeType=$MIME_TYPES" >>"$DESKTOP_FILE"
+fi
+
+chmod +x "$DESKTOP_FILE"
\ No newline at end of file
.wraith/scripts/launch-webapp
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+browser=$(xdg-settings get default-web-browser)
+
+case $browser in
+google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium*) ;;
+*) browser="chromium.desktop" ;;
+esac
+
+exec setsid uwsm-app -- chromium --app="$1" "${@:2}"
\ No newline at end of file
.wraith/scripts/packages.sh
@@ -29,7 +29,7 @@ packages_installed_explicitly() {
 
         out+=$'๐Ÿ“ฆ  '"<b>$name</b> ($ver)"$'\n'"<span size=\"small\">$short_desc</span>"$'\x0f'
 
-    done < <(pacman -Qqe)
+    done < <(pacman -Qiqe | awk -F': ' '/^Name/ {name=$2}/^Install Date/ {print $2 " " name}' | sort -r | awk '{print $NF}')
     printf "%b" "$out" | rofi -dmenu -sep $'\x0f' -eh 2 -i -p "Packages :" -no-show-icons -markup-rows -no-cycle
 }
 
.zshrc
@@ -13,7 +13,8 @@ export ANDROID_SWT=/usr/share/java
 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
 export NVM_DIR="$HOME/.nvm"
 export FZF_DEFAULT_OPTS="--layout=reverse --height=40%"
-export PATH="$PATH:$BUN_INSTALL/bin:$ANDROID_HOME/platform-tools:$JAVA_HOME:$ANDROID_HOME/emulator"
+export WRAITH_SCRIPTS="$HOME/.wraith/scripts"
+export PATH="$PATH:$BUN_INSTALL/bin:$ANDROID_HOME/platform-tools:$JAVA_HOME:$ANDROID_HOME/emulator:$WRAITH_SCRIPTS"
 #--------------------------------------------------------------------------------
 # SOURCING
 #--------------------------------------------------------------------------------