内容简介:luastatusis a universal status bar content generator. It allows you to configure the way the data from event sources is processed and shown, with Lua.Its main feature is that the content can be updated immediately as some event occurs, be it a change of ke
luastatusis a universal status bar content generator. It allows you to configure the way the data from event sources is processed and shown, with Lua.
Its main feature is that the content can be updated immediately as some event occurs, be it a change of keyboard layout, active window title, volume or a song in your favorite music player (provided that there is a plugin for it) — a thing rather uncommon for tiling window managers.
Its motto is:
No more heavy-forking, second-lagging shell-script status bar generators!
Screenshot
Above is i3bar with luastatus with Bitcoin price, time, volume, and keyboard layout widgets.
Key concepts
In short:
- plugin is a thing that decides when to call the callback function
widget.cband what to pass to it; - barlib ( bar lib rary) is a thing that decides what to with values that
widget.cbfunction returns; - there are also derived plugins , which are plugins written in Lua that use regular plugins.
Examples
ALSA volume widget:
widget = {
plugin = 'alsa',
opts = {
channel = 'PCM'
},
cb = function(t)
if t.mute then
return {full_text = '[mute]', color = '#e03838'}
else
local percent = (t.vol.cur - t.vol.min)
/ (t.vol.max - t.vol.min)
* 100
return {full_text = string.format('[%3d%%]', math.floor(0.5 + percent)),
color = '#718ba6'}
end
end,
event = function(t)
if t.button == 1 then -- left mouse button
os.execute('urxvt -e alsamixer &')
end
end
}
GMail widget (uses the derived plugin imap ):
--[[
-- Expects 'credentials.lua' to be present in the current directory; it may contain, e.g.,
-- return {
-- gmail = {
-- login = 'john.smith',
-- password = 'qwerty'
-- }
-- }
--]]
credentials = require 'credentials'
widget = luastatus.require_plugin('imap').widget{
host = 'imap.gmail.com',
port = 993,
mailbox = 'Inbox',
use_ssl = true,
timeout = 2 * 60,
handshake_timeout = 10,
login = credentials.gmail.login,
password = credentials.gmail.password,
error_sleep_period = 60,
cb = function(unseen)
if unseen == nil then
return nil
elseif unseen == 0 then
return {full_text = '[-]', color = '#595959'}
else
return {full_text = string.format('[%d unseen]', unseen)}
end
end,
event = [[ -- separate-state event function
local t = ... -- obtain argument of this implicit function
if t.button == 1 then -- left mouse button
os.execute('xdg-open https://gmail.com &')
end
]]
}
See more examples here .
Installation
cmake . && make && sudo make install
You can specify a Lua library to build with: cmake -DWITH_LUA_LIBRARY=luajit .
You can disable building certain barlibs and plugins, e.g. cmake -DBUILD_PLUGIN_XTITLE=OFF .
You can disable building man pages: cmake -DBUILD_DOCS=OFF .
Getting started
It is recommended to first have a look at the luastatus' man page .
Then, read the barlib's and plugins' documentation, either via directly viewing barlibs/<name>/README.rst and plugins/<name>/README.rst files, or via installing the man pages and reading luastatus-barlib-<name>(7) and luastatus-plugin-<name>(7) .
Barlib-specific notes on usage follow.
i3
luastatus-i3-wrapper should be specified as the i3bar's status command in the i3 config, e.g.:
bar {
status_command cd ~/.config/luastatus && exec luastatus-i3-wrapper -B no_separators time-battery-combined.lua alsa.lua xkb.lua
See also README for i3 and examples for i3 .
dwm
luastatus should simply be launched with -b dwm , e.g.:
luastatus -b dwm -B separator=' • ' alsa.lua time-battery-combined.lua
See also README for dwm and examples for dwm .
lemonbar
lemonbar should be launched with luastatus-lemonbar-launcher , e.g.:
luastatus-lemonbar-launcher -p -B#111111 -p -f'Droid Sans Mono for Powerline:pixelsize=12:weight=Bold' -- -Bseparator=' ' alsa.lua time-date.lua
See also README for lemonbar and examples for lemonbar .
stdout
luastatus should be launched with luastatus-stdout-wrapper ; or write your own wrapper, see e.g. the wrapper for launching dvtm with luastatus .
See also README for stdout and and examples for stdout .
Supported Lua versions
- 5.1
- LuaJIT, which is currently 5.1-compatible with "some language and library extensions from Lua 5.2"
- 5.2
- 5.3
- 5.4 (
work1,work2pre-release versions)
Reporting bugs, requesting features, suggesting patches
Feel free to open an issue or a pull request.
Migrating from older versions
See the Migration Guide .
Acknowledgements
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
离散数学及其应用(原书第5版)
[美] Kenneth H. Rosen / 袁崇义 / 机械工业出版社 / 2007-6 / 79.00元
《离散数学及其应用》(原书第5版)全面而系统地介绍了离散数学的理论和方法,内容涉及数学推广、组合分析、离散结构和算法设计。全书取材广泛,除包括定义、定理的严密陈述外,还配备大量的实例和图表的说明,各种联系和题目。以及丰富的历史资料和网站资源。第5版在前四版的基础上作了大量的改进,使其成为更有效的教学工具。。一起来看看 《离散数学及其应用(原书第5版)》 这本书的介绍吧!