first commit

This commit is contained in:
2026-04-09 16:23:57 -04:00
commit 97a2d82aaf
6 changed files with 579 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
█████████████████████████████████████████████████████
█████████████████████████████████████████████████████
████ ████ ████
████ ████ ████
████ █████████████████████ ████████ ████
████ █████████████████████ ████████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████████████ ████ ████
████████████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ████ ████ ████
████ ██████████████████████████████████████ ████
████ ██████████████████████████████████████ ████
████ ████ ████
████ ████ ████
████████████████████████████ ████████████████████
████████████████████████████ ████████████████████
+9
View File
@@ -0,0 +1,9 @@
▄████████ ▄█ ▄████████ ▀█████████▄ ▄█ ▄██████▄ ▀█████████▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ █▀ ███▌ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███▌ ▄███▄▄▄▄██▀ ▄███▄▄▄██▀ ███ ███ ███ ▄███▄▄▄██▀
▀███████████ ███▌ ▀▀███▀▀▀▀▀ ▀▀███▀▀▀██▄ ███ ███ ███ ▀▀███▀▀▀██▄
███ ███ ▀███████████ ███ ██▄ ███ ███ ███ ███ ██▄
▄█ ███ ███ ███ ███ ███ ███ ███▌ ▄ ███ ███ ███ ███
▄████████▀ █▀ ███ ███ ▄█████████▀ █████▄▄██ ▀██████▀ ▄█████████▀
███ ███ ▀
Executable
+127
View File
@@ -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" <<EOF
#!/bin/bash
# Blob-Config command: $base_name
# Generated by install.sh
SCRIPT_DIR="$scripts_dir"
"\$SCRIPT_DIR/$base_name.sh" "\$@"
EOF
chmod +x "$wrapper_path"
echo "Created command: $wrapper_name"
fi
done
}
create_command_wrappers
# Add ~/scripts to system-wide PATH (available to all users/shells)
add_system_path() {
local profile_script="/etc/profile.d/omarchy-scripts.sh"
local path_line='export PATH="$HOME/scripts:$HOME/.local/bin:$PATH"'
if [ ! -f "$profile_script" ]; then
if echo "$path_line" | sudo tee "$profile_script" > /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_<script-name>"
echo ""
echo "Example:"
echo " blob_wifi"
echo ""
echo "To apply PATH changes, run: source ~/.bashrc (or ~/.zshrc)"
+112
View File
@@ -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 <<EOF
[General]
EnableNetworkConfiguration=true
[Network]
NameResolvingService=systemd
EOF
# 5. CONFIGURE DNS (systemd-resolved)
echo -e "${GREEN}[3/5] Setting up systemd-resolved DNS...${NC}"
systemctl enable --now systemd-resolved
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# 6. CREATE EDUROAM CONFIG
echo -e "${GREEN}[4/5] Creating eduroam provisioning file...${NC}"
cat > /var/lib/iwd/eduroam.8021x <<EOF
[Security]
EAP-Method=PEAP
EAP-Identity=$IDENTITY
EAP-PEAP-Phase2-Method=MSCHAPV2
EAP-PEAP-Phase2-Identity=$IDENTITY
EAP-PEAP-Phase2-Password=$PASSWORD
EOF
chmod 600 /var/lib/iwd/eduroam.8021x
# 7. START IWD & CONNECT
echo -e "${GREEN}[5/5] Starting iwd and connecting...${NC}"
systemctl enable --now iwd
sleep 2
IFACE=$(iwctl device list | grep station | awk '{print $2}' | head -n 1)
if [ -z "$IFACE" ]; then
echo -e "${RED}Error: No wireless interface found!${NC}"
echo "Check 'iwctl device list' manually."
exit 1
fi
echo "Detected Interface: $IFACE"
echo "Scanning..."
iwctl station "$IFACE" scan
sleep 2
echo "Connecting to eduroam..."
iwctl station "$IFACE" connect eduroam
# 8. VERIFY
sleep 5
STATUS=$(iwctl station "$IFACE" show | grep "State" | awk '{print $2}')
if [ "$STATUS" == "connected" ]; then
echo -e "\n${GREEN}SUCCESS! Connected to eduroam.${NC}"
echo "Testing connectivity (pinging google.com)..."
if ping -c 1 google.com &> /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
+191
View File
@@ -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": "<span font='omarchy'>\ue900</span>",
"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
}
}
+114
View File
@@ -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;
}