Commit graph

930 commits

Author SHA1 Message Date
Daniel Eklöf
ea2cc50194 module/network: process_reply() -> parse_reply() 2018-12-31 13:44:49 +01:00
Daniel Eklöf
b2af90abbc module/network: IFA_ADDRESS: include add/del in log message 2018-12-31 13:42:32 +01:00
Daniel Eklöf
24842d9b28 module/network: RTM_NEWLINK/DELLINK: don't do anything if nothing's changed
We're only interrested in a few of the attributes. Thus, there's no
need to log or update anything, if none of those attributes haven't
changed.
2018-12-31 13:40:43 +01:00
Daniel Eklöf
dcf8051f1a module/network: break out message parsing code
This also allows us to actually handle errors (by aborting run())
2018-12-31 13:36:44 +01:00
Daniel Eklöf
8352d89491 module/network: break out message receiving code 2018-12-31 13:27:37 +01:00
Daniel Eklöf
b3f3f91dc2 module/network: drop libnl dependency, use raw netlink sockets instead 2018-12-31 13:19:01 +01:00
Daniel Eklöf
0ea4e5a2d8 log: LOG_ERRNO_P(), like LOG_ERRNO(), except user provides errno value 2018-12-31 13:18:22 +01:00
Daniel Eklöf
4c4f0ce7a0 module: network: monitor ethernet interfaces
State exposed (tag names):

* name: the interface name ("eth0" etc)
* index: the interface index, "ifindex"
* state: operational state (down, up etc)
* mac: the Ethernet hardware address
* ipv4: the *last* IPv4 address added to the interface
* ipv6: the *last* IPv6 address added to the interface

State we monitor (for changes):

* state
* ipv4 addresses
* ipv6 addresses
2018-12-30 20:40:10 +01:00
Daniel Eklöf
c795718ad7 config: i3: handle the 'spacing' attribute 2018-12-30 20:39:45 +01:00
Daniel Eklöf
500aebe9ef module/mpd: free connection object when failing to connect 2018-12-30 14:04:40 +01:00
Daniel Eklöf
07d6564e79 module/mpd: raise connection retry interval from 1s -> 10s 2018-12-30 12:40:58 +01:00
Daniel Eklöf
b7e7ad522f remove module subfolders 2018-12-29 22:18:08 +01:00
Daniel Eklöf
52f13dec3d dynlist: move to particles folder 2018-12-29 22:13:00 +01:00
Daniel Eklöf
86425fbe48 config: all particles now take a 'on_click_template' argument 2018-12-29 21:23:27 +01:00
Daniel Eklöf
3eebdbb5b0 particle/ramp: fix on_mouse() regression
Now that we have a wrapper exposable, we need to implement
on_mouse(). In it, we need to check if we have our own on-click
handler, or else, check if mouse is inside the sub-exposable, or in
the left- or right margin.
2018-12-29 21:18:07 +01:00
Daniel Eklöf
e4fab9a20b particle/map: fix on_mouse() regression
Now that we have a wrapper exposable, we need to implement
on_mouse(). In it, we need to check if we have our own on-click
handler, or else, check if mouse is inside the sub-exposable, or in
the left- or right margin.
2018-12-29 21:17:08 +01:00
Daniel Eklöf
22507ae26c particle: add utility function to render a particle's decoration 2018-12-29 21:00:03 +01:00
Daniel Eklöf
6f5572ff6b particle/map: implement left/right margin
This is done by wrapping the selected particle/exposable in a
ramp-specific exposable. This way, we can add the margins before
delegating begin_expose() and expose() to the selected exposable.
2018-12-29 20:54:41 +01:00
Daniel Eklöf
a3322b0a8a particle/ramp: implement left/right margin
This is done by wrapping the selected particle/exposable in a
ramp-specific exposable. This way, we can add the margins before
delegating begin_expose() and expose() to the selected exposable.
2018-12-29 20:50:23 +01:00
Daniel Eklöf
5fc29f7bbe particles: name private structs and variables consistently 2018-12-29 20:40:25 +01:00
Daniel Eklöf
3135f1d36d particle: all particles now take margin arguments
Ramp and map however, doesn't allow any values other than 0 (yet).
2018-12-29 20:33:38 +01:00
Daniel Eklöf
bd251cbf9f module/mpd: only auto-progress 'elapsed' when state is PLAYING 2018-12-29 18:33:00 +01:00
Daniel Eklöf
5a2f4a3ece module/battery: run(): return 0 on success 2018-12-29 18:01:40 +01:00
Daniel Eklöf
62997eda8c bar: run(): only return 0 if all modules exited with 0 2018-12-29 18:01:21 +01:00
Daniel Eklöf
449210cc07 main: use bar's return value as exit value 2018-12-29 17:57:30 +01:00
Daniel Eklöf
10877d7c2e main: error handling 2018-12-29 17:56:26 +01:00
Daniel Eklöf
825c5c82b5 main: load config file from ~/.config/f00bar/config.yml 2018-12-29 17:54:33 +01:00
Daniel Eklöf
6d082f9f99 bar: disable debug logging 2018-12-29 17:54:24 +01:00
Daniel Eklöf
1f182b862e particle/progress-bar: allow user to configure an on-click handler
Since we're typically interrested in *where* (on the progress-bar) the
user clicked, we need a way to pass the clicked position to the
handler.

Normally, the on-click handler is expanded when a particle
instantiates its exposable. At this point, we (obviously) don't have
the click position.

This is solved by expanding the handler a second time, when the bar is
clicked.

Thus, the user can use the "{where}" tag in the click handler. "where"
will be expanded to a percentage value (0-100).
2018-12-29 17:36:34 +01:00
Daniel Eklöf
bd365405d7 particle/list: remove excessive debug output 2018-12-29 17:14:49 +01:00
Daniel Eklöf
421f1466df bar: reset cursor and return when mouse is at a border 2018-12-29 17:13:38 +01:00
Daniel Eklöf
7da09530b8 particle/string: tags_expand_template() now returns NULL if template is NULL 2018-12-29 17:12:11 +01:00
Daniel Eklöf
6857b99c56 particle/list: tags_expand_template() now returns NULL if template is NULL 2018-12-29 17:11:54 +01:00
Daniel Eklöf
32b4e9986d tag: tags_expand_template(): return NULL if template is NULL 2018-12-29 17:10:54 +01:00
Daniel Eklöf
85801a5deb particle/string: expand on_click handler before passing to exposable 2018-12-29 17:10:10 +01:00
Daniel Eklöf
aee4805df8 particle/list: expand on_click handler before passing to exposable 2018-12-29 17:09:57 +01:00
Daniel Eklöf
ed86061532 particle: refactor 2018-12-29 17:04:39 +01:00
Daniel Eklöf
ab67d036ae tags: break out string formatting from particle/string 2018-12-29 17:03:41 +01:00
Daniel Eklöf
620017860e particle: handle ON_MOUSE_CLICK
If a particle has an on-click handler, execute it when we receive an
ON_MOUSE_CLICK event.

This is done by first tokenizing the command string. We currently
handle one level of quotes, but no escape characters.

Then, fork(). Main process waits for child to finish. Child daemonizes
and then execvp() the tokenized argument vector.
2018-12-29 16:24:22 +01:00
Daniel Eklöf
abc4ff0402 bar: generate exposable ON_MOUSE_CLICK events on button release events 2018-12-29 16:23:27 +01:00
Daniel Eklöf
88bcf425bf particle/list: on_click handler 2018-12-29 16:15:37 +01:00
Daniel Eklöf
68606e49ed config: clean up particle_list_from_config() 2018-12-29 16:14:09 +01:00
Daniel Eklöf
b2082e38ed yml: support multiple merge values
This adds support for merging multiple values, using a list of
dictionaries:

    foo:
      <<: [*foo, *bar]
2018-12-29 16:06:04 +01:00
Daniel Eklöf
36e3bdd9fd particle/list: override on_mouse()
If we have our own on_click handler, call the default
implementation. Otherwise, check which sub-particle the mouse is over,
and delegate the on_mouse() call.
2018-12-29 14:46:29 +01:00
Daniel Eklöf
cecab625ac particle: implement a default on_mouse handler
Which changes the cursor to a hand when there's a non-NULL on-click
handler.
2018-12-29 14:40:45 +01:00
Daniel Eklöf
9e5dbfe27d particle/string: constructor now takes an 'on_click_template' 2018-12-29 14:38:10 +01:00
Daniel Eklöf
5164d1d6ea particle: add an 'on_click_template' to base constructor.
This is intended to be a format-like string, with the possibility to
use tag formatters.

The expanded string will later be passed to the system() call.
2018-12-29 14:36:18 +01:00
Daniel Eklöf
6019129acc config: clean up particle_string_from_config() 2018-12-29 14:30:09 +01:00
Daniel Eklöf
7670473735 bar: call exposable's on_mouse() on mouse motion events
For this to be doable, the bar no longer destroys the module's
exposables after rendering them. Instead, we keep them around, letting
them represent the "current" content of the bar.

Then, when we receive a mouse motion event, we can iterate the
exposables and calculate which one of them the mouse is over, and call
its on_mouse() function.
2018-12-29 12:56:10 +01:00
Daniel Eklöf
1cb268f2e7 exposable: define an 'on_mouse' interface function 2018-12-29 12:55:51 +01:00