commit 97a2d82aaf05fe231164fa6ba3896bdb3000196a Author: SirBlobby Date: Thu Apr 9 16:23:57 2026 -0400 first commit diff --git a/branding/about.txt b/branding/about.txt new file mode 100644 index 0000000..0c39ab6 --- /dev/null +++ b/branding/about.txt @@ -0,0 +1,26 @@ +█████████████████████████████████████████████████████ +█████████████████████████████████████████████████████ +████ ████ ████ +████ ████ ████ +████ █████████████████████ ████████ ████ +████ █████████████████████ ████████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████████████ ████ ████ +████████████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ████ ████ ████ +████ ██████████████████████████████████████ ████ +████ ██████████████████████████████████████ ████ +████ ████ ████ +████ ████ ████ +████████████████████████████ ████████████████████ +████████████████████████████ ████████████████████ diff --git a/branding/screensaver.txt b/branding/screensaver.txt new file mode 100644 index 0000000..e69af87 --- /dev/null +++ b/branding/screensaver.txt @@ -0,0 +1,9 @@ + ▄████████ ▄█ ▄████████ ▀█████████▄ ▄█ ▄██████▄ ▀█████████▄ + ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ + ███ █▀ ███▌ ███ ███ ███ ███ ███ ███ ███ ███ ███ + ███ ███▌ ▄███▄▄▄▄██▀ ▄███▄▄▄██▀ ███ ███ ███ ▄███▄▄▄██▀ +▀███████████ ███▌ ▀▀███▀▀▀▀▀ ▀▀███▀▀▀██▄ ███ ███ ███ ▀▀███▀▀▀██▄ + ███ ███ ▀███████████ ███ ██▄ ███ ███ ███ ███ ██▄ + ▄█ ███ ███ ███ ███ ███ ███ ███▌ ▄ ███ ███ ███ ███ + ▄████████▀ █▀ ███ ███ ▄█████████▀ █████▄▄██ ▀██████▀ ▄█████████▀ + ███ ███ ▀ diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..28204fe --- /dev/null +++ b/install.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +TIMESTAMP=$(date +%Y%m%d_%H%M%S) +HOME_DIR="$(eval echo ~$(whoami))" + +echo "=== Omarchy Config Installer ===" +echo "" +echo "Installing for user: $(whoami)" +echo "Home directory: $HOME_DIR" +echo "" + +# Function to backup and copy +backup_and_copy() { + local src="$1" + local dest="$2" + local name="$3" + + if [ -e "$dest" ]; then + echo "Backing up existing $name..." + mkdir -p "$dest.bak.$TIMESTAMP" + cp -r "$dest"/* "$dest.bak.$TIMESTAMP/" 2>/dev/null || true + fi + + echo "Copying $name..." + mkdir -p "$(dirname "$dest")" + cp -r "$src"/* "$dest"/ +} + +# Backup and copy waybar config +backup_and_copy "$SCRIPT_DIR/waybar" "$HOME_DIR/.config/waybar" "Waybar config" + +# Backup and copy branding +backup_and_copy "$SCRIPT_DIR/branding" "$HOME_DIR/.config/omarchy/branding" "Branding files" + +# Copy scripts to ~/scripts/ +mkdir -p "$HOME_DIR/scripts" +backup_and_copy "$SCRIPT_DIR/scripts" "$HOME_DIR/scripts" "Custom scripts" + +# Create omarchy-style command wrappers in ~/.local/bin +create_command_wrappers() { + local bin_dir="$HOME_DIR/.local/bin" + local scripts_dir="$HOME_DIR/scripts" + mkdir -p "$bin_dir" + + for script in "$SCRIPT_DIR/scripts"/*.sh; do + if [ -f "$script" ]; then + local base_name=$(basename "$script" .sh) + local wrapper_name="$base_name" + local wrapper_path="$bin_dir/$wrapper_name" + + cat > "$wrapper_path" < /dev/null 2>&1; then + sudo chmod 644 "$profile_script" + echo "Added system-wide PATH in /etc/profile.d/" + else + echo "Skipped system PATH (no sudo available)" + fi + else + echo "System PATH already configured" + fi +} + +add_system_path + +# Also add to user's shell rc files for immediate effect +add_path_to_shell() { + local shell_rc="$1" + local path_line='export PATH="$HOME/scripts:$HOME/.local/bin:$PATH"' + + if [ -f "$shell_rc" ]; then + if ! grep -q 'scripts' "$shell_rc" 2>/dev/null; then + echo "" >> "$shell_rc" + echo "# Added by Omarchy-Config installer" >> "$shell_rc" + echo "$path_line" >> "$shell_rc" + echo "Added to $shell_rc" + else + echo "$path_line already in $shell_rc" + fi + fi +} + +add_path_to_shell "$HOME_DIR/.bashrc" +add_path_to_shell "$HOME_DIR/.zshrc" + +# Make scripts executable +chmod +x "$HOME_DIR/scripts/"*.sh 2>/dev/null || true + +echo "" +echo "=== Restarting Waybar ===" +if command -v omarchy-restart-waybar &> /dev/null; then + omarchy-restart-waybar +else + echo "Warning: omarchy-restart-waybar not found. Please restart waybar manually." +fi + +echo "" +echo "=== Installation Complete ===" +echo "Scripts are in: $HOME_DIR/scripts/" +echo "Custom commands available as: blob_" +echo "" +echo "Example:" +echo " blob_wifi" +echo "" +echo "To apply PATH changes, run: source ~/.bashrc (or ~/.zshrc)" diff --git a/scripts/blob_wifi.sh b/scripts/blob_wifi.sh new file mode 100755 index 0000000..7725670 --- /dev/null +++ b/scripts/blob_wifi.sh @@ -0,0 +1,112 @@ +#!/bin/bash +if [ "$EUID" -ne 0 ]; then + exec sudo "$0" "$@" +fi + +# ============================================================================== +# Arch Linux: NetworkManager -> iwd Migration (GMU Eduroam Edition) +# ============================================================================== +# +# PREREQUISITES: +# 1. Run as root (sudo). +# 2. Know your GMU NetID and password. +# +# WHAT THIS DOES: +# 1. Disables NetworkManager & wpa_supplicant to prevent conflicts. +# 2. Enables iwd with built-in DHCP (network configuration). +# 3. Sets up systemd-resolved for DNS. +# 4. Creates the secure eduroam profile in /var/lib/iwd/ +# ============================================================================== + +# Colors +GREEN='\033[0;32m' +RED='\033[0;31m' +NC='\033[0m' + +echo -e "${GREEN}=== Switching to iwd for GMU Eduroam ===${NC}" + +# 1. INSTALL IWD (If missing) +if ! command -v iwctl &> /dev/null; then + echo "iwd not found. Installing..." + pacman -S --noconfirm iwd +fi + +# 2. GATHER CREDENTIALS +echo "" +echo "Enter your GMU credentials." +read -p "GMU Email (e.g., jdoe@gmu.edu): " IDENTITY +read -s -p "Password: " PASSWORD +echo "" + +# 3. STOP CONFLICTING SERVICES +echo -e "\n${GREEN}[1/5] Stopping NetworkManager & wpa_supplicant...${NC}" +systemctl stop NetworkManager +systemctl disable NetworkManager +pkill wpa_supplicant + +# 4. CONFIGURE IWD (Enable Built-in DHCP) +echo -e "${GREEN}[2/5] Configuring iwd main.conf...${NC}" +mkdir -p /etc/iwd +cat > /etc/iwd/main.conf < /var/lib/iwd/eduroam.8021x < /dev/null; then + echo -e "${GREEN}Internet is WORKING.${NC}" + else + echo -e "${RED}Connected to WiFi, but no Internet.${NC}" + echo "Check DNS: cat /etc/resolv.conf" + fi +else + echo -e "\n${RED}Connection failed.${NC}" + echo "Debug with: iwctl station $IFACE get-networks" +fi diff --git a/waybar/config.jsonc b/waybar/config.jsonc new file mode 100644 index 0000000..c7c9c9d --- /dev/null +++ b/waybar/config.jsonc @@ -0,0 +1,191 @@ +{ + "reload_style_on_change": true, + "layer": "top", + "position": "top", + "spacing": 0, + "height": 30, + "modules-left": ["custom/omarchy", "hyprland/workspaces"], + "modules-center": ["clock", "custom/update", "custom/voxtype", "custom/screenrecording-indicator", "custom/idle-indicator", "custom/notification-silencing-indicator"], + "modules-right": [ + "group/tray-expander", + "bluetooth", + "network", + "pulseaudio", + "cpu", + "memory", + "disk", + "battery" + ], + "memory": { + "interval": 10, + "format": "󰘚", + "tooltip-format": "Memory: {used:0.1f}G/{total:0.1f}G" + }, + "disk": { + "interval": 30, + "format": "󰋊", + "path": "/", + "tooltip-format": "Disk: {used}/{total}" + }, + "hyprland/workspaces": { + "on-click": "activate", + "format": "{icon}", + "format-icons": { + "default": "", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "0", + "active": "󱓻" + }, + "persistent-workspaces": { + "1": [], + "2": [], + "3": [], + "4": [], + "5": [], + "6": [], + "7": [], + "8": [], + "9": [] + } + }, + "custom/omarchy": { + "format": "\ue900", + "on-click": "omarchy-menu", + "on-click-right": "xdg-terminal-exec", + "tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space" + }, + "custom/update": { + "format": "", + "exec": "omarchy-update-available", + "on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update", + "tooltip-format": "Omarchy update available", + "signal": 7, + "interval": 21600 + }, + + "cpu": { + "interval": 5, + "format": "󰍛", + "on-click": "omarchy-launch-or-focus-tui btop", + "on-click-right": "alacritty" + }, + "clock": { + "format": "{:L%A %d %B %H:%M}", + "format-alt": "{:L%d %B W%V %Y}", + "tooltip": false, + "on-click-right": "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select" + }, + "network": { + "format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"], + "format": "{icon}", + "format-wifi": "{icon}", + "format-ethernet": "󰀂", + "format-disconnected": "󰤮", + "tooltip-format-wifi": "{essid} ({frequency} GHz)", + "tooltip-format-ethernet": "Connected", + "tooltip-format-disconnected": "Disconnected", + "interval": 3, + "spacing": 1, + "on-click": "omarchy-launch-wifi" + }, + "battery": { + "format": "{capacity}% {icon}", + "format-discharging": "{icon}", + "format-charging": "{icon}", + "format-plugged": "", + "format-icons": { + "charging": ["󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"], + "default": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] + }, + "format-full": "󰂅", + "tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%", + "tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%", + "interval": 5, + "on-click": "omarchy-menu power", + "states": { + "warning": 20, + "critical": 10 + } + }, + "bluetooth": { + "format": "", + "format-off": "󰂲", + "format-disabled": "󰂲", + "format-connected": "󰂱", + "format-no-controller": "", + "tooltip-format": "Devices connected: {num_connections}", + "on-click": "omarchy-launch-bluetooth" + }, + "pulseaudio": { + "format": "{icon}", + "on-click": "omarchy-launch-audio", + "on-click-right": "pamixer -t", + "tooltip-format": "Playing at {volume}%", + "scroll-step": 5, + "format-muted": "", + "format-icons": { + "headphone": "", + "headset": "", + "default": ["", "", ""] + } + }, + "group/tray-expander": { + "orientation": "inherit", + "drawer": { + "transition-duration": 600, + "children-class": "tray-group-item" + }, + "modules": ["custom/expand-icon", "tray"] + }, + "custom/expand-icon": { + "format": "", + "tooltip": false, + "on-scroll-up": "", + "on-scroll-down": "", + "on-scroll-left": "", + "on-scroll-right": "" + }, + "custom/screenrecording-indicator": { + "on-click": "omarchy-cmd-screenrecord", + "exec": "$OMARCHY_PATH/default/waybar/indicators/screen-recording.sh", + "signal": 8, + "return-type": "json" + }, + "custom/voxtype": { + "exec": "omarchy-voxtype-status", + "return-type": "json", + "format": "{icon}", + "format-icons": { + "idle": "", + "recording": "󰍬", + "transcribing": "󰔟" + }, + "tooltip": true, + "on-click-right": "omarchy-voxtype-config", + "on-click": "omarchy-voxtype-model" + }, + "custom/idle-indicator": { + "on-click": "omarchy-toggle-idle", + "exec": "$OMARCHY_PATH/default/waybar/indicators/idle.sh", + "signal": 9, + "return-type": "json" + }, + "custom/notification-silencing-indicator": { + "on-click": "omarchy-toggle-notification-silencing", + "exec": "$OMARCHY_PATH/default/waybar/indicators/notification-silencing.sh", + "signal": 10, + "return-type": "json" + }, + "tray": { + "icon-size": 14, + "spacing": 17 + } +} diff --git a/waybar/style.css b/waybar/style.css new file mode 100644 index 0000000..5e870be --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,114 @@ +@import "../omarchy/current/theme/waybar.css"; + +* { + background-color: @background; + color: @foreground; + + border: none; + border-radius: 0; + min-height: 0; + font-family: 'JetBrainsMono Nerd Font'; + font-size: 14px; +} + +.modules-left { + margin-left: 8px; +} + +.modules-right { + margin-right: 8px; +} + +#workspaces button { + background: transparent; + box-shadow: none; + text-shadow: none; + border: none; + border-radius: 0; + padding: 0 6px; + margin: 0 1.5px; + min-width: 9px; +} + +#workspaces button label { + color: @foreground; + font-family: 'JetBrainsMono Nerd Font'; + font-size: 14px; +} + +#workspaces button.empty { + opacity: 0.5; +} + +#cpu, +#memory, +#disk, +#battery, +#pulseaudio, +#custom-omarchy, + +#custom-update { + min-width: 12px; + margin: 0 7.5px; +} + +#tray { + margin-right: 16px; +} + +#bluetooth { + margin-right: 17px; +} + +#network { + margin-right: 13px; +} + +#custom-expand-icon { + margin-right: 18px; +} + +tooltip { + padding: 2px; +} + +#custom-update { + font-size: 10px; +} + +#clock { + margin-left: 8.75px; +} + +.hidden { + opacity: 0; +} + + +#custom-screenrecording-indicator, +#custom-idle-indicator, +#custom-notification-silencing-indicator { + min-width: 12px; + margin-left: 5px; + margin-right: 0; + font-size: 10px; + padding-bottom: 1px; +} + +#custom-screenrecording-indicator.active { + color: #a55555; +} + +#custom-voxtype { + min-width: 12px; + margin: 0 0 0 7.5px; +} + +#custom-voxtype.recording { + color: #a55555; +} + +#custom-idle-indicator.active, +#custom-notification-silencing-indicator.active { + color: #a55555; +}