Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何在AwesomeWM中切换标题栏?_Function_Lua_Window Managers_Awesome Wm - Fatal编程技术网

Function 如何在AwesomeWM中切换标题栏?

Function 如何在AwesomeWM中切换标题栏?,function,lua,window-managers,awesome-wm,Function,Lua,Window Managers,Awesome Wm,我试图通过以下方式修改我的rc.lua文件:当我按下Mod4+R,AwesomeWM keybinding来运行命令时,我希望Rofi出现,模糊我的壁纸并隐藏屏幕上的所有内容。我只想看到模糊墙纸上的Rofi提示 为了实现这一点,我在conf文件中有以下代码。我将AwesomeWM v3.5.9(强大的Ravendark)与Lua 5.3.3结合使用: --From PROmpt COMmand: procom = "rofi -show run" awful.key({ modkey }, "

我试图通过以下方式修改我的rc.lua文件:当我按下Mod4+R,AwesomeWM keybinding来运行命令时,我希望Rofi出现,模糊我的壁纸并隐藏屏幕上的所有内容。我只想看到模糊墙纸上的Rofi提示

为了实现这一点,我在conf文件中有以下代码。我将AwesomeWM v3.5.9(强大的Ravendark)与Lua 5.3.3结合使用:

--From PROmpt COMmand:
procom = "rofi -show run"

awful.key({ modkey }, "r", function () awful.util.spawn(procom)

    for _,c in ipairs(client.get()) do
        if c:isvisible() then
            mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible 
        else 
            mywibox[mouse.screen].visible = mywibox[mouse.screen].visible 
        end
    end

end),
重新启动AwesomeWM不会有任何抱怨,但我的接线盒不会消失。如果我将代码更改为一些琐碎的内容(例如,如果mywibox[mouse.screen]作为条件语句可见,),小部件将消失,但即使我退出Rofi,也会留下一个空的黑条,只有在再次调用Rofi时才会返回其初始状态(这是由我最初的陈述引起的,这就是为什么我认为它微不足道的原因)。

对于新问题:

您的代码片段不起作用,因为您检查客户端是否可见,然后切换一个随机接线盒(好的,不太随机)。如果您为每个客户端执行此操作,接线盒将显示和隐藏多次。因此,您最终会发生约50%的变化,即恢复到原始状态,约50%的变化为没有接线盒,无法恢复

我将进一步阐述我先前回答的最后一部分,因为这是现在的问题

你想要什么:

  • rofi启动时隐藏wibar(
    mywibox
  • rofi启动时隐藏所有客户端
  • 当rofi存在时,恢复wibar
  • 可能会再次显示标签(或不显示,由您决定)
问题是:

  • 你不知道罗菲什么时候离开
  • 你不知道罗菲什么时候出现
  • 你不知道你想隐藏的东西的名字
  • 你需要隐藏标签和wibar
  • 问题3:

    不是你的错,3.5没有关于这方面的文档,wiki也同样令人困惑

    • 屏幕顶部是一个可怕的wibox(现在改名为wibar)
    • wibox是屏幕上一个随机自由浮动的小部件。wibar是一种wibox,它的作用类似于一个面板
    • 客户端是屏幕上的一个窗口
    • 标记类似于虚拟工作区
    问题2:

    这是一个棘手的问题。当你启动一个命令时,它与应用程序出现之间会有一个延迟。有一些方法可以检测到它,但它们不是微不足道的。现在你可以忽略这个问题

    问题1:

    这是一个你必须解决的问题。Aowesome 3.5没有一个好的API来跟踪从命令到应用程序退出的生命周期。Aowesome 4.0稍微好一点,但这是一个很难解决的问题。但是,你应该能够了解rofi的
    (使用
    xprop
    )。一旦您知道了这一点,您可以通过只关心“rofi退出时执行事件”来简化问题。代码如下:

    client.connect_signal("unmanage", function(c)
        if c.class == "whatever_its_class_is" then
            -- watch out of you have multiple screens, this may be too simplified.
            mywibox[mouse.screen].visible = true
    
            -- show the first tag, change this to what you prefer
            awful.tag.gettags(mouse.screen)[1].selected = true
        end
    end)
    
    问题4:

    隐藏当前标记的简单方法(为了简单起见,假设您有一个屏幕和一个选定的标记)

    隐藏主wibar(假设保留默认名称)

    原始答案:(问题已更改)

    嗯,
    c
    只是一个变量。在这种情况下,您从未定义过它,所以它是
    nil

    我猜您需要所有当前可见的客户端。若要检查,请使用

    您可以使用

    for _, c in ipairs(client.get()) do
        if c:isvisible() then
            -- do something
        end
    end
    
    如客户文档所示([1])

    话虽如此,我看不出描述和问题/代码是如何匹配的。如果你想隐藏所有东西,那么取消选择所有标签并隐藏wibar。搞乱标题栏(客户端顶部的东西)似乎是不必要的

    [1] 该链接适用于Awesome 4.0,但在本例中与3.5 API没有太大区别。

    对于新问题:

    您的代码片段不起作用,因为您检查客户端是否可见,然后切换一个随机接线盒(好的,不太随机)。如果您为每个客户端执行此操作,接线盒将显示和隐藏多次。因此,您最终会发生约50%的变化,即恢复到原始状态,约50%的变化为没有接线盒,无法恢复

    我将进一步阐述我先前回答的最后一部分,因为这是现在的问题

    你想要什么:

    • rofi启动时隐藏wibar(
      mywibox
    • rofi启动时隐藏所有客户端
    • 当rofi存在时,恢复wibar
    • 可能会再次显示标签(或不显示,由您决定)
    问题是:

  • 你不知道罗菲什么时候离开
  • 你不知道罗菲什么时候出现
  • 你不知道你想隐藏的东西的名字
  • 你需要隐藏标签和wibar
  • 问题3:

    不是你的错,3.5没有关于这方面的文档,wiki也同样令人困惑

    • 屏幕顶部是一个可怕的wibox(现在改名为wibar)
    • wibox是屏幕上一个随机自由浮动的小部件。wibar是一种wibox,它的作用类似于一个面板
    • 客户端是屏幕上的一个窗口
    • 标记类似于虚拟工作区
    问题2:

    这是一个棘手的问题。当你启动一个命令时,它与应用程序出现之间会有一个延迟。有一些方法可以检测到它,但它们不是微不足道的。现在你可以忽略这个问题

    问题1:

    这是一个你必须解决的问题。Aowesome 3.5没有一个好的API来跟踪从命令到应用程序退出的生命周期。Aowesome 4.0稍微好一点,但这是一个很难解决的问题。但是,你应该能够了解rofi的
    (使用
    xprop
    )。一旦您知道了这一点,您可以通过只关心“rofi退出时执行事件”来简化问题。代码如下:

    client.connect_signal("unmanage", function(c)
        if c.class == "whatever_its_class_is" then
            -- watch out of you have multiple screens, this may be too simplified.
            mywibox[mouse.screen].visible = true
    
            -- show the first tag, change this to what you prefer
            awful.tag.gettags(mouse.screen)[1].selected = true
        end
    end)
    
    问题4:

    隐藏当前标记的简单方法(为了简化,假设您有一个屏幕和一个选定的标记)
    for _, c in ipairs(client.get()) do
        if c:isvisible() then
            -- do something
        end
    end
    
     -- Prompt
        awful.key({ modkey }, "r", 
                  function ()
                      myscreen                 = awful.screen.focused()
                      commandPrompter          = "rofi -show run -normal-window"
                      blur                     = "hsetroot -fill /usr/local/share/awesome/themes/modded/back$
                      unblur                   = "hsetroot -fill /usr/local/share/awesome/themes/modded/back$
                      awful.spawn(commandPrompter)
                      myscreen.mywibox.visible = false
                      awful.spawn(blur)
                  end),