1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
|
dzen
=====
A general purpose messaging, notification and launcher programm.
Features
--------
* scritable in any language
* single line and/or multi
line windows
* menu functionality
* flexible event/action
mechanism
* hideable, collapsable
Requirements
------------
In order to build dzen you need the Xlib and phtread header files.
Installation
------------
Edit config.mk to match your local setup (dzen is installed into
the /usr/local namespace by default).
Afterwards enter the following command to build and install dzen (if
necessary as root):
make clean install
Running dzen
------------
dzen accepts a couple of options:
-fg foreground color
-bg background color
-fn font
-a autohide, see 1)
-l lines, see 2)
-e events and actions, see 3)
-m menu, see 4)
-p persistent, never time out
-x x position
-y y position
-w width
-tw title window width
-v version information
Termination:
------------
dzen2 uses to different approaches to terminate itself:
* If EOF is received -> terminate
- unless the '-p' flag is set
* If mouse button3 is clicked -> terminate
- this is the default behaviour, see 3)
Return values:
--------------
0 - dzen received EOF
1 - some error occured, inspect the error message
user defined - set with 'exit:retval' action, see 3)
1) Option "-a": Autohide
------------------------
Hides the title window as soon as the pointer leaves it (default). This
very much resembles autohiding panels known from most desktops.
Note: See the 3) for events/actions to use with autohide.
2) Option "-l": Slave window
--------------------------------
Enables support for displaying multiple lines. The parameter to "-l"
specifies the number of lines to be displayed.
These lines of input are held in the slave window which becomes active as soon
as the pointer enters the title (default action) window.
If the mouse leaves the slave window it will be hidden unless it is set
sticky by clicking with Button2 into it (default action).
Button4 and Button5 (mouse wheel) will scroll the slave window up
and down if the content exceeds the window height (default action).
3) Option '-e': Events and actions
----------------------------------
dzen allows the user to associate actions to events.
The command line syntax is as follows:
-e 'event1=action1:option1:...option<n>,...,action<m>;...;event<l>'
Every event can take any number of actions and every action can take any number
of options. (Currently limited to 256 each)
An example:
-e 'button1=exec:xterm:firefox;entertitle=uncollapse,unhide;button3=exit'
Meaning:
button1=exec:xterm:firefox;
on Button1 event (Button1 press on the mouse) execute xterm and
firefox.
(Note: xterm and firefox are options to the exec action)
entertitle=uncollapse,unhide;
on entertitle (mouse pointer enters the title window) uncollapse
multiline window and unhide the title window
button3=exit
on button3 event exit dzen
Supported events:
button1 Mouse button1 released
button2 Mouse button2 released
button3 Mouse button3 released
button4 Mouse button4 released (usually scrollwheel)
button5 Mouse button5 released (usually scrollwheel)
entertitle Mouse enters the title window
leavetitle Mouse leaves the title window
enterslave Mouse enters the slave window
leaveslave Mouse leaves the slave window
sigusr1 SIGUSR1 received
sigusr2 SIGUSR2 received
Supported actions:
exec:command1:..:n execute all given options
menuexec executes selected menu entry
exit:retval exit dzen and return 'retval'
print:str1:...:n write all given options to STDOUT
menuprint write selected menu entry to STDOUT
collapse collapse multiline window
uncollapse uncollapse multiline window
stick stick multiline window
unstick unstick multiline window
togglestick toggle sticky state
hide hide title window
unhide unhide title window
scrollup scroll slave window one line up
scrolldown scroll slave window one line down
Note: If no events/actions are specified dzen defaults to:
-e 'entertitle=uncollapse;leaveslave=collapse;
button1=menuexec;
button2=togglestick;button3=exit:13;
button4=scrollup;button5=scrolldown'
If you define any events/actions, there is no default behaviour,
i.e. you will need to specify _all_ events/actions you want to
use.
Note: The hide/unhide actions can only be used if '-a' is supplied on
the command line. This is subject to change as soon as a
autohide action will be introduced.
4) Option '-m', Menu
--------------------
If menu mode is activated the line under the pointer will be
highlighted.
All actions beginning with "menu" work on the selected menu entry.
Note: Menu mode only makes sense if '-l <n>' is specified!
Examples:
---------
* Display message and timeout after 10 seconds:
(echo "This is a message"; sleep 10) | dzen2 -bg darkred -fg grey80 -fn fixed
* Display message and never timeout:
echo "This is a message"| dzen2 -p
* Display updating single line message:
for i in $(seq 1 20); do A=${A}'='; print $A; sleep 1; done | ./dzen2
* Display header and multiline message:
(echo Header; cal; sleep 20) | dzen2 -l 8
Displays "Header" in the main alert window and
the output of cal in the 8 lines high multiline
window.
* Display updating messages:
(echo Header; while true; do echo test$((i++)); sleep 1; done) | dzen2 -l 12
The slave window will update contents if new input has arrived.
* Display log files:
(su -c "echo LOGFILENAME; tail -f /var/log/messages") | dzen2 -l 20 -x 100 -y 300 -w 500
* Monthly schedule with remind:
(echo Monthly Schedule; remind -c1 -m) | dzen2 -l 52 -w 410 -p -fn lime -bg '#e0e8ea' -fg black -x 635
* Simple menu:
echo "Applications" | dzen2 -l 4 -p -m < menufile
* Menu without any files:
{echo Menu; echo -e "xterm\nxclock\nxeyes\nxfontsel"} | dzen2 -l 4 -m -p
* Extract PIDs from the process table
{echo Procs; ps -a} | dzen2 -m -l 12 -p -e 'button1=menuprint;button3=exit;
button4=scrollup;button5=scrolldown;entertitle=uncollapse;leaveslave=collapse'
| awk '{print $1}'
|