Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
autostarting mise breaks arch (python) packages
Reported by kromsam · filed Nov 26, 2025Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #2728 (R-2065). GitHub close reason: completed.
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- Not yet mapped to any requirement or component.
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
System details
Omarchy 3.2.1
What's wrong?
When I install a python package through Arch Repo, I am not able to run it in my terminal because mise 'hijacks' the global python binary, as I have installed python through mise.
For instance, when I run `khal`, I get the following error:
~ ❯ khal
Traceback (most recent call last):
File "/usr/bin/khal", line 2, in <module>
from khal.cli import main_khal
ModuleNotFoundError: No module named 'khal'For khal to work, I would need to run this command:/usr/bin/python /usr/bin/khal
because:
~ ❯ which python
/home/sam/.local/share/mise/installs/python/3.14.0/bin/pythonAnother option is to run mise deactivate, which adds bash: command not found: _mise_hook to every command. Oh, and things go south when I try to reactivate mise in the same session again:
~ ❯ mise deactivate
bash: command not found: _mise_hook
~ ❯ mise activate
export MISE_SHELL=bash
# On first activation, save the original PATH
# On re-activation, we keep the saved original
if [ -z "${__MISE_ORIG_PATH:-}" ]; then
export __MISE_ORIG_PATH="$PATH"
fi
mise() {
local command
command="${1:-}"
if [ "$#" = 0 ]; then
command mise
return
fi
shift
case "$command" in
deactivate|shell|sh)
# if argv doesn't contains -h,--help
if [[ ! " $@ " =~ " --help " ]] && [[ ! " $@ " =~ " -h " ]]; then
eval "$(command mise "$command" "$@")"
return $?
fi
;;
esac
command mise "$command" "$@"
}
_mise_hook() {
local previous_exit_status=$?;
eval "$(mise hook-env -s bash)";
return $previous_exit_status;
};
if [[ ";${PROMPT_COMMAND:-};" != *";_mise_hook;"* ]]; then
PROMPT_COMMAND="_mise_hook${PROMPT_COMMAND:+;$PROMPT_COMMAND}"
fi
# shellcheck shell=bash
export -a chpwd_functions
function __zsh_like_cd()
{
\typeset __zsh_like_cd_hook
if
builtin "$@"
then
for __zsh_like_cd_hook in chpwd "${chpwd_functions[@]}"
do
if \typeset -f "$__zsh_like_cd_hook" >/dev/null 2>&1
then "$__zsh_like_cd_hook" || break # finish on first failed hook
fi
done
true
else
return $?
fi
}
# shellcheck shell=bash
[[ -n "${ZSH_VERSION:-}" ]] ||
{
function cd() { __zsh_like_cd cd "$@" ; }
function popd() { __zsh_like_cd popd "$@" ; }
function pushd() { __zsh_like_cd pushd "$@" ; }
}
chpwd_functions+=(_mise_hook)
_mise_hook
if [ -z "${_mise_cmd_not_found:-}" ]; then
_mise_cmd_not_found=1
if [ -n "$(declare -f command_not_found_handle)" ]; then
_mise_cmd_not_found_handle=$(declare -f command_not_found_handle)
eval "${_mise_cmd_not_found_handle/command_not_found_handle/_command_not_found_handle}"
fi
command_not_found_handle() {
if [[ "$1" != "mise" && "$1" != "mise-"* ]] && mise hook-not-found -s bash -- "$1"; then
_mise_hook
"$@"
elif [ -n "$(declare -f _command_not_found_handle)" ]; then
_command_not_found_handle "$@"
else
echo "bash: command not found: $1" >&2
return 127
fi
}
fi
bash: command not found: _mise_hookBoth isn't great. So I wonder. Should we have mise activated all the time? Or would it suffice to only have it running in the ~/Work directory, where it would make more sense?
Here are the two files where mise is activated.
https://github.com/basecamp/omarchy/blob/master/config/uwsm/env
https://github.com/basecamp/omarchy/blob/master/default/bash/init
View raw text
### System details
Omarchy 3.2.1
### What's wrong?
When I install a python package through Arch Repo, I am not able to run it in my terminal because mise 'hijacks' the global python binary, as I have installed python through mise.
For instance, when I run [`khal`](https://github.com/pimutils/khal), I get the following error:
```
~ ❯ khal
Traceback (most recent call last):
File "/usr/bin/khal", line 2, in <module>
from khal.cli import main_khal
ModuleNotFoundError: No module named 'khal'
```
For khal to work, I would need to run this command:
`/usr/bin/python /usr/bin/khal`
because:
```
~ ❯ which python
/home/sam/.local/share/mise/installs/python/3.14.0/bin/python
```
Another option is to run `mise deactivate`, which adds `bash: command not found: _mise_hook` to every command. Oh, and things go south when I try to reactivate mise in the same session again:
```
~ ❯ mise deactivate
bash: command not found: _mise_hook
~ ❯ mise activate
export MISE_SHELL=bash
# On first activation, save the original PATH
# On re-activation, we keep the saved original
if [ -z "${__MISE_ORIG_PATH:-}" ]; then
export __MISE_ORIG_PATH="$PATH"
fi
mise() {
local command
command="${1:-}"
if [ "$#" = 0 ]; then
command mise
return
fi
shift
case "$command" in
deactivate|shell|sh)
# if argv doesn't contains -h,--help
if [[ ! " $@ " =~ " --help " ]] && [[ ! " $@ " =~ " -h " ]]; then
eval "$(command mise "$command" "$@")"
return $?
fi
;;
esac
command mise "$command" "$@"
}
_mise_hook() {
local previous_exit_status=$?;
eval "$(mise hook-env -s bash)";
return $previous_exit_status;
};
if [[ ";${PROMPT_COMMAND:-};" != *";_mise_hook;"* ]]; then
PROMPT_COMMAND="_mise_hook${PROMPT_COMMAND:+;$PROMPT_COMMAND}"
fi
# shellcheck shell=bash
export -a chpwd_functions
function __zsh_like_cd()
{
\typeset __zsh_like_cd_hook
if
builtin "$@"
then
for __zsh_like_cd_hook in chpwd "${chpwd_functions[@]}"
do
if \typeset -f "$__zsh_like_cd_hook" >/dev/null 2>&1
then "$__zsh_like_cd_hook" || break # finish on first failed hook
fi
done
true
else
return $?
fi
}
# shellcheck shell=bash
[[ -n "${ZSH_VERSION:-}" ]] ||
{
function cd() { __zsh_like_cd cd "$@" ; }
function popd() { __zsh_like_cd popd "$@" ; }
function pushd() { __zsh_like_cd pushd "$@" ; }
}
chpwd_functions+=(_mise_hook)
_mise_hook
if [ -z "${_mise_cmd_not_found:-}" ]; then
_mise_cmd_not_found=1
if [ -n "$(declare -f command_not_found_handle)" ]; then
_mise_cmd_not_found_handle=$(declare -f command_not_found_handle)
eval "${_mise_cmd_not_found_handle/command_not_found_handle/_command_not_found_handle}"
fi
command_not_found_handle() {
if [[ "$1" != "mise" && "$1" != "mise-"* ]] && mise hook-not-found -s bash -- "$1"; then
_mise_hook
"$@"
elif [ -n "$(declare -f _command_not_found_handle)" ]; then
_command_not_found_handle "$@"
else
echo "bash: command not found: $1" >&2
return 127
fi
}
fi
bash: command not found: _mise_hook
```
Both isn't great. So I wonder. Should we have mise activated all the time? Or would it suffice to only have it running in the `~/Work` directory, where it would make more sense?
Here are the two files where mise is activated.
https://github.com/basecamp/omarchy/blob/master/config/uwsm/env
https://github.com/basecamp/omarchy/blob/master/default/bash/initValidation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
- Fixed bypr/11435· confirmed
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
No decision has been recorded yet.