OK - so I have to admit I *hate* the fact that PIP seems to require a
subdirectory named like the library.
But since the PIP package is something really nifty to have (thanks to
@tony again!!!), I updated the codebase to hopefully conform with what
PIP expects. Testruns so far look promising...
try to completely get rid of the occasional ("exited with status N") in
the status bar by catching exceptions and showing a very very minimal
error message.
Re-enable the -f | --logfile parameter, but still default to logging to
stderr.
Also, add a "debug" module that is automatically displayed if a bar is
run in debug mode (thanks to @bbernhard for the excellent suggestion)
fixes#614
Add two new parameters: theme and iconset
Add a placeholder class core.theme.Theme, an instance of which is passed
in to the i3 output object (which is the only object that should ever
have need of the theme, hopefully).
To make it easier to update individual modules, separate the call to
update() and the call to actually drawing the status.
Additionally, this avoids the "side effect" of updating when drawing the
status line.
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)
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.
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.
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
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)
When pressing the middle mouse button (and it's not assigned to any
other functionality), the module (i.e. all widgets of that module) will
disappear and be replaced with the module's icon (or prefix, as
fallback) and an ellipsis.
fixes#264
Add an option to load a user-specified icon theme (which will override
the theme's icons).
Also, commit a first version of a set of icons from the ionicons set
(see http://ionicons.com/).
see #252
Do not print any debugging messages unless "-d" has been specified on
the commandline.
Also, introduce two "special" logfiles "stdout" and "stderr" to log to
stdout and stderr, respectively.
fixes#213
Override sys.stdout and sys.stderr in an attempt to enforce utf-8
encoding. Probably this will cause all kinds of weird issues down the
line, but at least, it seems to solve the immediate issue.
fixes#176
* Unless debugging has been enabled, log to stderr (i.e. do *not* try to
open a file)
* When debugging into a file, choose a location that is likely to be
writeable by the user (i.e. the user's home directory)
* Location of the logfile can also be specified
fixes#62