Files
illogical-impulse/scriptdata/uv
Celestial.y aa15572c68 Add README for Python package management
Added instructions for managing Python packages and using virtual environments.
2025-10-07 13:16:11 +08:00
..

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.
  • 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.