Skip to content
Tiling tabbed window manager
C Lua Shell HTML Makefile C++ Perl
Branch: master
Clone or download


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add some more categories for the release notes Jan 2, 2020
build Correctly document ALTMETA as Mod4+Shift+ in the manpage (#284) May 31, 2020
contrib Fixed a small bug in contrib/scripts/move_current.lua (#270) Apr 3, 2020
de Don't load a bitmap font when an XFT font is found Oct 7, 2019
ioncore Add default implementation for WRegion:current (#281) May 18, 2020
libextl Cleanup: quiet '-Wextra-semi-stmt' clang warning (#198) Oct 7, 2019
libmainloop Cleanup: quiet '-Wextra-semi-stmt' clang warning (#198) Oct 7, 2019
libtu Remove a tiling when its last frame is removed Jan 7, 2020
man Fail when nroff is not found Oct 29, 2019
mod_menu Support for showing tab numbers while a key is pressed (#103) May 18, 2019
mod_mgmtmode Support for showing tab numbers while a key is pressed (#103) May 18, 2019
mod_notionflux notionflux: complete past colon Nov 7, 2019
mod_query Change query_runfile (View) to use xdg-open by default Oct 27, 2019
mod_sm Merge commit '435631f5cc635e0dcc90f2945cdd93ef7afeab7d' into lgpl May 8, 2019
mod_sp fix segfault in mod_sp due to uninit vars May 8, 2019
mod_statusbar Allow creating the statusbar while brushes aren't available yet (#239) Jan 28, 2020
mod_tiling Remove a tiling when its last frame is removed Jan 7, 2020
mod_xinerama Merge commit '435631f5cc635e0dcc90f2945cdd93ef7afeab7d' into lgpl May 8, 2019
mod_xkbevents Cleanup: quiet '-Wextra-semi-stmt' clang warning (#198) Oct 7, 2019
mod_xrandr Merge commit '435631f5cc635e0dcc90f2945cdd93ef7afeab7d' into lgpl May 8, 2019
notion Honour DESTDIR (#185) Sep 25, 2019
po Remove (stale) german and french translation files (#266) Mar 29, 2020
utils docker: make clean before make and allow call from other directory (#256 Mar 4, 2020
.gitignore Support custom config and ion-statusd under xephyr Jan 7, 2020
AUTHORS Credits (#170) Aug 7, 2019 Code of conduct (#196) Oct 5, 2019 Document developing on Nix (#246) Mar 5, 2020
LICENSE Merge commit '50b28edc865a506c6cce9bf2055867a0abce242f' into lgpl May 4, 2019
Makefile Adapted to support major.minor.patch versioning (#273) Apr 7, 2020 Change references from sourceforge to github (#192) Sep 25, 2019
config.h Merge commit '3ae6b5f7cc83cc211861ae10ed5ee5665b29463d' into lgpl May 7, 2019
install-sh Merge commit '3ae6b5f7cc83cc211861ae10ed5ee5665b29463d' into lgpl May 7, 2019
ion_changelog.txt Merge commit '3ae6b5f7cc83cc211861ae10ed5ee5665b29463d' into lgpl May 7, 2019 Merge commit 'e93d504e6d642197b02a8d50803c94be104dfdf7' into lgpl Jun 16, 2012 Removed mention of semver in error message (#274) May 6, 2020 Debugging (#243) Jan 28, 2020
version.h Merge commit '435631f5cc635e0dcc90f2945cdd93ef7afeab7d' into lgpl May 8, 2019 Allow NOTION_RELEASE environment value and made sh compatible May 3, 2019


Build Status

Copyright (c) the Notion team 2010-2019. Copyright (c) Tuomo Valkonen 1999-2009.

Building and installing

  1. Get the source code.
git clone
  1. In addition to the standard C library headers and the GNU toolchain, you will need the following tools and libraries for building Notion.

    If you want to build the mod_xinerama and mod_xrandr module, which provide enhanced multihead support, you will further need the following libraries.

    If you want to enable support for Xft fonts, you need libxft:

    On a Debian based system, these dependencies are provided by the following packages. build-essential lua5.1 liblua5.1-0-dev libx11-dev libxext-dev libsm-dev gettext libxinerama-dev libxrandr-dev libxft-dev

  2. If the default build settings don't suit you, review and either override values from the environment or in a newly added or make changes directly to

  3. If you want to build some extra modules now or do not want to build some of the standard modules, edit

  4. Run make. Note that make here refers to GNU make which is usually named gmake on systems with some other implementation of make as default.

  5. Run make install, as root if you set $PREFIX in to a directory that requires those privileges.

    YOU SHOULD NOT SKIP THIS STEP unless you know what you are doing. Notion will refuse to start if it can not find all the necessary uncorrupt configuration files either in $PREFIX/etc/notion/ or in ~/.notion/.

  6. How to best set up startx or whatever to start Notion instead of your current window manager depends on your system's setup. A good guess is creating or modifying an executable shell script .xsession in your home directory to start Notion. This should usually (but not always) work if you're using some X display/login manager. If ~/.xsession does not help and you're not using a display manager, modifying ~/.xinitrc or creating one based on your system's xinitrc (wherever that may be; use locate) may be what you need to do. Note that unlike .xsession, a .xinitrc should usually do much more setup than simply start a few programs of your choice.

Some optional installation steps

  1. The F5 and F6 keys expect to find the program run-mailcap to select a program to view a file based on its guessed MIME type. Unless you are using Debian, most likely you don't have it, but any other similar program (or just plain old text editor) will do as well -- just modify the bindings in cfg_notioncore.lua. Of course, if you don't want to use the feature at this time or never, you may simply skip this step. If you want to use run-mailcap, it can be found from the following address, as a source tarball as well:

  2. Notion supports caching known man-pages in a file for faster man-page completion in the F1 man page query. To enable this feature, you must periodically run a cronjob to build this list. To create a system-wide man page cache, run crontab -e (might vary depending on platform) as root and enter a line such as follows:

     15 05 * * * $SHAREDIR/ion-completeman -mksyscache

    Replace $SHAREDIR with the setting from (or if you used autoconf). This example runs daily at 05:15, but you may modify the run times to your needs; see the crontab manual.

    If you can't or do not want to build a system-wide man page cache, run crontab -e as your normal user and replace -mksyscache with -mkusercache above. The cache file will be ~/.notion/mancache.

    It may also be useful to run ion-completeman with the suitable -mk*cache argument once manually to build the initial cache.

    If the MANPATH environment variable is not set on your system and it does not have the manpath command (or it does not print anything sensible), you may also want to set the ION_MANPATH environment variable to the list of paths where the system stores manual pages.


For help on modifying Notion's configuration files, PLEASE READ THE DOCUMENT "Configuring and extending Notion with Lua" available from the Notion web page, listed at the top of this file.

Questions, comments, problems?

If the available documentation does not answer your question, please join our IRC channel, #notion on freenode.


Contributions to Notion are very welcome! Please join us on GitHub. The Notes for the module and patch writer might be helpful.


Notion was written by the Notion team, based on Ion which was written by Tuomo Valkonen.

The dock module was written by Tom Payne and Per Olofsson.

utils/ion-completefile/ion-completefile.c is based on editline, (c) 1992 Simmule Turner and Rich Salz. See the file for details.

The code that de/fontset.c is based on was apparently originally written by Tomohiro Kubota; see

Various (minor) patches have been contributed by other individuals unlisted here. See the mailing list archives and the darcs source repository history (previously at For translators see the individual .po files in po/.

See libtu/README for code by others integrated into libtu.

You can’t perform that action at this time.