【发布时间】:2019-04-25 00:38:19
【问题描述】:
这就是这样的场景:假设我有一个文本框,我想将它准确地放置在屏幕的右侧,但仍然让文本框保留自己的尺寸。换句话说,我只想指定字体,让文本框选择正确的尺寸,然后将其放在屏幕边缘。如果我知道尺寸就很容易了,从那以后我就可以了
local awful = require("awful")
local wibox = require("wibox")
local text_widget = wibox.widget({
widget = wibox.widget.textbox,
font = "Roboto Medium 15",
text = "hello world",
})
local rightmost_place = wibox.widget({
layout = wibox.layout.manual,
{
text_widget,
point = {
y = 0,
-- You can't actually do the `text_widget.geometry.width`
x = awful.screen.focused().geometry.width
- text_widget.geometry.width
},
-- We're not setting these so the textbox
-- will get its size automatically
-- forced_width =
-- forced_height =
},
})
这样,每当我输入内容时,文本框会变大,但它会根据x 坐标自动重新定位。
此外,这不仅仅是关于文本框。我对其他小部件也有同样的问题,所以我的问题是:有什么方法可以让小部件获得他们喜欢的尺寸,但仍然可以让它们的几何形状重新定位到你想要的位置?
【问题讨论】:
-
这是特定于文本框的,所以我不会给出答案,但是:wibox.widget.textbox 有一个
get_preferred_size_at_dpi()函数。这也凸显了为什么很难获得文本框的大小:不同的屏幕可以有不同的 DPI,所以同一个文本框可以同时有不同的大小。其他小部件还有其他复杂性。 Emmanuel 曾经尝试添加一个 API 来获得所有小部件的首选尺寸,我似乎设法说服他放弃它......
标签: awesome-wm