아치에서 qtile의 기본 구성을 변경할 수 없습니다

아치에서 qtile의 기본 구성을 변경할 수 없습니다

지금 일주일 정도 Arch와 Qtile을 설치하려고 노력하고 있는데 문제는 설치할 때마다 default_config.py 파일을 내가 원하는 대로 변경해도 재부팅하면 기본 구성이 표시된다는 점입니다. qtile.

config.py 파일을 컴파일하려고 했는데 sintaxis나 다른 항목에 문제가 표시되지 않기 때문에 왜 이런 일이 발생하는지 모르겠습니다.

여기에 구성을 남겨둡니다.

import os
import re
import json
import socket
import subprocess
from os import listdir
from os import path

from typing import List  # noqa: F401

from libqtile.command import lazy

from libqtile import layout, bar, widget, hook

from libqtile.config import Key, Screen, Group, Drag, Click

qtile_path= path.join(path.expanduser("~"), ".config", "qtile")

icons_path= path.join(qtile_path, "icons")

img = {}

# map image name to its path
img_path = path.join(qtile_path, "img")
for i in listdir(img_path):
    img[i.split(".")[0]] = path.join(img_path, i)

mod = "mod4"                                            # Set the mod key as SUPER/WINDOWS
myTerm = "alacritty"                                    # My terminal of choice
myConfig = path.join(qtile_path, "config.py")           # The Qtile config file location
#"/home/bluetrainer/.config/qtile/config.py"    

colors = [ [
        "#0f101a",
        "#0f101a"
    ],
     [
        "#5c5c5c",
        "#5c5c5c"
    ],
     [
        "#f1ffff",
        "#f1ffff"
    ],
    [
        "#F07178",
        "#F07178"
    ],
    [
        "#a151d3",
        "#a151d3"
    ],
     [
    "#282a36", 
    "#282a36"
    ], # panel background
     [
    "#434758",
    "#434758"
    ], # background for current screen tab
     [
    "#ffffff", 
    "#ffffff"
    ], # font color for group names
    [
    "#ff5555",
    "#ff5555"
    ], # border line color for current tab
    [
    "#8d62a9", 
    "#8d62a9"
    ], # border line color for other tab and odd widgets
     [
    "#668bd7",
    "#668bd7"
    ], # color for the even widgets
     [
    "#e1acff",
    "#e1acff"
    ] # window name
]

keys = [
     ### The essentials MOD4 + CONTROL + KEY
         Key(
             [mod, "control"], "o",
             lazy.shutdown(),
             desc='Shutdown pc'
             ),
         Key(
             [mod, "control"], "k",
             lazy.window.kill(),
             desc='Kill active window'
             ),
         Key(
             [mod, "control"], "r",
             lazy.restart(),
             desc='Restart Qtile'
             ),
         Key(
             [mod], "Tab",
             lazy.next_layout(),
             desc='Toggle through layouts'
             ),

    ### Switch focus to specific monitor (out of two) MOD4 + SHIFT + CONTROL + KEY
         Key([mod, "shift", "control"], "q",
             lazy.to_screen(0),
             desc='Keyboard focus to monitor 1'
             ), 
         Key([mod, "shift", "control"], "w",
             lazy.to_screen(1),
             desc='Keyboard focus to monitor 2'
             ), 
    ### Switch focus of monitors MOD4 + . / MOD4 + ,
         Key([mod], "period",
             lazy.next_screen(),
             desc='Move focus to next monitor'
             ),
         Key([mod], "comma",
             lazy.prev_screen(),
             desc='Move focus to prev monitor'
             ),
    ### Treetab controls MOD4 + CONTROL + U /J
         Key([mod, "control"], "u",
             lazy.layout.section_up(),
             desc='Move up a section in treetab'
             ),
         Key([mod, "control"], "j",
             lazy.layout.section_down(),
             desc='Move down a section in treetab'
             ),
    ### Window controls MOD4 + SHIFT + KEY
         Key(
             [mod, "shift"], "s",
             lazy.layout.down(),
             desc='Move focus down in current stack pane'
             ),
         Key(
             [mod, "shift"], "w",
             lazy.layout.up(),
             desc='Move focus up in current stack pane'
             ),
         Key(
             [mod, "shift"], "d",
             lazy.layout.right(),
             desc='Move focus right in current stack pane'
             ),
         Key(
             [mod, "shift"], "a",
             lazy.layout.left(),
             desc='Move focus left in current stack pane'
             ),
         Key(
             [mod, "shift"], "d",
             lazy.layout.shuffle_down(),
             desc='Move windows down in current stack'
             ),
         Key(
             [mod, "shift"], "e",
             lazy.layout.shuffle_up(),
             desc='Move windows up in current stack'
             ),
         Key(
             [mod, "shift"], "n",
             lazy.layout.normalize(),
             desc='normalize window size ratios'
             ),
         Key(
             [mod, "shift"], "m",
             lazy.layout.maximize(),
             desc='toggle window between minimum and maximum sizes'
             ),
         Key(
             [mod, "shift"], "f",
             lazy.window.toggle_floating(),
             desc='toggle floating'
             ),

     ### Stack controls
         Key(
             [mod, "shift"], "space",
             lazy.layout.rotate(),
             lazy.layout.flip(),
             desc='Switch which side main pane occupies (XmonadTall)'
             ),
         Key(
             [mod, "control"], "space",
             lazy.layour.rotate(),
             desc='Swap panes of split stack'
             ),
         Key(
             [mod], "space",
             lazy.layout.next(),
             desc='Switch window focus to other pane(s) of stack'
             ),
         Key(
             [mod, "control"], "Return",
             lazy.layout.toggle_split(),
             desc='Toggle between split and unsplit sides of stack'
             ),
     ### Dmenu scripts launched with ALT + CTRL + KEY
         Key(
             ["mod1", "control"], "b",
             lazy.spawn("firefox"),
             desc='Starts firefox browser'
             ),
         Key(
             ["mod1", "control"], "f",
             lazy.spawn("thunar"),
             desc='Starts firefox browser'
             ),
         Key(
             ["mod1", "control"], "Return",
             lazy.spawn(myTerm),
             desc='Launches Terminal'
             ),
             # ------------ Hardware Configs ------------

    # Volume
    Key([], "XF86AudioLowerVolume", lazy.spawn(
        "pactl set-sink-volume @DEFAULT_SINK@ -5%"
    )),
    Key([], "XF86AudioRaiseVolume", lazy.spawn(
        "pactl set-sink-volume @DEFAULT_SINK@ +5%"
    )),
    Key([], "XF86AudioMute", lazy.spawn(
        "pactl set-sink-mute @DEFAULT_SINK@ toggle"
    )),

    #Brightness
    Key([], "XF86MonBrightnessUp", lazy.spawn("brightnessctl set +10%")),
    Key([], "XF86MonBrightnessDown", lazy.spawn("brightnessctl set 10%-"))
]

#GROUPS

groups = [Group(i) for i in ["NET", "DEV", "TERM", "FILE", "MEDIA", "MISC"]]

for i, group in enumerate(groups):
    # Each workspace is identified by a number starting at 1
    actual_key = str(i + 1)
    keys.extend([
        # Switch to workspace N (actual_key)
        Key([mod], actual_key, lazy.group[group.name].toscreen()),
        # Send window to workspace N (actual_key)
        Key([mod, "shift"], actual_key, lazy.window.togroup(group.name))
    ])

# for i in groups:
    # keys.extend([
        # # mod1 + letter of group = switch to group
        # Key([mod], i.name, lazy.group[i.name].toscreen()),

        # # mod1 + shift + letter of group = switch to & move focused window to group
        # Key([mod, "shift"], i.name, lazy.window.togroup(i.name)),
    # ])

#LAYOUTS

layout_theme = {"border_width" : 1,
                "margin" : 4,
                "border_focus" : colors[3][0], 
                "border_normal": colors[4][0]
                }

layouts = [
    layout.Max(**layout_theme),
    layout.MonadTall(**layout_theme),
    layout.MonadWide(**layout_theme),
    layout.Matrix(columns=2, **layout_theme),
    layout.VerticalTile(border_width= 2,
                margin= 6,
                border_focus= colors[3][0], 
                border_normal= colors[0][0], 
                name= "verticaltile"
                ),
    layout.Floating(**layout_theme),
    layout.Tile(shift_windows = True, **layout_theme),
    layout.Stack(num_stacks = 2)
]


#WIDGETS

# Reusable configs for displaying different widgets on different screens
def base(fg=2, bg=0):
    return {
        'foreground': colors[fg][0],
        'background': colors[bg][0]
    }


sep={
    **base(),
    'linewidth': 0,
    'padding': 5,
}
group_box={
    **base(),
    'font': 'Ubuntu Bold',
    'fontsize': 10,
    'margin_y': 5,
    'margin_x': 0,
    'padding_y': 8,
    'padding_x': 5,
    'borderwidth': 1,
    'active': colors[2][0],
    'inactive': colors[2][0],
    'rounded': False,
    'highlight_method': 'block',
    'this_current_screen_border': colors[3][0],
    'this_screen_border': colors[1][0],
    'other_current_screen_border': colors[0][0],
    'other_screen_border': colors[0][0]
}
window_name={
    **base(fg='primary'),
    'font': 'Ubuntu Bold',
    'fontsize': 11,
    'padding': 5
}
systray={
    'background': colors[0][0],
    'padding': 5
}
text_box={
    'font': 'Ubuntu Bold',
    'fontsize': 15,
    'padding': 5
}
pacman={
    'execute' : "alacritty",
    'update_interval' : 1800,
    'foreground' : colors[2][0],
    'background' : colors[0][0]
}
net={
    'interface' : "wlp2s0",
    'format' : "{down} ↓↑ {up}",
    'foreground' : colors[2][0],
    'background' : colors[0][0],
    'padding' : 5
}
current_layout_icon={
    'custom_icon_paths' : [icons_path],
    'foreground' :  colors[2][0],
    'background' : colors[0][0],
    'padding' : 0,
    'scale' : 0.7
}
current_layout={
    'foreground' : colors[3][0],
    'background' : colors[4][0],
    'padding' : 5
}
clock ={
    'format' : "%A, %B %d  [ %H:%M ]"
}


def workspaces():
    return [
        widget.Sep(**separator),
        widget.GroupBox(**group_box),
        widget.Sep(**separator),
        widget.WindowName(**window_name)
    ]

def powerline_base():
    return [
        widget.CurrentLayoutIcon(
            **base(bg = 4),
            **current_layout_icon
        ),
        widget.CurrentLayout(
            **base(bg = 4),
            **current_layout
        ),
        widget.Image(
            filename = img[3][0]
        ),
        widget.TextBox(
            **base(bg = 3),
            **text_box,
            text = ' 

답변1

/usr/share/doc/qtile/default_config.py를 /home/yournameuser/.config/qtile/config.py에 복사해야 합니다. 필요한 명령을 순서대로 제공했습니다. mkdir -p /home/yourusername/.config/qtile/

cp /usr/share/doc/qtile/default_config.py /home/yourusername/.config/qtile/config.py

("qtile" 패키지를 설치해야 합니다)

관련 정보