Compare commits

...

53 Commits

Author SHA1 Message Date
David Heinemeier Hansson
d9c5df29d1 DRY 2026-01-31 21:58:29 +01:00
David Heinemeier Hansson
7c9708d647 Respect rc too 2026-01-31 21:52:09 +01:00
David Heinemeier Hansson
5a9f0318e8 Respect rc 2026-01-31 21:51:18 +01:00
David Heinemeier Hansson
ab4694e3f5 Introduce rc channel 2026-01-31 21:49:07 +01:00
David Heinemeier Hansson
bebf14a18c In order of appearance 2026-01-31 18:14:47 +01:00
Bhavesh Sooka
ff2a47c67e feat: allow overloading for the about menu action via the ~/.config/omarchy/extensions/menu.sh file. Example included (#4311)
Co-authored-by: Bhavesh Sooka <bhavesh@synthesis.co.za>
2026-01-31 18:14:25 +01:00
schwepmo
d9bd4a8db3 Open Nautilus in cwd of terminal (#4331)
* feat: Open Nautilus (files) in cwd of terminal using omarchy-cmd-termina-cwd

* feat: Add SUPER+ALT+SHIFT+F shortcut to open nautilus in cwd

* added migration script for nautilus keybind
2026-01-31 18:12:29 +01:00
Pierre Olivier Martel
8fc5b6e346 Add nautilus-python package for 'Open in Ghostty' shortcut in Nautilus (#4345) 2026-01-31 18:11:32 +01:00
nptr
7265c22728 Update opacity rule for Steam window class (#4386)
The steam class for opacity is missing the `.*` regular expression. Just `steam` does not match launched steam apps. Therefore, currently, steam apps have the default opacity of `0.97` of omarchy. This is usually not noticable, but very distracting on an OLED Screen and Games with dark/black scenes / menues and a brigher / any app opend 'behind' the game.
2026-01-31 18:06:11 +01:00
Stefan Gründel
32d187eab0 Add window rules for Bitwarden Chrome Extension (#4389) 2026-01-31 18:02:17 +01:00
David Heinemeier Hansson
c19fc1593a Just make a separate browser ready for the authentication
Seems like the entire problem was just that GFN didn't want to
authenticate against a browser process it had started itself.
2026-01-31 15:36:27 +01:00
David Heinemeier Hansson
7ffdfdbda9 Only idleinhibit
Fullscreen does not work well with authentication
2026-01-31 15:35:46 +01:00
David Heinemeier Hansson
161fa3f313 Fix up the installer 2026-01-31 14:37:16 +01:00
David Heinemeier Hansson
d6c28f317d Force fullscreen
Floating just makes it crash
2026-01-31 13:27:57 +01:00
David Heinemeier Hansson
4348ab6ef1 Let the done screen time out in 7 seconds 2026-01-31 12:43:34 +01:00
David Heinemeier Hansson
9d07cc884c Add installer and windowrule configuration for NVIDIA GeForce Now 2026-01-31 12:35:35 +01:00
David Heinemeier Hansson
ba31e3073c Ensure master volume isn't muted either 2026-01-30 19:02:51 +01:00
Ryan Hughes
2df5f231cb Add x11 fallback to SDL_VIDEODRIVER for compatibility 2026-01-30 12:46:13 -05:00
Pierre Olivier Martel
26afde34ff fix echo comment in powerprofile migration (#4388) 2026-01-30 12:25:39 +01:00
Nicolas Dorier
3b94207ba7 Fix: Jetbrains rules were not working properly anymore (#4150) 2026-01-30 11:51:33 +01:00
David Heinemeier Hansson
e567020e1b Use the new helper 2026-01-29 17:38:50 +01:00
Pierre Olivier Martel
f78f5b2c2c Automatically switch power profile when plugged in (balanced) and unplugged (power saver) (#4375)
* Set Power Profiles Rules when plugged in (balanced) and unplugged (power-saver)"

* Check for battery presence before installing power profile rules

* Add battery presence check script and update powerprofilesctl rules

* fix indentation

* Simplify power profile rule creation logic
2026-01-29 17:37:18 +01:00
Ryan Hughes
ec305459f8 Prevent Telegram from stealing focus on every message receipt 2026-01-29 10:24:25 -05:00
David Heinemeier Hansson
55231e9726 Add new Miasma theme
Original by OldJobobo
2026-01-29 11:42:07 +01:00
David Heinemeier Hansson
a8e0762fbe Open directories in file manager 2026-01-29 10:29:56 +01:00
David Heinemeier Hansson
bb91f90839 Merge branch 'master' into dev 2026-01-28 18:03:43 +01:00
David Heinemeier Hansson
a7995efac2 Ensure master is used instead of dev as a default 2026-01-28 17:14:17 +01:00
David Heinemeier Hansson
5b534de6a0 Rebooting is needed for hibernation to be available 2026-01-28 13:59:11 +01:00
David Heinemeier Hansson
4fe357972e We didn't get this working 2026-01-28 13:42:55 +01:00
David Heinemeier Hansson
7015601d77 No need to start on the first install 2026-01-28 13:24:39 +01:00
David Heinemeier Hansson
532f4310d0 Fix audio mixing on ROG in migration as well 2026-01-28 12:20:20 +01:00
David Heinemeier Hansson
56b02f62b5 Switch back to mainline chromium
We no longer need the fork, as the themeing is now fully natively
supported
2026-01-28 09:49:42 +01:00
Ryan Hughes
83628ab3bd Merge pull request #4314 from jmargeta/fix-legacy-mobile-nvidia-cards
Fix driver for older NVIDIA MXxxx mobile GPUs
2026-01-27 09:41:05 -05:00
mitanjan
d89614248b auto toggle scratchpad on switching workspace (#4250) 2026-01-27 11:47:27 +01:00
Manuel
77a57aa838 Add kb_variant to input.conf (#4330)
* add kb_variant to input.conf

* documentation + separation
2026-01-27 11:43:59 +01:00
Pierre Olivier Martel
e455d1bd68 Enable auto-pasting for the emoji picker (#4344)
* Enable auto-pasting for the emoji picker

* Excess CR

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-01-27 11:42:42 +01:00
James Robey
adfe182984 Use subshell for open() to avoid job control output (#4366)
If it is not run as a sub-shell, using open and then subsequently closing the app will pollute the existing terminal with messages like:
  [1] 287915
  [1]+  Done  xdg-open "$@" > /dev/null 2>&1

Making it a subshell removes this noise and keeps it more like the open command in macOS.
2026-01-27 11:34:16 +01:00
Dominik
febd18ce84 Replace yq with pure bash for TOML parsing (#4171)
* Replace yq with pure bash for TOML parsing

The yq-based parsing only worked with jq/yq v3 and broke with go-yq v4.
This change removes the yq and uses bash for parsing. Some additional improvments:
- Handles single and double quoted values
- Strips inline comments (e.g. "#hex" #comment)

* Remove the no-longer-needed yq packages

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-01-27 11:32:37 +01:00
Marco
768c553c4c Add missing icons to Development remove menus (#4339)
* Add missing icons to Development remove menus

The Install > Development menu shows icons for each language, but the
Remove > Development menu was missing them (only Ruby on Rails had its
icon). This adds the matching icons to:

- show_remove_development_menu
- show_remove_javascript_menu
- show_remove_php_menu
- show_remove_elixir_menu

---------

Co-authored-by: incpo <nixusnekit>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2026-01-23 08:26:30 -05:00
David Heinemeier Hansson
bf99a2ddc0 Merge branch 'master' into dev 2026-01-23 08:25:43 -05:00
David Heinemeier Hansson
0930583526 Fix sourcing 2026-01-20 16:12:51 -04:00
David Heinemeier Hansson
4a6baafd05 Move all fixes for Asus ROGs to install time 2026-01-20 12:11:49 -04:00
David Heinemeier Hansson
c1bf6c4694 Fix the mic on Asus ROG laptops 2026-01-20 11:59:12 -04:00
David Heinemeier Hansson
66daacb30d Now available on OPR 2026-01-20 09:45:35 -04:00
Jan Margeta
5b2c0dafbf Fix drivers for older NVIDIA MXxxx mobile GPUs
Installs legacy drivers for older Pascal and Maxwell GPUs MXxx, MX2xx, MX3xx
2026-01-20 13:45:32 +01:00
David Heinemeier Hansson
988418aea1 Make purpose clearer 2026-01-20 08:16:03 -04:00
David Heinemeier Hansson
25451f4a03 Compensate for swayosd not liking a 0.00 progress meter 2026-01-19 17:55:38 -04:00
David Heinemeier Hansson
d884265d46 Add keyboard brightness controls 2026-01-19 17:53:19 -04:00
David Heinemeier Hansson
5e1ce16358 Centralize all brightness commands 2026-01-19 17:49:53 -04:00
David Heinemeier Hansson
713b6e3a36 Expose audio soft mixer as a tweak 2026-01-19 17:20:18 -04:00
David Heinemeier Hansson
2c7b283aef Toggle hybrid GPU mode via supergfxctl (#4277)
* Toggle hybrid GPU mode via supergfxctl

Very useful for Asus G14 and other laptops with NVIDIA + AMD iGPU
combos.

* Use correct exit

* Simplify

* Wording

* Revise switching process

* Spacing

* These are sudo actions

* Make it exe

* No need for extensions

Matches existing style

* Relying on the new config should be enough since we are restarting anyway

* Prevent race condition

* Reminder to add to OPR
2026-01-19 17:11:23 -04:00
Ryan Hughes
ed9a4a45ba Merge pull request #4247 from incpo/feat/webcam-source-selection
Add webcam source selection for screen recording
2026-01-13 18:31:44 -05:00
incpo
697d09022a Add webcam source selection for screen recording
- Add --webcam-device argument to omarchy-cmd-screenrecord
- Auto-detect first available webcam if none specified
- Add webcam selection UI in omarchy-menu when multiple cameras available
- Skip selection UI when only one webcam is detected
2026-01-13 12:48:00 +03:00
61 changed files with 666 additions and 95 deletions

10
bin/omarchy-battery-present Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
for bat in /sys/class/power_supply/BAT*; do
[[ -r "$bat/present" ]] &&
[[ "$(cat "$bat/present")" == "1" ]] &&
[[ "$(cat "$bat/type")" == "Battery" ]] &&
exit 0
done
exit 1

View File

@@ -3,14 +3,15 @@
# Set the branch for Omarchy's git repository.
if (($# == 0)); then
echo "Usage: omarchy-branch-set [master|dev]"
echo "Usage: omarchy-branch-set [master|rc|dev]"
exit 1
else
branch="$1"
fi
case "$branch" in
"master") git -C $OMARCHY_PATH switch master ;;
"dev") git -C $OMARCHY_PATH switch dev ;;
*) echo "Unknown branch: $branch"; exit 1; ;;
esac
if [[ "$branch" != "master" && "$branch" != "rc" && "$branch" != "edge" ]]; then
echo "Error: Invalid branch '$branch'. Must be one of: master, rc, edge"
exit 1
fi
git -C $OMARCHY_PATH switch $branch

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# Adjust brightness on the most likely display device.
# Usage: omarchy-cmd-brightness <step>
# Usage: omarchy-brightness-display <step>
step="${1:-+5%}"

40
bin/omarchy-brightness-keyboard Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
# Adjust keyboard backlight brightness using available steps.
# Usage: omarchy-brightness-keyboard <up|down>
direction="${1:-up}"
# Find keyboard backlight device (look for *kbd_backlight* pattern in leds class).
device=""
for candidate in /sys/class/leds/*kbd_backlight*; do
if [[ -e "$candidate" ]]; then
device="$(basename "$candidate")"
break
fi
done
if [[ -z "$device" ]]; then
echo "No keyboard backlight device found" >&2
exit 1
fi
# Get current and max brightness to determine step size.
max_brightness="$(brightnessctl -d "$device" max)"
current_brightness="$(brightnessctl -d "$device" get)"
# Calculate step as one unit (keyboards typically have discrete levels like 0-3).
if [[ "$direction" == "up" ]]; then
new_brightness=$((current_brightness + 1))
[[ $new_brightness -gt $max_brightness ]] && new_brightness=$max_brightness
else
new_brightness=$((current_brightness - 1))
[[ $new_brightness -lt 0 ]] && new_brightness=0
fi
# Set the new brightness.
brightnessctl -d "$device" set "$new_brightness" >/dev/null
# Use SwayOSD to display the new brightness setting.
percent=$((new_brightness * 100 / max_brightness))
omarchy-swayosd-brightness "$percent"

View File

@@ -14,7 +14,7 @@
# and people with a lot of experience managing Linux systems.
if (($# == 0)); then
echo "Usage: omarchy-channel-set [stable|edge|dev]"
echo "Usage: omarchy-channel-set [stable|rc|edge|dev]"
exit 1
else
channel="$1"
@@ -22,6 +22,7 @@ fi
case "$channel" in
"stable") omarchy-branch-set "master" && omarchy-refresh-pacman "stable" && sudo pacman -Suu --noconfirm ;;
"rc") omarchy-branch-set "rc" && omarchy-refresh-pacman "rc" && sudo pacman -Suu --noconfirm ;;
"edge") omarchy-branch-set "master" && omarchy-refresh-pacman "edge" ;;
"dev") omarchy-branch-set "dev" && omarchy-refresh-pacman "edge" ;;
*) echo "Unknown channel: $channel"; exit 1; ;;

View File

@@ -14,6 +14,7 @@ fi
DESKTOP_AUDIO="false"
MICROPHONE_AUDIO="false"
WEBCAM="false"
WEBCAM_DEVICE=""
STOP_RECORDING="false"
for arg in "$@"; do
@@ -21,6 +22,7 @@ for arg in "$@"; do
--with-desktop-audio) DESKTOP_AUDIO="true" ;;
--with-microphone-audio) MICROPHONE_AUDIO="true" ;;
--with-webcam) WEBCAM="true" ;;
--webcam-device=*) WEBCAM_DEVICE="${arg#*=}" ;;
--stop-recording) STOP_RECORDING="true"
esac
done
@@ -32,6 +34,15 @@ cleanup_webcam() {
start_webcam_overlay() {
cleanup_webcam
# Auto-detect first available webcam if none specified
if [[ -z "$WEBCAM_DEVICE" ]]; then
WEBCAM_DEVICE=$(v4l2-ctl --list-devices 2>/dev/null | grep -m1 "^\s*/dev/video" | tr -d '\t')
if [[ -z "$WEBCAM_DEVICE" ]]; then
notify-send "No webcam devices found" -u critical -t 3000
return 1
fi
fi
# Get monitor scale
local scale=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .scale')
@@ -41,7 +52,7 @@ start_webcam_overlay() {
# Try preferred 16:9 resolutions in order, use first available
local preferred_resolutions=("640x360" "1280x720" "1920x1080")
local video_size_arg=""
local available_formats=$(v4l2-ctl --list-formats-ext -d /dev/video0 2>/dev/null)
local available_formats=$(v4l2-ctl --list-formats-ext -d "$WEBCAM_DEVICE" 2>/dev/null)
for resolution in "${preferred_resolutions[@]}"; do
if echo "$available_formats" | grep -q "$resolution"; then
@@ -50,7 +61,7 @@ start_webcam_overlay() {
fi
done
ffplay -f v4l2 $video_size_arg -framerate 30 /dev/video0 \
ffplay -f v4l2 $video_size_arg -framerate 30 "$WEBCAM_DEVICE" \
-vf "scale=${target_width}:-1" \
-window_title "WebcamOverlay" \
-noborder \

View File

@@ -67,4 +67,8 @@ sudo cp "$OMARCHY_PATH/default/systemd/hibernate.conf" /etc/systemd/sleep.conf.d
echo "Regenerating initramfs..."
sudo limine-mkinitcpio
echo "Hibernation enabled"
echo
if gum confirm "Reboot to enable hiberation?"; then
omarchy-cmd-reboot
fi

17
bin/omarchy-install-geforce-now Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Install and launch Geforce Now.
set -e
omarchy-pkg-add flatpak
cd /tmp
# Download and run GeForce NOW
curl -LO https://international.download.nvidia.com/GFNLinux/GeForceNOWSetup.bin
chmod +x GeForceNOWSetup.bin
./GeForceNOWSetup.bin
# Ensure a separate browser process not started by GFN is available.
# If not, it seems like GFN has a tendency to hang on login.
setsid omarchy-launch-browser

View File

@@ -88,10 +88,11 @@ show_learn_menu() {
}
show_trigger_menu() {
case $(menu "Trigger" " Capture\n Share\n󰔎 Toggle") in
case $(menu "Trigger" " Capture\n Share\n󰔎 Toggle\n Hardware") in
*Capture*) show_capture_menu ;;
*Share*) show_share_menu ;;
*Toggle*) show_toggle_menu ;;
*Hardware*) show_hardware_menu ;;
*) show_main_menu ;;
esac
}
@@ -113,13 +114,43 @@ show_screenshot_menu() {
esac
}
get_webcam_list() {
v4l2-ctl --list-devices 2>/dev/null | while IFS= read -r line; do
if [[ "$line" != $'\t'* && -n "$line" ]]; then
local name="$line"
IFS= read -r device || break
device=$(echo "$device" | tr -d '\t' | head -1)
[[ -n "$device" ]] && echo "$device $name"
fi
done
}
show_webcam_select_menu() {
local devices=$(get_webcam_list)
local count=$(echo "$devices" | grep -c . 2>/dev/null || echo 0)
if [[ -z "$devices" || "$count" -eq 0 ]]; then
notify-send "No webcam devices found" -u critical -t 3000
return 1
fi
if [[ "$count" -eq 1 ]]; then
echo "$devices" | awk '{print $1}'
else
menu "Select Webcam" "$devices" | awk '{print $1}'
fi
}
show_screenrecord_menu() {
omarchy-cmd-screenrecord --stop-recording && exit 0
case $(menu "Screenrecord" " With desktop audio\n With desktop + microphone audio\n With desktop + microphone audio + webcam") in
*"With desktop audio") omarchy-cmd-screenrecord --with-desktop-audio ;;
*"With desktop + microphone audio") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;;
*"With desktop + microphone audio + webcam") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam ;;
*"With desktop + microphone audio + webcam")
local device=$(show_webcam_select_menu) || { back_to show_capture_menu; return; }
omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device"
;;
*) back_to show_capture_menu ;;
esac
}
@@ -143,6 +174,13 @@ show_toggle_menu() {
esac
}
show_hardware_menu() {
case $(menu "Toggle" " Hybrid GPU") in
*"Hybrid GPU"*) present_terminal omarchy-toggle-hybrid-gpu ;;
*) show_trigger_menu ;;
esac
}
show_style_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background\n Hyprland\n󱄄 Screensaver\n About") in
*Theme*) show_theme_menu ;;
@@ -317,8 +355,9 @@ show_install_ai_menu() {
}
show_install_gaming_menu() {
case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft\n󰖺 Xbox Controller [AUR]") in
case $(menu "Install" " Steam\n󰢹 NVIDIA GeForce NOW\n RetroArch [AUR]\n󰍳 Minecraft\n󰖺 Xbox Controller [AUR]") in
*Steam*) present_terminal omarchy-install-steam ;;
*GeForce*) present_terminal omarchy-install-geforce-now ;;
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
*Xbox*) present_terminal omarchy-install-xbox-controllers ;;
@@ -407,7 +446,7 @@ show_remove_menu() {
}
show_remove_development_menu() {
case $(menu "Remove" "󰫏 Ruby on Rails\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure") in
case $(menu "Remove" "󰫏 Ruby on Rails\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure") in
*Rails*) present_terminal "omarchy-remove-dev-env ruby" ;;
*JavaScript*) show_remove_javascript_menu ;;
*Go*) present_terminal "omarchy-remove-dev-env go" ;;
@@ -425,7 +464,7 @@ show_remove_development_menu() {
}
show_remove_javascript_menu() {
case $(menu "Remove" " Node.js\n Bun\n Deno") in
case $(menu "Remove" " Node.js\n Bun\n Deno") in
*Node*) present_terminal "omarchy-remove-dev-env node" ;;
*Bun*) present_terminal "omarchy-remove-dev-env bun" ;;
*Deno*) present_terminal "omarchy-remove-dev-env deno" ;;
@@ -434,7 +473,7 @@ show_remove_javascript_menu() {
}
show_remove_php_menu() {
case $(menu "Remove" " PHP\n Laravel\n Symfony") in
case $(menu "Remove" " PHP\n Laravel\n Symfony") in
*PHP*) present_terminal "omarchy-remove-dev-env php" ;;
*Laravel*) present_terminal "omarchy-remove-dev-env laravel" ;;
*Symfony*) present_terminal "omarchy-remove-dev-env symfony" ;;
@@ -443,7 +482,7 @@ show_remove_php_menu() {
}
show_remove_elixir_menu() {
case $(menu "Remove" " Elixir\n Phoenix") in
case $(menu "Remove" " Elixir\n Phoenix") in
*Elixir*) present_terminal "omarchy-remove-dev-env elixir" ;;
*Phoenix*) present_terminal "omarchy-remove-dev-env phoenix" ;;
*) show_remove_development_menu ;;
@@ -467,8 +506,9 @@ show_update_menu() {
}
show_update_channel_menu() {
case $(menu "Update channel" "🟢 Stable\n🟡 Edge\n🔴 Dev") in
case $(menu "Update channel" "🟢 Stable\n🟡 Release Candidate\n🟠 Edge\n🔴 Dev") in
*Stable*) present_terminal "omarchy-channel-set stable" ;;
*Candidate*) present_terminal "omarchy-channel-set rc" ;;
*Edge*) present_terminal "omarchy-channel-set edge" ;;
*Dev*) present_terminal "omarchy-channel-set dev" ;;
*) show_update_menu ;;
@@ -516,6 +556,10 @@ show_update_password_menu() {
esac
}
show_about() {
omarchy-launch-about
}
show_system_menu() {
local options=" Lock\n󱄄 Screensaver"
[ -f ~/.local/state/omarchy/toggles/suspend-on ] && options="$options\n󰒲 Suspend"
@@ -553,7 +597,7 @@ go_to_menu() {
*install*) show_install_menu ;;
*remove*) show_remove_menu ;;
*update*) show_update_menu ;;
*about*) omarchy-launch-about ;;
*about*) show_about ;;
*system*) show_system_menu ;;
esac
}

View File

@@ -7,17 +7,18 @@
sudo cp -f /etc/pacman.conf /etc/pacman.conf.bak
sudo cp -f /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
if [[ $1 == "edge" ]]; then
sudo cp -f ~/.local/share/omarchy/default/pacman/pacman-edge.conf /etc/pacman.conf
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist-edge /etc/pacman.d/mirrorlist
echo "Setting channel to edge"
else
sudo cp -f ~/.local/share/omarchy/default/pacman/pacman-stable.conf /etc/pacman.conf
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist-stable /etc/pacman.d/mirrorlist
echo "Setting channel to stable"
channel="${1:-stable}"
if [[ "$channel" != "stable" && "$channel" != "rc" && "$channel" != "edge" ]]; then
echo "Error: Invalid channel '$channel'. Must be one of: stable, rc, edge"
exit 1
fi
echo "Setting channel to $channel"
echo
sudo cp -f "$OMARCHY_PATH/default/pacman/pacman-$channel.conf" /etc/pacman.conf
sudo cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-$channel" /etc/pacman.d/mirrorlist
# Reset all package DBs and then update
sudo pacman -Syyu --noconfirm

View File

@@ -1,4 +1,4 @@
#!/bin/bash
echo
gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -n 1 -s'
gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -t 7 -n 1 -s'

View File

@@ -5,8 +5,11 @@
percent="$1"
progress="$(awk -v p="$percent" 'BEGIN{printf "%.2f", p/100}')"
[[ "$progress" == "0.00" ]] && progress="0.01"
swayosd-client \
--monitor "$(hyprctl monitors -j | jq -r '.[]|select(.focused==true).name')" \
--custom-icon display-brightness \
--custom-progress "$(awk -v p="$percent" 'BEGIN{printf "%.2f", p/100}')" \
--custom-progress "$progress" \
--custom-progress-text "${percent}%"

View File

@@ -2,7 +2,7 @@
CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme
if omarchy-cmd-present chromium || omarchy-cmd-present helium-browser || omarchy-cmd-present brave; then
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
if [[ -f $CHROMIUM_THEME ]]; then
THEME_RGB_COLOR=$(<$CHROMIUM_THEME)
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${THEME_RGB_COLOR//,/ })
@@ -13,14 +13,8 @@ if omarchy-cmd-present chromium || omarchy-cmd-present helium-browser || omarchy
fi
if omarchy-cmd-present chromium; then
rm -f /etc/chromium/policies/managed/color.json
chromium --no-startup-window --set-theme-color="$THEME_RGB_COLOR" >/dev/null
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
chromium --no-startup-window --set-color-scheme="light" >/dev/null
else
chromium --no-startup-window --set-color-scheme="dark" >/dev/null
fi
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
chromium --refresh-platform-policy --no-startup-window >/dev/null
fi
if omarchy-cmd-present brave; then

View File

@@ -1,18 +0,0 @@
#!/bin/bash
# Fix volume controls for laptops with problematic Realtek codecs (like Asus G14)
if [[ ! -f ~/.config/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf ]]; then
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
cp $OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf ~/.config/wireplumber/wireplumber.conf.d/
rm -rf ~/.local/state/wireplumber/default-routes
notify-send "Enabled audio soft mixing"
else
rm -rf ~/.config/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf
rm -rf ~/.local/state/wireplumber/default-routes
notify-send "Disabled audio soft mixing"
fi
systemctl --user restart wireplumber

53
bin/omarchy-toggle-hybrid-gpu Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/bash
# Toggle dedicated vs integrated GPU mode via supergfxd (for hybrid gpu laptops, like Asus G14).
# Requires reboot to take effect.
# Ensure supergfxctl has been installed
if omarchy-cmd-missing supergfxctl; then
omarchy-pkg-add supergfxctl
sudo systemctl enable supergfxd
# Needed to deal with restoring to sleep where going through VFIO first means we don't need to reboot.
sudo sed -i "s/\"vfio_enable\": \".*\"/\"vfio_enable\": true/" /etc/supergfxd.conf
fi
gpu_mode=$(supergfxctl -g)
case "$gpu_mode" in
"Integrated")
if gum confirm "Enable dedicated GPU and reboot?"; then
# Switch to hybrid mode
sudo sed -i "s/\"mode\": \".*\"/\"mode\": \"Hybrid\"/" /etc/supergfxd.conf
# Let hybrid mode be the default after system sleep
sudo rm -rf /usr/lib/systemd/system-sleep/force-igpu
# Remove the startup delay override (not needed for Hybrid mode)
sudo rm -rf /etc/systemd/system/supergfxd.service.d/delay-start.conf
omarchy-cmd-reboot
fi
;;
"Hybrid")
if gum confirm "Use only integrated GPU and reboot?"; then
# Switch to integrated mode
sudo sed -i "s/\"mode\": \".*\"/\"mode\": \"Integrated\"/" /etc/supergfxd.conf
# Force igpu mode after system sleep (or dgpu could get activated)
sudo mkdir -p /usr/lib/systemd/system-sleep
sudo cp -p $OMARCHY_PATH/default/systemd/system-sleep/force-igpu /usr/lib/systemd/system-sleep/
# Delay supergfxd startup to avoid race condition with display manager
# that can cause system freeze when booting in Integrated mode
sudo mkdir -p /etc/systemd/system/supergfxd.service.d
sudo cp -p $OMARCHY_PATH/default/systemd/system/supergfxd.service.d/delay-start.conf /etc/systemd/system/supergfxd.service.d/
omarchy-cmd-reboot
fi
;;
*)
echo "Hybrid GPU not found or in unknown mode."
exit 1
;;
esac

View File

@@ -2,6 +2,8 @@
if grep -q "https://stable-mirror.omarchy.org/" /etc/pacman.d/mirrorlist; then
mirror="stable"
elif grep -q "https://rc-mirror.omarchy.org/" /etc/pacman.d/mirrorlist; then
mirror="rc"
elif grep -q "https://mirror.omarchy.org/" /etc/pacman.d/mirrorlist; then
mirror="edge"
else
@@ -12,6 +14,8 @@ if grep -q "https://pkgs.omarchy.org/stable/" /etc/pacman.conf; then
pkgs="stable"
elif grep -q "https://pkgs.omarchy.org/edge/" /etc/pacman.conf; then
pkgs="edge"
elif grep -q "https://pkgs.omarchy.org/rc/" /etc/pacman.conf; then
pkgs="rc"
else
pkgs="unknown"
fi

10
boot.sh
View File

@@ -28,12 +28,10 @@ git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/
# Use custom branch if instructed, otherwise default to master
OMARCHY_REF="${OMARCHY_REF:-master}"
if [[ $OMARCHY_REF != "master" ]]; then
echo -e "\e[32mUsing branch: $OMARCHY_REF\e[0m"
cd ~/.local/share/omarchy
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"
cd -
fi
echo -e "\e[32mUsing branch: $OMARCHY_REF\e[0m"
cd ~/.local/share/omarchy
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"
cd -
# Set edge mirror for dev installs
if [[ $OMARCHY_REF == "dev" ]]; then

View File

@@ -0,0 +1 @@
command = 'wl-copy && hyprctl dispatch sendshortcut "SHIFT, Insert,"'

View File

@@ -1,6 +1,7 @@
# Application bindings
bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec --dir="$(omarchy-cmd-terminal-cwd)"
bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window
bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(omarchy-cmd-terminal-cwd)"
bindd = SUPER SHIFT, B, Browser, exec, omarchy-launch-browser
bindd = SUPER SHIFT ALT, B, Browser (private), exec, omarchy-launch-browser --private
bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify

View File

@@ -3,6 +3,10 @@
input {
# Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
# kb_layout = us,dk,eu
# Use a specific keyboard variant if needed (e.g. intl for international keyboards)
# kb_variant = intl
kb_options = compose:caps # ,grp:alts_toggle
# Change speed of keyboard repeat

View File

@@ -12,3 +12,9 @@
# *) back_to show_main_menu ;;
# esac
# }
#
# Example of overriding just the about menu action: (Using zsh instead of bash (default))
#
# show_about() {
# exec omarchy-launch-or-focus-tui "zsh -c 'fastfetch; read -k 1'"
# }

View File

@@ -21,9 +21,9 @@ if command -v zoxide &> /dev/null; then
}
fi
open() {
open() (
xdg-open "$@" >/dev/null 2>&1 &
}
)
# Directories
alias ..='cd ..'

View File

@@ -9,7 +9,9 @@ source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf
source = ~/.local/share/omarchy/default/hypr/apps/steam.conf
source = ~/.local/share/omarchy/default/hypr/apps/geforce.conf
source = ~/.local/share/omarchy/default/hypr/apps/system.conf
source = ~/.local/share/omarchy/default/hypr/apps/telegram.conf
source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
source = ~/.local/share/omarchy/default/hypr/apps/webcam-overlay.conf

View File

@@ -1,2 +1,6 @@
windowrule = no_screen_share on, match:class ^(Bitwarden)$
windowrule = tag +floating-window, match:class ^(Bitwarden)$
# Bitwarden Chrome Extension
windowrule = no_screen_share on, match:class chrome-nngceckbapebfimnlniiiahkandclblb-Default
windowrule = tag +floating-window, match:class chrome-nngceckbapebfimnlniiiahkandclblb-Default

View File

@@ -0,0 +1,5 @@
windowrule {
name = geforce
match:class = GeForceNOW
idle_inhibit = fullscreen
}

View File

@@ -1,22 +1,41 @@
# Fix splash screen showing in weird places and prevent annoying focus takeovers
windowrule = tag +jetbrains-splash, match:class ^(jetbrains-.*)$, match:title ^(splash)$, match:float 1
windowrule = center on, match:tag jetbrains-splash
windowrule = no_focus on, match:tag jetbrains-splash
windowrule = border_size 0, match:tag jetbrains-splash
windowrule {
name = jetbrains-splash
match:class = ^(jetbrains-.*)$
match:title = ^(splash)$
match:float = 1
tag = +jetbrains-splash
center = on
no_focus = on
border_size = 0
}
# Center popups/find windows
windowrule = tag +jetbrains, match:class ^(jetbrains-.*), match:title ^()$, match:float 1
windowrule = center on, match:tag jetbrains
# Enabling this makes it possible to provide input in popup dialogs (search window, new file, etc.)
windowrule = stay_focused on, match:tag jetbrains
windowrule = border_size 0, match:tag jetbrains
# For some reason tag:jetbrains does not work for size rule
windowrule = min_size (monitor_w*0.5) (monitor_h*0.5), match:class ^(jetbrains-.*), match:title ^()$, match:float 1
windowrule {
name = jetbrains-popup
match:class = ^(jetbrains-.*)
match:title = ^()$
match:float = 1
tag = +jetbrains
center = on
# Enabling this makes it possible to provide input in popup dialogs (search window, new file, etc.)
stay_focused = on
border_size = 0
min_size = (monitor_w*0.5) (monitor_h*0.5)
}
# Disable window flicker when autocomplete or tooltips appear
windowrule = no_initial_focus on, match:class ^(jetbrains-.*)$, match:title ^(win.*)$, match:float 1
windowrule {
name = jetbrains-tooltip
match:class = ^(jetbrains-.*)$
match:title = ^(win.*)$
match:float = 1
no_initial_focus = on
}
# Disable mouse focus
windowrule = no_follow_mouse on, match:class ^(jetbrains-.*)$
windowrule {
name = jetbrains-focus
no_follow_mouse = on
match:class = ^(jetbrains-.*)$
}

View File

@@ -1,7 +1,7 @@
# Float Steam
windowrule = float on, match:class steam
windowrule = center on, match:class steam, match:title Steam
windowrule = opacity 1 1, match:class steam
windowrule = opacity 1 1, match:class steam.*
windowrule = size 1100 700, match:class steam, match:title Steam
windowrule = size 460 800, match:class steam, match:title Friends List
windowrule = idle_inhibit fullscreen, match:class steam

View File

@@ -0,0 +1,2 @@
# Prevent Telegram from stealing focus on new messages
windowrule = focus_on_activate off, match:class org.telegram.desktop

View File

@@ -6,14 +6,16 @@ bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume rai
bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, omarchy-cmd-brightness +5%
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, omarchy-cmd-brightness 5%-
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, omarchy-brightness-display +5%
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, omarchy-brightness-display 5%-
bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, omarchy-brightness-keyboard up
bindeld = ,XF86KbdBrightnessDown, Keyboard brightness down, exec, omarchy-brightness-keyboard down
# Precise 1% multimedia adjustments with Alt modifier
bindeld = ALT, XF86AudioRaiseVolume, Volume up precise, exec, $osdclient --output-volume +1
bindeld = ALT, XF86AudioLowerVolume, Volume down precise, exec, $osdclient --output-volume -1
bindeld = ALT, XF86MonBrightnessUp, Brightness up precise, exec, omarchy-cmd-brightness +1%
bindeld = ALT, XF86MonBrightnessDown, Brightness down precise, exec, omarchy-cmd-brightness 1%-
bindeld = ALT, XF86MonBrightnessUp, Brightness up precise, exec, omarchy-brightness-display +1%
bindeld = ALT, XF86MonBrightnessDown, Brightness down precise, exec, omarchy-brightness-display 1%-
# Requires playerctl
bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next

View File

@@ -29,9 +29,9 @@ bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle
bindd = SUPER CTRL, N, Toggle nightlight, exec, omarchy-toggle-nightlight
# Control Apple Display brightness
bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-cmd-apple-display-brightness -5000
bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-cmd-apple-display-brightness +5000
bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-cmd-apple-display-brightness +60000
bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-brightness-display-apple -5000
bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-brightness-display-apple +5000
bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-brightness-display-apple +60000
# Captures
bindd = , PRINT, Screenshot with editing, exec, omarchy-cmd-screenshot

View File

@@ -6,7 +6,7 @@ env = HYPRCURSOR_SIZE,24
env = GDK_BACKEND,wayland,x11,*
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_STYLE_OVERRIDE,kvantum
env = SDL_VIDEODRIVER,wayland
env = SDL_VIDEODRIVER,wayland,x11
env = MOZ_ENABLE_WAYLAND,1
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
env = OZONE_PLATFORM,wayland

View File

@@ -131,6 +131,11 @@ cursor {
hide_on_key_press = true
}
# Auto toggle scratchpad on switching workspace from scratchpad
binds {
hide_special_on_workspace_change = true
}
# Style Gum confirm to match terminal theme
env = GUM_CONFIRM_PROMPT_FOREGROUND,6 # Cyan
env = GUM_CONFIRM_SELECTED_FOREGROUND,0 # Black

View File

@@ -0,0 +1 @@
Server = https://rc-mirror.omarchy.org/$repo/os/$arch

View File

@@ -0,0 +1,30 @@
# See the pacman.conf(5) manpage for option and repository directives
[options]
Color
ILoveCandy
VerbosePkgLists
HoldPkg = pacman glibc
Architecture = auto
CheckSpace
ParallelDownloads = 5
DownloadUser = alpm
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
# pacman searches repositories in the order defined here
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
[omarchy]
SigLevel = Optional TrustAll
Server = https://pkgs.omarchy.org/edge/$arch

View File

@@ -0,0 +1,18 @@
#!/bin/bash
# Use the Vfio to Integrated trick to turn off NVIDIA dgpu when in integrated mode
# without needing to restart the computer. This is needed because computers like the Asus G14
# will wake after suspend in Hybrid mode, even if the system was in Integrated mode before
# suspending.
if [[ $1 == "post" ]]; then
# small delay so the device is fully re-enumerated
sleep 4
# force-bind dGPU to vfio (fully detached from nvidia)
/usr/bin/supergfxctl -m Vfio
sleep 1
# then go back to Integrated, which powers it off again
/usr/bin/supergfxctl -m Integrated
fi

View File

@@ -0,0 +1,6 @@
[Service]
# Delay startup to avoid race condition with display manager initialization
# when booting in Integrated mode. Without this delay, the system can freeze
# on boot because supergfxd tries to disable the dGPU while the display
# subsystem is still initializing.
ExecStartPre=/bin/sleep 5

View File

@@ -19,6 +19,7 @@ run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh
run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh
run_logged $OMARCHY_INSTALL/config/input-group.sh
run_logged $OMARCHY_INSTALL/config/omarchy-ai-skill.sh
run_logged $OMARCHY_INSTALL/config/powerprofilesctl-rules.sh
run_logged $OMARCHY_INSTALL/config/hardware/network.sh
run_logged $OMARCHY_INSTALL/config/hardware/set-wireless-regdom.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh
@@ -34,3 +35,5 @@ 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
run_logged $OMARCHY_INSTALL/config/hardware/fix-asus-rog-audio-mixer.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-asus-rog-mic.sh

View File

@@ -0,0 +1,15 @@
# Fix audio volume on Asus ROG laptops by using a soft mixer.
if [[ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" == "ASUSTeK COMPUTER INC." ]] &&
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null; then
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
cp $OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf ~/.config/wireplumber/wireplumber.conf.d/
rm -rf ~/.local/state/wireplumber/default-routes
# Unmute the Master control on the ALC285 card (often muted by default)
card=$(aplay -l 2>/dev/null | grep -i "ALC285" | head -1 | sed 's/card \([0-9]*\).*/\1/')
if [[ -n "$card" ]]; then
amixer -c "$card" set Master 80% unmute 2>/dev/null
fi
fi

View File

@@ -0,0 +1,17 @@
# Fix internal mic gain on ASUS ROG laptops with Realtek ALC285.
# The mic boost is way too high by default, causing clipping.
# Sets levels and stores ALSA state so it persists across reboots.
if [[ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" == "ASUSTeK COMPUTER INC." ]] &&
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null; then
for card in /proc/asound/card*/codec*; do
if grep -q "ALC285" "$card" 2>/dev/null; then
cardnum=$(echo "$card" | grep -oP 'card\K\d+')
amixer -c "$cardnum" set 'Internal Mic Boost' 0 >/dev/null 2>&1 || true
amixer -c "$cardnum" set 'Capture' 70% >/dev/null 2>&1 || true
sudo alsactl store "$cardnum" 2>/dev/null || true
break
fi
done
fi

View File

@@ -7,8 +7,8 @@ if [ -n "$NVIDIA" ]; then
if echo "$NVIDIA" | grep -qE "RTX [2-9][0-9]|GTX 16"; then
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
PACKAGES=(nvidia-open-dkms nvidia-utils lib32-nvidia-utils libva-nvidia-driver)
elif echo "$NVIDIA" | grep -qE "GTX 9|GTX 10|Quadro P"; then
# Pascal (10xx or Quadro Pxxx) and Maxwell (9xx) use legacy branch that can only be installed from AUR
elif echo "$NVIDIA" | grep -qE "GTX 9|GTX 10|Quadro P|MX1|MX2|MX3"; then
# Pascal (10xx, Quadro Pxxx, MX150, MX2xx, and MX3xx) and Maxwell (9xx, MX110, and MX130) use legacy branch that can only be installed from AUR
PACKAGES=(nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils)
fi
# Bail if no supported GPU

View File

@@ -1,6 +1,9 @@
omarchy-refresh-applications
update-desktop-database ~/.local/share/applications
# Open directories in file manager
xdg-mime default org.gnome.Nautilus.desktop inode/directory
# Open all images with imv
xdg-mime default imv.desktop image/png
xdg-mime default imv.desktop image/jpeg

View File

@@ -0,0 +1,26 @@
if omarchy-battery-present; then
mapfile -t profiles < <(omarchy-powerprofiles-list)
if [[ ${#profiles[@]} -gt 0 ]]; then
# Default AC profile:
# 3 profiles → performance
# 2 profiles → balanced
# 1 profile → profiles[0]
ac_profile="${profiles[2]:-${profiles[1]:-${profiles[0]}}}"
# Default Battery profile:
# 3 profiles → balanced
# 2 profiles → balanced
# 1 profile → profiles[0]
battery_profile="${profiles[1]:-${profiles[0]}}"
cat <<EOF | sudo tee "/etc/udev/rules.d/99-power-profile.rules"
SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="0", RUN+="/usr/bin/powerprofilesctl set $battery_profile"
SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="1", RUN+="/usr/bin/powerprofilesctl set $ac_profile"
EOF
sudo udevadm control --reload
sudo udevadm trigger --subsystem-match=power_supply
fi
fi

View File

@@ -1,10 +1,8 @@
if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery
if omarchy-battery-present; then
powerprofilesctl set balanced || true
# Enable battery monitoring timer for low battery notifications
systemctl --user enable --now omarchy-battery-monitor.timer
else
# This computer runs on power outlet
powerprofilesctl set performance || true
fi

View File

@@ -5,6 +5,7 @@
1password-cli
aether
alacritty
alsa-utils
asdcontrol
avahi
bash-completion
@@ -13,6 +14,7 @@ bluetui
bolt
brightnessctl
btop
chromium
clang
cups
cups-browsed
@@ -78,6 +80,7 @@ mariadb-libs
mise
mpv
nautilus
nautilus-python
gnome-disk-utility
noto-fonts
noto-fonts-cjk
@@ -87,7 +90,6 @@ nss-mdns
nvim
obs-studio
obsidian
omarchy-chromium
omarchy-nvim
omarchy-walker
opencode

19
migrations/1768906440.sh Normal file
View File

@@ -0,0 +1,19 @@
echo "Migrate legacy mobile NVIDIA GPUs to nvidia-580xx driver (if needed)"
# Only migrate MX1xx, 2xx or 3xx (Pascal/Maxwell)
NVIDIA="$(lspci | grep -i 'nvidia')"
if echo "$NVIDIA" | grep -qE "MX1|MX2|MX3"; then
if ! pacman -Qq | grep -qE '^linux(-[a-z0-9]+)?-headers$'; then
echo "Error: no linux headers package installed (required for DKMS drivers). Please install the appropriate headers and re-run this migration."
exit 1
fi
# Piping yes to override existing packages
yes | sudo pacman -S nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils
# Verify packages were installed
if ! pacman -Qq nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils &>/dev/null; then
echo "Error: NVIDIA 580xx driver packages failed to install"
exit 1
fi
fi

9
migrations/1768916735.sh Normal file
View File

@@ -0,0 +1,9 @@
echo "Fix microphone gain and audio mixing on Asus ROG laptops"
source "$OMARCHY_PATH/install/config/hardware/fix-asus-rog-mic.sh"
source "$OMARCHY_PATH/install/config/hardware/fix-asus-rog-audio-mixer.sh"
if [[ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" == "ASUSTeK COMPUTER INC." ]] &&
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null; then
omarchy-restart-pipewire
fi

4
migrations/1769182209.sh Normal file
View File

@@ -0,0 +1,4 @@
echo "Enable auto-pasting for the emoji picker"
omarchy-refresh-config elephant/symbols.toml
omarchy-restart-walker

3
migrations/1769183359.sh Normal file
View File

@@ -0,0 +1,3 @@
echo "Add nautilus-python package for 'Open in Ghostty' shortcut in Nautilus"
omarchy-pkg-add nautilus-python

5
migrations/1769510847.sh Normal file
View File

@@ -0,0 +1,5 @@
echo "Switch back to mainline chromium now that it supports full live themeing"
omarchy-pkg-drop omarchy-chromium
omarchy-pkg-add chromium
omarchy-theme-set-browser

6
migrations/1769543550.sh Normal file
View File

@@ -0,0 +1,6 @@
echo "Add SUPER+ALT+SHIFT+F shortcut to open nautilus in cwd"
# Add the new CWD binding if it doesn't exist
if ! grep -q "SUPER ALT SHIFT, F" ~/.config/hypr/bindings.conf; then
sed -i '/bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window/a bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(omarchy-cmd-terminal-cwd)"' ~/.config/hypr/bindings.conf
fi

3
migrations/1769566732.sh Executable file
View File

@@ -0,0 +1,3 @@
echo "Set power profile based on source switching (AC or Battery)"
source $OMARCHY_PATH/install/config/powerprofilesctl-rules.sh

3
migrations/1769619823.sh Normal file
View File

@@ -0,0 +1,3 @@
echo "Open directories in file manager using the shell open command"
xdg-mime default org.gnome.Nautilus.desktop inode/directory

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 KiB

70
themes/miasma/btop.theme Normal file
View File

@@ -0,0 +1,70 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#222222"
# Main text color
theme[main_fg]="#c2c2b0"
# Title color for boxes
theme[title]="#bb7744"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#c9a554"
# Background color of selected item in processes box
theme[selected_bg]="#e4c47a"
# Foreground color of selected item in processes box
theme[selected_fg]="#000000"
# Color of inactive/disabled text
theme[inactive_fg]="#666666"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#bb7744"
# Box outline and divider line color
theme[cpu_box]="#5f875f"
theme[mem_box]="#5f875f"
theme[net_box]="#5f875f"
theme[proc_box]="#5f875f"
theme[div_line]="#666666"
# Gradient for all meters and graphs
theme[temp_start]="#c9a554"
theme[temp_mid]="#78824b"
theme[temp_end]="#5f875f"
theme[cpu_start]="#c9a554"
theme[cpu_mid]="#78824b"
theme[cpu_end]="#5f875f"
theme[free_start]="#78824b"
theme[free_mid]="#b36d43"
theme[free_end]="#b36d43"
theme[cached_start]="#b36d43"
theme[cached_mid]="#b36d43"
theme[cached_end]="#b36d43"
theme[available_start]="#c9a554"
theme[available_mid]="#c9a554"
theme[available_end]="#c9a554"
theme[used_start]="#5f875f"
theme[used_mid]="#5f875f"
theme[used_end]="#5f875f"
theme[download_start]="#b36d43"
theme[download_mid]="#c9a554"
theme[download_end]="#78824b"
theme[upload_start]="#b36d43"
theme[upload_mid]="#c9a554"
theme[upload_end]="#78824b"

23
themes/miasma/colors.toml Normal file
View File

@@ -0,0 +1,23 @@
accent = "#78824b"
cursor = "#c7c7c7"
foreground = "#c2c2b0"
background = "#222222"
selection_foreground = "#c2c2b0"
selection_background = "#78824b"
color0 = "#000000"
color1 = "#685742"
color2 = "#5f875f"
color3 = "#b36d43"
color4 = "#78824b"
color5 = "#bb7744"
color6 = "#c9a554"
color7 = "#d7c483"
color8 = "#666666"
color9 = "#685742"
color10 = "#5f875f"
color11 = "#b36d43"
color12 = "#78824b"
color13 = "#bb7744"
color14 = "#c9a554"
color15 = "#d7c483"

View File

@@ -0,0 +1 @@
Yaru-wartybrown

88
themes/miasma/neovim.lua Normal file
View File

@@ -0,0 +1,88 @@
return {
{
"xero/miasma.nvim",
priority = 1000,
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "miasma",
},
},
}
-- local function has_miasma_in_user_plugins()
-- local plugins_dir = vim.fn.expand("~/.config/nvim/lua/plugins")
-- if vim.fn.isdirectory(plugins_dir) ~= 1 then
-- return false
-- end
-- local plugin_files = vim.fn.glob(plugins_dir .. "/**/*.lua", true, true)
-- for _, file in ipairs(plugin_files) do
-- local ok, lines = pcall(vim.fn.readfile, file)
-- if ok then
-- for _, line in ipairs(lines) do
-- if line:find("xero/miasma.nvim", 1, true) then
-- return true
-- end
-- end
-- end
-- end
-- return false
-- end
--
-- if has_miasma_in_user_plugins() then
-- return {
-- {
-- "xero/miasma.nvim",
-- lazy = false,
-- priority = 1000,
-- config = function()
-- vim.cmd("colorscheme miasma")
-- end,
-- },
-- }
-- end
--
-- return {
-- {
-- "bjarneo/aether.nvim",
-- name = "aether",
-- priority = 1000,
-- opts = {
-- disable_italics = false,
-- colors = {
-- -- Monotone shades (base00-base07)
-- base00 = "#222222", -- Default background
-- base01 = "#666666", -- Lighter background (status bars)
-- base02 = "#e4c47a", -- Selection background
-- base03 = "#666666", -- Comments, invisibles
-- base04 = "#c2c2b0", -- Dark foreground
-- base05 = "#c2c2b0", -- Default foreground
-- base06 = "#d7c483", -- Light foreground
-- base07 = "#d7c483", -- Light background
--
-- -- Accent colors (base08-base0F)
-- base08 = "#685742", -- Variables, errors, red
-- base09 = "#685742", -- Integers, constants, orange
-- base0A = "#b36d43", -- Classes, types, yellow
-- base0B = "#5f875f", -- Strings, green
-- base0C = "#c9a554", -- Support, regex, cyan
-- base0D = "#78824b", -- Functions, keywords, blue
-- base0E = "#bb7744", -- Keywords, storage, magenta
-- base0F = "#b36d43", -- Deprecated, brown/yellow
-- },
-- },
-- config = function(_, opts)
-- require("aether").setup(opts)
-- vim.cmd.colorscheme("aether")
--
-- -- Enable hot reload
-- require("aether.hotreload").setup()
-- end,
-- },
-- {
-- "LazyVim/LazyVim",
-- opts = {
-- colorscheme = "aether",
-- },
-- },
-- }

BIN
themes/miasma/preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 KiB

View File

@@ -0,0 +1,4 @@
{
"name": "In The Fog Dark",
"extension": "ganevru.in-the-fog-theme"
}