Add default agent shortcuts
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user