Install and Remove kw#

Package Dependencies#

We currently support arch, debian and fedora for automatic dependencies installation. These are the current dependencies for Arch:

bash git tar pulseaudio libpulse dunst imagemagick graphviz texlive-bin librsvg bzip2 lzip lzop zstd xz bc perl-authen-sasl perl-io-socket-ssl sqlite3 pv rsync ccache python-setuptools dialog curl perl-xml-xpath coreutils b4 procps-ng pciutils libnotify

These are the current dependencies for Debian:

git tar python3-docutils pulseaudio-utils dunst sphinx-doc imagemagick graphviz dvipng python3-venv latexmk librsvg2-bin texlive-xetex python3-pip bzip2 lzip xz-utils lzop zstd bc git-email sqlite3 pv rsync ccache dialog curl libxml-xpath-perl coreutils b4 procps pciutils libnotify-bin

These are the current dependencies for Fedora:

git tar pulseaudio-utils dunst graphviz texlive-dvipng latexmk librsvg2 texlive-xetex bzip2 lzip xz lzop zstd bc git-email pv rsync ccache patch sqlite dialog curl perl-XML-XPath coreutils b4 procps-ng pciutils libnotify

If you want to build the documentation as it is displayed on our website you also need this pip package:

jinja2>=3 sphinx-book-theme


Our base support is Ubuntu LTS. i.e., the dependency packages installed in your system should be at least as new as those present in Ubuntu LTS.


If you want to use Qemu, we suggest the following steps:

  1. Create a Qemu image;

  2. Create a working directory in your host machine at: mkdir -p ~/p/mount;

  3. After you have your working QEMU image, we recommend you to setup basic stuff (this can vary depending on the distribution you choose - kernel setup, ssh, etc);


Manual install#

In the kw’s directory, type:

./ -i
bash --login

This command will install kw in ~/.local/, and append the following lines at the end of your .bashrc.:

# kw
PATH=$HOME/.local/bin:$PATH # kw
source /home/$USER/.local/lib/kw/

If you use another shell (ksh, for example), you will need to manually add the path to kw to PATH environment variable.

To check if the installations was ok, open another terminal and type:

kw help

Package install#


  • Update using kw self-update:

    The kw self-update feature allows you to update kw without having to clone the project’s repository and manually install kw. For more information see kw-self-update.

  • Update manually:

    You can update kw manually by pulling the project’s repository and installing kw again (./ -i removes legacy files and installs new ones).


There’s two way to remove kw: soft and hard way. The soft way (recommended method) does not remove ~/.kw files under kw management and you can type:

./ --uninstall # or just -u


Beware that the following command is dangerous! Use it only if you are entirely aware of what are you doing. We do not recommend it!

If you want to remove all files under kw management (e.g., ~/.kw files and data statistic), you can use:

./ --completely-remove

Global Configuration File#

All the default configurations adopted by kworflow can be seen at $XDG_CONFIG_HOME/kw/kworkflow_template.config; this config file has a comment on each configuration option. Finally, it is essential to highlight that kw loads the default configurations; next, it tries to find a local configuration file (detailed ahead) and overwrites the global options with the ones read from the local config file. In summary, the local config has higher precedence than the global config.

Local Configuration File#

Kw allows you to have a specific set of configuration per project. For example, if you have a particular kernel tree named ‘drm-work’ and want a different configuration from the default you can follow these steps:

  1. copy your config file (i.e. $XDG_CONFIG_HOME/kw/kworkflow.config) to /path/to/your/kernel/tree/drm-work/kworkflow.config


The default name must be kworkflow.config

  1. Change the options inside as you want. You can also remove settings you do not want to customize; In this case, kw will read them from the global configuration file.

  2. Done! Every time you execute any command in the root dir of drm-work the local configuration file will be read. And if the file does not exist, the default settings will be used.