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
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
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() {
case $(menu "Install" "󱨑 Firewall\n Dropbox\n Tailscale") in
*Firewall*) present_terminal omarchy-install-firewall ;;
case $(menu "Install" " Dropbox\n Tailscale") in
*Dropbox*) present_terminal omarchy-install-dropbox ;;
*Tailscale*) present_terminal omarchy-install-tailscale ;;
*) show_install_menu ;;

View File

@@ -8,11 +8,6 @@ if [[ -z $COMMAND ]]; then
exit 1
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
create)
DESC="$(omarchy-version)"

View File

@@ -3,7 +3,7 @@
# Status indicator daemon for waybar
# 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"
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() {
"$SCRIPT_DIR/omarchy-status-dnd" >"$STATE_DIR/dnd"
"$SCRIPT_DIR/omarchy-status-nightlight" >"$STATE_DIR/nightlight"
"$SCRIPT_DIR/omarchy-status-idle" >"$STATE_DIR/idle"
"$SCRIPT_DIR/omarchy-status-dnd" > "$STATE_DIR/dnd"
"$SCRIPT_DIR/omarchy-status-nightlight" > "$STATE_DIR/nightlight"
"$SCRIPT_DIR/omarchy-status-recording" > "$STATE_DIR/recording"
"$SCRIPT_DIR/omarchy-status-idle" > "$STATE_DIR/idle"
}
# Generate hash for change detection
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
@@ -31,24 +32,24 @@ start_daemon() {
last_hash=""
while true; do
current_hash=$(get_status_hash)
if [ "$current_hash" != "$last_hash" ]; then
update_all_status_files
last_hash="$current_hash"
fi
sleep 0.5
done
} &
echo $! >"$DAEMON_PID_FILE"
echo $! > "$DAEMON_PID_FILE"
}
# Main execution
MODULE="$1"
if [ -z "$MODULE" ]; then
echo "Usage: $0 [dnd|nightlight|idle]"
echo "Usage: $0 [dnd|nightlight|recording|idle]"
exit 1
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
omarchy-snapshot create || [ $? -eq 127 ]
omarchy-snapshot create
omarchy-update-git
omarchy-migrate
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/
git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
# Use custom branch if instructed, otherwise default to master
OMARCHY_REF="${OMARCHY_REF:-master}"
if [[ $OMARCHY_REF != "master" ]]; then
# Use custom branch if instructed
if [[ -n "$OMARCHY_REF" ]]; then
echo -e "\eUsing branch: $OMARCHY_REF"
cd ~/.local/share/omarchy
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"

Binary file not shown.

View File

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

View File

@@ -64,6 +64,7 @@ tooltip {
#custom-status-dnd,
#custom-status-nightlight,
#custom-status-recording,
#custom-status-idle {
min-width: 12px;
margin: 0 2px;
@@ -76,6 +77,11 @@ tooltip {
opacity: 1;
}
#custom-status-recording.status-recording {
color: #a55555;
opacity: 1;
}
.hidden {
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/1password.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
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"
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() {
clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
@@ -18,31 +49,26 @@ show_subtext() {
}
# 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/mirrorlist.sh
source $OMARCHY_INSTALL/preflight/gum.sh
source $OMARCHY_INSTALL/preflight/guard.sh
source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/tte.sh
source $OMARCHY_INSTALL/preflight/migrations.sh
# Configuration
source $OMARCHY_INSTALL/config/config.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/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/timezones.sh
source $OMARCHY_INSTALL/config/nvidia.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/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
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
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
sleep 5
sleep 2
reboot

View File

@@ -1,6 +1,6 @@
#!/bin/bash
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
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 "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 "Zoom" https://app.zoom.us/wc/home https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/zoom.png
fi

View File

@@ -7,7 +7,8 @@ if [ -z "$OMARCHY_BARE" ]; then
xournalpp localsend-bin
# 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" ||
echo -e "\e[31mFailed to install $pkg. Continuing without!\e[0m"
done

View File

@@ -1,7 +1,6 @@
#!/bin/bash
# Copy over Omarchy configs
mkdir -p ~/.config
cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc from Omarchy
@@ -15,3 +14,43 @@ if [ -n "$OMARCHY_BARE" ]; then
mkdir -p ~/.local/state/omarchy
touch ~/.local/state/omarchy/bare.mode
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
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

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
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.
yay -S --noconfirm python-gobject power-profiles-daemon
# FIXME: Can't set powerprofilesctl during CHROOT, must do it afterwards
if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; then
if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery
powerprofilesctl set balanced || true
if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery
powerprofilesctl set balanced || true
# Enable battery monitoring timer for low battery notifications
systemctl --user enable --now omarchy-battery-monitor.timer
# Enable battery monitoring timer for low battery notifications
if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ]; then
systemctl --user enable omarchy-battery-monitor.timer
else
# This computer runs on power outlet
powerprofilesctl set performance || true
systemctl --user enable --now omarchy-battery-monitor.timer
fi
else
# This computer runs on power outlet
powerprofilesctl set performance || true
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
mkdir -p ~/.local/share/fonts
cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/
fc-cache
if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed ttf-jetbrains-mono noto-fonts-cjk noto-fonts-extra
fi

View File

@@ -1,5 +1,26 @@
#!/bin/bash
if -z "${OMARCHY_CHROOT_INSTALL:-}"; then
omarchy-install-firewall
if ! command -v ufw &>/dev/null && -z "${OMARCHY_CHROOT_INSTALL:-}"; then
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

View File

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

View File

@@ -1,22 +1,17 @@
#!/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
HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs)
EOF
[[ -f /boot/EFI/limine/limine.conf ]] && EFI=true
# 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:]]*//')
CMDLINE=$(grep "^[[:space:]]*cmdline:" /boot/EFI/limine/limine.conf | head -1 | sed 's/^[[:space:]]*cmdline:[[:space:]]*//')
sudo tee /etc/default/limine <<EOF >/dev/null
TARGET_OS_NAME="Omarchy"
ESP_PATH="/boot"
KERNEL_CMDLINE[default]="$CMDLINE"
KERNEL_CMDLINE[default]+="quiet splash"
@@ -34,11 +29,6 @@ MAX_SNAPSHOT_ENTRIES=5
SNAPSHOT_FORMAT_CHOICE=5
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
sudo tee /boot/limine.conf <<EOF >/dev/null
### Read more at config document: https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md
@@ -62,9 +52,6 @@ term_background_bright: 24283b
EOF
yay -S --noconfirm --needed limine-mkinitcpio-hook limine-snapper-sync
sudo limine-update
# Match Snapper configs if not installing from the ISO
if [ -z "${OMARCHY_CHROOT_INSTALL:-}" ]; 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_IMPORTANT="10"/NUMBER_LIMIT_IMPORTANT="5"/' /etc/snapper/configs/{root,home}
sudo limine-update
chrootable_systemctl_enable limine-snapper-sync.service
fi
# Add UKI entry to UEFI machines to skip bootloader showing on normal boot
# FIXME: Make this work on real hardware
# if [ -n "$EFI" ] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy; then
# sudo efibootmgr --create \
# --disk "$(findmnt -n -o SOURCE /boot | sed 's/[0-9]*$//')" \
# --part "$(findmnt -n -o SOURCE /boot | grep -o '[0-9]*$')" \
# --label "Omarchy" \
# --loader "\\EFI\\Linux\\$(cat /etc/machine-id)_linux.efi"
# fi
# Only doing this for ISO installs
if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ] && efibootmgr &>/dev/null && ! efibootmgr | grep -q Omarchy; then
sudo efibootmgr --create \
--disk "$(findmnt -n -o SOURCE /boot | sed 's/[0-9]*$//')" \
--part "$(findmnt -n -o SOURCE /boot | grep -o '[0-9]*$')" \
--label "Omarchy" \
--loader "\\EFI\\Linux\\$(cat /etc/machine-id)_linux.efi"
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() {
if [ -n "${OMARCHY_CHROOT_INSTALL:-}" ]; then
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
echo 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch' |
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
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