Merge branch 'dev' into sddm-uki-changes

This commit is contained in:
Ryan Hughes
2025-10-06 11:08:56 -04:00
committed by GitHub
56 changed files with 471 additions and 228 deletions

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true

View File

@@ -2,7 +2,7 @@
Name=Neovim
GenericName=Text Editor
Comment=Edit text files
Exec=$TERMINAL --class=nvim --title=nvim -e nvim -- %F
Exec=sh -c "$TERMINAL --class=nvim --title=nvim -e nvim -- %F"
Terminal=false
Type=Application
Keywords=Text;editor;

View File

@@ -15,7 +15,7 @@ SCOPE="$1"
AUDIO=$([[ $2 == "audio" ]] && echo "--audio")
start_screenrecording() {
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
if lspci | grep -qi 'nvidia'; then
wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" &
@@ -47,7 +47,8 @@ screenrecording_active() {
if screenrecording_active; then
stop_screenrecording
elif [[ "$SCOPE" == "output" ]]; then
start_screenrecording
output=$(slurp -o) || exit 1
start_screenrecording -g "$output"
else
region=$(slurp) || exit 1
start_screenrecording -g "$region"

View File

@@ -18,7 +18,7 @@ hyprctl keyword cursor:invisible true
while true; do
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
tte -i ~/.config/omarchy/branding/screensaver.txt \
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 1)) --anchor-canvas c --anchor-text c \
"$effect" &
while pgrep -x tte >/dev/null; do

View File

@@ -3,7 +3,7 @@
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
if [[ "$#" -eq 0 ]]; then
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select database (return to install, esc to cancel)") || main_menu
else
choices="$@"
fi

View File

@@ -3,7 +3,7 @@
browser=$(xdg-settings get default-web-browser)
case $browser in
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;;
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium-browser*) ;;
*) browser="chromium.desktop" ;;
esac

View File

@@ -451,9 +451,9 @@ show_system_menu() {
*Lock*) omarchy-lock-screen ;;
*Screensaver*) omarchy-launch-screensaver force ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) sudo systemctl restart sddm ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
*Relaunch*) omarchy-state clear relaunch-required && sudo systemctl restart sddm ;;
*Restart*) omarchy-state clear re*-required && systemctl reboot ;;
*Shutdown*) omarchy-state clear re*-required && systemctl poweroff ;;
*) back_to show_main_menu ;;
esac
}

View File

@@ -3,6 +3,69 @@
# A script to display Hyprland keybindings defined in your configuration
# using walker for an interactive search menu.
declare -A KEYCODE_SYM_MAP
build_keymap_cache() {
local keymap
keymap="$(xkbcli compile-keymap)" || {
echo "Failed to compile keymap" >&2
return 1
}
while IFS=, read -r code sym; do
[[ -z "$code" || -z "$sym" ]] && continue
KEYCODE_SYM_MAP["$code"]="$sym"
done < <(
awk '
BEGIN { sec = "" }
/xkb_keycodes/ { sec = "codes"; next }
/xkb_symbols/ { sec = "syms"; next }
sec == "codes" {
if (match($0, /<([A-Za-z0-9_]+)>\s*=\s*([0-9]+)\s*;/, m)) code_by_name[m[1]] = m[2]
}
sec == "syms" {
if (match($0, /key\s*<([A-Za-z0-9_]+)>\s*\{\s*\[\s*([^, \]]+)/, m)) sym_by_name[m[1]] = m[2]
}
END {
for (k in code_by_name) {
c = code_by_name[k]
s = sym_by_name[k]
if (c != "" && s != "" && s != "NoSymbol") print c "," s
}
}
' <<<"$keymap"
)
}
lookup_keycode_cached() {
printf '%s\n' "${KEYCODE_SYM_MAP[$1]}"
}
parse_keycodes() {
local start end elapsed
[[ "${DEBUG:-0}" == "1" ]] && start=$(date +%s.%N)
while IFS= read -r line; do
if [[ "$line" =~ code:([0-9]+) ]]; then
code="${BASH_REMATCH[1]}"
symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE")
echo "${line/code:${code}/$symbol}"
else
echo "$line"
fi
done
if [[ "$DEBUG" == "1" ]]; then
end=$(date +%s.%N)
# fall back to awk if bc is missing
if command -v bc >/dev/null 2>&1; then
elapsed=$(echo "$end - $start" | bc)
else
elapsed=$(awk -v s="$start" -v e="$end" 'BEGIN{printf "%.6f", (e - s)}')
fi
echo "[DEBUG] parse_keycodes elapsed: ${elapsed}s" >&2
fi
}
# Fetch dynamic keybindings from Hyprland
#
# Also do some pre-processing:
@@ -11,30 +74,30 @@
# - Map numeric modifier key mask to a textual rendition
# - Output comma-separated values that the parser can understand
dynamic_bindings() {
hyprctl -j binds | \
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \
hyprctl -j binds |
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' |
sed -r \
-e 's/null//' \
-e 's,~/.local/share/omarchy/bin/,,' \
-e 's,uwsm app -- ,,' \
-e 's/@0//' \
-e 's/,@/,code:/' \
-e 's/^0,/,/' \
-e 's/^1,/SHIFT,/' \
-e 's/^4,/CTRL,/' \
-e 's/^5,/SHIFT CTRL,/' \
-e 's/^8,/ALT,/' \
-e 's/^9,/SHIFT ALT,/' \
-e 's/^12,/CTRL ALT,/' \
-e 's/^13,/SHIFT CTRL ALT,/' \
-e 's/^64,/SUPER,/' \
-e 's/^65,/SUPER SHIFT,/' \
-e 's/^68,/SUPER CTRL,/' \
-e 's/^69,/SUPER SHIFT CTRL,/' \
-e 's/^72,/SUPER ALT,/' \
-e 's/^73,/SUPER SHIFT ALT,/' \
-e 's/^76,/SUPER CTRL ALT,/' \
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
-e 's/null//' \
-e 's,~/.local/share/omarchy/bin/,,' \
-e 's,uwsm app -- ,,' \
-e 's/@0//' \
-e 's/,@/,code:/' \
-e 's/^0,/,/' \
-e 's/^1,/SHIFT,/' \
-e 's/^4,/CTRL,/' \
-e 's/^5,/SHIFT CTRL,/' \
-e 's/^8,/ALT,/' \
-e 's/^9,/SHIFT ALT,/' \
-e 's/^12,/CTRL ALT,/' \
-e 's/^13,/SHIFT CTRL ALT,/' \
-e 's/^64,/SUPER,/' \
-e 's/^65,/SUPER SHIFT,/' \
-e 's/^68,/SUPER CTRL,/' \
-e 's/^69,/SUPER SHIFT CTRL,/' \
-e 's/^72,/SUPER ALT,/' \
-e 's/^73,/SUPER SHIFT ALT,/' \
-e 's/^76,/SUPER CTRL ALT,/' \
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
}
# Parse and format keybindings
@@ -86,8 +149,10 @@ parse_bindings() {
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
menu_height=$((monitor_height * 40 / 100))
dynamic_bindings | \
sort -u | \
parse_bindings | \
walker --dmenu --theme keybindings -p 'Keybindings' -w 800 -h "$menu_height"
build_keymap_cache
dynamic_bindings |
sort -u |
parse_keycodes |
parse_bindings |
walker --dmenu --theme keybindings -p 'Keybindings' -w 800 -h "$menu_height"

View File

@@ -1,4 +1,4 @@
#!/bin/bash
echo -e "Restarting pirewire audio service...\n"
echo -e "Restarting pipewire audio service...\n"
systemctl --user restart pipewire.service

View File

@@ -20,7 +20,7 @@ print_info() {
}
check_fingerprint_hardware() {
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity'; then
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity|FPC'; then
print_error "\nNo fingerprint sensor detected."
return 1
fi

View File

@@ -4,16 +4,17 @@ CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
if [[ -f $CHROMIUM_THEME ]]; then
rgb=$(<$CHROMIUM_THEME)
THEME_RGB_COLOR=$(<$CHROMIUM_THEME)
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ })
else
# Use a default, neutral grey if theme doesn't have a color
THEME_RGB_COLOR="28,32,39"
THEME_HEX_COLOR="#1c2027"
fi
if omarchy-cmd-present chromium; then
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
chromium --refresh-platform-policy --no-startup-window
rm -f /etc/chromium/policies/managed/color.json
chromium --no-startup-window --set-theme-color="$THEME_RGB_COLOR"
fi
if omarchy-cmd-present brave; then

View File

@@ -43,7 +43,7 @@ cat >"$DESKTOP_FILE" <<EOF
Version=1.0
Name=$APP_NAME
Comment=$APP_NAME
Exec=$TERMINAL --class $APP_CLASS -e $APP_EXEC
Exec=\$TERMINAL --class=$APP_CLASS -e $APP_EXEC
Terminal=false
Type=Application
Icon=$ICON_PATH

View File

@@ -1,3 +1,2 @@
#!/bin/bash
git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1)
cat $OMARCHY_PATH/version

11
bin/omarchy-webapp-handler-hey Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
url="$1"
web_url="https://app.hey.com"
# Handle mailto: URLs
if [[ $url =~ ^mailto: ]]; then
email=$(echo "$url" | sed 's/mailto://')
web_url="https://app.hey.com/messages/new?to=$email"
fi
exec omarchy-launch-webapp "$web_url"

View File

@@ -6,7 +6,7 @@ DESKTOP_DIR="$HOME/.local/share/applications/"
if [ "$#" -eq 0 ]; then
# Find all web apps
while IFS= read -r -d '' file; do
if grep -q '^Exec=.*omarchy-launch-webapp.*' "$file"; then
if grep -q '^Exec=.*\(omarchy-launch-webapp\|omarchy-webapp-handler\).*' "$file"; then
WEB_APPS+=("$(basename "${file%.desktop}")")
fi
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)

View File

@@ -2,7 +2,7 @@
$terminal = uwsm app -- $TERMINAL
$browser = omarchy-launch-browser
bindd = SUPER, return, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)"
bindd = SUPER, RETURN, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)"
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
bindd = SUPER, B, Browser, exec, $browser
bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private
@@ -12,7 +12,7 @@ bindd = SUPER, T, Activity, exec, $terminal -e btop
bindd = SUPER, D, Docker, exec, $terminal -e lazydocker
bindd = SUPER, G, Signal, exec, omarchy-launch-or-focus signal "uwsm app -- signal-desktop"
bindd = SUPER, O, Obsidian, exec, omarchy-launch-or-focus obsidian "uwsm app -- obsidian -disable-gpu --enable-wayland-ime"
bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password
bindd = SUPER, SLASH, Passwords, exec, uwsm app -- 1password
# If your web app url contains #, type it as ## to prevent hyperland treat it as comments
bindd = SUPER, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"

View File

@@ -3,7 +3,7 @@
input {
# Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
# kb_layout = us,dk,eu
kb_options = compose:caps # ,grp:alts_toggle
kb_options = compose:caps # ,grp:shifts_toggle
# Change speed of keyboard repeat
repeat_rate = 40
@@ -12,7 +12,7 @@ input {
# Start with numlock on by default
numlock_by_default = true
# Increase sensitity for mouse/trackpack (default: 0)
# Increase sensitivity for mouse/trackpad (default: 0)
# sensitivity = 0.35
touchpad {

View File

@@ -15,3 +15,9 @@ decoration {
# Use round window corners
# rounding = 8
}
# https://wiki.hypr.land/Configuring/Dwindle-Layout/
dwindle {
# Avoid overly wide single-window layouts on wide screens
# single_window_aspect_ratio = 1 1
}

View File

@@ -0,0 +1,56 @@
return {
-- Load all theme plugins but don't apply them
-- This ensures all colorschemes are available for hot-reloading
{
"ribru17/bamboo.nvim",
lazy = true,
priority = 1000,
},
{
"catppuccin/nvim",
name = "catppuccin",
lazy = true,
priority = 1000,
},
{
"sainnhe/everforest",
lazy = true,
priority = 1000,
},
{
"ellisonleao/gruvbox.nvim",
lazy = true,
priority = 1000,
},
{
"rebelot/kanagawa.nvim",
lazy = true,
priority = 1000,
},
{
"tahayvr/matteblack.nvim",
lazy = true,
priority = 1000,
},
{
"loctvl842/monokai-pro.nvim",
lazy = true,
priority = 1000,
},
{
"shaunsingh/nord.nvim",
lazy = true,
priority = 1000,
},
{
"rose-pine/neovim",
name = "rose-pine",
lazy = true,
priority = 1000,
},
{
"folke/tokyonight.nvim",
lazy = true,
priority = 1000,
},
}

View File

@@ -0,0 +1,45 @@
return {
{
name = "theme-hotreload",
dir = vim.fn.stdpath("config"),
lazy = false,
priority = 1000,
config = function()
local transparency_file = vim.fn.stdpath("config") .. "/plugin/after/transparency.lua"
vim.api.nvim_create_autocmd("User", {
pattern = "LazyReload",
callback = function()
package.loaded["plugins.theme"] = nil
vim.schedule(function()
local ok, theme_spec = pcall(require, "plugins.theme")
if not ok then
return
end
for _, spec in ipairs(theme_spec) do
if spec[1] == "LazyVim/LazyVim" and spec.opts and spec.opts.colorscheme then
local colorscheme = spec.opts.colorscheme
require("lazy.core.loader").colorscheme(colorscheme)
vim.defer_fn(function()
pcall(vim.cmd.colorscheme, colorscheme)
if vim.fn.filereadable(transparency_file) == 1 then
vim.defer_fn(function()
vim.cmd.source(transparency_file)
end, 5)
end
end, 5)
break
end
end
end)
end,
})
end,
},
}

View File

@@ -1,8 +0,0 @@
return {
{
"LazyVim/LazyVim",
opts = {
colorscheme = "tokyonight",
},
},
}

View File

@@ -1,5 +1,5 @@
# Browser types
windowrule = tag +chromium-based-browser, class:([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable)
windowrule = tag +chromium-based-browser, class:([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable|helium)
windowrule = tag +firefox-based-browser, class:([fF]irefox|zen|librewolf)
# Force chromium-based browsers into a tile to deal with --app bug

View File

@@ -1,4 +1,4 @@
# Float Steam, fullscreen RetroArch
# Float Steam
windowrule = float, class:steam
windowrule = center, class:steam, title:Steam
windowrule = opacity 1 1, class:steam

View File

@@ -4,7 +4,7 @@ exec-once = uwsm app -- waybar
exec-once = uwsm app -- fcitx5
exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = uwsm app -- swayosd-server
exec-once = uwsm app -- walker --gapplication-service &
exec-once = uwsm app -- walker --gapplication-service
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'
exec-once = omarchy-cmd-first-run

View File

@@ -1,6 +1,6 @@
# Deprecated bindings file. New installations include everything directly.
bindd = SUPER, return, Terminal, exec, $terminal
bindd = SUPER, RETURN, Terminal, exec, $terminal
bindd = SUPER, F, File manager, exec, $fileManager
bindd = SUPER, B, Web browser, exec, $browser
bindd = SUPER, M, Music player, exec, $music
@@ -9,7 +9,7 @@ bindd = SUPER, T, Top, exec, $terminal -e btop
bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker
bindd = SUPER, G, Messenger, exec, $messenger
bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu
bindd = SUPER, slash, Password manager, exec, $passwordManager
bindd = SUPER, SLASH, Password manager, exec, $passwordManager
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf

View File

@@ -10,10 +10,10 @@ bindd = SHIFT, F11, Force full screen, fullscreen, 0
bindd = ALT, F11, 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 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
# Switch workspaces with SUPER + [0-9]
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
@@ -39,22 +39,22 @@ 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
# Tab between workspaces
# TAB between workspaces
bindd = SUPER, TAB, Next workspace, workspace, e+1
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l
bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r
bindd = SUPER SHIFT, up, Swap window up, swapwindow, u
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d
bindd = SUPER SHIFT, LEFT, Swap window to the left, swapwindow, l
bindd = SUPER SHIFT, RIGHT, Swap window to the right, swapwindow, r
bindd = SUPER SHIFT, UP, Swap window up, swapwindow, u
bindd = SUPER SHIFT, DOWN, Swap window down, swapwindow, d
# Cycle through applications on active workspace
bindd = ALT, Tab, Cycle to next window, cyclenext
bindd = ALT SHIFT, Tab, Cycle to prev window, cyclenext, prev
bindd = ALT, Tab, Reveal active window on top, bringactivetotop
bindd = ALT SHIFT, Tab, Reveal active window on top, bringactivetotop
bindd = ALT, TAB, Cycle to next window, cyclenext
bindd = ALT SHIFT, TAB, Cycle to prev window, cyclenext, prev
bindd = ALT, TAB, Reveal active window on top, bringactivetotop
bindd = ALT SHIFT, TAB, Reveal active window on top, bringactivetotop
# Resize active window
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
@@ -63,8 +63,8 @@ bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100
bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100
# Scroll through existing workspaces with SUPER + scroll
bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
bindd = SUPER, MOUSE_DOWN, Scroll active workspace forward, workspace, e+1
bindd = SUPER, MOUSE_UP, Scroll active workspace backward, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindmd = SUPER, mouse:272, Move window, movewindow

View File

@@ -86,6 +86,7 @@ misc {
disable_hyprland_logo = true
disable_splash_rendering = true
focus_on_activate = true
anr_missed_pings = 3
}
# https://wiki.hypr.land/Configuring/Variables/#cursor

View File

@@ -14,6 +14,7 @@ run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
run_logged $OMARCHY_INSTALL/config/docker.sh
run_logged $OMARCHY_INSTALL/config/mimetypes.sh
run_logged $OMARCHY_INSTALL/config/localdb.sh
run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh
run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh
run_logged $OMARCHY_INSTALL/config/hardware/network.sh
run_logged $OMARCHY_INSTALL/config/hardware/set-wireless-regdom.sh
@@ -24,6 +25,6 @@ run_logged $OMARCHY_INSTALL/config/hardware/usb-autosuspend.sh
run_logged $OMARCHY_INSTALL/config/hardware/ignore-power-button.sh
run_logged $OMARCHY_INSTALL/config/hardware/nvidia.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-f13-amd-audio-input.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-bcm4360.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-bcm43xx.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-spi-keyboard.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-t2.sh

View File

@@ -0,0 +1,7 @@
sudo mkdir -p /etc/systemd/system.conf.d
cat <<EOF | sudo tee /etc/systemd/system.conf.d/10-faster-shutdown.conf
[Manager]
DefaultTimeoutStopSec=5s
EOF
sudo systemctl daemon-reload

View File

@@ -1,5 +0,0 @@
# Install wifi drivers for 2013-2015 MacBooks using the BCM4360 chip
if lspci -nnv | grep -A2 "14e4:43a0" | grep -q "106b:"; then
echo "Apple BCM4360 detected"
sudo pacman -S --noconfirm --needed broadcom-wl dkms linux-headers
fi

View File

@@ -0,0 +1,11 @@
# Install Wi-Fi drivers for Broadcom chips on MacBooks:
# - BCM4360 (20132015)
# - BCM4331 (2012, early 2013)
pci_info=$(lspci -nnv)
if echo "$pci_info" | grep -q "106b:" &&
(echo "$pci_info" | grep -q "14e4:43a0" || echo "$pci_info" | grep -q "14e4:4331"); then
echo "Apple BCM4360 / BCM4331 detected"
sudo pacman -S --noconfirm --needed broadcom-wl dkms linux-headers
fi

View File

@@ -1,7 +1,12 @@
# Detect MacBook models that need SPI keyboard modules
if [[ "$(cat /sys/class/dmi/id/product_name 2>/dev/null)" =~ MacBook12,1|MacBookPro13,[123]|MacBookPro14,[123] ]]; then
product_name="$(cat /sys/class/dmi/id/product_name 2>/dev/null)"
if [[ "$product_name" =~ MacBook[89],1|MacBook1[02],1|MacBookPro13,[123]|MacBookPro14,[123] ]]; then
echo "Detected MacBook with SPI keyboard"
sudo pacman -S --noconfirm --needed macbook12-spi-driver-dkms
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
if [[ "$product_name" == "MacBook8,1" ]]; then
echo "MODULES=(applespi spi_pxa2xx_platform spi_pxa2xx_pci)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
else
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
fi
fi

View File

@@ -33,3 +33,6 @@ xdg-mime default mpv.desktop video/x-ms-asf
xdg-mime default mpv.desktop video/x-ogm+ogg
xdg-mime default mpv.desktop video/x-theora+ogg
xdg-mime default mpv.desktop application/ogg
# Use Hey for mailto: links
xdg-mime default HEY.desktop x-scheme-handler/mailto

View File

@@ -1,3 +1,3 @@
# Setup sudo-less controls for controlling brightness on Apple Displays
echo "$USER ALL=(ALL) NOPASSWD: /usr/local/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
sudo chmod 440 /etc/sudoers.d/asdcontrol

View File

@@ -69,6 +69,7 @@ mariadb-libs
mise
mpv
nautilus
gnome-disk-utility
noto-fonts
noto-fonts-cjk
noto-fonts-emoji

View File

@@ -1,4 +1,4 @@
omarchy-webapp-install "HEY" https://app.hey.com HEY.png
omarchy-webapp-install "HEY" https://app.hey.com HEY.png "omarchy-webapp-handler-hey %u" "x-scheme-handler/mailto"
omarchy-webapp-install "Basecamp" https://launchpad.37signals.com Basecamp.png
omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ WhatsApp.png
omarchy-webapp-install "Google Photos" https://photos.google.com/ "Google Photos.png"

View File

@@ -18,6 +18,9 @@ done
# Must be x86 only to fully work
[ "$(uname -m)" != "x86_64" ] && abort "x86_64 CPU"
# Must have secure boot disabled
bootctl status 2>/dev/null | grep -q 'Secure Boot: disabled' || abort "Secure Boot disabled"
# Must not have Gnome or KDE already install
pacman -Qe gnome-shell &>/dev/null && abort "Fresh + Vanilla Arch"
pacman -Qe plasma-desktop &>/dev/null && abort "Fresh + Vanilla Arch"

View File

@@ -1,5 +1,5 @@
echo "Use current terminal shell cwd for new terminal working directories"
if ! grep -q "working-directory" ~/.config/hypr/bindings.conf; then
sed -i '/bindd = SUPER, return, Terminal, exec, \$terminal/ s|$| --working-directory=$(omarchy-cmd-terminal-cwd)|' ~/.config/hypr/bindings.conf
sed -i '/bindd = SUPER, RETURN, Terminal, exec, \$terminal/ s|$| --working-directory=$(omarchy-cmd-terminal-cwd)|' ~/.config/hypr/bindings.conf
fi

4
migrations/1758081785.sh Normal file
View File

@@ -0,0 +1,4 @@
echo "Add live themeing to neovim"
cp -f $OMARCHY_PATH/config/nvim/lua/plugins/all-themes.lua ~/.config/nvim/lua/plugins/
cp -f $OMARCHY_PATH/config/nvim/lua/plugins/omarchy-theme-hotreload.lua ~/.config/nvim/lua/plugins/

17
migrations/1758436991.sh Normal file
View File

@@ -0,0 +1,17 @@
echo "Fix Disk Usage and Docker TUIs"
APP_DIR="$HOME/.local/share/applications"
ICON_DIR="$APP_DIR/icons"
# Don't use omarchy-tui-remove to preserve icons
if [[ -f "$APP_DIR/Docker.desktop" ]]; then
rm "$APP_DIR/Docker.desktop"
omarchy-tui-install "Docker" "lazydocker" tile "$ICON_DIR/Docker.png"
fi
if [[ -f "$APP_DIR/Disk Usage.desktop" ]]; then
rm "$APP_DIR/Disk Usage.desktop"
omarchy-tui-install "Disk Usage" "bash -c 'dust -r; read -n 1 -s'" float "$ICON_DIR/Disk Usage.png"
fi

2
migrations/1758564460.sh Normal file
View File

@@ -0,0 +1,2 @@
echo "Enable fast shutdown"
source $OMARCHY_PATH/install/config/fast-shutdown.sh

3
migrations/1759093827.sh Normal file
View File

@@ -0,0 +1,3 @@
echo "Adding hidden entries for electron apps"
cp $OMARCHY_PATH/applications/hidden/electron*.desktop ~/.local/share/applications/

5
migrations/1759691413.sh Normal file
View File

@@ -0,0 +1,5 @@
echo "Correct path for sudoless asdcontrol for working Apple Display hotkeys"
if [[ $(command -v asdcontrol) == "/usr/bin/asdcontrol" ]]; then
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/asdcontrol" | sudo tee /etc/sudoers.d/asdcontrol
fi

3
migrations/1759693134.sh Normal file
View File

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

4
migrations/1759694076.sh Normal file
View File

@@ -0,0 +1,4 @@
echo "Hide OpenJDK applications from app launcher"
cp $OMARCHY_PATH/applications/hidden/*openjdk.desktop ~/.local/share/applications/

View File

@@ -3,12 +3,9 @@ return {
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
config = function()
require("catppuccin").setup({
flavour = "latte", -- other options: "mocha", "frappe", "macchiato"
})
vim.cmd.colorscheme("catppuccin-latte")
end,
opts = {
flavour = "latte",
},
},
{
"LazyVim/LazyVim",

View File

@@ -1,4 +1,9 @@
return {
{
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
},
{
"LazyVim/LazyVim",
opts = {

View File

@@ -1,9 +1,13 @@
return {
"ribru17/bamboo.nvim",
lazy = false,
priority = 1000,
config = function()
require("bamboo").setup({})
require("bamboo").load()
end,
{
"ribru17/bamboo.nvim",
priority = 1000,
opts = {},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "bamboo",
},
},
}

View File

@@ -1,31 +1,14 @@
return {
{
"gthelding/monokai-pro.nvim",
config = function()
require("monokai-pro").setup({
filter = "ristretto",
override = function()
return {
NonText = { fg = "#948a8b" },
MiniIconsGrey = { fg = "#948a8b" },
MiniIconsRed = { fg = "#fd6883" },
MiniIconsBlue = { fg = "#85dacc" },
MiniIconsGreen = { fg = "#adda78" },
MiniIconsYellow = { fg = "#f9cc6c" },
MiniIconsOrange = { fg = "#f38d70" },
MiniIconsPurple = { fg = "#a8a9eb" },
MiniIconsAzure = { fg = "#a8a9eb" },
MiniIconsCyan = { fg = "#85dacc" }, -- same value as MiniIconsBlue for consistency
}
end,
})
vim.cmd([[colorscheme monokai-pro]])
end,
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "monokai-pro",
},
},
{
"loctvl842/monokai-pro.nvim",
opts = {
filter = "ristretto",
},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "monokai-pro",
},
},
}

View File

@@ -1,123 +1,121 @@
# see https://github.com/eza-community/eza-themes/blob/main/themes/rose-pine.yml
# see https://github.com/eza-community/eza-themes/blob/main/themes/rose-pine-dawn.yml
colourful: true
# Colors are in format of:
# color/paletteRef (Description) #color code
# Gold (Terminal Yellow) #f6c177
# Love (Terminal Red) #eb6f92
# Rose (Terminal Cyan) #ebbcba
# Base (Primary Background) #191724
# Iris (Terminal Magenta) #c4a7e7
# Foam (Terminal Blue) #9ccfd8
# Pine (Terminal Green) #31748f
# Muted (Low Contrast Foreground) #6e6a86
# Surface (Secondary Background Atop Base) #1f1d2e
# Overlay (Tertiary Background Atop Surface) #26233a
# Subtle (Medium Contrast Foreground) #908caa
# Text (High Contrast Foreground) #e0def4
# Highlight Low (Low Contrast Highlight) #21202e
# Highlight Med (Medium Contrast Highlight) #403d52
# Highlight High (High Contrast Highlight) #524f67
# Gold (Terminal Yellow) #ea9d34
# Love (Terminal Red) #b4637a
# Rose (Terminal Cyan) #d7827e
# Base (Primary Background) #faf4ed
# Iris (Terminal Magenta) #907aa9
# Foam (Terminal Blue) #56949f
# Pine (Terminal Green) #286983
# Text (High contrast foreground) #575279
# Muted (Low Contrast Foreground) #9893a5
# Subtle (Medium Contrast Foreground) #797593
# Highlight Low (Low contrast highlight) #f4ede8
# Highlight Med (Medium Contrast Highlight) #dfdad9
# Highlight High (High Contrast Highlight) #cecacd
filekinds:
normal: {foreground: "#e0def4"}
directory: {foreground: "#9ccfd8"}
symlink: {foreground: "#524f67"}
pipe: {foreground: "#908caa"}
block_device: {foreground: "#ebbcba"}
char_device: {foreground: "#f6c177"}
socket: {foreground: "#21202e"}
special: {foreground: "#c4a7e7"}
executable: {foreground: "#c4a7e7"}
mount_point: {foreground: "#403d52"}
normal: { foreground: "#575279" }
directory: { foreground: "#56949f" }
symlink: { foreground: "#cecacd" }
pipe: { foreground: "#797593" }
block_device: { foreground: "#d7827e" }
char_device: { foreground: "#ea9d34" }
socket: { foreground: "#f4ede8" }
special: { foreground: "#907aa9" }
executable: { foreground: "#907aa9" }
mount_point: { foreground: "#dfdad9" }
perms:
user_read: {foreground: "#908caa"}
user_write: {foreground: "#403d52"}
user_execute_file: {foreground: "#c4a7e7"}
user_execute_other: {foreground: "#c4a7e7"}
group_read: {foreground: "#908caa"}
group_write: {foreground: "#403d52"}
group_execute: {foreground: "#c4a7e7"}
other_read: {foreground: "#908caa"}
other_write: {foreground: "#403d52"}
other_execute: {foreground: "#c4a7e7"}
special_user_file: {foreground: "#c4a7e7"}
special_other: {foreground: "#403d52"}
attribute: {foreground: "#908caa"}
user_read: { foreground: "#797593" }
user_write: { foreground: "#d7827e" }
user_execute_file: { foreground: "#907aa9" }
user_execute_other: { foreground: "#907aa9" }
group_read: { foreground: "#797593" }
group_write: { foreground: "#d7827e" }
group_execute: { foreground: "#907aa9" }
other_read: { foreground: "#797593" }
other_write: { foreground: "#d7827e" }
other_execute: { foreground: "#907aa9" }
special_user_file: { foreground: "#907aa9" }
special_other: { foreground: "#d7827e" }
attribute: { foreground: "#797593" }
size:
major: {foreground: "#908caa"}
minor: {foreground: "#9ccfd8"}
number_byte: {foreground: "#908caa"}
number_kilo: {foreground: "#524f67"}
number_mega: {foreground: "#31748f"}
number_giga: {foreground: "#c4a7e7"}
number_huge: {foreground: "#c4a7e7"}
unit_byte: {foreground: "#908caa"}
unit_kilo: {foreground: "#31748f"}
unit_mega: {foreground: "#c4a7e7"}
unit_giga: {foreground: "#c4a7e7"}
unit_huge: {foreground: "#9ccfd8"}
major: { foreground: "#797593" }
minor: { foreground: "#56949f" }
number_byte: { foreground: "#797593" }
number_kilo: { foreground: "#cecacd" }
number_mega: { foreground: "#286983" }
number_giga: { foreground: "#907aa9" }
number_huge: { foreground: "#907aa9" }
unit_byte: { foreground: "#797593" }
unit_kilo: { foreground: "#286983" }
unit_mega: { foreground: "#907aa9" }
unit_giga: { foreground: "#907aa9" }
unit_huge: { foreground: "#56949f" }
users:
user_you: {foreground: "#f6c177"}
user_root: {foreground: "#eb6f92"}
user_other: {foreground: "#c4a7e7"}
group_yours: {foreground: "#524f67"}
group_other: {foreground: "#6e6a86"}
group_root: {foreground: "#eb6f92"}
user_you: { foreground: "#ea9d34" }
user_root: { foreground: "#b4637a" }
user_other: { foreground: "#907aa9" }
group_yours: { foreground: "#cecacd" }
group_other: { foreground: "#9893a5" }
group_root: { foreground: "#b4637a" }
links:
normal: {foreground: "#9ccfd8"}
multi_link_file: {foreground: "#31748f"}
normal: { foreground: "#56949f" }
multi_link_file: { foreground: "#286983" }
git:
new: {foreground: "#9ccfd8"}
modified: {foreground: "#f6c177"}
deleted: {foreground: "#eb6f92"}
renamed: {foreground: "#31748f"}
typechange: {foreground: "#c4a7e7"}
ignored: {foreground: "#6e6a86"}
conflicted: {foreground: "#ebbcba"}
new: { foreground: "#56949f" }
modified: { foreground: "#ea9d34" }
deleted: { foreground: "#b4637a" }
renamed: { foreground: "#286983" }
typechange: { foreground: "#907aa9" }
ignored: { foreground: "#9893a5" }
conflicted: { foreground: "#d7827e" }
git_repo:
branch_main: {foreground: "#908caa"}
branch_other: {foreground: "#c4a7e7"}
git_clean: {foreground: "#9ccfd8"}
git_dirty: {foreground: "#eb6f92"}
branch_main: { foreground: "#797593" }
branch_other: { foreground: "#907aa9" }
git_clean: { foreground: "#56949f" }
git_dirty: { foreground: "#b4637a" }
security_context:
colon: {foreground: "#908caa"}
user: {foreground: "#9ccfd8"}
role: {foreground: "#c4a7e7"}
typ: {foreground: "#6e6a86"}
range: {foreground: "#c4a7e7"}
colon: { foreground: "#797593" }
user: { foreground: "#56949f" }
role: { foreground: "#907aa9" }
typ: { foreground: "#9893a5" }
range: { foreground: "#907aa9" }
file_type:
image: {foreground: "#f6c177"}
video: {foreground: "#eb6f92"}
music: {foreground: "#9ccfd8"}
lossless: {foreground: "#6e6a86"}
crypto: {foreground: "#403d52"}
document: {foreground: "#908caa"}
compressed: {foreground: "#c4a7e7"}
temp: {foreground: "#ebbcba"}
compiled: {foreground: "#31748f"}
build: {foreground: "#6e6a86"}
source: {foreground: "#ebbcba"}
image: { foreground: "#ea9d34" }
video: { foreground: "#b4637a" }
music: { foreground: "#56949f" }
lossless: { foreground: "#9893a5" }
crypto: { foreground: "#dfdad9" }
document: { foreground: "#797593" }
compressed: { foreground: "#907aa9" }
temp: { foreground: "#d7827e" }
compiled: { foreground: "#286983" }
build: { foreground: "#9893a5" }
source: { foreground: "#d7827e" }
punctuation: {foreground: "#524f67"}
date: {foreground: "#31748f"}
inode: {foreground: "#908caa"}
blocks: {foreground: "#6e6a86"}
header: {foreground: "#908caa"}
octal: {foreground: "#9ccfd8"}
flags: {foreground: "#c4a7e7"}
punctuation: { foreground: "#cecacd" }
date: { foreground: "#286983" }
inode: { foreground: "#797593" }
blocks: { foreground: "#9893a5" }
header: { foreground: "#797593" }
octal: { foreground: "#56949f" }
flags: { foreground: "#907aa9" }
symlink_path: {foreground: "#9ccfd8"}
control_char: {foreground: "#31748f"}
broken_symlink: {foreground: "#eb6f92"}
broken_path_overlay: {foreground: "#524f67"}
symlink_path: { foreground: "#56949f" }
control_char: { foreground: "#286983" }
broken_symlink: { foreground: "#b4637a" }
broken_path_overlay: { foreground: "#cecacd" }

View File

@@ -1,8 +1,12 @@
return {
{
"folke/tokyonight.nvim",
priority = 1000,
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "tokyonight",
colorscheme = "tokyonight-night",
},
},
}

1
version Normal file
View File

@@ -0,0 +1 @@
3.0.0-RC