如何自动调整 wibar 的大小?
How can I automatically resize wibar?
我配置了 wibar 以便自动更新输出。但是有个问题就是输出可以超出wibar的边界。我想出的所有解决方案都不是很好。我该如何解决这个问题?
示例:
不幸的是,在我有 10 个声誉之前我无法插入图像。我只能在有图片显示问题的地方留下 link to the question on github。
代码:
mycpu = wibox.widget { widget = wibox.widget.textbox }
mycputemp = wibox.widget { widget = wibox.widget.textbox }
myram = wibox.widget { widget = wibox.widget.textbox }
mybattery = wibox.widget { widget = wibox.widget.textbox }
myupdates = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#c38a48'></span> . ",
widget = wibox.widget.textbox
}
mykeyboardlayout = awful.widget.keyboardlayout()
mykeyboardlayout_icon = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#d499e5'></span>",
widget = wibox.widget.textbox
}
mytextclock = wibox.widget {
format = ' %H:%M ',
widget = wibox.widget.textclock
}
mytextclock_icon = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#51afef'></span>",
widget = wibox.widget.textbox
}
awful.screen.connect_for_each_screen(function(s)
s.mywibox = awful.wibar {
screen = s,
align = "right",
margins = {
top = 14,
right = 14
},
width = 586,
height = 42,
bg = "#1c252acc",
widget = {
{
layout = wibox.layout.fixed.horizontal,
expand = "none",
mycpu,
mycputemp,
myram,
mybattery,
myupdates,
mykeyboardlayout_icon,
mykeyboardlayout,
mytextclock_icon,
mytextclock
},
widget = wibox.container.margin
}
}
end)
gears.timer {
timeout = 1.5,
call_now = true,
autostart = true,
callback = function()
awful.spawn.easy_async_with_shell("cpu",
function(out)
cpu_out = " <span font='Myfont' size='16.5pt' foreground='#ff6c6b'></span> " ..
out:gsub("%\n", "") .. " "
end)
awful.spawn.easy_async_with_shell("cat /sys/class/hwmon/hwmon3/temp1_input",
function(out)
mycputemp.markup = " <span font='Myfont' size='16.5pt' foreground='#ffaf00'></span> " ..
math.floor(tonumber(out)/1000+0.5) .. "°C "
end)
awful.spawn.easy_async_with_shell("ram",
function(out)
ram_out = " <span font='Myfont' size='16.5pt' foreground='#98be65'></span> " ..
out:gsub("%\n", "") .. " "
end)
awful.spawn.easy_async_with_shell("cat /sys/class/power_supply/BAT1/capacity",
function(out)
bat_out = " <span font='MyFont' size='16.5pt' foreground='#46d9ff'></span> " ..
out:gsub("%\n", "") .. "% "
end)
mycpu.markup = cpu_out
myram.markup = ram_out
mybattery.markup = bat_out
end
}
我能找到的最佳解决方案是使用 awful.popup
而不是 awful.wibar
。
mycpu = wibox.widget { widget = wibox.widget.textbox }
mycputemp = wibox.widget { widget = wibox.widget.textbox }
myram = wibox.widget { widget = wibox.widget.textbox }
mybattery = wibox.widget { widget = wibox.widget.textbox }
myupdates = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#c38a48'></span> . ",
widget = wibox.widget.textbox
}
mykeyboardlayout = awful.widget.keyboardlayout()
mykeyboardlayout_icon = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#d499e5'></span>",
widget = wibox.widget.textbox
}
mytextclock = wibox.widget {
format = ' %H:%M ',
widget = wibox.widget.textclock
}
mytextclock_icon = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#51afef'></span>",
widget = wibox.widget.textbox
}
awful.screen.connect_for_each_screen(function(s)
s.mywibox = awful.popup {
screen = s,
placement = function(c)
return awful.placement.top_right(c, { margins = 14 })
end,
minimum_height = 42,
bg = "#1c252acc",
widget = {
{
layout = wibox.layout.fixed.horizontal,
expand = "none",
mycpu,
mycputemp,
myram,
mybattery,
myupdates,
mykeyboardlayout_icon,
mykeyboardlayout,
mytextclock_icon,
mytextclock
},
widget = wibox.container.margin
}
}
s.mywibox:struts({top = s.mywibox.minimum_height + beautiful.useless_gap * 2})
end)
gears.timer {
timeout = 1.5,
call_now = true,
autostart = true,
callback = function()
awful.spawn.easy_async_with_shell("cpu",
function(out)
mycpu.markup = " <span font='Myfont' size='16.5pt' foreground='#ff6c6b'></span> " ..
out:gsub("%\n", "") .. " "
end)
awful.spawn.easy_async_with_shell("cat /sys/class/hwmon/hwmon3/temp1_input",
function(out)
mycputemp.markup = " <span font='Myfont' size='16.5pt' foreground='#ffaf00'></span> " ..
math.floor(tonumber(out)/1000+0.5) .. "°C "
end)
awful.spawn.easy_async_with_shell("ram",
function(out)
myram.markup = " <span font='Myfont' size='16.5pt' foreground='#98be65'></span> " ..
out:gsub("%\n", "") .. " "
end)
awful.spawn.easy_async_with_shell("cat /sys/class/power_supply/BAT1/capacity",
function(out)
mybattery.markup = " <span font='MyFont' size='16.5pt' foreground='#46d9ff'></span> " ..
out:gsub("%\n", "") .. "% "
end)
end
}
我配置了 wibar 以便自动更新输出。但是有个问题就是输出可以超出wibar的边界。我想出的所有解决方案都不是很好。我该如何解决这个问题?
示例:
不幸的是,在我有 10 个声誉之前我无法插入图像。我只能在有图片显示问题的地方留下 link to the question on github。
代码:
mycpu = wibox.widget { widget = wibox.widget.textbox }
mycputemp = wibox.widget { widget = wibox.widget.textbox }
myram = wibox.widget { widget = wibox.widget.textbox }
mybattery = wibox.widget { widget = wibox.widget.textbox }
myupdates = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#c38a48'></span> . ",
widget = wibox.widget.textbox
}
mykeyboardlayout = awful.widget.keyboardlayout()
mykeyboardlayout_icon = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#d499e5'></span>",
widget = wibox.widget.textbox
}
mytextclock = wibox.widget {
format = ' %H:%M ',
widget = wibox.widget.textclock
}
mytextclock_icon = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#51afef'></span>",
widget = wibox.widget.textbox
}
awful.screen.connect_for_each_screen(function(s)
s.mywibox = awful.wibar {
screen = s,
align = "right",
margins = {
top = 14,
right = 14
},
width = 586,
height = 42,
bg = "#1c252acc",
widget = {
{
layout = wibox.layout.fixed.horizontal,
expand = "none",
mycpu,
mycputemp,
myram,
mybattery,
myupdates,
mykeyboardlayout_icon,
mykeyboardlayout,
mytextclock_icon,
mytextclock
},
widget = wibox.container.margin
}
}
end)
gears.timer {
timeout = 1.5,
call_now = true,
autostart = true,
callback = function()
awful.spawn.easy_async_with_shell("cpu",
function(out)
cpu_out = " <span font='Myfont' size='16.5pt' foreground='#ff6c6b'></span> " ..
out:gsub("%\n", "") .. " "
end)
awful.spawn.easy_async_with_shell("cat /sys/class/hwmon/hwmon3/temp1_input",
function(out)
mycputemp.markup = " <span font='Myfont' size='16.5pt' foreground='#ffaf00'></span> " ..
math.floor(tonumber(out)/1000+0.5) .. "°C "
end)
awful.spawn.easy_async_with_shell("ram",
function(out)
ram_out = " <span font='Myfont' size='16.5pt' foreground='#98be65'></span> " ..
out:gsub("%\n", "") .. " "
end)
awful.spawn.easy_async_with_shell("cat /sys/class/power_supply/BAT1/capacity",
function(out)
bat_out = " <span font='MyFont' size='16.5pt' foreground='#46d9ff'></span> " ..
out:gsub("%\n", "") .. "% "
end)
mycpu.markup = cpu_out
myram.markup = ram_out
mybattery.markup = bat_out
end
}
我能找到的最佳解决方案是使用 awful.popup
而不是 awful.wibar
。
mycpu = wibox.widget { widget = wibox.widget.textbox }
mycputemp = wibox.widget { widget = wibox.widget.textbox }
myram = wibox.widget { widget = wibox.widget.textbox }
mybattery = wibox.widget { widget = wibox.widget.textbox }
myupdates = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#c38a48'></span> . ",
widget = wibox.widget.textbox
}
mykeyboardlayout = awful.widget.keyboardlayout()
mykeyboardlayout_icon = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#d499e5'></span>",
widget = wibox.widget.textbox
}
mytextclock = wibox.widget {
format = ' %H:%M ',
widget = wibox.widget.textclock
}
mytextclock_icon = wibox.widget {
markup = " <span font='MyFont' size='16.5pt' foreground='#51afef'></span>",
widget = wibox.widget.textbox
}
awful.screen.connect_for_each_screen(function(s)
s.mywibox = awful.popup {
screen = s,
placement = function(c)
return awful.placement.top_right(c, { margins = 14 })
end,
minimum_height = 42,
bg = "#1c252acc",
widget = {
{
layout = wibox.layout.fixed.horizontal,
expand = "none",
mycpu,
mycputemp,
myram,
mybattery,
myupdates,
mykeyboardlayout_icon,
mykeyboardlayout,
mytextclock_icon,
mytextclock
},
widget = wibox.container.margin
}
}
s.mywibox:struts({top = s.mywibox.minimum_height + beautiful.useless_gap * 2})
end)
gears.timer {
timeout = 1.5,
call_now = true,
autostart = true,
callback = function()
awful.spawn.easy_async_with_shell("cpu",
function(out)
mycpu.markup = " <span font='Myfont' size='16.5pt' foreground='#ff6c6b'></span> " ..
out:gsub("%\n", "") .. " "
end)
awful.spawn.easy_async_with_shell("cat /sys/class/hwmon/hwmon3/temp1_input",
function(out)
mycputemp.markup = " <span font='Myfont' size='16.5pt' foreground='#ffaf00'></span> " ..
math.floor(tonumber(out)/1000+0.5) .. "°C "
end)
awful.spawn.easy_async_with_shell("ram",
function(out)
myram.markup = " <span font='Myfont' size='16.5pt' foreground='#98be65'></span> " ..
out:gsub("%\n", "") .. " "
end)
awful.spawn.easy_async_with_shell("cat /sys/class/power_supply/BAT1/capacity",
function(out)
mybattery.markup = " <span font='MyFont' size='16.5pt' foreground='#46d9ff'></span> " ..
out:gsub("%\n", "") .. "% "
end)
end
}