Files
illogical-impulse/scriptdata/uv/README.md
T
2025-10-07 13:22:36 +08:00

2.5 KiB

How to add/remove python package?

  1. Edit requirements.in. You may refer to PyPI for possible package names.
  2. Run uv pip compile requirements.in -o requirements.txt in this folder.

How will the python packages get installed?

  • They will be installed to the virtual environment $ILLOGICAL_IMPULSE_VIRTUAL_ENV.
  • The default value of $ILLOGICAL_IMPULSE_VIRTUAL_ENV is $XDG_STATE_HOME/quickshell/.venv.
    • The default value of $XDG_STATE_HOME is $HOME/.local/state.
    • Currently we use env = ILLOGICAL_IMPULSE_VIRTUAL_ENV, ~/.local/state/quickshell/.venv in ~/.config/hypr/hyprland/env.conf to set this environment variable. Hyprland seems to have problem dealing with recursive variable so we can not use $XDG_STATE_HOME/quickshell/.venv (according to some issues when we were using AGS for illogical-impulse).
  • See the function install-python-packages() defined in /scriptdata/lib/package-installers.sh for details.

How to use the python packages installed through here?

Basically you'll need to activate the virtual environment first:

source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate

then use the python package inside it; After that you probably need to deactivate it:

deactivate

Situation 1: Call the command directly

Take kde-material-you-colors as example.

source "$(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate"
kde-material-you-colors "$mode_flag" --color "$color" -sv "$sv_num"
deactivate

Situation 2: Use python script (wrapped)

Take generate_colors_material.py as example:

source "$(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate"
python3 "$SCRIPT_DIR/generate_colors_material.py" "${generate_colors_material_args[@]}" \
  > "$STATE_DIR"/user/generated/material_colors.scss
"$SCRIPT_DIR"/applycolor.sh

Situation 3: Use python script (shebang)

Note: This method is only for simple situation. It can not deal with complex arguments (e.g. filaname containing spaces) passed to the python script.

Take generate_colors_material.py as example, add the shebang below to its beginning:

#!/usr/bin/env -S\_/bin/sh\_-c\_"source\_\$(eval\_echo\_\$ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate&&exec\_python\_-E\_"\$0"\_"\$@""

Then you should run the script directly, i.e. ./generate_colors_material.py, not python3 generate_colors_material.py.