Merge pull request #2862 from basecamp/dev

Omarchy 3.1.4
This commit is contained in:
David Heinemeier Hansson
2025-10-28 16:18:13 +01:00
committed by GitHub
42 changed files with 336 additions and 225 deletions

View File

@@ -1,12 +0,0 @@
[Desktop Entry]
Name=Neovim
GenericName=Text Editor
Comment=Edit text files
Exec=omarchy-launch-editor %F
Terminal=false
Type=Application
Keywords=Text;editor;
Icon=nvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;

View File

@@ -4,7 +4,7 @@ workspace_id=$(hyprctl activeworkspace -j | jq -r .id)
gaps=$(hyprctl workspacerules -j | jq -r ".[] | select(.workspaceString==\"$workspace_id\") | .gapsOut[0] // 0")
if [[ $gaps == "0" ]]; then
hyprctl keyword "workspace $workspace_id, gapsout:10, gapsin:5, border:true"
hyprctl keyword "workspace $workspace_id, gapsout:10, gapsin:5, bordersize:2"
else \
hyprctl keyword "workspace $workspace_id, gapsout:0, gapsin:0, border:false"
hyprctl keyword "workspace $workspace_id, gapsout:0, gapsin:0, bordersize:0"
fi

View File

@@ -287,10 +287,10 @@ show_install_ai_menu() {
echo ollama
)
case $(menu "Install" "󱚤 Claude Code\n󱚤 Cursor CLI [AUR]\n󱚤 Gemini [AUR]\n󱚤 OpenAI Codex [AUR]\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in
case $(menu "Install" "󱚤 Claude Code\n󱚤 Cursor CLI [AUR]\n󱚤 Gemini [AUR]\n󱚤 OpenAI Codex\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in
*Claude*) install "Claude Code" "claude-code" ;;
*Cursor*) aur_install "Cursor CLI" "cursor-cli" ;;
*OpenAI*) aur_install "OpenAI Codex" "openai-codex-bin" ;;
*OpenAI*) install "OpenAI Codex" "openai-codex-bin" ;;
*Gemini*) aur_install "Gemini" "gemini-cli" ;;
*Studio*) install "LM Studio" "lmstudio" ;;
*Ollama*) install "Ollama" $ollama_pkg ;;
@@ -395,7 +395,7 @@ show_update_menu() {
*Hardware*) show_update_hardware_menu ;;
*Firmware*) present_terminal omarchy-update-firmware ;;
*Timezone*) present_terminal omarchy-tz-select ;;
*Time*) present_terminal omarchy-reset-time ;;
*Time*) present_terminal omarchy-update-time ;;
*Password*) show_update_password_menu ;;
*) show_main_menu ;;
esac

View File

@@ -49,6 +49,17 @@ parse_keycodes() {
code="${BASH_REMATCH[1]}"
symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE")
echo "${line/code:${code}/$symbol}"
elif [[ "$line" =~ mouse:([0-9]+) ]]; then
code="${BASH_REMATCH[1]}"
case "$code" in
272) symbol="LEFT MOUSE BUTTON" ;;
273) symbol="RIGHT MOUSE BUTTON" ;;
274) symbol="MIDDLE MOUSE BUTTON" ;;
*) symbol="mouse:${code}" ;;
esac
echo "${line/mouse:${code}/$symbol}"
else
echo "$line"
fi
@@ -101,6 +112,11 @@ dynamic_bindings() {
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
}
# Hardcoded bindings, like the copy-url extension and such
static_bindings() {
echo "SHIFT ALT,L,Copy URL from Web App,extension,copy-url"
}
# Parse and format keybindings
#
# `awk` does the heavy lifting:
@@ -147,13 +163,67 @@ parse_bindings() {
}'
}
prioritize_entries() {
awk '
{
line = $0
prio = 50
if (match(line, /Terminal/)) prio = 0
if (match(line, /Browser/) && !match(line, /Browser[[:space:]]*\(/)) prio = 1
if (match(line, /File manager/)) prio = 2
if (match(line, /Launch apps/)) prio = 3
if (match(line, /Omarchy menu/)) prio = 4
if (match(line, /System menu/)) prio = 5
if (match(line, /Theme menu/)) prio = 6
if (match(line, /Full screen/)) prio = 7
if (match(line, /Close window/)) prio = 8
if (match(line, /Toggle window floating/)) prio = 9
if (match(line, /Toggle window split/)) prio = 10
if (match(line, /Universal/)) prio = 11
if (match(line, /Clipboard/)) prio = 12
if (match(line, /Emoji picker/)) prio = 13
if (match(line, /Color picker/)) prio = 14
if (match(line, /Screenshot/)) prio = 15
if (match(line, /Screenrecording/)) prio = 16
if (match(line, /(Switch|Next|Former|Previous).*workspace/)) prio = 17
if (match(line, /Move window to workspace/)) prio = 18
if (match(line, /Swap window/)) prio = 19
if (match(line, /Move window focus/)) prio = 20
if (match(line, /Move window$/)) prio = 21
if (match(line, /Resize window/)) prio = 22
if (match(line, /Expand window/)) prio = 23
if (match(line, /Shrink window/)) prio = 24
if (match(line, /scratchpad/)) prio = 25
if (match(line, /notification/)) prio = 26
if (match(line, /Toggle window transparency/)) prio = 27
if (match(line, /Toggle workspace gaps/)) prio = 28
if (match(line, /Toggle nightlight/)) prio = 29
if (match(line, /group/)) prio = 94
if (match(line, /Scroll active workspace/)) prio = 95
if (match(line, /Cycle to/)) prio = 96
if (match(line, /Reveal active/)) prio = 97
if (match(line, /Apple Display/)) prio = 98
if (match(line, /XF86/)) prio = 99
# print "priority<TAB>line"
printf "%d\t%s\n", prio, line
}' |
sort -k1,1n -k2,2 |
cut -f2-
}
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
menu_height=$((monitor_height * 40 / 100))
build_keymap_cache
dynamic_bindings |
{
dynamic_bindings
static_bindings
} |
sort -u |
parse_keycodes |
parse_bindings |
prioritize_entries |
walker --dmenu -p 'Keybindings' --width 800 --height "$menu_height"

View File

@@ -17,5 +17,6 @@ if [[ $EUID -eq 0 ]]; then
"
else
setsid uwsm-app -- elephant &
wait 2
setsid uwsm-app -- walker --gapplication-service &
fi

View File

@@ -87,6 +87,35 @@ calculate_brightness() {
echo $(((r * 299 + g * 587 + b * 114) / 1000))
}
# Calculate approximate contrast ratio between two colors
# Returns ratio scaled by 100 (e.g., 450 = 4.5:1 ratio)
# (this is due to bash not supporting decimal math)
calculate_contrast_ratio() {
local hex1="$1" hex2="$2"
local br1=$(calculate_brightness "$hex1") # 0-255 range
local br2=$(calculate_brightness "$hex2") # 0-255 range
# Ensure br1 is the lighter color (higher brightness)
if [ $br1 -lt $br2 ]; then
local temp=$br1
br1=$br2
br2=$temp
fi
# Approximate contrast ratio scaled by 100
# Add offset to avoid division by zero and approximate WCAG +0.05 behavior
echo $(((br1 + 13) * 100 / (br2 + 13)))
}
# Check if two colors meet minimum contrast threshold
# Usage: meets_contrast_threshold <ratio> <threshold>
# Both ratio and threshold should be scaled by 100 (e.g., 300 = 3:1)
meets_contrast_threshold() {
local ratio="$1" # Ratio scaled by 100 (from calculate_contrast_ratio)
local threshold="$2" # Threshold scaled by 100 (300=3:1, 450=4.5:1, 700=7:1)
[ $ratio -ge $threshold ]
}
# Calculate color distance (euclidean in RGB space)
color_distance() {
local hex1="$1"
@@ -229,38 +258,30 @@ extract_theme_data() {
fi
done
# Sort by distance and get the closest color for code background
local -a closest_to_bg
readarray -t closest_to_bg < <(printf '%s\n' "${bg_distances[@]}" | sort -n | head -1 | cut -d: -f2)
# All background variations use the same as primary background
local bg_primary_alt="$bg_color"
local bg_secondary="$bg_color"
local bg_secondary_alt="$bg_color"
# Code block background uses the closest different color
local code_bg="${closest_to_bg[0]}"
# If no different color available, create a subtle variant for code blocks
if [ -z "$code_bg" ]; then
read -r r g b <<<"$(hex_to_rgb "$bg_color")"
if [ $bg_brightness -gt 127 ]; then
r=$((r - 10))
g=$((g - 10))
b=$((b - 10))
else
r=$((r + 15))
g=$((g + 15))
b=$((b + 15))
fi
[ $r -lt 0 ] && r=0
[ $r -gt 255 ] && r=255
[ $g -lt 0 ] && g=0
[ $g -gt 255 ] && g=255
[ $b -lt 0 ] && b=0
[ $b -gt 255 ] && b=255
code_bg=$(printf "#%02x%02x%02x" "$r" "$g" "$b")
# Generate code background color that will contrast with foreground text
read -r r g b <<<"$(hex_to_rgb "$bg_color")"
if [ $bg_brightness -gt 127 ]; then
r=$((r - 10))
g=$((g - 10))
b=$((b - 10))
else
r=$((r + 15))
g=$((g + 15))
b=$((b + 15))
fi
[ $r -lt 0 ] && r=0
[ $r -gt 255 ] && r=255
[ $g -lt 0 ] && g=0
[ $g -gt 255 ] && g=255
[ $b -lt 0 ] && b=0
[ $b -gt 255 ] && b=255
code_bg=$(printf "#%02x%02x%02x" "$r" "$g" "$b")
# Find closest color to foreground for code block text
local code_fg=""
@@ -345,6 +366,22 @@ extract_theme_data() {
border_color=$(printf "#%02x%02x%02x" "$r" "$g" "$b")
fi
# Set text colors for muted/faint based on contrast
local text_muted_color="$border_color"
local text_faint_color="$border_color"
# Validate border color contrast against background
# Represents a 3:1 WCAG contrast ratio
local ideal_contrast_ratio=300
local border_contrast=$(calculate_contrast_ratio "$border_color" "$bg_color")
if ! meets_contrast_threshold "$border_contrast" "$ideal_contrast_ratio"; then
# Override text colors for readability, keep border color for visibility
text_muted_color="$fg_color"
text_faint_color="$fg_color"
fi
# Get unique colors array (without bg/fg) sorted by frequency
local -a unique_colors
readarray -t unique_colors < <(echo "$filtered_data" | sort_colors_by_frequency)
@@ -409,8 +446,8 @@ extract_theme_data() {
--text-mark: ${color_slots[7]};
--interactive-accent: ${color_slots[8]};
--blockquote-border: ${color_slots[9]};
--text-muted: $border_color; /* Use border color for muted text */
--text-faint: $border_color; /* Use border color for faint text */
--text-muted: $text_muted_color; /* Use text-specific color for muted text */
--text-faint: $text_faint_color; /* Use text-specific color for faint text */
/* Additional mappings */
--text-accent: var(--interactive-accent);

View File

@@ -4,6 +4,17 @@ set -e
trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR
gum style --border normal --border-foreground 6 --padding "1 2" --margin "1 0" \
"Ready to update Omarchy?" \
"" \
"• You cannot stop the update once you start!" \
"• Make sure you're not on battery power or have sufficient charge"
if ! gum confirm --default=false "Continue with update?"; then
echo "Update cancelled"
exit 0
fi
omarchy-snapshot create || [ $? -eq 127 ]
omarchy-update-git
omarchy-update-perform

12
bin/omarchy-update-keyring Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
# Ensure we have the omarchy-keyring and it's populated
if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 &>/dev/null; then
sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org
sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571
sudo pacman -Sy
omarchy-pkg-add omarchy-keyring
sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571
fi

View File

@@ -2,6 +2,8 @@
set -e
omarchy-update-time
omarchy-update-keyring
omarchy-update-available-reset
omarchy-update-system-pkgs
omarchy-migrate

View File

@@ -30,7 +30,7 @@ else
fi
if [[ ${#APP_NAMES[@]} -eq 0 ]]; then
echo "You must provide web app names."
echo "You must select at least one web app to remove."
exit 1
fi

View File

@@ -0,0 +1,2 @@
TriggerKey=
PastePrimaryKey=

View File

@@ -17,11 +17,11 @@ gtk-toolbar-style = flat
# Cursor styling
cursor-style = "block"
cursor-style-blink = false
shell-integration-features = no-cursor
# Cursor styling + SSH session terminfo
# (all shell integration options must be passed together)
shell-integration-features = no-cursor,ssh-env
# Keyboard bindings
keybind = shift+insert=paste_from_clipboard
keybind = control+insert=copy_to_clipboard
# SSH session terminfo
shell-integration-features = ssh-env

28
config/git/config Normal file
View File

@@ -0,0 +1,28 @@
# See https://git-scm.com/docs/git-config
[alias]
co = checkout
br = branch
ci = commit
st = status
[init]
defaultBranch = master
[pull]
rebase = true # Rebase (instead of merge) on pull
[push]
autoSetupRemote = true # Automatically set upstream branch on push
[diff]
algorithm = histogram # Clearer diffs on moved/edited lines
colorMoved = plain # Highlight moved blocks in diffs
mnemonicPrefix = true # More intuitive refs in diff output
[commit]
verbose = true # Include diff comment in commit message template
[column]
ui = auto # Output in columns when possible
[branch]
sort = -committerdate # Sort branches by most recent commit first
[tag]
sort = -version:refname # Sort version numbers as you would expect
[rerere]
enabled = true # Record and reuse conflict resolutions
autoupdate = true # Apply stored conflict resolutions automatically

View File

@@ -12,7 +12,7 @@ bindd = SUPER SHIFT, T, Activity, exec, $terminal -e btop
bindd = SUPER SHIFT, D, Docker, exec, $terminal -e lazydocker
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop"
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus "^obsidian$" "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora
bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime
bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password
# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment

View File

@@ -2,9 +2,10 @@
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
# No gaps between windows
# No gaps between windows or borders
# gaps_in = 0
# gaps_out = 0
# border_size = 0
# Use master layout instead of dwindle
# layout = master

2
config/imv/config Normal file
View File

@@ -0,0 +1,2 @@
[binds]
<Ctrl+p> = exec lp $imv_current_file

View File

@@ -2,7 +2,7 @@
# Ensure Omarchy bins are in the path
export OMARCHY_PATH=$HOME/.local/share/omarchy
export PATH=$OMARCHY_PATH/bin/:$PATH
export PATH=$OMARCHY_PATH/bin:$PATH
# Set default terminal and editor
source ~/.config/uwsm/default

View File

@@ -1,28 +1,12 @@
force_keyboard_focus = true # forces keyboard forcus to stay in Walker
close_when_open = true # close walker when invoking while already opened
selection_wrap = true # wrap list if at bottom or top
click_to_close = true # closes walker if clicking outside of the main content area
global_argument_delimiter = "#" # query: firefox#https://benz.dev => part after delimiter will be ignored when querying. this should be the same as in the elephant config
exact_search_prefix = "'" # disable fuzzy searching
theme = "omarchy-default" # theme to use
disable_mouse = false # disable mouse (on input and list only)
additional_theme_location = "~/.local/share/omarchy/default/walker/themes/"
[shell]
anchor_top = true
anchor_bottom = true
anchor_left = true
anchor_right = true
[placeholders]
"default" = { input = " Search...", list = "No Results" } # placeholders for input and empty list, key is the providers name, so f.e. "desktopapplications" or "menus:other"
[keybinds]
close = ["Escape"]
next = ["Down"]
previous = ["Up"]
toggle_exact = ["ctrl e"]
resume_last_query = ["ctrl r"]
quick_activate = []
[providers]
@@ -31,11 +15,6 @@ default = [
"menus",
"websearch",
] # providers to be queried by default
empty = ["desktopapplications"] # providers to be queried when query is empty
max_results = 50 # global max results
[providers.sets] # define your own defaults/empty sets of providers
[providers.max_results_provider] # define max results per provider in here
[[providers.prefixes]]
prefix = "/"
@@ -60,86 +39,3 @@ provider = "websearch"
[[providers.prefixes]]
prefix = "$"
provider = "clipboard"
[providers.actions] # This will be MERGED/OVEWRITTEN with what the user specifies
dmenu = [{ action = "select", default = true, bind = "Return" }]
providerlist = [
{ action = "activate", default = true, bind = "Return", after = "ClearReload" },
]
bluetooth = [
{ action = "find", global = true, bind = "ctrl f", after = "AsyncClearReload" },
{ action = "trust", bind = "ctrl t", after = "AsyncReload" },
{ action = "untrust", bind = "ctrl t", after = "AsyncReload" },
{ action = "pair", bind = "Return", after = "AsyncReload" },
{ action = "remove", bind = "ctrl d", after = "AsyncReload" },
{ action = "connect", bind = "Return", after = "AsyncReload" },
{ action = "disconnect", bind = "Return", after = "AsyncReload" },
]
archlinuxpkgs = [
{ action = "install", bind = "Return", default = true },
{ action = "remove", bind = "Return" },
]
calc = [
{ action = "copy", default = true, bind = "Return" },
{ action = "delete", bind = "ctrl d", after = "AsyncReload" },
{ action = "save", bind = "ctrl s", after = "AsyncClearReload" },
]
websearch = [
{ action = "search", default = true, bind = "Return" },
{ action = "erase_history", label = "clear hist", bind = "ctrl h", after = "Reload" },
]
desktopapplications = [
{ action = "start", default = true, bind = "Return" },
{ action = "start:keep", label = "open+next", bind = "shift Return", after = "KeepOpen" },
{ action = "erase_history", label = "clear hist", bind = "ctrl h", after = "AsyncReload" },
{ action = "pin", bind = "ctrl p", after = "AsyncReload" },
{ action = "unpin", bind = "ctrl p", after = "AsyncReload" },
{ action = "pinup", bind = "ctrl n", after = "AsyncReload" },
{ action = "pindown", bind = "ctrl m", after = "AsyncReload" },
]
files = [
{ action = "open", default = true, bind = "Return" },
{ action = "opendir", label = "open dir", bind = "ctrl Return" },
{ action = "copypath", label = "copy path", bind = "ctrl shift c" },
{ action = "copyfile", label = "copy file", bind = "ctrl c" },
]
todo = [
{ action = "save", default = true, bind = "Return", after = "ClearReload" },
{ action = "delete", bind = "ctrl d", after = "ClearReload" },
{ action = "active", bind = "Return", after = "ClearReload" },
{ action = "inactive", bind = "Return", after = "ClearReload" },
{ action = "done", bind = "ctrl f", after = "ClearReload" },
{ action = "clear", bind = "ctrl x", after = "ClearReload", global = true },
]
runner = [
{ action = "run", default = true, bind = "Return" },
{ action = "runterminal", label = "run in terminal", bind = "shift Return" },
{ action = "erase_history", label = "clear hist", bind = "ctrl h", after = "Reload" },
]
symbols = [
{ action = "run_cmd", label = "select", default = true, bind = "Return" },
{ action = "erase_history", label = "clear hist", bind = "ctrl h", after = "Reload" },
]
unicode = [
{ action = "run_cmd", label = "select", default = true, bind = "Return" },
{ action = "erase_history", label = "clear hist", bind = "ctrl h", after = "Reload" },
]
clipboard = [
{ action = "copy", default = true, bind = "Return" },
{ action = "remove", bind = "ctrl d", after = "ClearReload" },
{ action = "remove_all", global = true, label = "clear", bind = "ctrl shift d", after = "ClearReload" },
{ action = "toggle_images", global = true, label = "toggle images", bind = "ctrl i", after = "ClearReload" },
{ action = "edit", bind = "ctrl o" },
]

View File

@@ -50,7 +50,7 @@
"on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update",
"tooltip-format": "Omarchy update available",
"signal": 7,
"interval": 3600
"interval": 21600
},
"cpu": {

View File

@@ -1,19 +1,26 @@
# File system
alias ls='eza -lh --group-directories-first --icons=auto'
alias lsa='ls -a'
alias lt='eza --tree --level=2 --long --icons --git'
alias lta='lt -a'
if command -v eza &> /dev/null; then
alias ls='eza -lh --group-directories-first --icons=auto'
alias lsa='ls -a'
alias lt='eza --tree --level=2 --long --icons --git'
alias lta='lt -a'
fi
alias ff="fzf --preview 'bat --style=numbers --color=always {}'"
alias cd="zd"
zd() {
if [ $# -eq 0 ]; then
builtin cd ~ && return
elif [ -d "$1" ]; then
builtin cd "$1"
else
z "$@" && printf "\U000F17A9 " && pwd || echo "Error: Directory not found"
fi
}
if command -v zoxide &> /dev/null; then
alias cd="zd"
zd() {
if [ $# -eq 0 ]; then
builtin cd ~ && return
elif [ -d "$1" ]; then
builtin cd "$1"
else
z "$@" && printf "\U000F17A9 " && pwd || echo "Error: Directory not found"
fi
}
fi
open() {
xdg-open "$@" >/dev/null 2>&1 &
}

View File

@@ -1,6 +1,9 @@
# Fixing popup size issue
windowrule = size 50% 50%, class:(.*jetbrains.*)$, title:^$,floating:1
# JetBrains windows default size
windowrule = size 50% 50%, class:(.*jetbrains.*)$, title:^$
# Fix tab dragging (always have a single space character as their title)
# Fix tab dragging (tab titles are just one space)
windowrule = noinitialfocus, class:^(.*jetbrains.*)$, title:^\\s$
windowrule = nofocus, class:^(.*jetbrains.*)$, title:^\\s$
# Allow dialogs (like "Send usage statistics") to be focusable and clickable
windowrule = unset,nofocus,class:^(.*jetbrains.*)$,title:^$
windowrule = unset,noinitialfocus,class:^(.*jetbrains.*)$,title:^$

View File

@@ -4,7 +4,7 @@ windowrule = center, tag:floating-window
windowrule = size 800 600, tag:floating-window
windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files)
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
windowrule = float, class:org.gnome.Calculator
# Fullscreen screensaver

View File

@@ -8,3 +8,7 @@ exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = omarchy-cmd-first-run
exec-once = uwsm-app -- elephant
exec-once = uwsm-app -- walker --gapplication-service
# Slow app launch fix -- set systemd vars
exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)
exec-once = dbus-update-activation-environment --systemd --all

View File

@@ -1,5 +1,5 @@
# Copy / Paste
bindd = SUPER, C, Copy, sendshortcut, CTRL, Insert,
bindd = SUPER, V, Paste, sendshortcut, SHIFT, Insert,
bindd = SUPER, X, Cut, sendshortcut, CTRL, X,
bindd = SUPER CTRL, V, Clipboard, exec, omarchy-launch-walker -m clipboard
bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert,
bindd = SUPER, V, Universal paste, sendshortcut, SHIFT, Insert,
bindd = SUPER, X, Universal cut, sendshortcut, CTRL, X,
bindd = SUPER CTRL, V, Clipboard manager, exec, omarchy-launch-walker -m clipboard

View File

@@ -1,22 +1,22 @@
# Close windows
bindd = SUPER, W, Close active window, killactive,
bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-hyprland-window-close-all
bindd = SUPER, W, Close window, killactive,
bindd = CTRL ALT, DELETE, Close all windows, exec, omarchy-hyprland-window-close-all
# Control tiling
bindd = SUPER, J, Toggle split, togglesplit, # dwindle
bindd = SUPER, J, Toggle window split, togglesplit, # dwindle
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
bindd = SUPER, T, Toggle floating, togglefloating,
bindd = SUPER, F, Force full screen, fullscreen, 0
bindd = SUPER, T, Toggle window floating/tiling, togglefloating,
bindd = SUPER, F, Full screen, fullscreen, 0
bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2
bindd = SUPER ALT, F, Full width, fullscreen, 1
# Move focus with SUPER + arrow keys
bindd = SUPER, LEFT, Move focus left, movefocus, l
bindd = SUPER, RIGHT, Move focus right, movefocus, r
bindd = SUPER, UP, Move focus up, movefocus, u
bindd = SUPER, DOWN, Move focus down, movefocus, d
bindd = SUPER, LEFT, Move window focus left, movefocus, l
bindd = SUPER, RIGHT, Move window focus right, movefocus, r
bindd = SUPER, UP, Move window focus up, movefocus, u
bindd = SUPER, DOWN, Move window focus down, movefocus, d
# Switch workspaces with SUPER + [0-9]
# Switch workspaces with SUPER + [1-9]
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
bindd = SUPER, code:11, Switch to workspace 2, workspace, 2
bindd = SUPER, code:12, Switch to workspace 3, workspace, 3
@@ -26,9 +26,8 @@ bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10
# Move active window to a workspace with SUPER + SHIFT + [0-9]
# Move active window to a workspace with SUPER + SHIFT + [1-9]
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2
bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3
@@ -38,7 +37,10 @@ bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6
bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7
bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
# Control scratchpad
bindd = SUPER, S, Toggle scratchpad, togglespecialworkspace, scratchpad
bindd = SUPER ALT, S, Move window to scratchpad, movetoworkspacesilent, special:scratchpad
# TAB between workspaces
bindd = SUPER, TAB, Next workspace, workspace, e+1

View File

@@ -2,13 +2,13 @@
# Do not make changes here, but bring them to tiling-v2.conf instead.
# Close windows
bindd = SUPER, W, Close active window, killactive,
bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-hyprland-window-close-all
bindd = SUPER, W, Close window, killactive,
bindd = CTRL ALT, DELETE, Close all windows, exec, omarchy-hyprland-window-close-all
# Control tiling
bindd = SUPER, J, Toggle split, togglesplit, # dwindle
bindd = SUPER, J, Toggle window split, togglesplit, # dwindle
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
bindd = SUPER SHIFT, V, Toggle floating, togglefloating,
bindd = SUPER SHIFT, V, Toggle window floating/tiling, togglefloating,
bindd = SHIFT, F11, Force full screen, fullscreen, 0
bindd = ALT, F11, Full width, fullscreen, 1

View File

@@ -2,7 +2,7 @@
bindd = SUPER, SPACE, Launch apps, exec, omarchy-launch-walker
bindd = SUPER CTRL, E, Emoji picker, exec, omarchy-launch-walker -m symbols
bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu
bindd = SUPER, ESCAPE, Power menu, exec, omarchy-menu system
bindd = SUPER, ESCAPE, System menu, exec, omarchy-menu system
bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system
bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings
bindd = , XF86Calculator, Calculator, exec, gnome-calculator
@@ -10,7 +10,7 @@ bindd = , XF86Calculator, Calculator, exec, gnome-calculator
# Aesthetics
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
bindd = SUPER CTRL, SPACE, Next background in theme, exec, omarchy-theme-bg-next
bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, omarchy-menu theme
bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle
bindd = SUPER SHIFT, BACKSPACE, Toggle workspace gaps, exec, omarchy-hyprland-workspace-toggle-gaps
@@ -31,10 +31,10 @@ bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-cmd-apple-display-b
bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-cmd-apple-display-brightness +60000
# Captures
bindd = , PRINT, Screenshot with Editing, exec, omarchy-cmd-screenshot
bindd = SHIFT, PRINT, Screenshot to Clipboard, exec, omarchy-cmd-screenshot smart clipboard
bindd = , PRINT, Screenshot with editing, exec, omarchy-cmd-screenshot
bindd = SHIFT, PRINT, Screenshot to clipboard, exec, omarchy-cmd-screenshot smart clipboard
bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord
bindd = SUPER, PRINT, Color picking, exec, pkill hyprpicker || hyprpicker -a
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
# File sharing
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share

View File

@@ -120,9 +120,17 @@ misc {
disable_splash_rendering = true
focus_on_activate = true
anr_missed_pings = 3
new_window_takes_over_fullscreen = 1
}
# https://wiki.hypr.land/Configuring/Variables/#cursor
cursor {
hide_on_key_press = true
}
# Style Gum confirm to match terminal theme
env = GUM_CONFIRM_PROMPT_FOREGROUND,6 # Cyan
env = GUM_CONFIRM_SELECTED_FOREGROUND,0 # Black
env = GUM_CONFIRM_SELECTED_BACKGROUND,2 # Green
env = GUM_CONFIRM_UNSELECTED_FOREGROUND,0 # Black
env = GUM_CONFIRM_UNSELECTED_BACKGROUND,8 # Dark grey

View File

@@ -30,3 +30,4 @@ run_logged $OMARCHY_INSTALL/config/hardware/fix-bcm43xx.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-spi-keyboard.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-suspend-nvme.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-t2.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-surface-keyboard.sh

View File

@@ -1,15 +1,3 @@
# Ensure git settings live under ~/.config
mkdir -p ~/.config/git
touch ~/.config/git/config
# 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"

View File

@@ -0,0 +1,23 @@
# Detect Surface devices which require additional modules for the keyboard to work.
# Module list derived from Chris McLeod's manual install instructions
# https://chrismcleod.dev/blog/installing-arch-linux-with-secure-boot-on-a-microsoft-surface-laptop-studio/
product_name="$(cat /sys/class/dmi/id/product_name 2>/dev/null)"
if [[ "$product_name" =~ Surface ]]; then
echo "Detected Surface Device"
# Modules already exist in the rootfs for the default kernel.
if [[ "$product_name" != "Surface Laptop 3" ]]; then
echo "Untested Surface Device: $product_name, additional modules may be required for your device."
fi
echo "Attempting to autodetect required pinctrl module"
pinctrl_module=$(lsmod | grep pinctrl_ | cut -f 1 -d" ")
if [[ -z "$pinctrl_module" ]]; then
echo "Failed to autodetect pinctrl module."
else
echo "Detected pinctrl module: $pinctrl_module"
fi
echo "MODULES=(${pinctrl_module} surface_aggregator surface_aggregator_registry surface_aggregator_hub surface_hid_core surface_hid surface_kbd intel_lpss_pci 8250_dw)" | sudo tee /etc/mkinitcpio.conf.d/surface_device_modules.conf >/dev/null
fi

View File

@@ -6,9 +6,6 @@ sudo ufw default allow outgoing
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'

View File

@@ -1 +1,2 @@
# Includes lazyvim and the themes
omarchy-nvim-setup

View File

@@ -22,8 +22,6 @@ fi
if sudo test -f /etc/sudoers.d/99-omarchy-installer; then
sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null
echo
echo_in_style "Remember to remove USB installer!"
fi
# Exit gracefully if user chooses not to reboot

View File

@@ -6,6 +6,13 @@ if [[ -n ${OMARCHY_ONLINE_INSTALL:-} ]]; then
sudo cp -f ~/.local/share/omarchy/default/pacman/pacman.conf /etc/pacman.conf
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist /etc/pacman.d/mirrorlist
sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org
sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571
sudo pacman -Sy
sudo pacman -S --noconfirm --needed omarchy-keyring
# Refresh all repos
sudo pacman -Syu --noconfirm
fi

View File

@@ -1,3 +0,0 @@
echo "Fix opening in nvim from files manager"
cp -f $OMARCHY_PATH/applications/nvim.desktop ~/.local/share/applications/nvim.desktop

9
migrations/1761569743.sh Normal file
View File

@@ -0,0 +1,9 @@
echo "Add default Ctrl+P binding for imv; backup existing config if present"
if [ -f ~/.config/imv/config ]; then
cp ~/.config/imv/config ~/.config/imv/config.bak.$(date +%s)
else
mkdir -p ~/.config/imv
fi
cp ~/.local/share/omarchy/config/imv/config ~/.config/imv/config

7
migrations/1761583837.sh Normal file
View File

@@ -0,0 +1,7 @@
echo "Ensure nvim started from app launcher always starts nvim not $EDITOR"
if [ -f /usr/share/applications/nvim.desktop ]; then
rm ~/.local/share/applications/nvim.desktop
ln -s /usr/share/applications/nvim.desktop ~/.local/share/applications/nvim.desktop
update-desktop-database ~/.local/share/applications
fi

3
migrations/1761585764.sh Normal file
View File

@@ -0,0 +1,3 @@
echo "Disable Nvim news alerts box"
cp /usr/share/omarchy-nvim/config/lua/plugins/disable-news-alert.lua ~/.config/nvim/lua/plugins/disable-news-alert.lua

6
migrations/1761638377.sh Normal file
View File

@@ -0,0 +1,6 @@
echo "Turn off fcitx5 clipboard that is interferring with other applications"
mkdir -p ~/.config/fcitx5/conf
cp $OMARCHY_PATH/config/fcitx5/conf/clipboard.conf ~/.config/fcitx5/conf/
omarchy-restart-xcompose

View File

@@ -1 +1 @@
3.1.3
3.1.4