Commit graph

1400 commits

Author SHA1 Message Date
Tobias Witek
468e30ce66 [main] Add input thread logic and logging
To the main application, add an input thread that "simply" reads
sys.stdin events and transmits them via core.input.

Additionally, set up some initial logging (yeah, for threading, this is
needed immediately)
2020-02-08 13:56:52 +01:00
Tobias Witek
fca364554e [core/output] Add id of widget and module to output
In the process of that, fix a bug in how the parent class constructors
were invoked.
2020-02-08 13:45:52 +01:00
Tobias Witek
4d34fa9261 [core/input] Use util.cli to execute commands
If the registered callback is not callable (i.e. no Python method),
assume it's a command that should be invoked via a shell.
2020-02-08 13:40:51 +01:00
Tobias Witek
9d4936b596 [util/cli] Add new CLI utilities
For now, this just allows executing commands
2020-02-08 13:39:35 +01:00
Tobias Witek
f9267f2131 [core/widget] fix small bug (wrong indentation) 2020-02-07 21:32:20 +01:00
Tobias Witek
e0df8b84e5 [core] Add input handling
Add a (half-finished) input library, that for now simply allows
registration and triggering of events.

As next steps, the trigger will happen as part of a separate thread that
reads input events.

Additionally, invoking commands via a execute() will be supported.

Thirdly, there is need of a way to selectively update the affected
modules (widgets), which should be possible given that the event
contains both the instance (widget ID) and name (module name).
2020-02-07 21:28:29 +01:00
Tobias Witek
a70c82dc4c [modules] Add date, time, datetime
Add modules to show date, time and date and time. Instead of introducing
a "fancy" aliasing mechanism, simply implement time and date in terms of
datetime, by inheriting and overwriting selectively.
2020-02-04 21:10:05 +01:00
Tobias Witek
6adc497f68 [core] Add support for module parameters
Parse '-p' parameters and make them accessible via 'parameter()' from
within a module (basically, restore the previous configuration
facility).

Still TODO: Add support for configuration files.
2020-02-04 21:09:11 +01:00
Tobias Witek
3a531c359f [core/module] Add config to module
Add access for all modules to the commandline parameters (called
"config" in bumblebee-status)
2020-02-03 21:30:06 +01:00
Tobias Witek
74e74bb78b [core/output] Make bar actually work (flush output)
Seems adding a \n isn't sufficient for flushing, instead explicitly
flush stdout to produce a result reliably in the i3bar.
2020-02-02 21:21:24 +01:00
Tobias Witek
eb38e1ce96 [travis] Exclude codeclimate
doesn't run on development branches anyhow, and for some reason produces
errors on python 3.8
2020-02-02 14:42:32 +01:00
Tobias Witek
1801e83322 [tests] Do not show stdout/stderr by default 2020-02-02 14:41:45 +01:00
Tobias Witek
854d7dc470 [modules] Add first "real" module: kernel
Since 'kernel' is small and shows static information, have this be the
very first module added.
2020-02-02 14:41:22 +01:00
Tobias Witek
445c5a65f1 [core/output] Move widget/module handling inside output
The core.output module now manages the list of modules and retrieves the
widgets inside draw() itself. That way, details of drawing/updating
widgets are not visible from the outside anymore.
2020-02-02 14:18:13 +01:00
Tobias Witek
96c7b762b2 [travis] switch to coverage instead of nosetest 2020-02-02 14:06:44 +01:00
Tobias Witek
69eb1ada0d [tests] Move from nosetests to unittest
Since coverage doc says nosetests hasn't been maintained for a while,
switch to unittest.
2020-02-02 13:27:03 +01:00
Tobias Witek
66537fbe05 [core/output] Rewrite to hide sys.stout
Add generic "draw()" method that redirects internally to the actual
calls. These can now produce JSON, which is nicer because:

1. Easier to use during testing
2. More flexible
3. Centralizes printing (somewhat)

Still, the "suffix" concept isn't really nice, but so far, I have no
better approach.
2020-02-01 21:37:38 +01:00
Tobias Witek
b7ca5eb3a5 [doc] Add pylint to not forget about it 2020-01-26 14:20:09 +01:00
Tobias Witek
fbd44618dc [test] Python 3.5 compatibility
Use assert_called_once_with() instead of assert_called_once() to
maintain compatibility with Python 3.5
2020-01-26 14:17:14 +01:00
Tobias Witek
2f78ee4beb [travis] drop python 2.7 support 2020-01-26 14:11:58 +01:00
Tobias Witek
7a9cb8b533 [core/module] Add very basic widget capability 2020-01-26 14:06:09 +01:00
Tobias Witek
da792f9b7b [doc] Update notes
Add more stuff that needs to be considered for backwards compatibility
2020-01-26 13:59:11 +01:00
Tobias Witek
fee7cf7882 [core/widget] Add widget class
To maintain backwards compatibility (and because I think it's an OK
design choice), keep the widget concept (a single module can produce
multiple widgets).
2020-01-26 13:58:29 +01:00
Tobias Witek
a17cd4759c [core/output] Implement simple wait
To pace the output lines, implement a simple wait() call for the i3
output.
2020-01-26 13:31:20 +01:00
Tobias Witek
fed80fb470 [doc] Add notes for redevelopment 2020-01-25 14:28:38 +01:00
Tobias Witek
acf9d6214e [tests] Restructure
Put tests into directory structure equivalent to that of the code
itself, for better separation (hopefully)
2020-01-25 14:27:41 +01:00
Tobias Witek
5a60a23ebd [core/config] Add interval (as parameter store)
Add a generic parameter store to the configuration and use it to set the
parameter "interval" (backwards compatibility)
2020-01-25 14:24:21 +01:00
Tobias Witek
8a2ef5ea5d [core] Add util.store for store-like get/set 2020-01-25 14:20:25 +01:00
Tobias Witek
bd12a51bfb [core] Add simple module loading
Add a way to load modules located in modules/*
2020-01-19 16:06:21 +01:00
Tobias Witek
8622673114 [core] Re-enable preliminary module loading (stubbed)
Add logic for parsing commandline options, and a preliminary stub for
loading modules.

Note: The idea is that core.module.load() will return a valid, but
empty, module that displays an error, if the module cannot be loaded
2020-01-19 15:36:52 +01:00
Tobias Witek
f234f81aa9 Add missing __init__.py 2020-01-19 14:22:56 +01:00
Tobias Witek
e931bb93c6 [core] Rework core implementation
Experimental re-implementation of core functionality with the aim:
- Depend only on the Python Standard Library for core
- If modules are missing elsewhere, *never* throw
- Unit test *everything*
- Cleaner and more minimal implementation
- Better integration points for existing implementations (charts,
  braille, etc.)
- Full backwards-compatibility with existing module system (except where
  modules can be vastly simplified)
2020-01-19 13:29:34 +01:00
Tobias Witek
72f88b3409 [doc] Add custom theme location
see #486
2020-01-18 13:55:53 +01:00
Tobias Witek
627a5eb617 [modules/battery] add documentation 2020-01-18 13:52:23 +01:00
tobi-wan-kenobi
91ca082627
Merge pull request #523 from hoamer/display_power_consumption
added option for displaying the power consumption
2020-01-18 13:48:48 +01:00
hoamer
4b9300f5fb fixed unintentionally changed line 2020-01-15 12:23:28 +01:00
tobi-wan-kenobi
fd72d84fec
Merge pull request #525 from somospocos/bytefmt-refactor
bumblebee.util.bytefmt() refactor
2020-01-13 14:15:21 +01:00
me
d952661b28 add tests with custom format for bumblebee.util.bytefmt() 2020-01-12 20:33:51 +02:00
me
5496e307c8 add format argument to bumblebee.util.bytefmt()
it has a default value to be backwards compatible
2020-01-12 20:28:49 +02:00
me
eca8fbcf22 add dosctring to bumblebee.util.bytefmt() 2020-01-12 20:24:18 +02:00
Tobias Witek
629b3381f2 [theme] Add pango markup for prefix/suffix
Add 4 new theme specifiers:
- prefixfg
- prefixbg
- suffixfg
- suffixbg

All of those are only evaluated if markup type is pango, and result in
pango-formatted prefixes/suffixes.

fixes #520
2020-01-11 13:54:53 +01:00
tobi-wan-kenobi
3d4ba73460
Merge pull request #522 from somospocos/pulseaudio-module-improvement
[modules/pulseaudio] add support for volume bars
2020-01-11 13:33:22 +01:00
tobi-wan-kenobi
7ef8f423ed
Merge pull request #521 from somospocos/cpu2-module
[module/cpu2] add module
2020-01-11 13:30:57 +01:00
hoamer
9ed253acb2 added option for displaying the power consumption 2020-01-10 13:10:47 +01:00
me
e542751643 [modules/pulseaudio] add support for volume bars 2020-01-07 10:28:18 +02:00
me
7b7e925525 [modules/cpu2] fix fan icon
By mistake, I have added a NerdFont fan icon in previous version.
2020-01-06 23:18:32 +02:00
me
31801dfdca [module/cpu2] add module 2020-01-06 21:50:30 +02:00
tobi-wan-kenobi
f48c468975
Merge pull request #519 from somospocos/mpd-module-refactor
[modules/mpd] refactor to use layout
2020-01-06 13:30:46 +01:00
me
03c28cbb0f [modules/mpd] refactor to use layout 2020-01-04 17:59:54 +02:00
tobi-wan-kenobi
fd657c7c03
Merge pull request #516 from somospocos/cmus-module-improvement
[modules/cmus] add file tags
2020-01-04 14:14:10 +01:00