A featherweight, lemon-scented, bar based on xcb

Overview

NAME

lemonbar - Featherweight lemon-scented bar

SYNOPSIS

lemonbar [-h | -g widthxheight+x+y | -o | -b | -d | -f font | -p | -n name | -u pixel | -B color | -F color | -U color]

DESCRIPTION

lemonbar (formerly known as bar) is a lightweight statusbar based on XCB. Provides full UTF-8 support, basic formatting, RandR and Xinerama support and EWMH compliance without wasting your precious memory.

INPUT

The data to be parsed is read from the standard input, parsing and printing the input data are delayed until a newline is found.

OPTIONS

-h

Display the help and exit.

-g widthxheight+x+y

Set the window geometry. If a parameter is omitted it's filled with the default value. If the y parameter is specified along with the -b switch then the position is relative to the bottom of the screen.

-o name

Set next output to name. May be used multiple times; order is significant. If any -o options are given, only -o specified monitors will be used. Invalid output names are silently ignored. (only supported on randr configurations at this time)

-b

Dock the bar at the bottom of the screen.

-d

Force docking without asking the window manager. This is needed if the window manager isn't EWMH compliant.

-f font

Specifies a font to use. Can be used multiple times to load more than a single font.

-p

Make the bar permanent, don't exit after the standard input is closed.

-n name

Set the WM_NAME atom value for the bar.

-u pixel

Sets the underline width in pixels. The default is 1.

-B color

Set the background color of the bar. color must be specified in the hex format (#aarrggbb, #rrggbb, #rgb). If no compositor such as compton or xcompmgr is running the alpha channel is silently ignored.

-F color

Set the foreground color of the bar. Accepts the same color formats as -B.

-U color

Set the underline color of the bar. Accepts the same color formats as -B.

FORMATTING

lemonbar provides a screenrc-inspired formatting syntax to allow full customization at runtime. Every formatting block is opened with %{ and closed by } and accepts the following commands, the parser tries its best to handle malformed input. Use %% to get a literal percent sign (%).

R

Swap the current background and foreground colors.

l

Aligns the following text to the left side of the screen.

c

Aligns the following text to the center of the screen.

r

Aligns the following text to the right side of the screen.

Owidth

Offset the current position by width pixels in the alignment direction.

Bcolor

Set the text background color. The parameter color can be - or a color in one of the formats mentioned before. The special value - resets the color to the default one.

Fcolor

Set the text foreground color. The parameter color can be - or a color in one of the formats mentioned before. The special value - resets the color to the default one.

Tindex

Set the font used to draw the following text. The parameter index can either be - or the 1-based index of the slot which contains the desired font. If the parameter is - lemonbar resets to the normal behavior (matching the first font that can be used for the character). If the selected font can't be used to draw a character, lemonbar will fall back to normal behavior for that character

Ucolor

Set the text underline color. The parameter color can be - or a color in one of the formats mentioned before. The special value - resets the color to the default one.

Abutton:command:

Create a clickable area starting from the current position, when the area is clicked command is printed on stdout. The area is closed when a A token, not followed by : is encountered.

Eg. %{A:reboot:} Click here to reboot %{A}

The button field is optional, it defaults to the left button, and it's a number ranging from 1 to 5 which maps to the left, middle, right, scroll up and scroll down movements. Your mileage may vary.

Nested clickable areas can trigger different commands.

Eg. %{A:reboot:}%{A3:halt:} Left click to reboot, right click to shutdown %{A}%{A}

Sdir

Change the monitor the bar is rendered to. dir can be either

+/-

Next/previous monitor.

f/l

First/last monitor.

0-9

Nth monitor.

nNAME

Named monitor. Eg. %{SnHDMI-0} This text will show up on the HDMI-0 output

Attribute modifiers

+attribute

Set the attribute attribute for the following text.

-attribute

Unset the attribute attribute for the following text.

!attribute

Toggle the attribute attribute for the following text.

Where attribute is one of the following

o

Draw a line over the text.

u

Draw a line under the text.

OUTPUT

Clicking on an area makes lemonbar output the command to stdout, followed by a newline, allowing the user to pipe it into a script, execute it or simply ignore it. Simple and powerful, that's it.

WWW

git repository

AUTHOR

2012-2020 (C) The Lemon Man

Xinerama support was kindly contributed by Stebalien

RandR support was kindly contributed by jvvv

Clickable areas support was heavily based off u-ra contribution

Issues
  • Xft Support?

    Xft Support?

    I would like to use anti-aliased fonts.

    enhancement 
    opened by baskerville 53
  • Don't free the screen resources reply until we absolutely have to.

    Don't free the screen resources reply until we absolutely have to.

    On my system, premature free'ing resulted in an error at the xcb_randr_get_output_info_reply call, so randr didn't work at all.

    I can provide a bit more info about this, if necessary - the fix does seem very strange, but I assure it has fixed things for me. It was very difficult to debug, and I still don't really understand how it happened - I imagine the config_timestamp and rres_reply structs are sharing some internal info, or something like that.

    opened by nhoad 36
  • What is the difference between polybar and lemonbar?

    What is the difference between polybar and lemonbar?

    Just curious to know the difference between polybar and lemonbar? Can lemonbar be configured with a programming language like polybar can?

    opened by Joe23232 35
  • Monitor bar is rendered in is not consistent

    Monitor bar is rendered in is not consistent

    The monitor that bar is rendered in appears to change at random. I am able to reproduce this issue by starting bar multiple times using:

     echo "%{S0}test" |bar -g 1200x30+0+0 -p
    

    xrandr output:

    Screen 0: minimum 8 x 8, current 3120 x 1920, maximum 16384 x 16384
    DVI-I-0 disconnected (normal left inverted right x axis y axis)
    DVI-I-1 disconnected (normal left inverted right x axis y axis)
    HDMI-0 connected primary 1920x1200+1200+0 (normal left inverted right x axis y axis) 518mm x 324mm
       1920x1200      60.0*+
       1920x1080      60.0     59.9     50.0     60.0     50.0  
       1680x1050      60.0  
       1600x1200      60.0  
       1440x900       59.9  
       1280x1024      60.0  
       1280x960       60.0  
       1280x720       60.0     59.9     50.0  
       1024x768       60.0  
       800x600        60.3  
       720x576        50.0  
       720x480        59.9     60.1  
       640x480        59.9     59.9  
    DP-0 disconnected (normal left inverted right x axis y axis)
    DVI-D-0 disconnected (normal left inverted right x axis y axis)
    DP-1 connected 1200x1920+0+0 left (normal left inverted right x axis y axis) 520mm x 320mm
       1920x1200      60.0*+
       1920x1080      60.0     59.9     50.0     60.0     50.0  
       1680x1050      60.0  
       1600x1200      60.0  
       1440x900       59.9  
       1280x1024      60.0  
       1280x960       60.0  
       1280x720       60.0     59.9     50.0  
       1024x768       60.0  
       800x600        60.3  
       720x576        50.0  
       720x480        59.9     60.1  
       640x480        59.9     59.9 
    

    I'm using the current master branch head.

    opened by andornaut 30
  • Multiline input

    Multiline input

    EDIT: As you are hopefully able to learn from the first three posts, this issue is NOT about multi-line display, but about the BUG that the program fails to handle fast occurring input correctly (i. e., multi-line input).

    Multi-line input is not handled correctly by the program. If a multi-line string is received, only the first line is recognized, instead of the last line. The problem occurs if a line is sent immediately after the previous one. The reason is the use of fgets.

    opened by woho 18
  • Randr

    Randr

    This pull adds support for randr, adds checks for xinerama (support presense and active state), and merges support for both to be setup at runtime. It's working fine so far on my box. It could use some heavier testing, especially for the randr change event handling.

    opened by jvvv 17
  • bar in PPC, is possible?

    bar in PPC, is possible?

    Hi.

    First, thanks for this piece of software. Finally I found a alternative for the old dzen2. :)

    I have a sucessfull bar running in debian wheezy on a i686 machine, but my problem is with an old powerbook laptop (old, but very hard) with the same linux distribution. The last commit compile without problems, but when I run the simple "echo test | bar -p -d" nothing happens, nothing appears, but alfter few seconds the cpu load reach the 100%.

    I try to debug the bar process and a infinite loop occurs calling libxcb. Any idea or suggestion to solve the problem?

    Yes, I know the difficult to solve a problem with a different architecture, but maybe any idea can help.

    Sorry for my bad english.

    opened by electro7 16
  • Possibility to position text absolutely or to set paddings?

    Possibility to position text absolutely or to set paddings?

    Hi,

    is there a possibility to position things absolutely like one can do with dzen's ^pa()?

    I know a can align text to the left/center/right, but I don't see how to get text to start at for example 123px…

    Alternative: Is there an option to set CSS-like paddings?

    I've read the man page carefully, but I couldn't find anything like this…

    opened by ghost 15
  • Problem with echoing special font 'icons' to bar

    Problem with echoing special font 'icons' to bar

    Hey...weird problem here: If I (in urxvt) copy a symbol from the stlarch font, for example:

    echo -e "\ue037"
    

    and then copy that little box that appears into another echo statement(the * is the equivalent of the little box...it doesn't paste into firefox)

    echo "HI*"| bar -p
    

    that shows the battery icon symbol correctly. However if I just:

    echo "*" | bar -p
    

    the bar just shows a little dotted box where the icon should be. Is this a bug, or am I doing something wrong? I first noticed the issue when trying to get icons in my statusbar and only some would work. Especially when adding in the \r, \c and \l, it's not always clear when the icon will appear, when it just be a little dotted box, and when it will actually remove a space from the string, for example in this string:

    \l\f0\b1 t \fr\br\f1\b0 n \fr\br\f1\b0 c \fr\br\f1\b0 m \fr\br\f1\b0 g \fr\br\f1\b0 v \fr\br\f1\b0 o \fr\br \f1\b0[0]\fr\br\r\f1\b0 :: \fr\br\f8\b0*95%\fr\br\f1\b0 :: \fr\br\f7\b00.13 0.09 0.06\fr\br\f1\b0 :: \fr\br\f9\b043°F, Overcast\fr\br\f1\b0 :: \fr\br\f6\b0Sun 10 Mar 20:02\fr\br
    

    The * before the 95% is the battery icon, and when that string is echoed to bar, it actually removes the space before the 95% instead of printing the icon.

    Anyways, hope that's somewhat clear. Let me know if you need more info.

    Thanks! Scott

    Edit: sorry...here's my config.def.h for bar: http://sprunge.us/hFWI

    opened by firecat53 14
  • Too few areas available by default

    Too few areas available by default

    After starting serious tinkering, lemonbar gave me tons of "astack overflow" errors. The default number of maximum 20 clickable areas is too little: consider 10 workspaces with actions for left click and right click - there's no room left for anything else...

    Increasing N to 100 would relief the necessity to compile lemonbar ourselves and wouldn't impact memory usage at all.

    opened by rr- 13
  • Allow changing the 'default' background color at runtime

    Allow changing the 'default' background color at runtime

    I was surprised to notice that I couldn't change the background color of the whole bar at runtime, only the text background. I wished to change my bar color depending on which monitor has the focus but that doesn't seem to be possible. Would it be reasonable to implement this? I tried it myself but couldn't get it to work so far as this is my first time dabbling with xcb.

    opened by Ingvix 4
  • Hi I am curious to know how difficult was it to write lemonbar?

    Hi I am curious to know how difficult was it to write lemonbar?

    Hi I am curious to know how difficult was it to write (program) lemonbar?

    opened by Joe23232 1
  • underline / overline for entire bar with alignment.

    underline / overline for entire bar with alignment.

    Hello, i just wonder if it's possible to add consistent underline or overline across entire bar (for aesthetic). because i do want to fill my center section with it which is mostly blank and filled with active window title. it feels weird the underline and overline shrink and grows every time i hover through windows.

    it would be nice if my top bar underline could expand and fill the remaining space rather than leaving it blank 2018-01-31-12 51 31-screenshot

    P.S. Thank you for this awesome bar.

    opened by as3mbus 2
  • Allow for always-below

    Allow for always-below

    Currently lemonbar always makes itself always on top, however that messes up with fullscreen windows since the bar is always above them. _NET_WM_STATE_BELOW looks like what is necessary to force the bar window to the bottom.

    And this is not a WM issue. bar is an unmanaged window.

    opened by lf- 10
  • Handle resize events [Feature request #196]

    Handle resize events [Feature request #196]

    Implements resize events handling as requested in #196.

    opened by cpixl 2
  • [Feature request] Bar resizing

    [Feature request] Bar resizing

    Currently the bar doesn't support resizing after it was created e.g. via xdo resize.

    It would be nice to support this feature so the bar won't have to be recreated e.g. when a monitor changes resolution (therefore changing the width).

    opened by cpixl 0
  • Does bar still lack XFT support?

    Does bar still lack XFT support?

    I know there has been a lot of back and forth about this issue, but where things ended up are fairly unclear. I'm trying to use bar with two TTF fonts "Roboto Slab" and "FontAwesome", both are installed on my system:

    [[email protected]][~]% fc-list | grep 'Roboto Slab'
    /usr/share/fonts/TTF/RobotoSlab-Light.ttf: Roboto Slab:style=Light
    /usr/share/fonts/TTF/RobotoSlab-Regular.ttf: Roboto Slab:style=Regular
    /usr/share/fonts/TTF/RobotoSlab-Thin.ttf: Roboto Slab:style=Thin
    /usr/share/fonts/TTF/RobotoSlab-Bold.ttf: Roboto Slab:style=Bold
    [[email protected]][~]% fc-list | grep 'FontAwesome'
    /usr/share/fonts/TTF/fontawesome-webfont.ttf: FontAwesome:style=Regular
    [[email protected]][~]% 
    

    I have even tried different syntaxes for telling bar to use them -f "Roboto Slab-10" -f "FontAwesome-10", -f "Roboto Slab:size=10" -f "FontAwesome:size=10", and -f "xft:Roboto Slab:size=10" -f "FontAwesome:size=10". I've even tried this syntax -*-Roboto Slab-medium-o-*-*-14-*-*-*-*-*-*-* to no avail. This leads me to think XFT is still unsupported in this version, is this correct?

    opened by vendion 8
  • Add WM_CLASS atom

    Add WM_CLASS atom

    As requested here this are the changes to the WM_CLASS atom.

    The WM_CLASS is set to "instance", "class", where

    | element | description | | --- | --- | | class | programm name, Bar in this case | | instance | programm instance, usually the executable name as passed by argv[0] |

    This should help write better wm rules for hiding the bar and stuff like that.

    EDIT: Changed class to capitalized "Bar"

    opened by tryone144 1
  • Feature request: Make entire bar clickable.

    Feature request: Make entire bar clickable.

    I have some bars I want to make clickable in it's entirety, not just the parts where there is text.

    enhancement 
    opened by onodera-punpun 5
Releases(v1.4)
  • v1.4(Nov 20, 2020)

    epic guitar solo

    Notable changes:

    • Unlimited number of clickable areas, the -a switch was removed.
    • Unlimited number of loadable fonts (yay, I guess?).
    • You can now specify what screens are used by lemonbar with the -o switch.
    • The new Sn specifier allows you to select a screen by name.
    • Much better handling of rapidly-changing input (#107).
    • Underlines and overlines are not reset when changing the alignment.

    Bug fixes:

    • Use opaque black/white colors as default values.
    • Reset the attributes and colors between each rendered line.

    :lemon:

    Source code(tar.gz)
    Source code(zip)
  • v1.3(Nov 20, 2017)

    🐛 Bugfixes!

    Notable changes:

    • Correct handling of escaped % characters.
    • The WM_NAME atom is now set for all the windows.
    • Fix an unsafe memory access during the argument parsing.
    • Correct the coordinate calculation for the EWMH STRUT atoms.
    Source code(tar.gz)
    Source code(zip)
  • v1.2(May 14, 2016)

    Mostly bugfixes and a few new features :tada:

    Breaking changes

    • The -f switch now doesn't accept comma-separated font names anymore, use multiple -f instead
    • Named colors aren't supported anymore
    Source code(tar.gz)
    Source code(zip)
  • v1.1(Apr 1, 2015)

Owner
In your stack, eating your cookies
null
An adaptive Gtk+ theme based on Material Design Guidelines

Adapta-gtk-theme An adaptive Gtk+ theme based on Material Design Guidelines. 27 Mar 2020 Development of the Adapta GTK theme has completely ended. Tur

null 3.4k Nov 30, 2021
This is a Flat theme for Ubuntu and other Gnome based Linux Systems.

Update - I am looking for additional collaborators and maintainers to help me out with this. I have been keeping busy lately, and have been using Ubun

Anmol Jagetia 3.7k Nov 30, 2021
A fast and easy-to-use status bar

A fast and easy-to-use tool for creating status bars. Documentation | Installation | Support | Donate Polybar aims to help users build beautiful and h

null 9.5k Nov 30, 2021
Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework. It uses MySQL as the data back end and has a Bootstrap 3 based user interface.

Introduction Open Source Point of Sale is a web based point of sale system. The main features are: Stock management (Items and Kits with extensible li

opensourcepos 2.4k Nov 28, 2021
Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework. It uses MySQL as the data back end and has a Bootstrap 3 based user interface.

Introduction Open Source Point of Sale is a web based point of sale system. The main features are: Stock management (Items and Kits with extensible li

opensourcepos 2.4k Nov 30, 2021
A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.

OpenCart Overview OpenCart is a free open source ecommerce platform for online merchants. OpenCart provides a professional and reliable foundation fro

OpenCart 6.3k Nov 29, 2021
Free, open-source, self-hosted CMS platform based on the Laravel PHP Framework.

October is a Content Management System (CMS) and web platform whose sole purpose is to make your development workflow simple again. It was born out of

October CMS 10.7k Nov 27, 2021
Bolt is a simple CMS written in PHP. It is based on Silex and Symfony components, uses Twig and either SQLite, MySQL or PostgreSQL.

⚠️ Note - Not the latest version This is the repository for Bolt 3. Please know that Bolt 4 has been released. If you are starting a new project, plea

Bolt 4.1k Nov 26, 2021
Camaleon CMS is a dynamic and advanced content management system based on Ruby on Rails

CAMALEON CMS Website Documentation Demonstration About Camaleon CMS is a dynamic and advanced content management system based on Ruby on Rails that ad

Owen Peredo Diaz 1.2k Nov 28, 2021
REDAXO, a PHP-based CMS since 2004. Both simple and flexible.

?? Deutsch Content Management since 2004. Both simple and flexible. REDAXO provides you an easy-to-learn website framework. It lets you create content

REDAXO CMS c/o Yakamara Media GmbH & Co. KG 273 Dec 1, 2021
Roadiz is a polymorphic CMS based on a node system which can handle many types of services.

Roadiz CMS Roadiz is a modern CMS based on a polymorphic content-schema system which can handle many types of services. Its back-office has been devel

Roadiz 366 Nov 30, 2021
[READ-ONLY] An open source Content Application Platform based on Flow. A set of core Content Management features is resting within a larger context that allows you to build a perfectly customized experience for your users

The Neos package Note This repository is a read-only subsplit of a package that is part of the Neos project (learn more on www.neos.io). Neos is an op

Neos 97 Nov 25, 2021
CMS based on modules as Rails 4 engines

Golden Cobra Powered by ActiveAdmin Current versions 1.4.x (branch: release/1.5) 2.x.x (branch: master) 3.x.x (branch: release/3) Requirements Ruby 2.

ikusei GmbH 21 Dec 8, 2020
Plume is a federated blogging engine, based on ActivityPub.

Plume is a federated blogging engine, based on ActivityPub. It is written in Rust, with the Rocket framework, and Diesel to interact with the database. The front-end uses Ructe templates, WASM and SCSS.

Plume 1.6k Dec 1, 2021
Espial is an open-source, web-based bookmarking server.

Espial Espial is an open-source, web-based bookmarking server. It allows mutiple accounts, but currently intended for self-host scenarios. The bookmar

Jon Schoning 441 Nov 18, 2021
Self-hosted, Node.js based analytics tool for those who care about privacy.

Ackee Self-hosted, Node.js based analytics tool for those who care about privacy. Ackee runs on your own server, analyzes the traffic of your websites

Tobias Reich 3.1k Nov 21, 2021
A distributed system for embedding-based retrieval

Overview Vearch is a scalable distributed system for efficient similarity search of deep learning vectors. Architecture Data Model space, documents, v

vector search infrastructure for AI applications 1.2k Dec 1, 2021
Vector AI — A platform for building vector based applications. Encode, query and analyse data using vectors.

Vector AI is a framework designed to make the process of building production grade vector based applications as quickly and easily as possible. Create

Vector AI 234 Nov 30, 2021
Free and open-source digital preservation system designed to maintain standards-based, long-term access to collections of digital objects.

Archivematica By Artefactual Archivematica is a web- and standards-based, open-source application which allows your institution to preserve long-term

Artefactual 297 Nov 19, 2021
Free and open fair-code licensed node based Workflow Automation Tool. Easily automate tasks across different services.

n8n - Workflow Automation Tool n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source

n8n - Workflow Automation 19k Nov 29, 2021
The free Zapier/IFTTT alternative for developers to automate your workflows based on Github actions

Actionsflow If you like Actionsflow, please vote for us on Product Hunt The free IFTTT/Zapier alternative for developers to automate their workflows b

Actionsflow 2.2k Nov 30, 2021
beets based mitm of your torrent client and music player

beets.io based man-in-the-middle of your torrent client and music player workflow notifiers betanin uses apprise for notifications. so anything suppor

Senan Kelly 125 Nov 27, 2021
Python based delicious.com replacement

Bookie Main Site: https://bmark.us Public Bookie Instances: https://github.com/bookieio/Bookie/wiki/Bookie-instances Docs: http://docs.bmark.us Mailin

null 639 Nov 22, 2021
Web-based social bookmarking system. Allows multiple users to store, share and tag their favourite links online.

Scuttle 0.9.0 http://scuttle.org/ Copyright (C) 2004 - 2010 Marcus Campbell Available under the GNU General Public License ============ INSTALLATION

Marcus 187 Oct 11, 2021
🗓 A simple, fully translatable admin interface for sabre/dav based on Symfony 5 and Bootstrap 4, largely inspired by Baïkal.

Davis A simple, fully translatable admin interface and frontend for sabre/dav based on Symfony 5 and Bootstrap 4, largely inspired by Baïkal. Requirem

tchap 71 Nov 17, 2021
Node.js based forum software built for the modern web

NodeBB Forum Software is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interact

NodeBB 12.3k Nov 29, 2021
Web and API based SMTP testing

MailHog Inspired by MailCatcher, easier to install. Download and run MailHog Configure your outgoing SMTP server View your outgoing email in a web UI

MailHog 9.3k Dec 1, 2021
Simple, modern & fast web-based email client

RainLoop Webmail Simple, modern & fast web-based email client. Modest system requirements, decent performance, simple installation and upgrade, no dat

RainLoop Team 3.6k Nov 28, 2021
Web-based XMPP/Jabber chat client written in JavaScript

Converse is a web based XMPP/Jabber chat client. You can either use it as a webchat app, or you can integrate it into your own website. It's 100% clie

Converse.js 2.7k Nov 30, 2021