mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
Compare commits
20 Commits
22f64160f5
...
restart-wa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a52c8796a | ||
|
|
be7f316371 | ||
|
|
b1553d3b31 | ||
|
|
055e969a56 | ||
|
|
050899e5b3 | ||
|
|
bd8b12b23b | ||
|
|
c268fb6c9b | ||
|
|
248a7a611b | ||
|
|
e487dace43 | ||
|
|
ba14cd36dd | ||
|
|
34b22a23f6 | ||
|
|
f0d5c35271 | ||
|
|
63fc96a541 | ||
|
|
4ba39ba73c | ||
|
|
1a14938382 | ||
|
|
9581cce1af | ||
|
|
cf72c02ea5 | ||
|
|
4b3e21445b | ||
|
|
8878478103 | ||
|
|
74ff475693 |
62
AGENTS.md
Normal file
62
AGENTS.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Style
|
||||
|
||||
- Two spaces for indentation, no tabs
|
||||
- Use Bash syntax for conditionals: `[[ -f $file ]]`, not `[ -f "$file" ]`
|
||||
|
||||
# Command Naming
|
||||
|
||||
All commands start with `omarchy-`. Prefixes indicate purpose:
|
||||
|
||||
- `cmd-` - check if commands exist, misc utility commands
|
||||
- `pkg-` - package management helpers
|
||||
- `hw-` - hardware detection (return exit codes for use in conditionals)
|
||||
- `refresh-` - copy default config to user's `~/.config/`
|
||||
- `restart-` - restart a component
|
||||
- `launch-` - open applications
|
||||
- `install-` - install optional software
|
||||
- `setup-` - interactive setup wizards
|
||||
- `toggle-` - toggle features on/off
|
||||
- `theme-` - theme management
|
||||
- `update-` - update components
|
||||
|
||||
# Helper Commands
|
||||
|
||||
Use these instead of raw shell commands:
|
||||
|
||||
- `omarchy-cmd-missing` / `omarchy-cmd-present` - check for commands
|
||||
- `omarchy-pkg-missing` / `omarchy-pkg-present` - check for packages
|
||||
- `omarchy-pkg-add` - install packages (handles both pacman and AUR)
|
||||
- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)
|
||||
|
||||
# Config Structure
|
||||
|
||||
- `config/` - default configs copied to `~/.config/`
|
||||
- `default/themed/*.tpl` - templates with `{{ variable }}` placeholders for theme colors
|
||||
- `themes/*/colors.toml` - theme color definitions (accent, background, foreground, color0-15)
|
||||
|
||||
# Refresh Pattern
|
||||
|
||||
To copy a default config to user config with automatic backup:
|
||||
|
||||
```bash
|
||||
omarchy-refresh-config hypr/hyprlock.conf
|
||||
```
|
||||
|
||||
This copies `~/.local/share/omarchy/config/hypr/hyprlock.conf` to `~/.config/hypr/hyprlock.conf`.
|
||||
|
||||
# Migrations
|
||||
|
||||
To create a new migration, run `omarchy-dev-add-migration --no-edit`. This creates a migration file named after the unix timestamp of the last commit.
|
||||
|
||||
Migration format:
|
||||
- No shebang line
|
||||
- Start with an `echo` describing what the migration does
|
||||
|
||||
Example:
|
||||
```bash
|
||||
echo "Disable fingerprint in hyprlock if fingerprint auth is not configured"
|
||||
|
||||
if omarchy-cmd-missing fprintd-list || ! fprintd-list "$USER" 2>/dev/null | grep -q "finger"; then
|
||||
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = false/' ~/.config/hypr/hyprlock.conf
|
||||
fi
|
||||
```
|
||||
@@ -59,9 +59,10 @@ echo "HOOKS+=(resume)" | sudo tee "$MKINITCPIO_CONF" >/dev/null
|
||||
|
||||
# Configure suspend-then-hibernate
|
||||
echo "Configuring suspend-then-hibernate"
|
||||
sudo mkdir -p /etc/systemd/logind.conf.d /etc/systemd/sleep.conf.d
|
||||
sudo mkdir -p /etc/systemd/logind.conf.d /etc/systemd/sleep.conf.d /usr/lib/systemd/system-sleep
|
||||
sudo cp "$OMARCHY_PATH/default/systemd/lid.conf" /etc/systemd/logind.conf.d/
|
||||
sudo cp "$OMARCHY_PATH/default/systemd/hibernate.conf" /etc/systemd/sleep.conf.d/
|
||||
sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/lib/systemd/system-sleep/
|
||||
|
||||
# Regenerate initramfs
|
||||
echo "Regenerating initramfs..."
|
||||
|
||||
6
bin/omarchy-hw-asus-rog
Executable file
6
bin/omarchy-hw-asus-rog
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Detect whether the computer is an Asus ROG machine.
|
||||
|
||||
[[ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" == "ASUSTeK COMPUTER INC." ]] &&
|
||||
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null
|
||||
@@ -1,15 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Install the Tailscale mesh VPN service, the tsui TUI management app, and a web app for the Tailscale Admin Console.
|
||||
# Install the Tailscale mesh VPN service and a web app for the Tailscale Admin Console.
|
||||
|
||||
curl -fsSL https://tailscale.com/install.sh | sh
|
||||
curl -fsSL https://neuralink.com/tsui/install.sh | bash
|
||||
|
||||
echo -e "\nStarting Tailscale..."
|
||||
sudo tailscale up --accept-routes
|
||||
|
||||
echo -e "\nAdd tsui to sudoers..."
|
||||
echo "$USER ALL=(ALL) NOPASSWD: $(which tsui)" | sudo tee /etc/sudoers.d/tsui
|
||||
|
||||
omarchy-tui-install "Tailscale" "sudo tsui" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png
|
||||
omarchy-webapp-install "Tailscale Admin Console" "https://login.tailscale.com/admin/machines" https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png
|
||||
omarchy-webapp-install "Tailscale" "https://login.tailscale.com/admin/machines" https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png
|
||||
|
||||
@@ -5,9 +5,17 @@
|
||||
# Ensure walker is set to autostart
|
||||
mkdir -p ~/.config/autostart/
|
||||
cp $OMARCHY_PATH/default/walker/walker.desktop ~/.config/autostart/
|
||||
|
||||
# And restarts if it crashes or is killed
|
||||
mkdir -p ~/.config/systemd/user/app-walker@autostart.service.d/
|
||||
cp $OMARCHY_PATH/default/walker/restart.conf ~/.config/systemd/user/app-walker@autostart.service.d/restart.conf
|
||||
|
||||
systemctl --user daemon-reload
|
||||
|
||||
# Refresh configs
|
||||
omarchy-refresh-config walker/config.toml
|
||||
omarchy-refresh-config elephant/calc.toml
|
||||
omarchy-refresh-config elephant/desktopapplications.toml
|
||||
|
||||
# Restart service
|
||||
omarchy-restart-walker
|
||||
|
||||
@@ -58,11 +58,13 @@ EOF
|
||||
add_hyprlock_fingerprint_icon() {
|
||||
print_info "Adding fingerprint icon to hyprlock placeholder text..."
|
||||
sed -i 's/placeholder_text = .*/placeholder_text = <span> Enter Password <\/span>/' ~/.config/hypr/hyprlock.conf
|
||||
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = true/' ~/.config/hypr/hyprlock.conf
|
||||
}
|
||||
|
||||
remove_hyprlock_fingerprint_icon() {
|
||||
print_info "Removing fingerprint icon from hyprlock placeholder text..."
|
||||
sed -i 's/placeholder_text = .*/placeholder_text = Enter Password/' ~/.config/hypr/hyprlock.conf
|
||||
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = false/' ~/.config/hypr/hyprlock.conf
|
||||
}
|
||||
|
||||
remove_pam_config() {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo
|
||||
gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -t 7 -n 1 -s'
|
||||
gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -n 1 -s'
|
||||
|
||||
@@ -57,6 +57,7 @@ omarchy-theme-set-gnome
|
||||
omarchy-theme-set-browser
|
||||
omarchy-theme-set-vscode
|
||||
omarchy-theme-set-obsidian
|
||||
omarchy-theme-set-asusctl
|
||||
|
||||
# Call hook on theme set
|
||||
omarchy-hook theme-set "$THEME_NAME"
|
||||
|
||||
7
bin/omarchy-theme-set-asusctl
Executable file
7
bin/omarchy-theme-set-asusctl
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
ASUSCTL_THEME=~/.config/omarchy/current/theme/asusctl.rgb
|
||||
|
||||
if omarchy-cmd-present asusctl; then
|
||||
asusctl aura effect static -c $(sed 's/^#//' $ASUSCTL_THEME)
|
||||
fi
|
||||
@@ -4,7 +4,7 @@
|
||||
if pacman -Qem >/dev/null; then
|
||||
if omarchy-pkg-aur-accessible; then
|
||||
echo -e "\e[32m\nUpdate AUR packages\e[0m"
|
||||
yay -Sua --noconfirm --ignore gcc14,gcc14-libs
|
||||
yay -Sua --noconfirm --cleanafter --ignore gcc14,gcc14-libs
|
||||
echo
|
||||
else
|
||||
echo -e "\e[31m\nAUR is unavailable (so skipping updates)\e[0m"
|
||||
|
||||
@@ -7,5 +7,5 @@ if omarchy-cmd-missing fwupdmgr; then
|
||||
omarchy-pkg-add fwupd
|
||||
fi
|
||||
|
||||
fwupdmgr refresh
|
||||
fwupdmgr refresh --force
|
||||
sudo fwupdmgr update
|
||||
|
||||
@@ -185,6 +185,8 @@ services:
|
||||
DISK_SIZE: "$SELECTED_DISK"
|
||||
USERNAME: "$USERNAME"
|
||||
PASSWORD: "$PASSWORD"
|
||||
TZ: "$(timedatectl show -p Timezone --value 2>/dev/null || echo UTC)"
|
||||
ARGUMENTS: "-rtc base=localtime,clock=host,driftfix=slew"
|
||||
devices:
|
||||
- /dev/kvm
|
||||
- /dev/net/tun
|
||||
@@ -240,6 +242,11 @@ EOF
|
||||
}
|
||||
|
||||
remove_windows() {
|
||||
if ! gum confirm --default=false "Remove Windows VM and delete all associated data?"; then
|
||||
echo "Removal cancelled by user"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Removing Windows VM..."
|
||||
|
||||
docker-compose -f "$COMPOSE_FILE" down 2>/dev/null || true
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# Application bindings
|
||||
bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec --dir="$(omarchy-cmd-terminal-cwd)"
|
||||
bindd = SUPER SHIFT, RETURN, Browser, exec, omarchy-launch-browser
|
||||
bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window
|
||||
bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(omarchy-cmd-terminal-cwd)"
|
||||
bindd = SUPER SHIFT, B, Browser, exec, omarchy-launch-browser
|
||||
|
||||
@@ -39,5 +39,5 @@ input-field {
|
||||
}
|
||||
|
||||
auth {
|
||||
fingerprint:enabled = true
|
||||
fingerprint:enabled = false
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[server]
|
||||
show_percentage = true
|
||||
max_volume = 100
|
||||
style = "./style.css"
|
||||
style = "~/.config/swayosd/style.css"
|
||||
|
||||
0
default/systemd/system-sleep/force-igpu
Executable file → Normal file
0
default/systemd/system-sleep/force-igpu
Executable file → Normal file
18
default/systemd/system-sleep/keyboard-backlight
Executable file
18
default/systemd/system-sleep/keyboard-backlight
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Turn off keyboard backlight before hibernate to prevent hang on power-off.
|
||||
# The ASUS keyboard controller can block S4 shutdown if LEDs are active.
|
||||
|
||||
if [[ $1 == "pre" && $2 == "hibernate" ]]; then
|
||||
device=""
|
||||
for candidate in /sys/class/leds/*kbd_backlight*; do
|
||||
if [[ -e "$candidate" ]]; then
|
||||
device="$(basename "$candidate")"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -n "$device" ]]; then
|
||||
brightnessctl -d "$device" set 0 >/dev/null 2>&1
|
||||
fi
|
||||
fi
|
||||
1
default/themed/asusctl.rgb.tpl
Normal file
1
default/themed/asusctl.rgb.tpl
Normal file
@@ -0,0 +1 @@
|
||||
{{ accent }}
|
||||
3
default/walker/restart.conf
Normal file
3
default/walker/restart.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
[Service]
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
@@ -37,3 +37,4 @@ run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-t2.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-surface-keyboard.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-asus-rog-audio-mixer.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-asus-rog-mic.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-realtek-r8168.sh
|
||||
@@ -1,8 +1,6 @@
|
||||
# Fix audio volume on Asus ROG laptops by using a soft mixer.
|
||||
|
||||
if [[ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" == "ASUSTeK COMPUTER INC." ]] &&
|
||||
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null; then
|
||||
|
||||
if omarchy-hw-asus-rog; then
|
||||
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
|
||||
cp $OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf ~/.config/wireplumber/wireplumber.conf.d/
|
||||
rm -rf ~/.local/state/wireplumber/default-routes
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
# The mic boost is way too high by default, causing clipping.
|
||||
# Sets levels and stores ALSA state so it persists across reboots.
|
||||
|
||||
if [[ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" == "ASUSTeK COMPUTER INC." ]] &&
|
||||
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null; then
|
||||
|
||||
if omarchy-hw-asus-rog; then
|
||||
for card in /proc/asound/card*/codec*; do
|
||||
if grep -q "ALC285" "$card" 2>/dev/null; then
|
||||
cardnum=$(echo "$card" | grep -oP 'card\K\d+')
|
||||
|
||||
11
install/config/hardware/fix-realtek-r8168.sh
Normal file
11
install/config/hardware/fix-realtek-r8168.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
# Install r8168 driver for Realtek RTL8111/8168/8211/8411 ethernet adapters
|
||||
# Common in ASUS TUF Gaming laptops and other modern systems
|
||||
if lspci | grep -i "RTL8111\|RTL8168\|RTL8211\|RTL8411"; then
|
||||
omarchy-pkg-add linux-headers r8168-lts
|
||||
|
||||
# Blacklist problematic r8169 driver
|
||||
echo "blacklist r8169" | sudo tee /etc/modprobe.d/blacklist-r8169.conf
|
||||
|
||||
# Regenerate initramfs to ensure r8168 loads on boot
|
||||
sudo mkinitcpio -P
|
||||
fi
|
||||
12
install/config/powerprofilesctl-rules.sh
Executable file → Normal file
12
install/config/powerprofilesctl-rules.sh
Executable file → Normal file
@@ -1,19 +1,15 @@
|
||||
if omarchy-battery-present; then
|
||||
mapfile -t profiles < <(omarchy-powerprofiles-list)
|
||||
|
||||
if [[ ${#profiles[@]} -gt 0 ]]; then
|
||||
if [[ ${#profiles[@]} -gt 1 ]]; then
|
||||
|
||||
# Default AC profile:
|
||||
# 3 profiles → performance
|
||||
# 2 profiles → balanced
|
||||
# 1 profile → profiles[0]
|
||||
ac_profile="${profiles[2]:-${profiles[1]:-${profiles[0]}}}"
|
||||
ac_profile="${profiles[2]:-${profiles[1]}}"
|
||||
|
||||
# Default Battery profile:
|
||||
# 3 profiles → balanced
|
||||
# 2 profiles → balanced
|
||||
# 1 profile → profiles[0]
|
||||
battery_profile="${profiles[1]:-${profiles[0]}}"
|
||||
# Default Battery profile (balanced)
|
||||
battery_profile="${profiles[1]}"
|
||||
|
||||
cat <<EOF | sudo tee "/etc/udev/rules.d/99-power-profile.rules"
|
||||
SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="0", RUN+="/usr/bin/powerprofilesctl set $battery_profile"
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
mkdir -p ~/.config/autostart/
|
||||
cp $OMARCHY_PATH/default/walker/walker.desktop ~/.config/autostart/
|
||||
|
||||
# And is restarted if it crashes or is killed
|
||||
mkdir -p ~/.config/systemd/user/app-walker@autostart.service.d/
|
||||
cp $OMARCHY_PATH/default/walker/restart.conf ~/.config/systemd/user/app-walker@autostart.service.d/restart.conf
|
||||
|
||||
# Create pacman hook to restart walker after updates
|
||||
sudo mkdir -p /etc/pacman.d/hooks
|
||||
sudo tee /etc/pacman.d/hooks/walker-restart.hook > /dev/null << EOF
|
||||
|
||||
@@ -147,3 +147,4 @@ xournalpp
|
||||
yaru-icon-theme
|
||||
yay
|
||||
zoxide
|
||||
r8168-lts
|
||||
@@ -2,6 +2,7 @@
|
||||
# Utilized by ISO builder to ensure package availability in the ISO
|
||||
|
||||
autoconf-archive
|
||||
asusctl
|
||||
base
|
||||
base-devel
|
||||
broadcom-wl
|
||||
|
||||
@@ -4,3 +4,4 @@ run_logged $OMARCHY_INSTALL/packaging/nvim.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/icons.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/webapps.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/tuis.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/asus-rog.sh
|
||||
|
||||
3
install/packaging/asus-rog.sh
Normal file
3
install/packaging/asus-rog.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
if omarchy-hw-asus-rog; then
|
||||
omarchy-pkg-add asusctl
|
||||
fi
|
||||
0
migrations/1768270644.sh
Executable file → Normal file
0
migrations/1768270644.sh
Executable file → Normal file
@@ -3,7 +3,6 @@ echo "Fix microphone gain and audio mixing on Asus ROG laptops"
|
||||
source "$OMARCHY_PATH/install/config/hardware/fix-asus-rog-mic.sh"
|
||||
source "$OMARCHY_PATH/install/config/hardware/fix-asus-rog-audio-mixer.sh"
|
||||
|
||||
if [[ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" == "ASUSTeK COMPUTER INC." ]] &&
|
||||
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null; then
|
||||
if omarchy-hw-asus-rog; then
|
||||
omarchy-restart-pipewire
|
||||
fi
|
||||
|
||||
0
migrations/1769566732.sh
Executable file → Normal file
0
migrations/1769566732.sh
Executable file → Normal file
6
migrations/1770186458.sh
Normal file
6
migrations/1770186458.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
echo "Fix Realtek RTL8111/8168/8211/8411 ethernet adapter support for ASUS TUF and other laptops"
|
||||
|
||||
# Run the hardware detection script for existing installations
|
||||
if [ -f "$OMARCHY_INSTALL/config/hardware/fix-realtek-r8168.sh" ]; then
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-realtek-r8168.sh
|
||||
fi
|
||||
5
migrations/1770372978.sh
Normal file
5
migrations/1770372978.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
echo "Disable fingerprint in hyprlock if fingerprint auth is not configured"
|
||||
|
||||
if omarchy-cmd-missing fprintd-list || ! fprintd-list "$USER" 2>/dev/null | grep -q "finger"; then
|
||||
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = false/' ~/.config/hypr/hyprlock.conf
|
||||
fi
|
||||
5
migrations/1770375655.sh
Normal file
5
migrations/1770375655.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
echo "Add Super+Shift+Return binding for browser"
|
||||
|
||||
if [[ -f ~/.config/hypr/bindings.conf ]] && ! grep -q "SUPER SHIFT, RETURN.*Browser" ~/.config/hypr/bindings.conf; then
|
||||
sed -i '/^bindd = SUPER, RETURN, Terminal/a bindd = SUPER SHIFT, RETURN, Browser, exec, omarchy-launch-browser' ~/.config/hypr/bindings.conf
|
||||
fi
|
||||
6
migrations/1770375817.sh
Normal file
6
migrations/1770375817.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
echo "Ensure walker service is restarted if it's killed or crashes"
|
||||
|
||||
mkdir -p ~/.config/systemd/user/app-walker@autostart.service.d/
|
||||
cp $OMARCHY_PATH/default/walker/restart.conf ~/.config/systemd/user/app-walker@autostart.service.d/restart.conf
|
||||
systemctl --user daemon-reload
|
||||
|
||||
1
themes/tokyo-night/asusctl.rgb
Normal file
1
themes/tokyo-night/asusctl.rgb
Normal file
@@ -0,0 +1 @@
|
||||
ff00ff
|
||||
Reference in New Issue
Block a user