Python-based extendable tool

Sylvia van Os d232bd848b Slight UI layout improvements 3 hours ago
docs d946db019d Reflect pext_dev init changes into module development docs 1 week ago
pext d232bd848b Slight UI layout improvements 3 hours ago
pext_dev c96cb53741 Add support for giving an identifier for process_response (does NOT break API) 1 week ago
.gitignore 4c914d1bd2 Make Pext more configurable 2 months ago f3005d5722 Read supported module settings from metadata.json 4 hours ago
LICENSE a07e0ae0b0 Initial commit 1 year ago ae28fcbf1f Make installable 8 months ago 297a22500d One repository provides third-party modules, which are obviously not official 1 week ago
logo.png ac83f3554b Give logo white background 1 month ago
pext.desktop dca876330f File Pext under Utility 5 months ago
screenshot.jpg b3bf11b137 Replace screencast with OMGUbuntu screenshot 3 weeks ago
screenshot2.jpg 2ae05d8062 Add second OMGUbuntu screenshot 3 weeks ago 8b8ef59d3d pext_dev init: Add GPLv3+ LICENSE file 1 week ago
tox.ini 9bc30caccc Make pep257 ignore 7 months ago


Pext logo

Pext Logo by White Paper Fox under Creative Commons Attribution-ShareAlike 4.0, graciously donated by Peers.

ReadTheDocs latest ReadTheDocs stable


Pext stands for Python-based extendable tool. It is built using Python 3 and Qt5 QML and intended to have its behaviour decided by modules. Pext provides a simple window with a search bar, allowing modules to define what data is shown and how it is manipulated.

Much like the leoger (a mix between a tiger and a leopard) in the logo, Pext modules can turn Pext into a completely different beast. From password management to weather information, modules can harness the full power of Python to turn the simple user interface into an useful and powerful application.





sudo pacman -S git python-pip libnotify python-pyqt5 qt5-quickcontrols

Debian (Stretch and later, no Jessie, sorry!)

sudo apt-get install git libnotify-bin python3-pip python3-pyqt5.qtquick qml-module-qtquick-controls


sudo dnf install git libnotify python3-pip python3-qt5 qt5-qtquickcontrols

Nix (any system, not just NixOS)

nix-shell -p git libnotify python3Packages.pip python3Packages.pyqt5 qt5.qtquickcontrols


sudo zypper install git libnotify-tools python3-pip python3-qt5


Before running the Install Certificates command, which is only necessary to be able to retrieve the online module list, please read

brew install python3 qt5 git libnotify
pip3 install pyqt5 urllib3 certifi
/Applications/Python\ 3.6/Install\ Certificates.command

Installation (optional)

Pext does not need to be installed to run. However, if you prefer to install it, you can do so:

# pip3 install . --upgrade

This also installs pext_dev, to aid module development.


Simply start Pext with Python 3. If you have installed Pext using the above command, simply start pext. Otherwise, go to the project's root directory and run python3 pext.

To actually use Pext, you will first have to install one or more modules. Check out the Pext organisation on GitHub or NotABug or use Module -> Install module -> From online module list in the application for a list of modules.

For command line options, use --help.



Installing module dependencies fails

Your distribution may ship with an outdated version of pip. Run pip install --upgrade pip (possibly as root) in a terminal.

Pext's window is completely white

The proprietary NVIDIA driver is known to cause this issue on at least Ubuntu. You can work around this by running sudo apt-get install python3-opengl.

Pext user report:
Ubuntu bug:


I cannot brew/pip install anymore

The Homebrew team completely broke pip's --target flag, which Pext depends on. To work around this, Pext automatically creates a ~/.pydistutils.cfg file which resets the broken Homebrew pip defaults and deletes this file after its done installing module dependencies.

As a side effect, this means that using brew install or pip install while Pext is installing module dependencies may fail. If you cannot use brew install or pip install at all anymore after Pext crashed, please delete ~/.pydistutils.cfg if it exists.

The Homebrew team refuses to fix this issue:


Entry management

  • Escape: Go one level up
  • Ctrl+J / Down arrow: Go one entry down
  • Ctrl+H / Up arrow: Go one entry up
  • Ctrl+F / Page down: Go one page down
  • Ctrl+B / Page up: Go one page up
  • Tab: Tab-complete the current input
  • Enter: Select entry or run command

Tab management

  • Ctrl+T: Open new tab
  • Ctrl+W: Close current tab
  • Ctrl+Tab: Switch to next tab
  • Ctrl+Shift+Tab: Switch to previous tab
  • Alt+<number>: Switch to tab <number>
  • F5: Reload tab, including code changes to the module

Session management

  • Ctrl+Q: Quit and save the currently loaded modules and settings to the profile
  • Ctrl+Shift+Q: Quit without saving to the profile