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 https://github.com/frantic1048/conky-i3bar.git
conky -c conky-i3bar/conkyrc.lua &
# show sys tray with tint2
#
# NOTE:
# 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:
# https://github.com/frantic1048/Vanilla/blob/master/tint2/.config/tint2/tint2rc
#
# to work with conky-i3bar
# configure it with only trayicons is fine
tint -c ~/.config/tint2/tint2rc &
# forget about i3bar (「・ω・)「
- 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:
- create
your_component.lua
under/components
. - in
/i3bar.lua
, declare your component in the beginning like other components do. - 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 = opt.cr,
x = opt.x, y = opt.y + 5,
h = 20, w = 20,
file = opt.RESOURCE_PATH .. 'arch-logo.svg'})
end
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 opt.cr
.
For Cairo usage, see: https://www.cairographics.org/manual/ , the Lua interface is very identical to the documentation's C expression(without type signature)
- anowplaying.py script for Clementine status.
- ろうか @rouka0101's AWWWWEEEESOOOMEEE Chino illustration in screenshot.