19 files changed
+162
-15
No files matched your search
@@ -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
|
||||
|
||||
Executable
+7
@@ -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'
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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" }
|
||||
]
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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,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)
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in new issue
Block a user