README.md (2590B)
1 # Desktop notifications, the UNIX way 2 3 tmisu is a notification daemon based on tiramisu that outputs notifications 4 to STDOUT in order to allow the user to process notifications any way they 5 prefer. 6 7 tmisu as originally a tiramisu rewrite without GLib, and using libdbus instead. 8 9 # Why? 10 11 By allowing users to determine what is done with notifications, there are 12 infinitely more possibilities presented to the end-user than a simple 13 notification daemon that displays a block of text on the screen and nothing 14 more. 15 16 Users could have notifications display in a pre-existing bar, make a control 17 panel of some sort that shows notifications, push notifications to their phone 18 if their computer has been idle for an amount of time, make notifications more 19 accessible with text-to-speech, and so much more. 20 21 # Installation 22 23 Clone the repository and build the project. Then move tmisu to a location that 24 is specified in `$PATH`. 25 ``` 26 $ git clone https://git.inz.fi/tmisu/ 27 $ cd ./tmisu 28 $ make 29 30 # cp ./tmisu /usr/local/bin/tmisu 31 ``` 32 #### Note that the use of a pound symbol (#) denotes escalated privileges. 33 #### On most Linux systems this can be done with the usage of `sudo` 34 35 # Usage 36 37 Redirecting output of tmisu to the input of another program is the ideal 38 methodology to using tmisu. 39 ``` 40 tmisu | your-application 41 ``` 42 43 By default tmisu prints the summaries of all current notifications on one line 44 or empty line if there are no notifications. 45 46 In JSON mode, tmisu will output all current notifications on one line as an 47 JSON array. 48 49 tmisu can also be made to call external programs when notifications arrive, 50 the programs are expected to act like [herbe](https://github.com/dudik/herbe), 51 staying running until notifications has been handled, or it has expired, and 52 return 0 if an action should be performed. tmisu will then signal the first 53 action defined for the notification. 54 55 If the notifications expire, or are explicitly closed, tmisu will signal the 56 invoked program with SIGTERM. 57 58 ### Example of default output 59 60 ``` 61 $ tmisu 62 ``` 63 64 ``` 65 New email in Evolution 66 67 ``` 68 69 ### Example of JSON output 70 71 ``` 72 $ tmisu -j 73 ``` 74 75 ``` 76 [{"app_name": "evolution-mail-notification", "app_icon": "evolution", "replaces_id": 0, "timeout": -1, "hints": {"desktop-entry": "org.gnome.Evolution", "urgency": 1}, "actions": {"Show INBOX": "default"}, "summary": "New email in Evolution", "body": "You have received 4 new messages."}] 77 [] 78 ``` 79 80 #### Note that only a single process can claim the org.freedesktop.Notifications name at a given time, so any other running notification daemon must be killed before running tmisu.