GithubHelp home page GithubHelp logo

enkore / i3pystatus Goto Github PK

View Code? Open in Web Editor NEW
441.0 441.0 189.0 1.86 MB

A complete replacement for i3status

Home Page: https://i3pystatus.readthedocs.io/

License: MIT License

Shell 0.12% Python 99.88%
i3 i3bar i3status python

i3pystatus's People

Contributors

arvedui avatar asmikhailov avatar chestm007 avatar crwood avatar drwahl avatar egzvor avatar enkore avatar facetoe avatar gacekjk avatar gdunstone avatar hasb4k avatar hcpl avatar janoliver avatar jindrichpilar avatar lasers avatar mxlian avatar pf56 avatar philipdexter avatar pluggi avatar rampage644 avatar richese avatar robinmccorkell avatar rscholer avatar siikamiika avatar simon04 avatar simonft avatar squidbeam avatar terminalmage avatar teto avatar tyjak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

i3pystatus's Issues

Wifi interface not connected

The wireless module has format_up, format_down and detached_down settings. But there is no equivalent for when the interface is no connected. For example, I am using NetworkManager, and when I disconnect the wifi, this is what appears, in green:
() 0%
Which is not very sexy :)
It would be nice to have a setting like for example format_not_connected.

Several ideas and a bug.

The mail-related imports in the main.py.dist file are invalid. I needed to remove them.

Please mention, that python-gobject2 and python-dbus are required to run the thunderbird mail checker.

Since this is now a fully-grown project, consider putting the package into /usr/../site-packages and have a configuration file somewhere in ~/.config. Then, people could start making packages for their linux distributions out of this.

You could include an option for each module, that triggers notifications of the notification deamon, like for example dunst. notify-send. Should be easy to implement and would nicely fit into the project.

Make the output separator configurable.

My config.py file gives a bunch of errors when I start it. It has worked until I did a full system upgrade today

Here is the output:

[t3zla@Arch ~]$ python ~/.i3/i3stat.py
Traceback (most recent call last):
  File "/home/t3zla/.i3/i3stat.py", line 21, in <module>
    format="{temp:.0f}\xb0C",)    
  File "/usr/lib/python3.4/site-packages/i3pystatus/core/__init__.py", line 65, in register
    return self.modules.append(module, *args, **kwargs)
  File "/usr/lib/python3.4/site-packages/i3pystatus/core/util.py", line 67, in append
    module, *args, **kwargs)
  File "/usr/lib/python3.4/site-packages/i3pystatus/core/imputil.py", line 46, in     instanciate_class_from_module
    return self.instanciate_class_from_module(self.get_module(module), *args, **kwargs)
  File "/usr/lib/python3.4/site-packages/i3pystatus/core/imputil.py", line 44, in     instanciate_class_from_module
    return self.get_class(module)(*args, **kwargs)
  File "/usr/lib/python3.4/site-packages/i3pystatus/core/settings.py", line 56, in __init__
    self.init()
  File "/usr/lib/python3.4/site-packages/i3pystatus/temp.py", line 29, in init
    "{base_path}/temp*_input".format(base_path=self.base_path))[0]
IndexError: list index out of range

Add tests

Checklist for unit tests:

  • core
  • battery
  • file
  • mail (?)

Some errors in class BatteryChecker

http://privatepaste.com/198290cae9

--- a/i3pystatus/battery.py
+++ b/i3pystatus/battery.py

@@ -117,7 +117,7 @@ class BatteryChecker(IntervalModule):
("path", "Override the default-generated path"),
("status", "A dictionary mapping ('DIS', 'CHR', 'FULL') to alternative names"),
)

  • battery_ident = "BAT0"
  • battery_ident = "BAT1"
    format = "{status} {remaining}"
    status = {
    "CHR": "CHR",
    @@ -128,7 +128,7 @@ class BatteryChecker(IntervalModule):
    alert = False
    alert_percentage = 10
    alert_format_title = "Low battery"
  • alert_format_body = "Battery {battery_ident} has only {percentage:.2f}% ({remaining_hm}) rem
  • alert_format_body = "Battery {battery_ident} has only {percentage:.2f}% ({remaining:%E%hh:%M

path = None

@@ -171,6 +171,7 @@ class BatteryChecker(IntervalModule):
body=formatp(self.alert_format_body, **fdict),
icon="battery-caution",
urgency=2,

  •            timeout=60,
         )
    

Can't disable mouse clicking, which breaks wheel functionality.

I've noticed that clicking on several outputs execute differents commands (eg: network runs nm-applet's dialog). However, since this captures click events, using the mouse wheel on the i3pystatus text does not work (it would normally switch workspaces).

I've also found no way to disable click events on i3pystatus, and I really have no use for clicking on the status bar (though I understand that others use this). Meanwhile, the space I have to scroll through workspaces has been reduced to a half.

After some quick research, I found that i3pystatus outputs "click_events":true when starting up. A setting to set this to false would be very useful. (I found that this is hardcoded here).

render_json missing

i3pystatus
Traceback (most recent call last):
File "/usr/bin/i3pystatus", line 9, in
load_entry_point('i3pystatus==3.26', 'console_scripts', 'i3pystatus')()
File "/usr/lib/python3.3/site-packages/pkg_resources.py", line 357, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3.3/site-packages/pkg_resources.py", line 2394, in load_entry_point
return ep.load()
File "/usr/lib/python3.3/site-packages/pkg_resources.py", line 2108, in load
entry = import(self.module_name, globals(),globals(), ['name'])
File "/usr/lib/python3.3/site-packages/i3pystatus/init.py", line 9, in
from i3pystatus.core.config import Config
File "/usr/lib/python3.3/site-packages/i3pystatus/core/config.py", line 7, in
from i3pystatus.core.util import render_json
ImportError: cannot import name render_json

More consistent naming

Currently some modules (and classes) have a Checker suffix, some don't. Consistent naming would be good. I'd prone towards no suffix at all, that a module here is a "checker" module and not the email program itself is fairly obvious :-)

settings.py errors during installation

Hi,

I encounter this kind of issue while trying to install i3pystatus :

  File "/usr/local/lib/python2.7/dist-packages/i3pystatus-3.26-py2.7.egg/i3pystatus/core/settings.py", line 50
    raise ConfigKeyError(type(self).__name__, key=exc.args[0]) from exc
                                                                  ^
SyntaxError: invalid syntax

Did I miss something ?

Thanks

Test coverage & long term stuff

  1. Low test coverage: everything except core.exceptions, core.imputil, core.util. But these can and should be improved too.
  2. Some of the more complicated modules (yep, I'm looking at you pulseaudio) should have tests
  3. Also, remove more hard deps & refactor some stuff that is now REALLY ugly.
  4. Remove all global state (startup hooks and stuff like that)
  5. Then, at some later point, drop the dumb idea with the i3pystatus binary. I hate to break peoples configs, but the idea I had back then was just plain dumb. NOTE: you can already use i3pystatus without that dumb binary. Just execute your i3pystatus "config". done

parcel.DHL doesn't work anymore

They changed their website design. They also did not add an open API (to use their API a certification is required which costs about 400 EUR and requires a private key.).

.Xsession_error upon wake-from-suspend

On Arch Linux (up to date) : when waking laptop from suspend via systemd/lid being closed, following consistently appears in ~/.xsession_error:

no connectionException in Thread-5 at Sun Aug 24 12:15:55 2014
Traceback (most recent call last):
File "/usr/lib/python3.4/site-packages/i3pystatus/core/threading.py", line 68, in call
self.workload()
File "/usr/lib/python3.4/site-packages/i3pystatus/core/modules.py", line 67, in call
self.run()
File "/usr/lib/python3.4/site-packages/i3pystatus/mail/init.py", line 44, in run
unread = sum(map(lambda backend: backend.unread, self.backends))
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

In some cases, i3pystatus becomes unresponsive and does not update, requiring Shift+$mod+R (i.e., a reload of i3).

Modules/plugins being used:

grep status i3pystatus.conf ("battery" occurs twice since Lenovo T440S possesses two (2) separate batteries):

status.register("clock",
status.register("weather",
status.register("text",
status.register("battery",
status.register("battery",
status.register("pulseaudio",
status.register("backlight",
status.register("temp",
status.register("text",
status.register("disk",
status.register("mem",
status.register("load",
status.register("cpu_usage",
status.register("shell",
status.register("text",
status.register("shell",
status.register("mail",
status.register("network",
status.register("wireless",

Please let me know if you need additional information and thank you again for this great project.

Python2 support.

What things in python3 does i3pystatus rely on, and why was the choice made to drop python2?

Seems silly.

Broken colors

Hello,

I recently started using j4-make-config, and it looks like the i3status bar color "statusline" is always white, although my themes set it to #073642 or #eee8d5.

Therefore, when I use the colorized light theme, the i3status text is unreadable.

dmenu

I can only assume that i3pystatus is overriding that value to set it to white, which is a bad idea. Can you remove it and get the colors { statusline $value} to be used by default?

Thanks in advance

cmus

Why isn't this cool cmus remote module from @yemu already in the main repo? 3986d1a ❤️

Disable Mem .0000 for {used_mem}

Is there a way to disable .000. "EX: 525.12345679 to just 525".
See all those add .0000 ect. is a little bit annoying. Since the number are aways changing.

Error format in README

http://privatepaste.com/03972f5b27

--- a/README.tpl.md
+++ b/README.tpl.md

Installation

@@ -99,7 +99,7 @@ from network, wireless and pulseaudio in this example):
# This would look like this:
# Discharging 6h:51m
status.register("battery",

  •    format="{status} {remaining_hm}",
    
  •    format="{status} {remaining:%E%hh:%Mm}",
     alert=True,
     alert_percentage=5,
     status={
    

--- a/README.md
+++ b/README.md

Installation

@@ -99,7 +99,7 @@ from network, wireless and pulseaudio in this example):
# This would look like this:
# Discharging 6h:51m
status.register("battery",

  •    format="{status} {remaining_hm}",
    
  •    format="{status} {remaining:%E%hh:%Mm}",
     alert=True,
     alert_percentage=5,
     status={
    

Exception handling missing if network interface is inexistant

Hello,

I have the following code :

status.register("network",
interface="usb0",
format_up="{v4cidr}",)

If there is no usb0 device (i.e. my phone is not plugged for tethering) I get :

Traceback (most recent call last):
  File "config.py", line 31, in <module>
    format_up="{v4cidr}",)
  File "/usr/local/lib/python3.4/dist-packages/i3pystatus/core/__init__.py", line 65, in register
    return self.modules.append(module, *args, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/i3pystatus/core/util.py", line 67, in append
    module, *args, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/i3pystatus/core/imputil.py", line 46, in instanciate_class_from_module
    return self.instanciate_class_from_module(self.get_module(module), *args, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/i3pystatus/core/imputil.py", line 44, in instanciate_class_from_module
    return self.get_class(module)(*args, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/i3pystatus/core/settings.py", line 56, in __init__
    self.init()
  File "/usr/local/lib/python3.4/dist-packages/i3pystatus/network.py", line 89, in init
    "Unknown interface {iface}!".format(iface=self.interface))
RuntimeError: Unknown interface usb0!

It's the same for eth0 (I have an ethernet card which devices activates only if the cable is plugged on).

Easy way to add own scripts ?

Hi,

Maybe I missed something, but is there an easy way to add own plugins ? In fact, I'd like to add some functionalities to the clock (calendar poping on left click) and to add some personal plugins (dynip stuff for instance).

I'd rather not edit the original plugins, or add them in system owned dirs, but put them in some .i3pystatus folder in my home.

Is it possible to do this ?

Thanks

Settings system

Mostly done with

Note to self: Make a common base class for the mail-checkers; common options (like singular/plural format) etc.

example of imap section

Hi,

could you provide en example how to define mail-imap section in the config file? I've been trying to do that, but I can't get it to work.

Thanks in advance
Y

Different volume level between i3pystatus and pactl

Hi,
Very minor issue again. The current volume displayed in i3bar is 89%, which is different from the result of pactl list sinks, which displays 90%:

~ $ pactl list sinks               
Sink #0
    State: SUSPENDED
    Name: alsa_output.pci-0000_00_1b.0.analog-stereo
    Description: Built-in Audio Analog Stereo
    Driver: module-alsa-card.c
    Sample Specification: s16le 2ch 44100Hz
    Channel Map: front-left,front-right
    Owner Module: 5
    Mute: no
    Volume: 0:  90% 1:  90%
            0: -2,75 dB 1: -2,75 dB
            balance 0,00
    Base Volume: 100%
                 0,00 dB
    Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
    Latency: 0 usec, configured 0 usec
    Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
    Properties:
        alsa.resolution_bits = "16"
        device.api = "alsa"
        device.class = "sound"
        alsa.class = "generic"
        alsa.subclass = "generic-mix"
        alsa.name = "92HD91BXX Analog"
        alsa.id = "92HD91BXX Analog"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        alsa.device = "0"
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xd0610000 irq 47"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1b.0"
        sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "1e20"
        device.product.name = "7 Series/C210 Series Chipset Family High Definition Audio Controller"
        device.form_factor = "internal"
        device.string = "front:0"
        device.buffering.buffer_size = "65536"
        device.buffering.fragment_size = "32768"
        device.access_mode = "mmap+timer"
        device.profile.name = "analog-stereo"
        device.profile.description = "Analog Stereo"
        device.description = "Built-in Audio Analog Stereo"
        alsa.mixer_name = "Intel PantherPoint HDMI"
        alsa.components = "HDA:111d76e0,10280578,00100102 HDA:80862806,80860101,00100000"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    Ports:
        analog-output-speaker: Speakers (priority: 10000)
        analog-output-headphones: Headphones (priority: 9000, not available)
    Active Port: analog-output-speaker
    Formats:
        pcm

My i3pystatus settings for volume:

status.register("pulseaudio",
format=" {volume}%",)

Different shades of green

Hi,
This is a very minor enhancement proposition. The default color for when the battery is full is #11aa11 (dark green). It is the only module that uses this color. Other modules uses #00FF00, for example the Network when interface is up.
I think it would be more consistent to set the default color for a full battery to be #00FF00 and let the user configure this later on.

Standalone operation

i3pystatus can now run on it's own ( 5474980 ), but it can't do everything (yet) what i3status can… the great strength of i3pystatus is and should be better and more versatile configuration :-)

Needed blocks

  • Temperature display (note to self: /sys/devices/virtual/thermal…)
  • WLAN, LAN status
  • Disk status
  • System load
  • run-watch
  • IPv6
  • volume (i3status has ALSA, maybe want PA too)
  • [discordian date (I never heard of that calendar before, does anybody use that?)]

Already got these; maybe improve on formatting etc.

  • date/time
  • battery

Adding a module causes "missing required options"

Hello,

I've been trying to write an extension and I keep getting this error "Module 'Command': missing required options: {'u', 'x', 'a', 'e', 't', 'b', 'l', 'c'}".

Tracing it doesn't show where that exception was raised except that it is every time.

From the python shell I can import my module and execute it without issues.

Thanks.

Tun interface detected with down state

Hi,

I recently upgraded to version 3.30, and my tun0 interface (openvpn) is now detected as 'down'. When I look af ifconfig, the inteface is in state "unknown". I checked all my OpenVPN clients, and each TUN interface is in state "unknown". I think it could be a good idea to have an option "unknown_up" to be able to display OpenVPN interfaces.

Best regards,
Alexis.

i3pystatus randomly stopped working

When I run my configuration file with python it gives this error:

{"version":1,"click_events":true}
[
[{"instance": "139942030595464", "full_text": "error connecting MPD", "name":         
"i3pystatus.mpd.MPD"}, {"instance": "139942030595072", "full_text": "\u266a54", "name":  
"i3pystatus.pulseaudio.PulseAudio"}, {"instance": "139942030594904", "full_text": "wireless: Missing 
Python module 'basiciw'", "name": "i3pystatus.text.Text", "color": "#FF0000"}, {"instance":  
"139942030594400", "full_text": "network: Missing Python module 'netifaces'", "name": 
"i3pystatus.text.Text", "color": "#FF0000"}, {"instance": "139942049695728", "full_text": "0.04 0.07", 
"name": "i3pystatus.load.Load", "color": "#ffffff", "urgent": false}, {"instance": "139942057635624", 
"full_text": "Mon 28 Apr 20:25:46", "name": "i3pystatus.clock.Clock", "color": "#ffffff", "urgent": false}]

This is my config:

# -*- coding: utf-8 -*-    

import subprocess    

from i3pystatus import Status    

status = Status(standalone=True)    

# Displays clock like this:    
# Tue 30 Jul 11:59:46 PM KW31    
#                          ^-- calendar week    
status.register("clock",    
   format="%a %-d %b %X",)    

 # Shows the average load of the last minute and the last 5 minutes    
# (the default value for format is used)    
status.register("load")    

# Shows your CPU temperature, if you have a Intel CPU    
status.register("temp",    
    format="{temp:.0f}°C",)    

   # The battery monitor has many formatting options, see README for details    

# This would look like this, when discharging (or charging)    
# ↓14.22W 56.15% [77.81%] 2h:41m    
# And like this if full:    
# =14.22W 100.0% [91.21%]    
#    
# This would also display a desktop notification (via dbus) if the percentage    
# goes below 5 percent while discharging. The block will also color RED.    
status.register("battery",    
    format="{status} {consumption:.2f}W [{percentage_design:.2f}%] {remaining:%E%hh:%Mm}",    
    alert=True,    
    alert_percentage=5,    
    status={    
        "DIS": "(↓)",    
        "CHR": "(↑)",    
        "FULL": "(=)",    
    },)    

# This would look like this:    
# Discharging 6h:51m    

# Displays whether a DHCP client is running    
status.register("runwatch",    
    name="DHCP",    
    path="/var/run/dhclient*.pid",)    

# Shows the address and up/down state of eth0. If it is up the address is shown in    
# green (the default value of color_up) and the CIDR-address is shown    
# (i.e. 10.10.10.42/24).    
# If it's down just the interface name (eth0) will be displayed in red    
# (defaults of format_down and color_down)    
#    
# Note: the network module requires PyPI package netifaces-py3    
status.register("network",    
    interface="enp0s25",    
    format_up="{v4cidr}",)    

# Has all the options of the normal network and adds some wireless specific things    
# like quality and network names.    
#    
# Note: requires both netifaces-py3 and basiciw    
status.register("wireless",    
    interface="wlp3s0",    
    format_up="{essid} {quality:03.0f}%",)    

# Shows disk usage of /    
# Format:    
#42/128G [86G]    
status.register("disk",    
    path="/",    
    format="{used}/{total}G [{avail}G]",)    

# Shows pulseaudio default sink volume    
#    
# Note: requires libpulseaudio from PyPI    
status.register("pulseaudio",    
    format="♪{volume}",)    

# Shows mpd status    
# Format:    
# Cloud connected▶Reroute to Remain    
status.register("mpd",    
    format="{title}{status}{album}",    
    status={    
        "pause": "▷",    
        "play": "▶",    
        "stop": "◾",    
    },)    

status.run()    

Wildcard exception handling in mpd module

While fixing a small bug(#99 ), I stumbled over the rather bad exception handling of the mpd module.

catching "exception" will catch pretty much everything that can occur in this module.

I would like to fix this but don't have time atm, so fell free ;)
Unless somebody already fixed it meanwhile, I will as soon as possibly.

Wrong battery status displayed

Hi,
I installed i3pystatus today, and noticed something wrong. The battery status appear as charging, but my battery is already fully charged.
Text appearing in i3bar:
CHR 100.00%

My battery configuration:
status.register("battery",
format="{status} {percentage:.2f}% {remaining:%E%hh:%Mm}",
alert=True,
alert_percentage=5,)

~ $ cat /sys/class/power_supply/BAT0/uevent
POWER_SUPPLY_NAME=BAT0
POWER_SUPPLY_STATUS=Full
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000
POWER_SUPPLY_VOLTAGE_NOW=12130000
POWER_SUPPLY_CURRENT_NOW=1000
POWER_SUPPLY_CHARGE_FULL_DESIGN=4400000
POWER_SUPPLY_CHARGE_FULL=3544000
POWER_SUPPLY_CHARGE_NOW=3544000
POWER_SUPPLY_CAPACITY=100
POWER_SUPPLY_MODEL_NAME=Dell
POWER_SUPPLY_MANUFACTURER=SANYO
POWER_SUPPLY_SERIAL_NUMBER=687

If I unplug the charger, the right "DIS" status appears.
Please let me know if I can be of further help.
Thanks

Bad symbol µ

http://privatepaste.com/d3988f28d8

--- a/i3pystatus/battery.py
+++ b/i3pystatus/battery.py
@@ -40,12 +40,12 @@ class Battery:

 def __init__(self, batinfo):
     self.bat = batinfo
  •    self.normalize_µ()
    
  •    self.normalize_u()
    
  • def normalize_µ(self):

  •    for key, µvalue in self.bat.items():
    
  • def normalize_u(self):

  •    for key, uvalue in self.bat.items():
         if re.match(r"(VOLTAGE|CHARGE|CURRENT|POWER|ENERGY)_(NOW|FULL|MIN)(_DESIGN)?", key):
    
  •            self.bat[key] = float(µvalue) / 1000000.0
    
  •            self.bat[key] = float(uvalue) / 1000000.0
    

    def percentage(self, design=False):
    return self._percentage("_DESIGN" if design else "") * 100

Better error messages and run anyway

The program should work regardless of missing imports. If a module cannot be loaded, an error message should be thrown but the remaining modules should work as expected.

AttributeError: 'module' object has no attribute 'UserList'

Getting this when running i3pystatus from a pip or AUR install.

Traceback (most recent call last):
File "i3pystatus", line 5, in
from i3pystatus import Status
File "/usr/lib/python2.7/site-packages/i3pystatus/init.py", line 6, in
from i3pystatus.core import Status
File "/usr/lib/python2.7/site-packages/i3pystatus/core/init.py", line 4, in
from threading import Thread
File "/usr/lib/python2.7/site-packages/i3pystatus/core/threading/init.py", line 2, in
from i3pystatus.core.threading.manager import Manager
File "/usr/lib/python2.7/site-packages/i3pystatus/core/threading/manager.py", line 2, in
from i3pystatus.core.util import partition
File "/usr/lib/python2.7/site-packages/i3pystatus/core/util.py", line 47, in
class ModuleList(collections.UserList):
AttributeError: 'module' object has no attribute 'UserList'

Thanks.

Different printing formats

So I do love i3, however sometimes I really want to use dwm because of the tags. However, to do so means that I lose the use of a good status bar. I'm going to try to hack something together for it, but it would be awesome to have it baked into the status thing (maybe even something that can talk directly to the X server for things like dwm). Just think it would be nice.

ImportError: cannot import name Status

I get this error when I try to run the config. The bar loads but the config settings do not.

Traceback (most recent call last):
File "/home/t3zla/.i3/i3pystatus.py", line 5, in
from i3pystatus import Status
File "/home/t3zla/.i3/i3pystatus.py", line 5, in
from i3pystatus import Status
ImportError: cannot import name Status

Problem with notmuch backend

Hi,

I've got an error message with current HEAD 1dbbc01 when registering this module:
status.register("mail",
backends=[ notmuchmail.Notmuch ],
email_client="thunderbird",
hide_if_null=False,
interval=10
);
Here is the output with python3.4, looks like I can't add a property which looks just weird to me :/ :
File "/usr/local/lib/python3.4/dist-packages/i3pystatus-3.30-py3.4.egg/i3pystatus/core/threading.py", line 68, in call
self.workload()
File "/usr/local/lib/python3.4/dist-packages/i3pystatus-3.30-py3.4.egg/i3pystatus/core/modules.py", line 67, in call
self.run()
File "/usr/local/lib/python3.4/dist-packages/i3pystatus-3.30-py3.4.egg/i3pystatus/mail/init.py", line 44, in run
unread = sum(map(lambda backend: backend.unread, self.backends))
TypeError: unsupported operand type(s) for +: 'int' and 'property'

Reorganize modules

Currently all modules reside inside the i3pystatus package. This is ok, but maybe we can come up with something better, especially regarding documentation of modules?

Probably it would be best to just leave them there and document them (examples, usage etc.) using a module docstring.

One could add top-level code in i3pystatus to add a __call__ method to each submodule if a submodule contains a single class derived from Module. That call would then delegate to the constructor, effectively making the module a callable alias for class construction.

The advantage of that would be less superfluous config files (I mean… honestly, modsde.ModsDeChecker or notmuchmail.NotMuchMailChecker is very verbose).

Support for Multiple Cores

I don't see a possibility to display the temperature or the usage of multiple CPU-cores.
I think this is an important feature. Please let me know if I'm wrong.

Bug in battery plugin

Exception in Thread-2Traceback (most recent call last):
File "/usr/lib/python3.3/site-packages/i3pystatus/core/threads.py", line 26, in call
self.workload()
File "/usr/lib/python3.3/site-packages/i3pystatus/core/modules.py", line 48, in call
self.run()
File "/usr/lib/python3.3/site-packages/i3pystatus/battery.py", line 86, in run
energy_now = battery.ENERGY_NOW
AttributeError: 'Battery' object has no attribute 'ENERGY_NOW'

~ cat /sys/class/power_supply/BAT0/uevent
POWER_SUPPLY_NAME=BAT0
POWER_SUPPLY_STATUS=Full
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10800000
POWER_SUPPLY_VOLTAGE_NOW=12512000
POWER_SUPPLY_CURRENT_NOW=0
POWER_SUPPLY_CHARGE_FULL_DESIGN=4698000
POWER_SUPPLY_CHARGE_FULL=4698000
POWER_SUPPLY_CHARGE_NOW=4698000
POWER_SUPPLY_CAPACITY=100
POWER_SUPPLY_MODEL_NAME=Primary
POWER_SUPPLY_MANUFACTURER=Hewlett-Packard
POWER_SUPPLY_SERIAL_NUMBER=61597 2011/02/23

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.