Merge pull request #6208 from basecamp/3-8-3

Omarchy 3.8.3
This commit is contained in:
David Heinemeier Hansson authored and GitHub committed 2026-07-13 15:56:11 -07:00
commit 6aa2aec1c0
19 files changed
+162 -15

No files matched your search

+1
View File
@@ -18,6 +18,7 @@ if [[ -f $FIRST_RUN_MODE ]]; then
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
bash "$OMARCHY_PATH/install/first-run/swayosd.sh"
bash "$OMARCHY_PATH/install/first-run/gtk-primary-paste.sh"
bash "$OMARCHY_PATH/install/first-run/text-scaling.sh"
bash "$OMARCHY_PATH/install/first-run/elephant.sh"
omarchy-hook-install post-update "$OMARCHY_PATH/install/first-run/install-voxtype.hook"
sudo rm -f /etc/sudoers.d/first-run
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
# omarchy:summary=Detect whether the computer has an Intel SOF-capable audio DSP.
# Matches Intel audio controllers (PCI class Multimedia audio or Audio device)
# present on Skylake-and-later platforms that use sof-audio-pci-intel-* drivers.
lspci | grep -qiE '(Multimedia audio controller|Audio device).*Intel'
+1 -1
View File
@@ -6,7 +6,7 @@
installed=()
for pkg in "$@"; do
if pacman -Q "$pkg" &>/dev/null; then
if pacman -Qq | grep -Fxq "$pkg"; then
installed+=("$pkg")
fi
done
+5 -5
View File
@@ -53,12 +53,12 @@ echo -e "\e[32mSetting up fingerprint scanner for authentication.\n\e[0m"
# Install required packages
echo "Installing required packages..."
installed_libfprint=$(pacman -Qq libfprint 2>/dev/null || true)
# libfprint-git provides+conflicts libfprint; pacman -S --noconfirm
# defaults the conflict prompt to N and aborts. Pre-remove libfprint
# with -Rdd so the install goes silent. -Rdd (not omarchy-pkg-drop's
# -Rns) is required because fprintd requires libfprint; the dep is
# re-satisfied immediately by libfprint-git's provides=libfprint.
if omarchy-pkg-present libfprint; then
# defaults the conflict prompt to N and aborts. Pre-remove the exact
# libfprint package, but not an installed provider like libfprint-git.
if [[ $installed_libfprint == "libfprint" ]]; then
sudo pacman -Rdd --noconfirm libfprint
fi
+4 -1
View File
@@ -21,5 +21,8 @@ decorations = "None"
bindings = [
{ key = "Insert", mods = "Shift", action = "Paste" },
{ key = "Insert", mods = "Control", action = "Copy" },
{ key = "Return", mods = "Shift", chars = "\u001B\r" }
# Send Shift+Return as CSI-u so TUIs can distinguish it from Return without treating it as Alt+Return.
{ key = "Return", mods = "Shift", chars = "\u001B[13;2u" },
# Legacy encoding sends Alt+Shift+Return the same as Alt+Return; send CSI-u so tmux can match M-S-Enter.
{ key = "Return", mods = "Alt|Shift", chars = "\u001B[13;4u" }
]
+6
View File
@@ -17,3 +17,9 @@ blink=no
clipboard-copy=Control+Insert
primary-paste=none
clipboard-paste=Shift+Insert
[text-bindings]
# Send Shift+Return as CSI-u so TUIs can distinguish it from Return.
\x1b[13;2u=Shift+Return
# Send Alt+Shift+Return as CSI-u so tmux can match M-S-Enter.
\x1b[13;4u=Mod1+Shift+Return
+4
View File
@@ -25,6 +25,10 @@ shell-integration-features = no-cursor,ssh-env
# Keyboard bindings
keybind = shift+insert=paste_from_clipboard
keybind = control+insert=copy_to_clipboard
# Send Shift+Enter as CSI-u so TUIs can distinguish it from Enter.
keybind = shift+enter=csi:13;2u
# Legacy encoding sends Alt+Shift+Enter the same as Alt+Enter; send CSI-u so tmux can match M-S-Enter.
keybind = alt+shift+enter=csi:13;4u
keybind = super+control+shift+alt+arrow_down=resize_split:down,100
keybind = super+control+shift+alt+arrow_up=resize_split:up,100
keybind = super+control+shift+alt+arrow_left=resize_split:left,100
+4
View File
@@ -13,6 +13,10 @@ confirm_os_window_close 0
# Keybindings
map ctrl+insert copy_to_clipboard
map shift+insert paste_from_clipboard
# Send Shift+Enter as CSI-u so TUIs can distinguish it from Enter.
map shift+enter send_text all \e[13;2u
# Kitty legacy encoding sends Alt+Shift+Enter the same as Alt+Enter; send CSI-u so tmux can match M-S-Enter.
map alt+shift+enter send_text all \e[13;4u
# Allow remote access
allow_remote_control yes
+7
View File
@@ -12,6 +12,10 @@ bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection-and-cancel
# Pane Controls
bind -n M-Enter split-window -v -c "#{pane_current_path}"
bind -n M-S-Enter split-window -h -c "#{pane_current_path}"
bind -n M-Escape kill-pane
bind h split-window -v -c "#{pane_current_path}"
bind v split-window -h -c "#{pane_current_path}"
bind x kill-pane
@@ -72,6 +76,7 @@ setw -g aggressive-resize on
set -g detach-on-destroy off
set -g extended-keys on
set -g extended-keys-format csi-u
set -ag terminal-features "xterm-kitty:extkeys"
set -sg escape-time 10
# Status bar
@@ -82,6 +87,8 @@ set -g status-right-length 50
set -g window-status-separator ""
set -gw automatic-rename on
set -gw automatic-rename-format '#{b:pane_current_path}'
set -g set-titles on
set -g set-titles-string '#h:#W'
# Theme
set -g status-style "bg=default,fg=default"
+2
View File
@@ -45,12 +45,14 @@ alias ....='cd ../../..'
# Tools
alias c='opencode'
alias cx='printf "\033[2J\033[3J\033[H" && claude --permission-mode bypassPermissions'
alias cy='codex -s danger-full-access -a never'
alias d='docker'
alias r='rails'
alias t='tmux attach || tmux new -s Work'
alias ic='tdl c'
alias ix='tdl cx'
alias icx='tdl c cx'
alias mup='MISE_MINIMUM_RELEASE_AGE=0 mise up'
n() { if [ "$#" -eq 0 ]; then command nvim . ; else command nvim "$@"; fi; }
# Git
@@ -1,8 +1,9 @@
# Install Sound Open Firmware for the audio DSP on non-XPS Intel Panther
# Lake systems. XPS PTL stays on linux-ptl, which hard-deps sof-firmware.
# Mainline `linux` only optdeps it, so without this the DSP fails to boot
# and only auto_null shows up in PipeWire.
# Install Sound Open Firmware for the audio DSP on Intel systems that need it.
# The sof-audio-pci-intel-* driver family requires sof-firmware to initialise
# the DSP; without it the DSP fails to boot and PipeWire exposes only a Dummy
# Output sink. This affects Arrow Lake, Meteor Lake, Tiger Lake, Alder Lake,
# Wildcat Lake, Panther Lake, and similar platforms.
if omarchy-hw-intel-ptl && ! omarchy-hw-match "XPS"; then
if omarchy-hw-intel-sof; then
omarchy-pkg-add sof-firmware
fi
+2 -2
View File
@@ -1,7 +1,7 @@
if omarchy-battery-present; then
cat <<EOF | sudo tee "/etc/udev/rules.d/99-power-profile.rules"
SUBSYSTEM=="power_supply", ATTR{type}=="Mains", RUN+="/usr/bin/systemd-run --no-block --collect --unit=omarchy-power-profile --property=After=power-profiles-daemon.service $HOME/.local/share/omarchy/bin/omarchy-powerprofiles-set"
SUBSYSTEM=="power_supply", ATTR{type}=="USB", RUN+="/usr/bin/systemd-run --no-block --collect --unit=omarchy-power-profile --property=After=power-profiles-daemon.service $HOME/.local/share/omarchy/bin/omarchy-powerprofiles-set"
SUBSYSTEM=="power_supply", ATTR{type}=="Mains", RUN+="/usr/bin/systemd-run --no-block --collect --property=After=power-profiles-daemon.service $HOME/.local/share/omarchy/bin/omarchy-powerprofiles-set"
SUBSYSTEM=="power_supply", ATTR{type}=="USB", RUN+="/usr/bin/systemd-run --no-block --collect --property=After=power-profiles-daemon.service $HOME/.local/share/omarchy/bin/omarchy-powerprofiles-set"
EOF
sudo systemctl enable power-profiles-daemon
+5
View File
@@ -0,0 +1,5 @@
# Nudge text down slightly on the Dell XPS 13 (DX13260, 2026), whose 2560x1600
# panel renders the default scaling a touch large.
if omarchy-hw-match "DX13260"; then
gsettings set org.gnome.desktop.interface text-scaling-factor 0.95
fi
+1
View File
@@ -1,6 +1,7 @@
if command -v limine &>/dev/null; then
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)
FILES+=(/etc/vconsole.conf)
EOF
sudo tee /etc/mkinitcpio.conf.d/thunderbolt_module.conf <<EOF >/dev/null
MODULES+=(thunderbolt)
+11
View File
@@ -0,0 +1,11 @@
echo "Bundle the console keymap into the initramfs so Plymouth uses the right keyboard layout at the LUKS prompt"
HOOKS_CONF="/etc/mkinitcpio.conf.d/omarchy_hooks.conf"
if [[ -f $HOOKS_CONF ]] && ! grep -q '/etc/vconsole.conf' "$HOOKS_CONF"; then
echo "FILES+=(/etc/vconsole.conf)" | sudo tee -a "$HOOKS_CONF" >/dev/null
if omarchy-cmd-present limine-mkinitcpio; then
sudo limine-mkinitcpio
fi
fi
+19
View File
@@ -0,0 +1,19 @@
echo "Backfill Mesa Vulkan drivers for systems installed before vulkan.sh was added"
declare -A VULKAN_DRIVERS=(
[Intel]=vulkan-intel
[AMD]=vulkan-radeon
[Apple]=vulkan-asahi
)
PACKAGES=()
for vendor in "${!VULKAN_DRIVERS[@]}"; do
if lspci | grep -iE "(VGA|Display).*$vendor" > /dev/null; then
PACKAGES+=("${VULKAN_DRIVERS[$vendor]}")
fi
done
if (( ${#PACKAGES[@]} > 0 )); then
omarchy-pkg-add "${PACKAGES[@]}"
fi
+65
View File
@@ -0,0 +1,65 @@
echo "Add easier tmux pane controls with Alt+Enter splits and CSI-u Shift+Enter across terminals"
# tmux: add pane bindings, enable kitty extkeys, and set informative terminal titles
tmux_config="$HOME/.config/tmux/tmux.conf"
if [[ -f $tmux_config ]]; then
if ! grep -Fq 'bind -n M-Escape kill-pane' "$tmux_config"; then
sed -i '/^# Pane Controls$/a\bind -n M-Escape kill-pane' "$tmux_config"
fi
if ! grep -Fq 'bind -n M-S-Enter split-window' "$tmux_config"; then
sed -i '/^# Pane Controls$/a\bind -n M-S-Enter split-window -h -c "#{pane_current_path}"' "$tmux_config"
fi
if ! grep -Fq 'bind -n M-Enter split-window' "$tmux_config"; then
sed -i '/^# Pane Controls$/a\bind -n M-Enter split-window -v -c "#{pane_current_path}"' "$tmux_config"
fi
if ! grep -q "xterm-kitty:extkeys" "$tmux_config"; then
sed -i '/^set -g extended-keys-format csi-u$/a\set -ag terminal-features "xterm-kitty:extkeys"' "$tmux_config"
fi
if ! grep -Fq 'set -g set-titles on' "$tmux_config"; then
sed -i "/^set -gw automatic-rename-format/a\\set -g set-titles on" "$tmux_config"
fi
if ! grep -Fq 'set -g set-titles-string' "$tmux_config"; then
sed -i "/^set -g set-titles on$/a\\set -g set-titles-string '#h:#W'" "$tmux_config"
fi
omarchy-restart-tmux
fi
# alacritty: replace the old Shift+Return binding with CSI-u encodings
alacritty_config="$HOME/.config/alacritty/alacritty.toml"
if [[ -f $alacritty_config ]] && ! grep -q '13;2u' "$alacritty_config"; then
sed -i -E 's|^([[:space:]]*).*chars = "\\u001B\\r".*|\1# Send Shift+Return as CSI-u so TUIs can distinguish it from Return without treating it as Alt+Return.\n\1{ key = "Return", mods = "Shift", chars = "\\u001B[13;2u" },\n\1# Legacy encoding sends Alt+Shift+Return the same as Alt+Return; send CSI-u so tmux can match M-S-Enter.\n\1{ key = "Return", mods = "Alt\|Shift", chars = "\\u001B[13;4u" }|' "$alacritty_config"
fi
# foot: add CSI-u text bindings for Shift+Return and Alt+Shift+Return
foot_config="$HOME/.config/foot/foot.ini"
if [[ -f $foot_config ]]; then
if ! grep -q '^\[text-bindings\]$' "$foot_config"; then
sed -i '$a\\\n[text-bindings]' "$foot_config"
fi
if ! grep -Fq '\x1b[13;4u=Mod1+Shift+Return' "$foot_config"; then
sed -i '/^\[text-bindings\]$/a\# Send Alt+Shift+Return as CSI-u so tmux can match M-S-Enter.\n\\x1b[13;4u=Mod1+Shift+Return' "$foot_config"
fi
if ! grep -Fq '\x1b[13;2u=Shift+Return' "$foot_config"; then
sed -i '/^\[text-bindings\]$/a\# Send Shift+Return as CSI-u so TUIs can distinguish it from Return.\n\\x1b[13;2u=Shift+Return' "$foot_config"
fi
fi
# ghostty: add CSI-u keybinds for Shift+Enter and Alt+Shift+Enter
ghostty_config="$HOME/.config/ghostty/config"
if [[ -f $ghostty_config ]] && ! grep -q 'csi:13;2u' "$ghostty_config"; then
sed -i '/^keybind = control+insert=copy_to_clipboard$/a\# Send Shift+Enter as CSI-u so TUIs can distinguish it from Enter.\nkeybind = shift+enter=csi:13;2u\n# Legacy encoding sends Alt+Shift+Enter the same as Alt+Enter; send CSI-u so tmux can match M-S-Enter.\nkeybind = alt+shift+enter=csi:13;4u' "$ghostty_config"
fi
# kitty: add CSI-u key mappings for Shift+Enter and Alt+Shift+Enter
kitty_config="$HOME/.config/kitty/kitty.conf"
if [[ -f $kitty_config ]] && ! grep -q '13;2u' "$kitty_config"; then
sed -i '/^map shift+insert paste_from_clipboard$/a\# Send Shift+Enter as CSI-u so TUIs can distinguish it from Enter.\nmap shift+enter send_text all \\e[13;2u\n# Kitty legacy encoding sends Alt+Shift+Enter the same as Alt+Enter; send CSI-u so tmux can match M-S-Enter.\nmap alt+shift+enter send_text all \\e[13;4u' "$kitty_config"
fi
+11
View File
@@ -0,0 +1,11 @@
echo "Install sof-firmware for all Intel SOF audio DSP platforms (Arrow Lake, Meteor Lake, etc.)"
# Intel SOF platforms beyond Panther Lake and Wildcat Lake (Arrow Lake, Meteor
# Lake, Tiger Lake, Alder Lake) were not covered by the original sof-firmware
# install guard. Without sof-firmware the DSP fails to boot and PipeWire exposes
# only a Dummy Output. Install it now for all qualifying Intel systems.
if omarchy-hw-intel-sof && omarchy-pkg-missing sof-firmware; then
omarchy-pkg-add sof-firmware
omarchy-state set reboot-required
fi
+1 -1
View File
@@ -1 +1 @@
3.8.2
3.8.3