Real conky window as i3bar replacement
Switch branches/tags
Nothing to show
Clone or download


A real conky window as an i3bar replacement, works with tint2.



  • i3wm workspace status
  • system load diagram
  • NVIDIA graphic card load diagram
  • date & time
  • Clementine current playing music
  • systray (provided by tint2)


  • Conky with Lua binding, of course!
  • luajson (for processing i3's output)
  • Python3 (for python script to get Clementine status)
  • tint2 (systray support, other individual systray apps is fine)


git clone
conky -c conky-i3bar/conkyrc.lua &

# show sys tray with tint2
#   tint2 has a GUI configuration tool
#   just configure it to what you like
#   or you may want to take a look at frantic1048's config:
#   to work with conky-i3bar
#   configure it with only trayicons is fine
tint -c ~/.config/tint2/tint2rc &

# forget about i3bar (「・ω・)「


To get the best visual

  • A compositor(like compton) is recommended. Thus you can make the systray become transparent and even blurred.
  • A minimal terminal emulator like Sakura and Alacritty with transparent background config.
  • i3-frame with a transparent background.
  • If you code much, an editor with full transparent background is recommended, like editors in terminal, or Atom with transparent patch with a full transparent flavor UI theme(e.g. Tia-ui)


Code structure:

├── i3bar.lua      -- entry program
├── util.lua       -- utility functions
├── conkyrc.lua    -- example conkyrc (conky config)
├── bin            -- external executable dependencies
├── components     -- modular drawable components
└── resource       -- dumb resource files(image, etc.)

the process to add a new component:

  1. create your_component.lua under /components.
  2. in /i3bar.lua, declare your component in the beginning like other components do.
  3. draw your component with draw_component function

Never doubt about font settings in draw_component function, it's just a prest, you can set your own font style inside component drawing logic(i.e. in /components/your_component.lua)

A component is a function, the simlest component is /components/arch_logo.lua, it just draw an image under /resource/arch-logo.svg:

-- we need the util function to easily draw an SVG image
-- see `/util.lua` to see all util functions
local util = require 'util'

-- an Arch Linux logo <(=*/ω\*=)>
-- every component function get a single `opt` argument
--    it contains(for detailed list, see `draw_component` function in `/i3bar.lua`):
--        - useful variables
--            cr: current drawing cairo context,
--                needed with usage of any cairo related operations
--            RESOURCE_PATH: `/resource` path
--        - position parameter from `draw_component` function
--              opt.x, opt.y
return function (opt)
    util.draw_svg({cr =,
              x = opt.x, y = opt.y + 5,
              h = 20, w = 20,
              file = opt.RESOURCE_PATH .. 'arch-logo.svg'})

Keep in mind, the component is a Lua script, so you can do anything to an "input" you want with Lua, and display an "output" by drawing with Cairo functions on

For Cairo usage, see: , the Lua interface is very identical to the documentation's C expression(without type signature)