是否有类似于"awful.client.focus.global_byidx()"的功能?
2020-5-6 7:1:41
收藏:0
阅读:143
评论:1
我有两个显示器,我想使用快捷方式更改聚焦的客户端。现在我有awful.client.focus.byidx(1),但它仅更改一个显示器上的客户端。我知道有awful.client.focus.global_bydirection("right")可以在多个屏幕上工作,但它只朝一个方向移动并在到达最后一个客户端时停止工作。我喜欢awful.client.focus.byidx(1)的行为,它可以循环遍历所有客户端,因此从最后一个客户端转到第一个客户端。
我想使用混合模式:在所有显示器/屏幕上像awful.client.focus.global_bydirection("right")一样遍历客户端,但像awful.client.focus.byidx(1)一样。是否有一个函数能够具有这种行为,以便我可以使用它?如果没有,您知道我如何实现这个目标吗?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

首先,让我们看看如何实现
awful.client.focus.byidx。该函数本身调用
awful.client.next,然后对返回的客户端进行聚焦,如果有任何客户端,则进行聚焦:https://github.com/awesomeWM/awesome/blob/9781f14b105ee700c5bca339bf49bb52d2cca4b5/lib/awful/client/focus.lua#L65-L71
awful.client.next在此处实现:https://github.com/awesomeWM/awesome/blob/9781f14b105ee700c5bca339bf49bb52d2cca4b5/lib/awful/client.lua#L262-L284它执行以下操作:
因此,您的请求听起来好像只需要更改一个步骤:获取所有可见客户端的列表,而不仅仅是当前聚焦屏幕上的客户端。要获取该列表,您需要使用
nil调用awful.client.visible而不是特定屏幕。未经测试的代码:
function next_global(i, sel, stacked) sel = sel or client.focus if not sel then return end local cls = awful.client.visible(nil, stacked) local fcls = {} for _, c in ipairs(cls) do if awful.client.focus.filter(c) or c == sel then table.insert(fcls, c) end end cls = fcls for idx, c in ipairs(cls) do if c == sel then return cls[gears.math.cycle(#cls, idx + i)] end end end function focus_byidx_global(i, c) local target = next_global(i, c) if target then target:emit_signal("request::activate", "client.focus.byidx", {raise=true}) end end我不知道您使用的是哪个AwesomeWM版本。如果不确定,请查看
/usr/share/awesome/lib/中安装的文件并从那里复制代码,然后进行更改。(更糟糕的解决方案可能是像以下一样,尽管它需要更少的代码;我将其留给读者自行解决,但请注意,如果发生Lua错误并且猴子补丁变得永久,这会“破坏”一些东西)
function focus_byidx_global(i, c) local old = awful.client.visible awful.client.visible = function(_, s) return old(nil, s) end awful.client.focus.byidx(i, c) awful.client.visible = old end