Commit graph

51 commits

Author SHA1 Message Date
tobi-wan-kenobi
9f89e3a657 [core] make bumblebee more reactive
- set default delay to 0
- split input reading into 2 threads
- get rid of polling
2021-03-13 14:10:30 +01:00
tobi-wan-kenobi
8d88b23947 [modules] add a module "keys" that shows whether a key is pressed
also, add backend functionality to hide individual widgets of a module.
2021-03-13 13:17:20 +01:00
tobi-wan-kenobi
7d0d1455c8 [core/module] Add fallback for user module loading
If importlib.machinery is not present, fall back to importlib.util to
load the module by its absolute name.

hopefully fixes #763
2021-03-09 19:12:59 +01:00
Michal Cieslicki
618ebbeccc Add parameter to specify a configuration file 2021-02-20 13:50:31 +01:00
tobi-wan-kenobi
a27c284869 [core/module] fix failing unit test
wrong error handling again
2021-01-17 15:29:44 +01:00
tobi-wan-kenobi
beca26c2bf [core/config] Allow modules to be hidden when in critical/error state
When a module is in critical state, the user can now hide the module
(e.g. if pulseaudio fails to load).

fixes #746
2021-01-17 15:21:40 +01:00
tobi-wan-kenobi
45c0a382c9 [core/module] fix load error when no user module exists 2021-01-17 15:17:14 +01:00
tobi-wan-kenobi
21ded8f640 [core] Allow module loading from user directory
If a module fails to load from both core and contrib, fall back to
loading by file name from "~/.config/bumblebee-status/modules/<name>.py"

fixes #757
2021-01-17 14:18:58 +01:00
tobi-wan-kenobi
7b1659a1b5 [core/theme] add /usr/share as theme directory
add a theme directory /usr/share/bumblebee-status/themes for system-wide
theme installation.

fixes #753
2020-12-20 10:23:06 +01:00
tobi-wan-kenobi
a94114dd94 [core/module] better error reporting for failed module loads
if a module fails to load, explicitly log errors for core and contrib in
the error log, but be a bit less verbose (and less confusing) in the
module error message itself.

fixes #747
2020-12-19 13:07:29 +01:00
tobi-wan-kenobi
fa66873582 [core/theme] add xresources support
add support for reading foreground and background, and colors, from
xresources.py

many thanks to @Aliuakbar for the addition!

fixes #731
2020-12-07 09:01:08 +01:00
w1kl4s
1a7ae9ecc6 Fix Python 3.9 compatibility
Replaced threading.Thread.isAlive() with threading.Thread.is_alive()
2020-10-14 18:07:29 +02:00
tobi-wan-kenobi
905f71fa52 [core] fix broken "sparse" updates
c77f3aa accidentially broke "sparse" updates (i.e. updates that do not
trigger during each update interval).

Introduce a new update parameter, "force", to model the use case "update
everything on SIGUSR1".

fixes #692
2020-08-28 17:14:05 +02:00
Joshua Barrass
c77f3aa3bc
Force update using USR1 signal 2020-08-11 00:45:13 +01:00
tobi-wan-kenobi
df29627983 [core/doc] add autogenerated warning to modules.rst 2020-07-18 08:14:23 +02:00
tobi-wan-kenobi
72045b2318 [core/config] make configurable module list work
configparser doesn't seem to have direct array support,
so use format.aslist() to get a list of modules

fixes #678
2020-07-09 07:04:45 +02:00
tobi-wan-kenobi
a9f50f1b51 [core/config] add "core" config section
move theme and modules into a "core" config section
2020-07-09 07:04:22 +02:00
tobi-wan-kenobi
057f894d52 [core/config] change preferred theme source
now, it works like this:

- if present, use what's on the CLI
- if not, use what's present in the config
- fallback is "default"

see #679
2020-07-09 06:56:43 +02:00
ColdFire
aac2316d74
Updating config parser 2020-07-06 14:20:41 +05:30
tobi-wan-kenobi
227a23fdb5 [core/theme] fix mergeing of iconsets
iconsets should only overwrite parameters that are *not* set in the main
theme file.

fixes #666
2020-06-29 20:07:24 +02:00
tobi-wan-kenobi
9136ebd321 [core/input] clear previous input registrations
make sure that for a given event (widget/object/module, whatever), only
a *single* input event per button can be registered at one time.

the problem otherwise is with modules that re-register their widgets
with the same IDs (cmus, spotify, etc.): Each time the widget is
re-created (each intervall, typically), it re-registers an input event,
creating an always longer list of callbacks being executed when the
button is clicked (not speaking of the memory leak this introduces).

fixes #668
2020-06-29 07:44:22 +02:00
tobi-wan-kenobi
6b09be1993 Revert "[core/theme] Make theme iconsets *not* override settings"
This reverts commit 320bba97d0.
2020-06-28 20:09:55 +02:00
tobi-wan-kenobi
320bba97d0 [core/theme] Make theme iconsets *not* override settings
Make sure that iconsets used as part of a theme do *not* override
anything already existing inside the theme.

Only iconsets that are manually specified can override settings in the
theme now (because those, you typically specify on the CLI).

TODO: Write unit test for this

fixes #666
2020-06-28 20:01:08 +02:00
tobi-wan-kenobi
72deb7eaf8 [modules] add speed test module 2020-06-25 20:34:35 +02:00
Tobias Witek
441e7d5041 [core] fix minimize for all modules (nic, traffic, etc.)
make it possible to toggle the display state of a widget between
"displayed" and "minimized" also for modules that re-create their
widgets during each iteration.

see #661
2020-06-23 20:03:17 +02:00
Tobias Witek
34dadadf90 [core] re-enable minimize of widgets
by default, allow toggling the minimized state of a widget via the
middle mouse and draw a single unicode char instead of the actual
widget, maintaining all states.

fixes #661
2020-06-23 15:51:14 +02:00
Tobias Witek
b2e92d816d [tests] add pytest for core.output
see #642
2020-06-20 14:51:49 +02:00
tobi-wan-kenobi
16269ff01e [core/input] add variables to custom cli calls
when specifying event bindings via CLI (e.g. disk.left-click=thunar),
allow for variables ({instance} and {name}, in particular).

fixes #650
2020-06-09 20:29:51 +02:00
tobi-wan-kenobi
ba82f5a50f [core/theme] Fix loading of iconsets
* First, make iconsets override anything already present in the "base"
configuration
* Second, make sure that CLI provided iconsets have higher priority than
"built-in" ones

see #648
2020-06-06 15:59:19 +02:00
tobi-wan-kenobi
034e8eefb9 [core/theme] make iconsets take precedence over "main" theme
see #648
2020-06-05 20:10:50 +02:00
tobi-wan-kenobi
cb9a60668a [core/theme] Fix detection of "best matching theme"
Previous code accepted the "first" hit in a theme - particularly, if a
module is called "A" and a *different* module "B" uses "A" as state, a
widget of module B with state A would be themed as *module* A, wrongly.

Essentially, made sure that the last (most specific) themeing "wins".

fixes #647
2020-06-04 20:56:31 +02:00
tobi-wan-kenobi
23d7222576 [core/theme] take alias into consideration when themeing
see #643
2020-06-03 07:59:09 +02:00
tobi-wan-kenobi
5e40dfb28a [all] small fixed picked up by pytest
- unicode stuff
- make all regexps regex strings
2020-06-02 20:13:39 +02:00
tobi-wan-kenobi
9cadcee844 [core/events] simplify args/kwargs detection 2020-06-01 11:35:26 +02:00
tobi-wan-kenobi
547874dafd [core/module] allow modules to perform updates in background
a module can now set `self.background = True` in its `__init__()` method
to make sure its update method is invoked in a separate thread.

also, do a PoC implementation of this for the github module.

TODO: add this to dev doc

see #640
2020-05-30 17:22:02 +02:00
Tobias Witek
f1ce5e162a [theme] load custom iconset first
the "merge" algorithm only fills in missing elements - i.e. the most
important pieces of a data structure must be filled in first. since the
iconset specified on the CLI takes precedence over anything present in
the config, load the CLI-provided iconset *first*.

hopefully fixes #634
2020-05-26 07:56:04 +02:00
tobi-wan-kenobi
3d14931cb7 [docs] add new module 2020-05-23 16:55:24 +02:00
tobi-wan-kenobi
922575fcda [core/widget] make arbitrary modules scrollable
Use a boolean parameter "scrolling" that's applied generically to
modules to allow arbitrary modules to scroll.

see #606

TODO: Add to documentation
2020-05-18 13:13:06 +02:00
tobi-wan-kenobi
e359c75603 [core/widget] remove module from widget initializer 2020-05-18 12:59:47 +02:00
tobi-wan-kenobi
1355a7e5d3 [core/decorators] add docstrings 2020-05-16 15:28:15 +02:00
tobi-wan-kenobi
a697500491 [core] add debugging around click events
log commandline outputs and errors. allow input handlers to be
configured as "waiting" for debugging purposes.

see #628
2020-05-16 15:16:23 +02:00
tobi-wan-kenobi
02a80840a1 [core] more black'ing 2020-05-16 12:00:55 +02:00
tobi-wan-kenobi
eea3c758de [core/input] Invoke commands in a subshell
add shell capability to util.cli and make sure that the input module
uses that to reliably spawn whatever command the user wants to run.

see #628
2020-05-16 11:43:43 +02:00
Pavle Portic
a8df4a5f9d
Handle n+1 characters in the scrolling decorator 2020-05-15 20:31:37 +02:00
tobi-wan-kenobi
3bb2fb8247 [core/module] add missing registration of input events via CLI
see #628
2020-05-15 19:59:13 +02:00
tobi-wan-kenobi
835ed070e5 [core/module] Add docstrings 2020-05-15 10:22:10 +02:00
tobi-wan-kenobi
526560ea54 [core/decorators] use difflib to make scrolling reset detection fuzzy
when scrolling text that is subject to *slight* changes (e.g. a song
that contains the current position within the song), allow for slight
variations in the displayed text.

fixes #629
2020-05-14 20:35:09 +02:00
tobi-wan-kenobi
b4f8870a95 [doc] update API docs 2020-05-10 13:25:13 +02:00
tobi-wan-kenobi
b803f385a1 [tests] Fix failing tests 2020-05-10 12:56:30 +02:00
tobi-wan-kenobi
92577e7d26 [all] black code :) 2020-05-09 21:24:28 +02:00