A notification system for tiling window managers
C++ QMake
Switch branches/tags
Nothing to show
Clone or download
sboli Merge pull request #74 from joekienzle/feature/offset
Added offset setting (Resolves #60)
Latest commit 5b92ac5 Dec 16, 2017



A notification system for tiling window managers. twmn is two things:

twmnc: command line tool to send notifications to twmnd. You can also use notify-send for a similar purpose, but twmnc is more powerful. See twmnc --help for more information.

twmnd: daemon listening to notification requests and showing them one after another. Configure it at ~/.config/twmn/twmn.conf. The file is generated the first time twmnd is launched.

Notifications are shown in a one-line bar called the notification slide. They can be navigated through and activated with shortcuts.

See twmn.conf for more information.

About twmn.conf

; Screen number to display notifications on when using a multi-head desktop.
screen=  ; 0 indexed screen number

; WARNING: Deprecated by "screen"
; Absolute position from the top-left corner of the slide. You may need it for a multi-screen setup.
; You still have to set position in order to choose the slide animation. If empty, twmnd will try
; to figure out where to display the slide according to your desktop size and the slide position.
absolute_position=  ; Supported format: WxH. Width and Height being integers.

; Background color.
background_color=black  ; RBG hex and keywords (eg. lightgray) are supported.

; An icon for the layout. Useful only for a layout file.
icon=  ; Path to image file. Optional.

; Font family.

; Font size.
font_size=13  ; In pixel.

; Font variation.
; accepted values are:
; oblique, italic, ultra-light, light, medium, semi-bold, bold, ultra-bold, heavy, ultra-condensed,
; extra-condensed, condensed, semi-condensed, semi-expanded, expanded, extra-expanded, ultra-expanded.

; Text color.
foreground_color=white  ; RBG hex and keywords (eg. lightgray) are supported.

; Height of the slide bar. Useful to match your tiling window manager's bar.
height=18  ; In pixel.

; Position of the notification slide.
position=top_right  ; Accepted values: top_right (tr), top_left (tl), bottom_right (br),
                    ; bottom_left (bl), top_center (tc), bottom_center (bc), center (c).

; moves the position of the slide in +/- pixels on the x or y axis (e.g. "+50" or "-100")
offset_x=+0 ; default is 0
offset_y=+0 ; default is 0

; The animation to use when the slide appear
in_animation=38 ; see https://doc.qt.io/qt-5/qeasingcurve.html#Type-enum for types

; The in animation's duration
in_animation_duration=1000 ; in milliseconds

; The animation to use whe the slide is closing

; The out animation's duration
out_animation_duration=1000 ; in milliseconds

; Enable or disable notification bounce when changing notification
bounce=true  ; true or false

; Change bounce duration
bounce_duration=500 ; in milliseconds

; If the character length is more then max_length the text is cut off and "..." is appended
max_length = -1 ; default is -1 (which means: don't cut off)

; An icon. You can add as many as you want.
NAME=  ; Path to image file. NAME being the icon's custom name.

; Program/command to be executed on notification activation.
activate_command=  ; Path to command.

; Time each notification remains visible.
duration=3000  ; In millisecond.

; Enable or disable shortcuts.
enable_shortcuts=true  ; true or false.

; Host address to listen on for notifications.

; UDP port used for notifications.

; Program/command to play sound with.
sound_command=  ;  Path to command. Leave empty for no sound.


For Arch Linux users, twmn is on the AUR.

Otherwise you can install twmnd and twmnc manually:

  1. install boost and qt if they weren't before, including the widgets and x11extras qt libraries
  2. git clone https://github.com/sboli/twmn.git to get twmn
  3. cd twmn/
  4. qmake to generate a Makefile
  5. make to compile
  6. sudo make install to install twmnd and twmnc in /usr/local/bin. Make sure this folder is in your $PATH environment variable. (export PATH=$PATH:/usr/local/bin)
  7. for twmnd to be always running, add it to your .xinitrc, rc.conf or else

The storage_notifier example requires dbus-python to be installed. The mpd_notifier example requires python-mpd to be installed and running.