【问题标题】:config error in Qtile (Tiling Window Manager)Qtile 中的配置错误(平铺窗口管理器)
【发布时间】:2020-09-06 06:11:16
【问题描述】:

我试图通过查看来自 DistroTube(Youtube) 的 gitlab 的参考配置来配置 qtile:https://gitlab.com/dwt1/dotfiles/-/blob/master/.config/qtile/config.py

我在添加这个时遇到错误

##### BAR #####

def init_widgets_screen():
widgets_screen = init_widgets_list()
return widgets_screen

def init_screens() :
return [Screen(top=bar.Bar(widgets=init_widgets_screen(), opacity=0.95, size=20))

if __name__ in ["config", "__main__"]:
screens = init_screens()
widgets_list = init_widgets_list()
widget_screen = init_widgets_screen()

他正在使用 3 台显示器,我试图在我的笔记本电脑上安装它,所以只有一个屏幕

(参考链接中需要的部分从第 555 行开始)

【问题讨论】:

    标签: python linux config archlinux window-managers


    【解决方案1】:

    看起来可能只是空白问题。您需要缩进每个函数体。 init_screens 定义中的冒号前还有一个额外的空格(尽管我认为这实际上是合法的python)。

    如果缺少缩进只是由于复制和粘贴到堆栈溢出,如果您可以在终端中运行qtile 并在此处复制输出/错误,将会有所帮助。

    ##### BAR #####
    
    def init_widgets_screen():
        widgets_screen = init_widgets_list()
        return widgets_screen
    
    def init_screens():
        return [Screen(top=bar.Bar(widgets=init_widgets_screen(), opacity=0.95, size=20))
    
    if __name__ in ["config", "__main__"]:
        screens = init_screens()
        widgets_list = init_widgets_list()
        widget_screen = init_widgets_screen()
    

    澄清后编辑

    您的配置文件在第 114 行和第 317 行之间定义了 init_widgets_list 函数,它看起来像这样:

    def init_widgets_list():
      widgets_list = [
        [
          widget.Sep(
            linewidth = 0,
            padding = 6,
            foreground = colors[2],
            background = colors[0]
          ),
          # ...
          widget.Systray(
            background=colors[0],
            padding = 5
          ),
        ],
      ]
    
      return widgets_list
    

    您正在将小部件列表包装在另一个列表中,而 qtile 需要一个扁平的小部件列表。要修复它,您需要删除一组方括号。

    def init_widgets_list():
      widgets_list = [
        widget.Sep(
          linewidth = 0,
          padding = 6,
          foreground = colors[2],
          background = colors[0]
        ),
        # ...
        widget.Systray(
          background=colors[0],
          padding = 5
        ),
      ]
    
      return widgets_list
    

    【讨论】:

    • 我尝试通过终端运行 qtile 并得到 (imgur.com/gm8zikZ) 所以我从 DistroTube 的配置中添加了一行 - prompt = "{0}@{1}: ".format(os.environ[ "USER"], socket.gethostname()) 我在终端再次运行了 qtile 然后我得到了这个 - (imgur.com/3iHy6DA)
    • 你提到的错误来自here。看起来您的 init_widgets_list 函数可能会返回一个包含另一个列表的列表,而它需要 Widgets。
    • 如果你能帮助我,这是我的配置 - pastebin.com/m3FYZ6N2
    • 查看更新的答案 - 这里也是您发送的配置的固定版本 pastebin.com/rRRWv290
    • aah,我一定错过了它,因为我从 DistroTube 的配置中复制了它。我会尝试并回复你。
    猜你喜欢
    • 2012-02-08
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    相关资源
    最近更新 更多