Compare commits

..

1 Commits

Author SHA1 Message Date
David Heinemeier Hansson
e2ca0baf84 Logging is having issues, so let's skip until sorted 2025-08-23 18:49:07 +02:00
44 changed files with 244 additions and 219 deletions

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Name=Audio Settings
Comment=Using Wiremix
Exec=alacritty --class=Wiremix --title=Wiremix -e wiremix
Icon=audio-headphones
Type=Application
Terminal=false

View File

@@ -0,0 +1,12 @@
[Desktop Entry]
Name=Zoom
Comment=Zoom Video Conference
Exec=env QT_SCALE_FACTOR=2 /usr/bin/zoom %U
Icon=Zoom
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Network;Application;
StartupWMClass=zoom
MimeType=x-scheme-handler/zoommtg;x-scheme-handler/zoomus;x-scheme-handler/tel;x-scheme-handler/callto;x-scheme-handler/zoomphonecall;x-scheme-handler/zoomphonesms;x-scheme-handler/zoomcontactcentercall;application/x-zoom
X-KDE-Protocols=zoommtg;zoomus;tel;callto;zoomphonecall;zoomphonesms;zoomcontactcentercall;

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB") options=("MariaDB" "MySQL" "Redis" "PostgreSQL" "MongoDB")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
if [[ -n "$choices" ]]; then if [[ -n "$choices" ]]; then

View File

@@ -1,26 +0,0 @@
#!/bin/bash
if ! command -v ufw &>/dev/null; then
yay -S --noconfirm --needed ufw ufw-docker
fi
# Allow nothing in, everything out
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow ports for LocalSend
sudo ufw allow 53317/udp
sudo ufw allow 53317/tcp
# Allow SSH in
sudo ufw allow 22/tcp
# Allow Docker containers to use DNS on host
sudo ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns'
# Turn on the firewall
sudo ufw --force enable
# Turn on Docker protections
sudo ufw-docker install
sudo ufw reload

View File

@@ -184,8 +184,7 @@ show_install_menu() {
} }
show_install_service_menu() { show_install_service_menu() {
case $(menu "Install" "󱨑 Firewall\n Dropbox\n Tailscale") in case $(menu "Install" " Dropbox\n Tailscale") in
*Firewall*) present_terminal omarchy-install-firewall ;;
*Dropbox*) present_terminal omarchy-install-dropbox ;; *Dropbox*) present_terminal omarchy-install-dropbox ;;
*Tailscale*) present_terminal omarchy-install-tailscale ;; *Tailscale*) present_terminal omarchy-install-tailscale ;;
*) show_install_menu ;; *) show_install_menu ;;

View File

@@ -8,11 +8,6 @@ if [[ -z $COMMAND ]]; then
exit 1 exit 1
fi fi
if ! command -v snapper &>/dev/null; then
echo "You need Snapper installed to be able to use omarchy-snapshot."
exit 127
fi
case "$COMMAND" in case "$COMMAND" in
create) create)
DESC="$(omarchy-version)" DESC="$(omarchy-version)"

View File

@@ -3,7 +3,7 @@
# Status indicator daemon for waybar # Status indicator daemon for waybar
# Calls individual status scripts and caches results # Calls individual status scripts and caches results
STATE_DIR=~/.local/state/omarchy/status STATE_DIR="/tmp/omarchy-status"
DAEMON_PID_FILE="$STATE_DIR/daemon.pid" DAEMON_PID_FILE="$STATE_DIR/daemon.pid"
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
@@ -11,14 +11,15 @@ mkdir -p "$STATE_DIR"
# Update all status files by calling individual scripts # Update all status files by calling individual scripts
update_all_status_files() { update_all_status_files() {
"$SCRIPT_DIR/omarchy-status-dnd" >"$STATE_DIR/dnd" "$SCRIPT_DIR/omarchy-status-dnd" > "$STATE_DIR/dnd"
"$SCRIPT_DIR/omarchy-status-nightlight" >"$STATE_DIR/nightlight" "$SCRIPT_DIR/omarchy-status-nightlight" > "$STATE_DIR/nightlight"
"$SCRIPT_DIR/omarchy-status-idle" >"$STATE_DIR/idle" "$SCRIPT_DIR/omarchy-status-recording" > "$STATE_DIR/recording"
"$SCRIPT_DIR/omarchy-status-idle" > "$STATE_DIR/idle"
} }
# Generate hash for change detection # Generate hash for change detection
get_status_hash() { get_status_hash() {
echo "$($(makoctl mode 2>/dev/null | grep -c 'do-not-disturb')$(hyprctl hyprsunset temperature 2>/dev/null)" echo "$(pgrep -c "mako|hyprsunset|wl-screenrec|wf-recorder|obs|hypridle" 2>/dev/null)$(makoctl mode 2>/dev/null | grep -c 'do-not-disturb')$(hyprctl hyprsunset temperature 2>/dev/null)"
} }
# Start background monitoring daemon # Start background monitoring daemon
@@ -41,14 +42,14 @@ start_daemon() {
done done
} & } &
echo $! >"$DAEMON_PID_FILE" echo $! > "$DAEMON_PID_FILE"
} }
# Main execution # Main execution
MODULE="$1" MODULE="$1"
if [ -z "$MODULE" ]; then if [ -z "$MODULE" ]; then
echo "Usage: $0 [dnd|nightlight|idle]" echo "Usage: $0 [dnd|nightlight|recording|idle]"
exit 1 exit 1
fi fi

12
bin/omarchy-status-recording Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
# Recording status indicator
if pgrep -x wl-screenrec >/dev/null 2>&1 || \
pgrep -x wf-recorder >/dev/null 2>&1 || \
pgrep -x obs >/dev/null 2>&1 || \
pgrep -f "ffmpeg.*(x11grab|gdigrab|avfoundation)" >/dev/null 2>&1; then
echo '{"text": "󰻂", "tooltip": "Screen recording active", "class": "status-recording"}'
else
echo '{"text": "", "tooltip": "", "class": "hidden"}'
fi

View File

@@ -2,7 +2,7 @@
set -e set -e
omarchy-snapshot create || [ $? -eq 127 ] omarchy-snapshot create
omarchy-update-git omarchy-update-git
omarchy-migrate omarchy-migrate
omarchy-update-system-pkgs omarchy-update-system-pkgs

View File

@@ -23,9 +23,8 @@ echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git"
rm -rf ~/.local/share/omarchy/ rm -rf ~/.local/share/omarchy/
git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
# Use custom branch if instructed, otherwise default to master # Use custom branch if instructed
OMARCHY_REF="${OMARCHY_REF:-master}" if [[ -n "$OMARCHY_REF" ]]; then
if [[ $OMARCHY_REF != "master" ]]; then
echo -e "\eUsing branch: $OMARCHY_REF" echo -e "\eUsing branch: $OMARCHY_REF"
cd ~/.local/share/omarchy cd ~/.local/share/omarchy
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}" git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"

Binary file not shown.

View File

@@ -4,8 +4,15 @@
"position": "top", "position": "top",
"spacing": 0, "spacing": 0,
"height": 26, "height": 26,
"modules-left": ["custom/omarchy", "hyprland/workspaces"], "modules-left": [
"modules-center": ["group/status-cluster", "clock", "custom/update"], "custom/omarchy",
"hyprland/workspaces"
],
"modules-center": [
"group/status-cluster",
"clock",
"custom/update"
],
"modules-right": [ "modules-right": [
"group/tray-expander", "group/tray-expander",
"bluetooth", "bluetooth",
@@ -39,7 +46,7 @@
} }
}, },
"custom/omarchy": { "custom/omarchy": {
"format": "<span font='omarchy'>\ue900</span>", "format": "",
"on-click": "omarchy-menu", "on-click": "omarchy-menu",
"tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space" "tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space"
}, },
@@ -63,11 +70,11 @@
"on-click-right": "omarchy-cmd-tzupdate" "on-click-right": "omarchy-cmd-tzupdate"
}, },
"network": { "network": {
"format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"], "format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
"format": "{icon}", "format" : "{icon}",
"format-wifi": "{icon}", "format-wifi" : "{icon}",
"format-ethernet": "󰀂", "format-ethernet" : "󰀂",
"format-disconnected": "󰖪", "format-disconnected" : "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", "tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}", "tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected", "tooltip-format-disconnected": "Disconnected",
@@ -81,8 +88,12 @@
"format-charging": "{icon}", "format-charging": "{icon}",
"format-plugged": "", "format-plugged": "",
"format-icons": { "format-icons": {
"charging": ["󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"], "charging": [
"default": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] "󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
}, },
"format-full": "󰂅", "format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%", "tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
@@ -117,13 +128,17 @@
"transition-duration": 600, "transition-duration": 600,
"children-class": "tray-group-item" "children-class": "tray-group-item"
}, },
"modules": ["custom/expand-icon", "tray"] "modules": [
"custom/expand-icon",
"tray"
]
}, },
"group/status-cluster": { "group/status-cluster": {
"orientation": "inherit", "orientation": "inherit",
"modules": [ "modules": [
"custom/status-dnd", "custom/status-dnd",
"custom/status-nightlight", "custom/status-nightlight",
"custom/status-recording",
"custom/status-idle" "custom/status-idle"
] ]
}, },
@@ -139,6 +154,12 @@
"interval": 1, "interval": 1,
"on-click": "omarchy-toggle-nightlight" "on-click": "omarchy-toggle-nightlight"
}, },
"custom/status-recording": {
"exec": "omarchy-status-daemon recording",
"return-type": "json",
"interval": 1,
"on-click": "omarchy-cmd-screenrecord-stop"
},
"custom/status-idle": { "custom/status-idle": {
"exec": "omarchy-status-daemon idle", "exec": "omarchy-status-daemon idle",
"return-type": "json", "return-type": "json",

View File

@@ -64,6 +64,7 @@ tooltip {
#custom-status-dnd, #custom-status-dnd,
#custom-status-nightlight, #custom-status-nightlight,
#custom-status-recording,
#custom-status-idle { #custom-status-idle {
min-width: 12px; min-width: 12px;
margin: 0 2px; margin: 0 2px;
@@ -76,6 +77,11 @@ tooltip {
opacity: 1; opacity: 1;
} }
#custom-status-recording.status-recording {
color: #a55555;
opacity: 1;
}
.hidden { .hidden {
opacity: 0; opacity: 0;
} }

View File

@@ -8,3 +8,4 @@ source = ~/.local/share/omarchy/default/hypr/apps/system.conf
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
source = ~/.local/share/omarchy/default/hypr/apps/1password.conf source = ~/.local/share/omarchy/default/hypr/apps/1password.conf
source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
source = ~/.local/share/omarchy/default/hypr/apps/zoom.conf

View File

@@ -3,4 +3,4 @@ windowrule = tile, class:^(Chromium)$
# Only slight opacity when unfocused # Only slight opacity when unfocused
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable|Brave-browser|brave-browser)$ windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable|Brave-browser|brave-browser)$
windowrule = opacity 1 1, initialTitle:(youtube.com_/|app.zoom.us_/wc/home) windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube

View File

@@ -0,0 +1,2 @@
windowrule = opacity 1 1, class:Zoom Workplace

View File

@@ -6,6 +6,37 @@ set -e
export PATH="$HOME/.local/share/omarchy/bin:$PATH" export PATH="$HOME/.local/share/omarchy/bin:$PATH"
OMARCHY_INSTALL=~/.local/share/omarchy/install OMARCHY_INSTALL=~/.local/share/omarchy/install
# Give people a chance to retry running the installation
catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
echo "The failing command was: \`$BASH_COMMAND\` (exit code: $?)"
echo
echo "Get help from the community via QR code or at https://discord.gg/tXFUdasqhY"
echo " "
echo " █▀▀▀▀▀█ ▄ ▄ ▀▄▄▄█ █▀▀▀▀▀█ "
echo " █ ███ █ ▄▄▄▄▀▄▀▄▀ █ ███ █ "
echo " █ ▀▀▀ █ ▄█ ▄█▄▄▀ █ ▀▀▀ █ "
echo " ▀▀▀▀▀▀▀ ▀▄█ █ █ █ ▀▀▀▀▀▀▀ "
echo " ▀▀█▀▀▄▀▀▀▀▄█▀▀█ ▀ █ ▀ █ "
echo " █▄█ ▄▄▀▄▄ ▀ ▄ ▀█▄▄▄▄ ▀ ▀█ "
echo " ▄ ▄▀█ ▀▄▀▀▀▄ ▄█▀▄█▀▄▀▄▀█▀ "
echo " █ ▄▄█▄▀▄█ ▄▄▄ ▀ ▄▀██▀ ▀█ "
echo " ▀ ▀ ▀ █ ▀▄ ▀▀█▀▀▀█▄▀ "
echo " █▀▀▀▀▀█ ▀█ ▄▀▀ █ ▀ █▄▀██ "
echo " █ ███ █ █▀▄▄▀ █▀███▀█▄██▄ "
echo " █ ▀▀▀ █ ██ ▀ █▄█ ▄▄▄█▀ █ "
echo " ▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀ ▀ ▀▀▀▀▀▀ "
echo " "
if [[ -n $OMARCHY_BARE ]]; then
echo "You can retry by running: OMARCHY_BARE=true bash ~/.local/share/omarchy/install.sh"
else
echo "You can retry by running: bash ~/.local/share/omarchy/install.sh"
fi
}
trap catch_errors ERR
show_logo() { show_logo() {
clear clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand} tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
@@ -18,31 +49,26 @@ show_subtext() {
} }
# Install prerequisites # Install prerequisites
source $OMARCHY_INSTALL/preflight/show-env.sh
source $OMARCHY_INSTALL/preflight/trap-errors.sh
source $OMARCHY_INSTALL/preflight/chroot.sh source $OMARCHY_INSTALL/preflight/chroot.sh
source $OMARCHY_INSTALL/preflight/mirrorlist.sh source $OMARCHY_INSTALL/preflight/mirrorlist.sh
source $OMARCHY_INSTALL/preflight/gum.sh
source $OMARCHY_INSTALL/preflight/guard.sh source $OMARCHY_INSTALL/preflight/guard.sh
source $OMARCHY_INSTALL/preflight/aur.sh source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/tte.sh
source $OMARCHY_INSTALL/preflight/migrations.sh source $OMARCHY_INSTALL/preflight/migrations.sh
# Configuration # Configuration
source $OMARCHY_INSTALL/config/config.sh source $OMARCHY_INSTALL/config/config.sh
source $OMARCHY_INSTALL/config/branding.sh source $OMARCHY_INSTALL/config/branding.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/network.sh source $OMARCHY_INSTALL/config/network.sh
source $OMARCHY_INSTALL/config/power.sh source $OMARCHY_INSTALL/config/power.sh
source $OMARCHY_INSTALL/config/git.sh
source $OMARCHY_INSTALL/config/gpg.sh
source $OMARCHY_INSTALL/config/usb-autosuspend.sh source $OMARCHY_INSTALL/config/usb-autosuspend.sh
source $OMARCHY_INSTALL/config/timezones.sh source $OMARCHY_INSTALL/config/timezones.sh
source $OMARCHY_INSTALL/config/nvidia.sh source $OMARCHY_INSTALL/config/nvidia.sh
source $OMARCHY_INSTALL/config/increase-sudo-tries.sh source $OMARCHY_INSTALL/config/increase-sudo-tries.sh
source $OMARCHY_INSTALL/config/increase-lockout-limit.sh
source $OMARCHY_INSTALL/config/ignore-power-button.sh source $OMARCHY_INSTALL/config/ignore-power-button.sh
source $OMARCHY_INSTALL/config/ssh-flakiness.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/xcompose.sh
# Login # Login
source $OMARCHY_INSTALL/login/plymouth.sh source $OMARCHY_INSTALL/login/plymouth.sh
@@ -86,8 +112,10 @@ show_subtext "You're done! So we're ready to reboot now..."
if sudo test -f /etc/sudoers.d/99-omarchy-installer; then if sudo test -f /etc/sudoers.d/99-omarchy-installer; then
sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null
echo -e "\nRemember to remove USB installer!" echo
read -n 1 -s -r -p "Remove the USB installer then press any key to reboot..."
echo
fi fi
sleep 5 sleep 2
reboot reboot

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then if [ -z "$OMARCHY_BARE" ]; then
omarchy-tui-install "Disk Usage" "bash -c 'dust -r; read -n 1 -s'" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/qdirstat.png omarchy-tui-install "Disk Usage" "bash -c 'dust; read -n 1 -s'" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/qdirstat.png
omarchy-tui-install "Docker" "lazydocker" tile https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/docker.png omarchy-tui-install "Docker" "lazydocker" tile https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/docker.png
fi fi

View File

@@ -13,5 +13,4 @@ if [ -z "$OMARCHY_BARE" ]; then
omarchy-webapp-install "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png omarchy-webapp-install "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
omarchy-webapp-install "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256 omarchy-webapp-install "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256
omarchy-webapp-install "Discord" https://discord.com/channels/@me https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/discord.png omarchy-webapp-install "Discord" https://discord.com/channels/@me https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/discord.png
omarchy-webapp-install "Zoom" https://app.zoom.us/wc/home https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/zoom.png
fi fi

View File

@@ -7,7 +7,8 @@ if [ -z "$OMARCHY_BARE" ]; then
xournalpp localsend-bin xournalpp localsend-bin
# Packages known to be flaky or having key signing issues are run one-by-one # Packages known to be flaky or having key signing issues are run one-by-one
for pkg in typora spotify pinta; do # FIXME: Add pinta back to this list when we have dealt with certificate issue
for pkg in typora spotify zoom; do
yay -S --noconfirm --needed "$pkg" || yay -S --noconfirm --needed "$pkg" ||
echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m" echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m"
done done

View File

@@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
# Copy over Omarchy configs # Copy over Omarchy configs
mkdir -p ~/.config
cp -R ~/.local/share/omarchy/config/* ~/.config/ cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc from Omarchy # Use default bashrc from Omarchy
@@ -15,3 +14,43 @@ if [ -n "$OMARCHY_BARE" ]; then
mkdir -p ~/.local/state/omarchy mkdir -p ~/.local/state/omarchy
touch ~/.local/state/omarchy/bare.mode touch ~/.local/state/omarchy/bare.mode
fi fi
# Setup GPG configuration with multiple keyservers for better reliability
sudo mkdir -p /etc/gnupg
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
sudo chmod 644 /etc/gnupg/dirmngr.conf
sudo gpgconf --kill dirmngr || true
sudo gpgconf --launch dirmngr || true
# Increase lockout limit to 10 and decrease timeout to 2 minutes
sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
# Solve common flakiness with SSH
echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf
# Set common git aliases
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global pull.rebase true
git config --global init.defaultBranch master
# Set identification from install inputs
if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then
git config --global user.name "$OMARCHY_USER_NAME"
fi
if [[ -n "${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then
git config --global user.email "$OMARCHY_USER_EMAIL"
fi
# Set default XCompose that is triggered with CapsLock
tee ~/.XCompose >/dev/null <<EOF
include "%H/.local/share/omarchy/default/xcompose"
# Identification
<Multi_key> <space> <n> : "$OMARCHY_USER_NAME"
<Multi_key> <space> <e> : "$OMARCHY_USER_EMAIL"
EOF

View File

@@ -2,4 +2,7 @@
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
# Rely on install/login.sh to do the rebuild
# sudo mkinitcpio -P
fi fi

View File

@@ -1,18 +0,0 @@
#!/bin/bash
# Set common git aliases
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global pull.rebase true
git config --global init.defaultBranch master
# Set identification from install inputs
if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then
git config --global user.name "$OMARCHY_USER_NAME"
fi
if [[ -n "${OMARCHY_USER_EMAIL//[[:space:]]/}" ]]; then
git config --global user.email "$OMARCHY_USER_EMAIL"
fi

View File

@@ -1,8 +0,0 @@
#!/bin/bash
# Setup GPG configuration with multiple keyservers for better reliability
sudo mkdir -p /etc/gnupg
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
sudo chmod 644 /etc/gnupg/dirmngr.conf
sudo gpgconf --kill dirmngr || true
sudo gpgconf --launch dirmngr || true

View File

@@ -1,5 +0,0 @@
#!/bin/bash
# Increase lockout limit to 10 and decrease timeout to 2 minutes
sudo sed -i 's|^\(auth\s\+required\s\+pam_faillock.so\)\s\+preauth.*$|\1 preauth silent deny=10 unlock_time=120|' "/etc/pam.d/system-auth"
sudo sed -i 's|^\(auth\s\+\[default=die\]\s\+pam_faillock.so\)\s\+authfail.*$|\1 authfail deny=10 unlock_time=120|' "/etc/pam.d/system-auth"

View File

@@ -1,4 +1,2 @@
#!/bin/bash
echo "Defaults passwd_tries=10" | sudo tee /etc/sudoers.d/passwd-tries echo "Defaults passwd_tries=10" | sudo tee /etc/sudoers.d/passwd-tries
sudo chmod 440 /etc/sudoers.d/passwd-tries sudo chmod 440 /etc/sudoers.d/passwd-tries

View File

@@ -4,16 +4,17 @@
# even if they're not running off a battery. So let's make sure that's changed to performance. # even if they're not running off a battery. So let's make sure that's changed to performance.
yay -S --noconfirm python-gobject power-profiles-daemon yay -S --noconfirm python-gobject power-profiles-daemon
# FIXME: Can't set powerprofilesctl during CHROOT, must do it afterwards if ls /sys/class/power_supply/BAT* &>/dev/null; then
if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; then
if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery # This computer runs on a battery
powerprofilesctl set balanced || true powerprofilesctl set balanced || true
# Enable battery monitoring timer for low battery notifications # Enable battery monitoring timer for low battery notifications
systemctl --user enable --now omarchy-battery-monitor.timer if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ]; then
systemctl --user enable omarchy-battery-monitor.timer
else else
systemctl --user enable --now omarchy-battery-monitor.timer
fi
else
# This computer runs on power outlet # This computer runs on power outlet
powerprofilesctl set performance || true powerprofilesctl set performance || true
fi
fi fi

View File

@@ -1,4 +0,0 @@
#!/bin/bash
# Solve common flakiness with SSH
echo "net.ipv4.tcp_mtu_probing=1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf

View File

@@ -1,10 +0,0 @@
#!/bin/bash
# Set default XCompose that is triggered with CapsLock
tee ~/.XCompose >/dev/null <<EOF
include "%H/.local/share/omarchy/default/xcompose"
# Identification
<Multi_key> <space> <n> : "$OMARCHY_USER_NAME"
<Multi_key> <space> <e> : "$OMARCHY_USER_EMAIL"
EOF

View File

@@ -2,10 +2,6 @@
yay -S --noconfirm --needed ttf-font-awesome ttf-cascadia-mono-nerd ttf-ia-writer noto-fonts noto-fonts-emoji yay -S --noconfirm --needed ttf-font-awesome ttf-cascadia-mono-nerd ttf-ia-writer noto-fonts noto-fonts-emoji
mkdir -p ~/.local/share/fonts
cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/
fc-cache
if [ -z "$OMARCHY_BARE" ]; then if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed ttf-jetbrains-mono noto-fonts-cjk noto-fonts-extra yay -S --noconfirm --needed ttf-jetbrains-mono noto-fonts-cjk noto-fonts-extra
fi fi

View File

@@ -1,5 +1,26 @@
#!/bin/bash #!/bin/bash
if -z "${OMARCHY_CHROOT_INSTALL:-}"; then if ! command -v ufw &>/dev/null && -z "${OMARCHY_CHROOT_INSTALL:-}"; then
omarchy-install-firewall yay -S --noconfirm --needed ufw ufw-docker
# Allow nothing in, everything out
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow ports for LocalSend
sudo ufw allow 53317/udp
sudo ufw allow 53317/tcp
# Allow SSH in
sudo ufw allow 22/tcp
# Allow Docker containers to use DNS on host
sudo ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns'
# Turn on the firewall
sudo ufw --force enable
# Turn on Docker protections
sudo ufw-docker install
sudo ufw reload
fi fi

View File

@@ -3,8 +3,7 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
unzip inetutils impala \ unzip inetutils impala \
fd eza fzf ripgrep zoxide bat dust jq xmlstarlet \ fd eza fzf ripgrep zoxide bat dust jq xmlstarlet \
wl-clipboard fastfetch btop \ wl-clipboard btop \
man tldr less whois plocate \ man tldr less whois plocate \
starship bash-completion \ starship bash-completion \
gum python-poetry-core python-terminaltexteffects \
alacritty alacritty

View File

@@ -1,22 +1,17 @@
#!/bin/bash #!/bin/bash
if command -v limine &>/dev/null; then if command -v limine &>/dev/null && [ ! -f /etc/default/limine ]; then
yay -S --noconfirm --needed limine-mkinitcpio-hook limine-snapper-sync
sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf <<EOF >/dev/null sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf <<EOF >/dev/null
HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs) HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs)
EOF EOF
[[ -f /boot/EFI/limine/limine.conf ]] && EFI=true CMDLINE=$(grep "^[[:space:]]*cmdline:" /boot/EFI/limine/limine.conf | head -1 | sed 's/^[[:space:]]*cmdline:[[:space:]]*//')
# Conf location is different between EFI and BIOS
[[ -n "$EFI" ]] && limine_config="/boot/EFI/limine/limine.conf" || limine_config="/boot/limine/limine.conf"
CMDLINE=$(grep "^[[:space:]]*cmdline:" "$limine_config" | head -1 | sed 's/^[[:space:]]*cmdline:[[:space:]]*//')
sudo tee /etc/default/limine <<EOF >/dev/null sudo tee /etc/default/limine <<EOF >/dev/null
TARGET_OS_NAME="Omarchy" TARGET_OS_NAME="Omarchy"
ESP_PATH="/boot"
KERNEL_CMDLINE[default]="$CMDLINE" KERNEL_CMDLINE[default]="$CMDLINE"
KERNEL_CMDLINE[default]+="quiet splash" KERNEL_CMDLINE[default]+="quiet splash"
@@ -34,11 +29,6 @@ MAX_SNAPSHOT_ENTRIES=5
SNAPSHOT_FORMAT_CHOICE=5 SNAPSHOT_FORMAT_CHOICE=5
EOF EOF
# UKI and EFI fallback are EFI only
if [[ -z $EFI ]]; then
sudo sed -i '/^ENABLE_UKI=/d; /^ENABLE_LIMINE_FALLBACK=/d' /etc/default/limine
fi
# We overwrite the whole thing knowing the limine-update will add the entries for us # We overwrite the whole thing knowing the limine-update will add the entries for us
sudo tee /boot/limine.conf <<EOF >/dev/null sudo tee /boot/limine.conf <<EOF >/dev/null
### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md ### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md
@@ -62,9 +52,6 @@ term_background_bright: 24283b
EOF EOF
yay -S --noconfirm --needed limine-mkinitcpio-hook limine-snapper-sync
sudo limine-update
# Match Snapper configs if not installing from the ISO # Match Snapper configs if not installing from the ISO
if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; then if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; then
if ! sudo snapper list-configs 2>/dev/null | grep -q "root"; then if ! sudo snapper list-configs 2>/dev/null | grep -q "root"; then
@@ -81,15 +68,16 @@ EOF
sudo sed -i 's/^NUMBER_LIMIT="50"/NUMBER_LIMIT="5"/' /etc/snapper/configs/{root,home} sudo sed -i 's/^NUMBER_LIMIT="50"/NUMBER_LIMIT="5"/' /etc/snapper/configs/{root,home}
sudo sed -i 's/^NUMBER_LIMIT_IMPORTANT="10"/NUMBER_LIMIT_IMPORTANT="5"/' /etc/snapper/configs/{root,home} sudo sed -i 's/^NUMBER_LIMIT_IMPORTANT="10"/NUMBER_LIMIT_IMPORTANT="5"/' /etc/snapper/configs/{root,home}
sudo limine-update
chrootable_systemctl_enable limine-snapper-sync.service chrootable_systemctl_enable limine-snapper-sync.service
fi fi
# Add UKI entry to UEFI machines to skip bootloader showing on normal boot # Add UKI entry to UEFI machines to skip bootloader showing on normal boot
# FIXME: Make this work on real hardware # Only doing this for ISO installs
# if [ -n "$EFI" ] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy; then if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy; then
# sudo efibootmgr --create \ sudo efibootmgr --create \
# --disk "$(findmnt -n -o SOURCE /boot | sed 's/[0-9]*$//')" \ --disk "$(findmnt -n -o SOURCE /boot | sed 's/[0-9]*$//')" \
# --part "$(findmnt -n -o SOURCE /boot | grep -o '[0-9]*$')" \ --part "$(findmnt -n -o SOURCE /boot | grep -o '[0-9]*$')" \
# --label "Omarchy" \ --label "Omarchy" \
# --loader "\\EFI\\Linux\\$(cat /etc/machine-id)_linux.efi" --loader "\\EFI\\Linux\\$(cat /etc/machine-id)_linux.efi"
# fi fi

View File

@@ -1,4 +1,8 @@
# Starting the installer with OMARCHY_CHROOT_INSTALL=1 will put it into chroot mode # Chroot installations have some differences
if ! cmp -s /proc/1/root/ / 2>/dev/null; then
export OMARCHY_CHROOT_INSTALL=1
fi
chrootable_systemctl_enable() { chrootable_systemctl_enable() {
if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ]; then if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ]; then
sudo systemctl enable $1 sudo systemctl enable $1

3
install/preflight/gum.sh Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
sudo pacman -S --noconfirm --needed gum

View File

@@ -1,5 +1,3 @@
#!/bin/bash
# Set mirror to single geo setup # Set mirror to single geo setup
echo 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch' | echo 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch' |
sudo tee /etc/pacman.d/mirrorlist >/dev/null sudo tee /etc/pacman.d/mirrorlist >/dev/null

View File

@@ -1,4 +0,0 @@
#!/bin/bash
echo "Installation ENV:"
env | grep -E "^(OMARCHY_CHROOT_INSTALL|OMARCHY_USER_NAME|OMARCHY_USER_EMAIL|USER|HOME|OMARCHY_REPO|OMARCHY_REF|OMARCHY_BARE)="

View File

@@ -1,34 +0,0 @@
#!/bin/bash
# Give people a chance to retry running the installation
catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
echo
echo "This command halted with exit code $?:"
echo "$BASH_COMMAND"
echo
echo "Get help from the community via QR code or at https://discord.gg/tXFUdasqhY"
echo " "
echo " █▀▀▀▀▀█ ▄ ▄ ▀▄▄▄█ █▀▀▀▀▀█ "
echo " █ ███ █ ▄▄▄▄▀▄▀▄▀ █ ███ █ "
echo " █ ▀▀▀ █ ▄█ ▄█▄▄▀ █ ▀▀▀ █ "
echo " ▀▀▀▀▀▀▀ ▀▄█ █ █ █ ▀▀▀▀▀▀▀ "
echo " ▀▀█▀▀▄▀▀▀▀▄█▀▀█ ▀ █ ▀ █ "
echo " █▄█ ▄▄▀▄▄ ▀ ▄ ▀█▄▄▄▄ ▀ ▀█ "
echo " ▄ ▄▀█ ▀▄▀▀▀▄ ▄█▀▄█▀▄▀▄▀█▀ "
echo " █ ▄▄█▄▀▄█ ▄▄▄ ▀ ▄▀██▀ ▀█ "
echo " ▀ ▀ ▀ █ ▀▄ ▀▀█▀▀▀█▄▀ "
echo " █▀▀▀▀▀█ ▀█ ▄▀▀ █ ▀ █▄▀██ "
echo " █ ███ █ █▀▄▄▀ █▀███▀█▄██▄ "
echo " █ ▀▀▀ █ ██ ▀ █▄█ ▄▄▄█▀ █ "
echo " ▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀ ▀ ▀▀▀▀▀▀ "
echo " "
if [[ -n $OMARCHY_BARE ]]; then
echo "You can retry by running: OMARCHY_BARE=true bash ~/.local/share/omarchy/install.sh"
else
echo "You can retry by running: bash ~/.local/share/omarchy/install.sh"
fi
}
trap catch_errors ERR

3
install/preflight/tte.sh Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
yay -S --noconfirm --needed python-poetry-core python-terminaltexteffects

7
migrations/1752983008.sh Normal file
View File

@@ -0,0 +1,7 @@
if [[ ! -f ~/.local/state/omarchy/bare.mode ]]; then
echo "Add missing installation of Zoom"
if ! command -v zoom &>/dev/null; then
yay -S --noconfirm --needed zoom
fi
fi

View File

@@ -1,3 +1,3 @@
echo "Add status indicators for nightlight, dnd, and idle lock to Waybar" echo "Add status indicators for screen recordings, nightlight, dnd, and idle lock to Waybar"
echo echo
gum confirm "Replace current Waybar config (backup will be made)?" && omarchy-refresh-waybar gum confirm "Replace current Waybar config (backup will be made)?" && omarchy-refresh-waybar

View File

@@ -1,9 +0,0 @@
echo "Add Omarchy icon to the Waybar"
mkdir -p ~/.local/share/fonts
cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/
fc-cache
echo
gum confirm "Replace current Waybar config (backup will be made)?" && omarchy-refresh-waybar

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB