Add default agent shortcuts

This commit is contained in:
David Heinemeier Hansson
2026-08-04 05:53:30 -07:00
parent ce93c31af6
commit 5ea4fb56f4
4 changed files with 57 additions and 2 deletions
+19 -2
View File
@@ -1,9 +1,22 @@
#!/bin/bash #!/bin/bash
# omarchy:summary=Launch the default coding agent in a terminal # omarchy:summary=Launch the default coding agent in a terminal
# omarchy:args=[prompt...] # omarchy:args=[--inline] [prompt...]
# omarchy:examples=omarchy launch agent | omarchy launch agent "Review this project" # omarchy:examples=omarchy launch agent | omarchy launch agent "Review this project"
if [[ ${1:-} == "--inline" ]]; then
inline=true
shift
else
inline=false
fi
agent_file="$HOME/.local/state/omarchy/defaults/agent"
if [[ ! -s $agent_file ]]; then
exec omarchy-menu summon setup.default.agent
fi
agent=$(omarchy-default-agent) agent=$(omarchy-default-agent)
if omarchy-cmd-missing "$agent"; then if omarchy-cmd-missing "$agent"; then
@@ -58,4 +71,8 @@ pi | omp | claude | codex | grok)
;; ;;
esac esac
exec omarchy-launch-tui "${command[@]}" if [[ $inline == "true" ]]; then
exec "${command[@]}"
else
exec omarchy-launch-tui "${command[@]}"
fi
+1
View File
@@ -43,6 +43,7 @@ alias ...='cd ../..'
alias ....='cd ../../..' alias ....='cd ../../..'
# Tools # Tools
alias a='omarchy-launch-agent --inline'
alias c='opencode --auto' alias c='opencode --auto'
alias cx='printf "\033[2J\033[3J\033[H" && claude --permission-mode bypassPermissions' alias cx='printf "\033[2J\033[3J\033[H" && claude --permission-mode bypassPermissions'
alias cy='codex -s danger-full-access -a never' alias cy='codex -s danger-full-access -a never'
+1
View File
@@ -74,6 +74,7 @@ o.bind("SUPER + CTRL + ALT + T", "Show time", "omarchy-notification-time")
o.bind("SUPER + CTRL + ALT + B", "Show battery remaining", "omarchy-notification-battery") o.bind("SUPER + CTRL + ALT + B", "Show battery remaining", "omarchy-notification-battery")
o.bind("SUPER + CTRL + ALT + W", "Toggle weather", "omarchy-notification-weather") o.bind("SUPER + CTRL + ALT + W", "Toggle weather", "omarchy-notification-weather")
o.bind("SUPER + SHIFT + CTRL + A", "Agent", "omarchy-launch-agent")
o.bind("SUPER + CTRL + A", "Audio", "omarchy-shell shell toggle omarchy.audio") o.bind("SUPER + CTRL + A", "Audio", "omarchy-shell shell toggle omarchy.audio")
o.bind("SUPER + CTRL + B", "Bluetooth", "omarchy-shell shell toggle omarchy.bluetooth") o.bind("SUPER + CTRL + B", "Bluetooth", "omarchy-shell shell toggle omarchy.bluetooth")
o.bind("SUPER + CTRL + D", "Display", "omarchy-shell shell toggle omarchy.monitor") o.bind("SUPER + CTRL + D", "Display", "omarchy-shell shell toggle omarchy.monitor")
+36
View File
@@ -12,8 +12,10 @@ test_home="$test_tmp/home"
notification_log="$test_tmp/notifications" notification_log="$test_tmp/notifications"
notification_history="$test_tmp/notification-history" notification_history="$test_tmp/notification-history"
launch_log="$test_tmp/launch" launch_log="$test_tmp/launch"
inline_log="$test_tmp/inline"
mise_log="$test_tmp/mise" mise_log="$test_tmp/mise"
mise_history="$test_tmp/mise-history" mise_history="$test_tmp/mise-history"
picker_log="$test_tmp/picker"
stub_log="$test_tmp/stubs" stub_log="$test_tmp/stubs"
mkdir -p "$mock_bin" "$test_home" mkdir -p "$mock_bin" "$test_home"
@@ -33,6 +35,16 @@ cat >"$mock_bin/omarchy-launch-tui" <<'SH'
printf '%s\0' "$@" >"$OMARCHY_TEST_AGENT_LAUNCH_LOG" printf '%s\0' "$@" >"$OMARCHY_TEST_AGENT_LAUNCH_LOG"
SH SH
cat >"$mock_bin/omarchy-menu" <<'SH'
#!/bin/bash
printf '%s\0' "$@" >"$OMARCHY_TEST_AGENT_PICKER_LOG"
SH
cat >"$mock_bin/opencode" <<'SH'
#!/bin/bash
printf '%s\0' opencode "$@" >"$OMARCHY_TEST_AGENT_INLINE_LOG"
SH
cat >"$mock_bin/omarchy-mise-install" <<'SH' cat >"$mock_bin/omarchy-mise-install" <<'SH'
#!/bin/bash #!/bin/bash
printf '%s\n' "$*" >>"$OMARCHY_TEST_STUB_LOG" printf '%s\n' "$*" >>"$OMARCHY_TEST_STUB_LOG"
@@ -67,6 +79,8 @@ export PATH="$mock_bin:$ROOT/bin:$PATH"
export OMARCHY_TEST_NOTIFICATION_LOG="$notification_log" export OMARCHY_TEST_NOTIFICATION_LOG="$notification_log"
export OMARCHY_TEST_NOTIFICATION_HISTORY="$notification_history" export OMARCHY_TEST_NOTIFICATION_HISTORY="$notification_history"
export OMARCHY_TEST_AGENT_LAUNCH_LOG="$launch_log" export OMARCHY_TEST_AGENT_LAUNCH_LOG="$launch_log"
export OMARCHY_TEST_AGENT_INLINE_LOG="$inline_log"
export OMARCHY_TEST_AGENT_PICKER_LOG="$picker_log"
export OMARCHY_TEST_MISE_LOG="$mise_log" export OMARCHY_TEST_MISE_LOG="$mise_log"
export OMARCHY_TEST_MISE_HISTORY="$mise_history" export OMARCHY_TEST_MISE_HISTORY="$mise_history"
export OMARCHY_TEST_STUB_LOG="$stub_log" export OMARCHY_TEST_STUB_LOG="$stub_log"
@@ -129,6 +143,22 @@ pass "Remove Preinstalls deletes every optional agent lazy stub"
[[ $(omarchy-default-agent) == "opencode" ]] || fail "default agent falls back to OpenCode" [[ $(omarchy-default-agent) == "opencode" ]] || fail "default agent falls back to OpenCode"
pass "default agent falls back to OpenCode" pass "default agent falls back to OpenCode"
omarchy-launch-agent
mapfile -d '' -t picker_args <"$picker_log"
[[ ${picker_args[0]} == "summon" && ${picker_args[1]} == "setup.default.agent" ]] ||
fail "agent launcher opens the picker before a default is selected"
pass "agent launcher opens the picker before a default is selected"
source "$ROOT/default/bash/aliases"
[[ $(alias a) == "alias a='omarchy-launch-agent --inline'" ]] ||
fail "terminal alias launches the default agent inline"
pass "terminal alias launches the default agent inline"
grep -Fq 'o.bind("SUPER + SHIFT + CTRL + A", "Agent", "omarchy-launch-agent")' \
"$ROOT/default/hypr/bindings/utilities.lua" ||
fail "agent launcher has a keyboard shortcut"
pass "agent launcher has a keyboard shortcut"
declare -A expected_agents=( declare -A expected_agents=(
[pi]="pi" [pi]="pi"
[omp]="omp" [omp]="omp"
@@ -265,6 +295,12 @@ mapfile -d '' -t launch_args <"$launch_log"
fail "agent launcher starts the selected agent without an initial prompt" fail "agent launcher starts the selected agent without an initial prompt"
pass "agent launcher starts the selected agent without an initial prompt" pass "agent launcher starts the selected agent without an initial prompt"
omarchy-launch-agent --inline "Review this project"
mapfile -d '' -t inline_args <"$inline_log"
[[ ${inline_args[0]} == "opencode" && ${inline_args[1]} == "--prompt" && ${inline_args[2]} == "Review this project" ]] ||
fail "inline agent launcher runs in the current terminal"
pass "inline agent launcher runs in the current terminal"
printf '%s\n' "missing" >"$test_home/.local/state/omarchy/defaults/agent" printf '%s\n' "missing" >"$test_home/.local/state/omarchy/defaults/agent"
if OMARCHY_TEST_MISSING_COMMAND=missing omarchy-launch-agent >"$test_tmp/missing-output" 2>&1; then if OMARCHY_TEST_MISSING_COMMAND=missing omarchy-launch-agent >"$test_tmp/missing-output" 2>&1; then
fail "agent launcher rejects a missing default command" fail "agent launcher rejects a missing default command"