- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看看这段代码:
local urgent = {}
local capi =
{
client = client,
}
local client
do
client = setmetatable({}, {
__index = function(_, k)
client = require("awful.client")
return client[k]
end,
__newindex = error -- Just to be sure in case anything ever does this
})
end
我无法理解它的作用。它来自 awesome-wm
项目。这些是我难以理解的事情:
client = client
在capi
setmetatable
里面的东西 do-end
最佳答案
client = client
in the declaration ofcapi
这定义了 capi 的哪一部分在此文件的范围内可用,如果您查看 client.lua 文件,您会看到其中定义的 capi
具有客户端、鼠标、屏幕、很棒。
对于 capi
表中定义的每个项目,都有一个对应的 .c 文件。这些文件定义了诸如 client
之类的对象。 urgent.lua
具有该对象的可见性,可能它是一个全局变量,这就是我们如何设置 client = client
第二个客户端引用全局变量。
这是 2 个文件的示例:
主.lua
bar = "Hello World!"
local foo = require('foo')
print(foo.bar)
foo.lua
local foo = {
bar = bar
}
return foo
main.lua 中的打印函数将产生 Hello World!
setmetatable
stuff insidedo-end
这里通过在 do-end block 中扭曲 setmetatable
代码在受限范围内执行。通常这样做是为了包含 block 的局部变量,以便它们在代码执行后不会持续存在。
那不是这个 block 的目的,因为这个 block 没有局部变量。如我所见,阻塞只是为了表明被修改的对象是客户端的局部变量,不是全局变量客户端的变量。
另外这里的metatable是用来防止依赖循环的,这个在项目中一些类似代码出现的地方的注释里有提到,比如client.lua
里面的local screen
已定义。
关于lua - 这段来自 awesome wm 的 lua 代码是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53933064/
我正在寻找一种让应用程序使用自己的全屏模式但不调整自己的窗口大小的方法。 例如,我想在全屏模式下在网络浏览器上观看视频,以隐藏除视频之外的浏览器/网站的所有其他栏/内容,但我想保留我的显示布局以同时查
如何配置真棒,所以它会启动新的应用程序,两个窗口对齐,如下所示: ---------------- |xxxxxxxxxx####| |xxxxxxxxxx####| |xxxxxxxxxx####|
我已阅读 Setting windows layout for a specific application in awesome-wm .现在我想在自动启动期间在特定标签下执行此操作。 例如: I
我刚开始在 Awesome 中为 rc.lua 做自定义 lua,我在想出如何根据鼠标位置启动某些东西时遇到了一些麻烦。到目前为止,这就是我所拥有的,但它没有做任何事情。 -- Open todo w
我刚开始在 Awesome 中为 rc.lua 做自定义 lua,我在想出如何根据鼠标位置启动某些东西时遇到了一些麻烦。到目前为止,这就是我所拥有的,但它没有做任何事情。 -- Open todo w
有人能告诉我标题栏中的图标是什么意思吗?一个火箭,一个加号,一个明星……我很好奇。 最佳答案 查看图标的文件名。第一个组件描述的含义:https://github.com/awesomeWM/awes
我有两个显示器,开箱即用的 AwesomeWM 完全按照我喜欢的方式工作。但是,我想启动一个特别宽的应用程序 (avidemux),以便它在两个屏幕上水平延伸。 desired: app across
我正在开发一个 Windows Mobile 应用程序,我遇到了 CCommandBar 的问题,它结合了工具栏和菜单栏。好吧,我的意思是: m_wndCommandBar.InsertMenuBar
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
当我切换到另一个标签时,会选择一个新客户端,但有时我的鼠标光标不在该客户端上。为了让我的鼠标指针下的客户端聚焦,我必须点击它的某个地方,或者使用 Mod4+j/k 切换到它,或者将鼠标光标移出并移回该
我在笔记本电脑上使用带有外接显示器的超棒 wm,但有时我只移动并携带笔记本电脑。 我的问题是:当我断开连接以移动笔记本电脑时,在外部显示器中打开的客户端会发生什么? 有没有办法让很棒记住屏幕的布局?目
任务栏中的“+”符号是什么意思? This is a screenshot with the "+". 碰巧,打开另一个客户端时带有“+”的客户端不会平铺。当最大化客户端时,“+”消失,但是它也不会平
我正在尝试使用扩展链路层在 C1 模式下解密来自 Kamstrup Multical21 的 wm-bus 电报。 负载连同 ELL 信息如下: 23 44 2D 2C 45 45 71 63 1B
编辑:这个问题/答案是从 2013 年开始的,当时 Awesome 还在 3.4/3.5 版本上,从那时起发生了很多变化,因为 Awesome 在 4+ 版本中被重写了,你现在看到的可能会有所不同。我
我希望当网络环境改变时,awesome wm 能够以不同的配置运行。因此我在网络管理调度程序中编写了一个脚本,以便当网络环境发生变化时执行该脚本; #!/bin/bash # Restart awes
我想写一个基本的硬件加速窗口管理器,所以我一直在寻找一些关于如何开始的文档,但我只设法找到了 this tutorial ,它使用了过时版本的 Clutter,并且不会使用当前可用的任何版本进行构建。
有什么方法可以在 AwesomeWM 窗口管理器中将系统托盘形状更改为圆角矩形?我在文档中搜索了“wibox.widget.systray”类,但它没有更改其形状的选项。我试图将系统托盘放入容器并在那
前几天安装了awesome wm,不小心把/etc/xdg/awesome/rc.lua改成了~/.config/awesome/rc.lua 所以我重新安装以尝试获取原始文件的副本。我做了 sudo
我一直在用awesome在 ubuntu 14.04 上一段时间。 rc.lua 中定义的默认布局是: layouts = { awful.layout.suit.floating,
我在 Ubuntu 17.10 和 Debian 9 上都安装了很棒的版本。Awesome under Ubuntu看起来像 Ubuntu 默认主题; awesome under Debian看起来像
我是一名优秀的程序员,十分优秀!