From 892b5a1db93271f3a53b4f6487f4ad20e5005d67 Mon Sep 17 00:00:00 2001 From: neodarz Date: Wed, 4 Sep 2019 20:50:48 +0200 Subject: Add i3pystatus --- dotfiles/config/i3pystatus/conf.py | 302 +++++++++++++++++++++++++++++++ dotfiles/config/i3pystatus/get_volume.sh | 3 + dotfiles/config/i3pystatus/headset.py | 21 +++ 3 files changed, 326 insertions(+) create mode 100644 dotfiles/config/i3pystatus/conf.py create mode 100755 dotfiles/config/i3pystatus/get_volume.sh create mode 100644 dotfiles/config/i3pystatus/headset.py (limited to 'dotfiles') diff --git a/dotfiles/config/i3pystatus/conf.py b/dotfiles/config/i3pystatus/conf.py new file mode 100644 index 0000000..1a09983 --- /dev/null +++ b/dotfiles/config/i3pystatus/conf.py @@ -0,0 +1,302 @@ +import logging +from i3pystatus import Status +from i3pystatus.updates import pacman, yaourt + +status = Status(logfile='/home/neodarz/i3pystatus.log') + +status.register("text", + text="|",) + +status.register("updates", + format = "{count}", + format_no_updates = "", + backends = [pacman.Pacman(), yaourt.Yaourt()], + hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("keyboard_locks", + format="{caps}|{num}", + hints = {"separator": False, "separator_block_width": 0}, + caps_off="", + num_off="",) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +# Displays clock like this: +# Tue 30 Jul 11:59:46 PM KW31 +# ^-- calendar week +status.register("clock", + format= ["%a %-d %b|%T", "Europe/Paris"], + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("cpu_usage", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("cpu_freq", + format = "{avgg}", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +# Shows the average load of the last minute and the last 5 minutes +# (the default value for format is used) +status.register("load", + hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("mem", + format = "{used_mem}({percent_used_mem}%) [{avail_mem}]", + hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("swap", + format = "S:{used}/{total}({percent_used}%)", + hide_if_empty = True, + hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +# 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 D-Bus) if the percentage +# goes below 5 percent while discharging. The block will also color RED. +# If you don't have a desktop notification demon yet, take a look at dunst: +# http://www.knopwob.org/dunst/ +#status.register("battery", +# format="{status} {percentage:.2f}% [{percentage_design:.2f}%] {remaining:%E%hh:%Mm}", +# alert=True, +# alert_percentage=5, +# status={ +# "DIS": "↓", +# "CHR": "↑", +# "FULL": "=", +# },) + + +# 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 +status.register("network", + dynamic_color=True, + start_color="#fff", + color_down="#fff", + end_color="#fff", + interface="enp3s0", + format_up="I:{v4cidr}", + format_down="X", + hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("openvpn", + format="{status}", + vpn_name="vpn-pro", + status_up="vpro", + status_down="", + status_command="bash -c 'systemctl show vpn-pro.service | grep ActiveState=active'", + hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("openvpn", + format="{status}", + vpn_name="vpn-perso", + status_up="vperso", + status_down="", + status_command="bash -c 'systemctl show vpn-perso.service | grep ActiveState=active'", + hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + + +#status.register("netspeed", +#status.register("net_speed", +# hints = {"separator": False, "separator_block_width": 0},) + +#status.register("text", +# text="|", +# hints = {"separator": False, "separator_block_width": 0},) + + +#status.register("external_ip", +# color="#fff", +# color_down="#fff", +# format="E:{v4cidr}", +# format_down="X", +# hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) +# +#status.register("text", +# text="|", +# hints = {"separator": False, "separator_block_width": 0},) + + + +# Note: requires both netifaces and basiciw (for essid and quality) +#status.register("network", +# interface="wlp2s0", +# format_up=" {essid}  {quality:03.0f}%", +# format_down="") + +# Shows disk usage of / +# Format: +# 42/128G [86G] +status.register("disk", + path="/", + format="[/]{avail}G", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("disk", + path="/home", + format="[/home]{avail}G", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +# Shows pulseaudio default sink volume +# +# Note: requires libpulseaudio from PyPI +status.register("pulseaudio", + format="{volume}%",format_muted="X", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +#status.register("shell", +# command="sh ~/.config/i3pystatus/get_volume.sh", +# interval=1, +# hints = {"separator": False, "separator_block_width": 0},) +# +#status.register("text", +# text="|", +# hints = {"separator": False, "separator_block_width": 0},) + +status.register("shell", + command="python ~/.config/i3pystatus/headset.py", + interval=1, + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + + + +status.register("redshift", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("taskwarrior", + format = "{next}({project})[{urgent}/{ready}]", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("text", + text="|", + hints = {"separator": False, "separator_block_width": 0},) + +#status.register("timewarrior", +# hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) +# +#status.register("text", +# text="|", +# hints = {"separator": False, "separator_block_width": 0},) + + +#status.register("backlight", +# hints = {"markup": "pango", "separator": False, "separator_block_width": 0},) +# +#status.register("text", +# text="|", +# hints = {"separator": False, "separator_block_width": 0},) + +#status.register("backlight", +# format="{brightness}",) + +#status.register("shell", +# command="~/.i3-blocks/blocks/brightness",) + +# Shows mpd status +# Format: +# Cloud connected▶Reroute to Remain +status.register("cmus", + format="{status} {song_elapsed}/{song_length} {artist} - {title}", + status={ + "stopped": "◾", + "playing": "▶", + "paused": "▷", + }, + format_not_running="", + hints = {"separator": False, "separator_block_width": 0},) + +status.register("now_playing", + player="clementine", + color="#ffc080", + hints = {"separator": False, "separator_block_width": 0}, + format='{status} {artist} - {title} {song_elapsed}/{song_length}', +# status = { +# "Playing": "plsay", +# "Paused": "pause", +# "Stopped": "stop", +# } +) + +status.run() + diff --git a/dotfiles/config/i3pystatus/get_volume.sh b/dotfiles/config/i3pystatus/get_volume.sh new file mode 100755 index 0000000..e0372f2 --- /dev/null +++ b/dotfiles/config/i3pystatus/get_volume.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo $(if [[ $(echo $(pacmd list | grep "active port") | cut -d" " -f3 | cut -d"<" -f2 | cut -d">" -f1) == "analog-output-lineout" ]]; then echo "Headphones"; elif [[ $(echo $(pacmd list | grep "active port") | cut -d" " -f3 | cut -d"<" -f2 | cut -d">" -f1) == "analog-output-headphones" ]]; then echo "Line Out"; fi) diff --git a/dotfiles/config/i3pystatus/headset.py b/dotfiles/config/i3pystatus/headset.py new file mode 100644 index 0000000..8668300 --- /dev/null +++ b/dotfiles/config/i3pystatus/headset.py @@ -0,0 +1,21 @@ +import json + +try: + with open('/tmp/parrotZikBattery') as json_data: + data = json.load(json_data) + + try: + if "data" in data: + out = str(data["data"]["level"])+"% ("+data["data"]["state"]+")" + print(out) + elif "error" in data: + print(data["error"]) + except TypeError: + print("X") +except OSError as e: + if e.errno == 2: + print("X") + else: + print(e) + + -- cgit v1.2.1