Compare commits

..

5 Commits

5 changed files with 98 additions and 7 deletions
+17 -3
View File
@@ -8,6 +8,8 @@
<img src="https://img.shields.io/badge/AGS-231F20?style=for-the-badge&logo=gnome&logoColor=white" alt="AGS" />
</div>
---
## What's Inside?
My current setup is built around these core components:
@@ -15,15 +17,26 @@ My current setup is built around these core components:
- **[Hyprland](https://hyprland.org/):** A highly customizable dynamic tiling Wayland compositor.
- **[Waybar](https://github.com/Alexays/Waybar):** A customizable, modular status bar.
- **[AGS](https://github.com/Aylur/ags):** Aylur's Gtk Shell, used for creating custom, scriptable desktop widgets.
- **Dynamic Theming:** Seamlessly integrated with Pywal to extract color palettes from wallpapers and apply them instantly across the entire system (widgets, terminal, status bar).
### Directory Structure
- **`hypr/`**: Hyprland configurations (keybindings, window rules, animations, layout settings, and autostart).
- **`waybar/`**: Status bar layout, CSS styling, and custom interactive modules.
- **`ags/`**: Custom desktop widgets built with TypeScript and GTK.
- **`scripts/`**: Global utility scripts (such as a streamlined GMU Eduroam Wi-Fi connector).
- **`scripts/`**: Global utility scripts seamlessly exposed as commands by the installer.
- **`wallpapers/`**: A collection of local custom wallpapers for dynamic theming.
- **`omarchy/hooks/`**: Event hooks for the Omarchy system (e.g. automatically applying dynamic themes when changing wallpapers).
- **`branding/`**: Custom ASCII art and system branding assets.
## Custom Commands
The installer automatically exposes scripts from the `scripts/` directory as global commands:
- **`blob_wallpaper [path]`**: Sets your background using Omarchy's background system. If used with an image from `~/wallpapers/` or a valid path, it leverages Pywal to generate a full system color palette and dynamically updates the `blob-dynamic` theme, AGS widgets, and Waybar.
- **`blob_glass [on|off|toggle]`**: A quick toggle to enable or disable window transparency on the fly.
- **`blob_wifi`**: A streamlined script to connect to the GMU Eduroam Wi-Fi network using `iwd` and `systemd-resolved` (replaces NetworkManager).
## Installation
An automated installer script (`install.sh`) is provided to safely apply these configurations to your system.
@@ -44,5 +57,6 @@ An automated installer script (`install.sh`) is provided to safely apply these c
1. **Safety First:** Computes file hashes to detect local changes. Backs up existing configurations before applying updates.
2. **Auto-Deployment:** Copies the tracked configurations seamlessly into your `~/.config/` directory.
3. **Command Wrapping:** Automatically sets up scripts from the `scripts/` directory as global commands in `~/.local/bin/`.
4. **Shell Integration:** Injects the necessary paths into your `~/.bashrc`, `~/.zshrc`, and system-wide profiles.
5. **Instant Refresh:** Automatically restarts background services like `waybar` and `ags` so changes take effect immediately.
4. **Dependency Management:** Automatically installs missing system dependencies (like `python-pywal` and `imagemagick`).
5. **Shell Integration:** Injects the necessary paths into your `~/.bashrc`, `~/.zshrc`, and system-wide profiles.
6. **Instant Refresh:** Automatically restarts background services like `waybar` and `ags` so changes take effect immediately.
+3
View File
@@ -32,3 +32,6 @@ layout {
# Avoid overly wide single-window layouts on wide screens
# single_window_aspect_ratio = 1 1
}
# Remove default window transparency
windowrule = opacity 1.0 override 1.0 override, match:tag default-opacity
+26 -1
View File
@@ -34,7 +34,7 @@ echo ""
compute_hash() {
if [ -d "$1" ]; then
find "$1" -type f -name '*.jsonc' -o -name '*.css' -o -name '*.txt' -o -name '*.sh' 2>/dev/null | sort | xargs -I{} sha256sum {} 2>/dev/null | sha256sum | cut -d' ' -f1
find "$1" -type f 2>/dev/null | sort | xargs -I{} sha256sum {} 2>/dev/null | sha256sum | cut -d' ' -f1
else
sha256sum "$1" 2>/dev/null | cut -d' ' -f1
fi
@@ -95,6 +95,31 @@ backup_and_copy() {
fi
}
install_dependencies() {
echo "=== Checking Dependencies ==="
local deps_needed=()
if ! command -v wal &> /dev/null; then
deps_needed+=("python-pywal")
fi
if ! command -v magick &> /dev/null && ! command -v convert &> /dev/null; then
deps_needed+=("imagemagick")
fi
if [ ${#deps_needed[@]} -gt 0 ]; then
echo "Installing missing dependencies: ${deps_needed[*]}"
if command -v sudo &> /dev/null; then
sudo pacman -S --needed --noconfirm "${deps_needed[@]}"
else
echo "Warning: sudo not found. Please install manually: ${deps_needed[*]}"
fi
else
echo "All dependencies are installed."
fi
echo ""
}
install_dependencies
echo "=== Checking for local changes ==="
echo ""
+49
View File
@@ -0,0 +1,49 @@
#!/bin/bash
# Configuration files to modify
ACTIVE_CONF="$HOME/.config/hypr/looknfeel.conf"
REPO_CONF="$HOME/Documents/dotfiles/hypr/looknfeel.conf"
# The rule to enforce solid opacity
OVERRIDE_RULE="windowrule = opacity 1.0 override 1.0 override, match:tag default-opacity"
# A marker comment
MARKER="# Remove default window transparency"
ACTION=$1
if [ -z "$ACTION" ]; then
ACTION="toggle"
fi
enable_glass() {
# Remove the rules
sed -i "/$MARKER/d" "$ACTIVE_CONF" "$REPO_CONF" 2>/dev/null
sed -i "/opacity 1.0 override/d" "$ACTIVE_CONF" "$REPO_CONF" 2>/dev/null
echo "Transparency enabled (glass on)."
hyprctl reload >/dev/null
}
disable_glass() {
# Add the rules if they don't exist
if ! grep -q "opacity 1.0 override" "$ACTIVE_CONF"; then
echo -e "\n$MARKER\n$OVERRIDE_RULE" >> "$ACTIVE_CONF"
echo -e "\n$MARKER\n$OVERRIDE_RULE" >> "$REPO_CONF"
fi
echo "Transparency disabled (glass off)."
hyprctl reload >/dev/null
}
if [ "$ACTION" == "on" ]; then
enable_glass
elif [ "$ACTION" == "off" ]; then
disable_glass
elif [ "$ACTION" == "toggle" ]; then
if grep -q "opacity 1.0 override" "$ACTIVE_CONF"; then
enable_glass
else
disable_glass
fi
else
echo "Usage: blob_glass [on|off|toggle]"
exit 1
fi
+3 -3
View File
@@ -1,7 +1,7 @@
#!/bin/bash
WALLPAPER_DIR="$HOME/wallpapers"
THEME_DIR="$HOME/.config/omarchy/themes/Blob-Dynamic"
THEME_DIR="$HOME/.config/omarchy/themes/blob-dynamic"
# Create the directory if it doesn't exist
mkdir -p "$WALLPAPER_DIR"
@@ -26,7 +26,7 @@ else
fi
echo "Extracting colors using Pywal..."
wal -i "$IMAGE_PATH" -n -q
wal -i "$IMAGE_PATH" -n -q 2> >(grep -v "deprecated in IMv7" >&2)
# Clear old backgrounds and copy the new one into the dynamic theme
rm -f "$THEME_DIR/backgrounds/"*
@@ -61,6 +61,6 @@ EOF
# Apply the Blob-Dynamic theme
# omarchy-theme-set manages the background and reloads waybar and AGS
omarchy-theme-set "Blob-Dynamic"
omarchy-theme-set "blob-dynamic"
echo "Wallpaper and dynamic theme applied successfully: $IMAGE_PATH"