demure 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu
..
README.md 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu
demure_i3_lemonbar_mod.png 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu
i3_lemonbar.sh 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu
i3_lemonbar_config 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu
i3_lemonbar_conky 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu
i3_lemonbar_parser.sh 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu
i3_workspaces.pl 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu
i3_workspaces.py 517d25eacb Some big changes in my workflow. First, trying kitty terminal emulator as main terminal emulator. It adds good icon support. i3 has backup terminal bindings now, and urxvt will continue to be a launcher term. Second, lemonbar is retired and polybar is being used. polybar is much simpler to deal with, and much easier to tweak. 5 lat temu

README.md

Demure's i3 lemonbar

DISCONTINUED

As of 14JUL2019 I am moving to polybar.
The configuration is much simpler, cleaner, and tweakable.

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
  • Added UTC time and date mode. Uses an awk toggle and i3 binding. 08APR2019
  • Added multi monitor support (used ocaballeror's work https://github.com/electro7/dot_debian/pull/24 ) 18JUN2019

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 14JUL2019