Compare commits
5 Commits
c302033063
...
e5eb201d16
| Author | SHA1 | Date | |
|---|---|---|---|
| e5eb201d16 | |||
| 35647d799b | |||
| 15680ecfec | |||
| 99eb1be04c | |||
| 2c7ade084d |
@@ -8,6 +8,8 @@
|
|||||||
<img src="https://img.shields.io/badge/AGS-231F20?style=for-the-badge&logo=gnome&logoColor=white" alt="AGS" />
|
<img src="https://img.shields.io/badge/AGS-231F20?style=for-the-badge&logo=gnome&logoColor=white" alt="AGS" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## What's Inside?
|
## What's Inside?
|
||||||
|
|
||||||
My current setup is built around these core components:
|
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.
|
- **[Hyprland](https://hyprland.org/):** A highly customizable dynamic tiling Wayland compositor.
|
||||||
- **[Waybar](https://github.com/Alexays/Waybar):** A customizable, modular status bar.
|
- **[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.
|
- **[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
|
### Directory Structure
|
||||||
|
|
||||||
- **`hypr/`**: Hyprland configurations (keybindings, window rules, animations, layout settings, and autostart).
|
- **`hypr/`**: Hyprland configurations (keybindings, window rules, animations, layout settings, and autostart).
|
||||||
- **`waybar/`**: Status bar layout, CSS styling, and custom interactive modules.
|
- **`waybar/`**: Status bar layout, CSS styling, and custom interactive modules.
|
||||||
- **`ags/`**: Custom desktop widgets built with TypeScript and GTK.
|
- **`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.
|
- **`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
|
## Installation
|
||||||
|
|
||||||
An automated installer script (`install.sh`) is provided to safely apply these configurations to your system.
|
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.
|
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.
|
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/`.
|
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.
|
4. **Dependency Management:** Automatically installs missing system dependencies (like `python-pywal` and `imagemagick`).
|
||||||
5. **Instant Refresh:** Automatically restarts background services like `waybar` and `ags` so changes take effect immediately.
|
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.
|
||||||
@@ -32,3 +32,6 @@ layout {
|
|||||||
# Avoid overly wide single-window layouts on wide screens
|
# Avoid overly wide single-window layouts on wide screens
|
||||||
# single_window_aspect_ratio = 1 1
|
# single_window_aspect_ratio = 1 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Remove default window transparency
|
||||||
|
windowrule = opacity 1.0 override 1.0 override, match:tag default-opacity
|
||||||
|
|||||||
+26
-1
@@ -34,7 +34,7 @@ echo ""
|
|||||||
|
|
||||||
compute_hash() {
|
compute_hash() {
|
||||||
if [ -d "$1" ]; then
|
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
|
else
|
||||||
sha256sum "$1" 2>/dev/null | cut -d' ' -f1
|
sha256sum "$1" 2>/dev/null | cut -d' ' -f1
|
||||||
fi
|
fi
|
||||||
@@ -95,6 +95,31 @@ backup_and_copy() {
|
|||||||
fi
|
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 "=== Checking for local changes ==="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
|||||||
Executable
+49
@@ -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
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
WALLPAPER_DIR="$HOME/wallpapers"
|
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
|
# Create the directory if it doesn't exist
|
||||||
mkdir -p "$WALLPAPER_DIR"
|
mkdir -p "$WALLPAPER_DIR"
|
||||||
@@ -26,7 +26,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Extracting colors using Pywal..."
|
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
|
# Clear old backgrounds and copy the new one into the dynamic theme
|
||||||
rm -f "$THEME_DIR/backgrounds/"*
|
rm -f "$THEME_DIR/backgrounds/"*
|
||||||
@@ -61,6 +61,6 @@ EOF
|
|||||||
|
|
||||||
# Apply the Blob-Dynamic theme
|
# Apply the Blob-Dynamic theme
|
||||||
# omarchy-theme-set manages the background and reloads waybar and AGS
|
# 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"
|
echo "Wallpaper and dynamic theme applied successfully: $IMAGE_PATH"
|
||||||
Reference in New Issue
Block a user