first commit
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
█████████████████████████████████████████████████████
|
||||
█████████████████████████████████████████████████████
|
||||
████ ████ ████
|
||||
████ ████ ████
|
||||
████ █████████████████████ ████████ ████
|
||||
████ █████████████████████ ████████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████████████ ████ ████
|
||||
████████████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ██████████████████████████████████████ ████
|
||||
████ ██████████████████████████████████████ ████
|
||||
████ ████ ████
|
||||
████ ████ ████
|
||||
████████████████████████████ ████████████████████
|
||||
████████████████████████████ ████████████████████
|
||||
@@ -0,0 +1,9 @@
|
||||
▄████████ ▄█ ▄████████ ▀█████████▄ ▄█ ▄██████▄ ▀█████████▄
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███ █▀ ███▌ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███ ███▌ ▄███▄▄▄▄██▀ ▄███▄▄▄██▀ ███ ███ ███ ▄███▄▄▄██▀
|
||||
▀███████████ ███▌ ▀▀███▀▀▀▀▀ ▀▀███▀▀▀██▄ ███ ███ ███ ▀▀███▀▀▀██▄
|
||||
███ ███ ▀███████████ ███ ██▄ ███ ███ ███ ███ ██▄
|
||||
▄█ ███ ███ ███ ███ ███ ███ ███▌ ▄ ███ ███ ███ ███
|
||||
▄████████▀ █▀ ███ ███ ▄█████████▀ █████▄▄██ ▀██████▀ ▄█████████▀
|
||||
███ ███ ▀
|
||||
Executable
+127
@@ -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)"
|
||||
Executable
+112
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user