Qtile 中的配置错误(平铺 Window 管理器)

config error in Qtile (Tiling Window Manager)

我正在尝试通过查看 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 台显示器,我正在尝试将其安装到我的笔记本电脑上,所以只有一个屏幕

(参考文献 link 中需要的部分从第 555 行开始)

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

如果缺少缩进只是因为复制和粘贴到堆栈溢出,如果您可以 运行 qtile 在终端中复制 output/error 会有所帮助这里。

##### 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