README.md 7.8 KB

Demure's i3 lemonbar

my bar

Base

This is based off of i3 lemonbar, by electro7. There were a few parts of the original that didn't make sense to me, and other things I wanted to add. I've now added a number of features I have desired:

  • Battery level works indicates no battery, normal %, and correct multiple battery %.
  • Works with multiple music players, and has room to add more support.
  • Works with my offlineimap setup.
  • Shows either wired or wireless IP, using the same spot.
    • Indicates which is in use.
    • Prefers lower numbered interface (eth0 > wifi).
    • Filters virtual interfaces for docker, qemu, and vpn.
  • Shows local IP+external IP, IPv6, or hide
    • You can bind an i3 key to toggle this display.
  • Shows if a GPG key is cached, and hides of no GPG installed.
  • Shows brightness and volume.
  • Shows either wired or wireless Up/Down speed in the same spot.
  • VPN indicator.

Requirements

  • i3wm
  • lemonbar (which used to be know as bar)
    • I use lemonbar krypt-n instead of lemonbar.
    • I do not recommend the vanila lemonbar, as it's xft font support is... crap?
    • On debian depends on libxcb1-dev, libxcb-xinerama0-dev, xcb-randr0-dev, libxft-dev, libx11-xcb-dev and a few other things (I listed the less common ones).
  • gawk, as I wrote my fancy awk using it. * amixer for volume support.
    • Part of alsa-utils on debian.
  • You need conky
    • on debian sid, I use the conky-all package
    • on arch, make sure the wireless support compiled in. The AUR conky-git might be what you want.
  • A nice symbol font
    • I use font awesome, which is the best symbol font I have seen to date.

Installation

  • Install font awesome
    • or you can change the icon font, and set all the icons.
  • Add i3 lemonbar to your ~/.i3/config
bar {
    i3_bar_command ~/.i3/lemonbar/i3_lemonbar.sh
    }

Notes

  • I find that this does not gracefully handle i3 logout -> login, and full config reload.
    • I used pkill lemonbar && ~/.i3/lemonbar/i3_lemonbar.sh & to correct the issue
    • I have added pkill lemonbar to my log out command and i3 restart, to make life easier.

Modifications

  • On my system, volume and a number of other segments had an extra %. FINISHED
  • Edited vol command to be more efficient, and not need a conf line FINISHED
  • I felt that the declaring 1024 as a 'small screen' was falling short, set to 1336. FINISHED
  • Edited the buffer between segments to be smaller. FINISHED
  • Removed gmail support, and added offlineimap support FINISHED
  • Added local ip, prefers eth over wlan; shows appropriate icon; shows wifi signal strength if wifi. FINISHED
    • No longer uses conky, but will default to last outputted interface. 31JUL2016
  • Added external ip FINISHED
  • Added battery, different icons for level, different colors for level, icon for charging. FINISHED
  • Added temp, with threshold color. FINISHED
    • Made temp no longer rely on conky. 27JUL2016
    • You can set temp to use ferinheight or celsius in the config.
  • Made ram show percent instead of raw number FINISHED
  • Disabled weechat part, as my weechat lives on my server. Work need a major overhaul, and likely be out of sync, or insecure.
  • Made one segment for both eth and wlan speed, prefers eth. FINISHED
  • Added control-pianobar for music, as I don't really use MPD. 27FEB2016
  • Added check to see if gpg key is unlocked (since I use it for pass, which give offlineimap passwds) 19MAR2016
    • GPG icon will only show if GPG is installed (and maybe if there are keys?) 28JUL2016
  • Added Thinkpad Multi Battery code. Will display weighted total battery percent. Other peoples code which I found only did (bat0 perc + bat1 perc)/2... Which is invalid, and extra invalid with an extended battery! There is a setting in the config to use either conky supplied battery, or the new Thinkpad Multi Battery. 09APR2016
    • Now made TMB detect no battery (desktop), normal batter, or thinkpad multi battery automagically. (as long as your computer uses BAT0 and/or BAT1) 27JUL2016
    • Battery time remaining only shows when there is meaningful output.
    • Note: It will show either time till empty, or time till full. BUT, it only accounts for one battery... but still a bit useful to thinkpad users. 28JUL2016
  • Added Battery Time Remaining to Thinkpad Multi Battery. 17APR2016
  • Added Screen Brightness percent. 19JUN2016
    • Tweaked brightness to automagically work with more installs. Made brightness hide for desktop (no battery) computers 31JUL2016
  • Completely overhauled music code to how scalablely handle multiple music players. (requested by verrlara) 14JUL2016
    • currently supports control-pianobar, cmus, mpd(new code), mocp, and audacious.
    • cmus output will indicate paused and lack of meta data.
    • cmus can display internet stream data too.
    • Readded mpd support with new awk. 15JUL2016
    • mpd will report pause status, and works with internet streams even easier, as it didn't need extra coding.
    • mocp reports pause, and works with internet streams. 16JUL2016
    • audacious reports paused, works with internet steams. 17JUL2016
    • audacious has a default out put of 'Artist - Album - Song'; this can be changed in your audacious Settings -> Playlist -> Title Format
  • Added Screenshot IP Scrubber, to quickly toggle the external IP from the bar. 18JUL2016
    • You can add support to your i3 by adding the following binding:
    • bindsym YOUR_KEYS exec awk -v TEMP=/tmp/i3_lemonbar_ip_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else {STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else {system("echo 0 > "TEMP)}}}'
    • You can edit the Scrubber sting in i3_lemonbar_config, such as setting it to "" if you want to reduce your bar length when toggled.
  • Added $music_limit to prevent music from covering workspace display. 18JUL2016
  • Fixed non conky network ip to prefer lower network interface. 22SEP2016
  • Network Display Toggle (replaces "Screenshot IP Scrubber"). 19FEB2017
    • This lets you toggle between showing your local+external ipv4, your ipv6, or hiding.
    • can bind this in i3 with the following binding:
    • bindsym XF86LaunchA exec awk -v TEMP=/tmp/i3_lemonbar_ip_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else if($0==2){STATE=2} else{STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else if(STATE==1){system("echo 2 > "TEMP)} else {system("echo 0 > "TEMP)}}}'
  • IP display filters virtual interfaces for docker, qemu, and vpn. 08APR2017
  • Added VPN on indicator. 17APR2017
  • Due to change in debian, using pactl for volume checking. 12NOV2018
  • Added RSS (newsboat) unread indicator. 13MAR2019
  • Tweaked so that section backgrounds are easier to edit. 13MAR2019

Things I want

  • I am not sure if I can make this set up show i3 keybinding modes in the bar... would like this.
  • Make better separations between joined colored segments.
Last updated 13MAR2019