Qtile správce oken
+Qtile je správce oken pro Linux, který je napsaný v Pythonu a je známý svou flexibilitou a konfigurovatelností.
+ +Instalace
+Qtile lze nainstalovat tímto způsobem:
++ sudo pacman -S qtile ++
Konfigurace
+Konfigurační soubor Qtile je napsán v Pythonu, což umožňuje velkou flexibilitu. Soubor se obvykle nachází v ~/.config/qtile/config.py. Zde je základní struktura konfiguračního souboru:
++from libqtile import bar, layout, widget +from libqtile.config import Click, Drag, Group, Key, Match, Screen +from libqtile.lazy import lazy +from libqtile.utils import guess_terminal + +mod = "mod4" # Mod key (usually the Windows key) +terminal = guess_terminal() + +keys = [ + Key([mod], "h", lazy.layout.left(), desc="Move focus to left"), + Key([mod], "l", lazy.layout.right(), desc="Move focus to right"), + Key([mod], "j", lazy.layout.down(), desc="Move focus down"), + Key([mod], "k", lazy.layout.up(), desc="Move focus up"), + Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"), + # Add more keybindings here +] + +groups = [Group(i) for i in "123456789"] + +for i in groups: + keys.extend([ + Key([mod], i.name, lazy.group[i.name].toscreen(), + desc="Switch to group {}".format(i.name)), + Key([mod, "shift"], i.name, lazy.window.togroup(i.name, switch_group=True), + desc="Switch to & move focused window to group {}".format(i.name)), + ]) + +layouts = [ + layout.Columns(border_focus_stack=['#d75f5f', '#8f3d3d'], border_width=4), + layout.Max(), + # Add more layouts here +] + +widget_defaults = dict( + font='sans', + fontsize=12, + padding=3, +) +extension_defaults = widget_defaults.copy() + +screens = [ + Screen( + top=bar.Bar( + [ + widget.CurrentLayout(), + widget.GroupBox(), + widget.Prompt(), + widget.WindowName(), + widget.Chord( + chords_colors={ + 'launch': ("#ff0000", "#ffffff"), + }, + name_transform=lambda name: name.upper(), + ), + widget.Systray(), + widget.Clock(format='%Y-%m-%d %a %I:%M %p'), + widget.QuickExit(), + ], + 24, + ), + ), +] + +# Drag floating layouts. +mouse = [ + Drag([mod], "Button1", lazy.window.set_position_floating(), + start=lazy.window.get_position()), + Drag([mod], "Button3", lazy.window.set_size_floating(), + start=lazy.window.get_size()), + Click([mod], "Button2", lazy.window.bring_to_front()) +] + +dgroups_key_binder = None +dgroups_app_rules = [] # type: List +follow_mouse_focus = True +bring_front_click = False +cursor_warp = False +floating_layout = layout.Floating(float_rules=[ + # Run the utility of `xprop` to see the wm class and name of an X client. + *layout.Floating.default_float_rules, + Match(wm_class='confirmreset'), # gitk + Match(wm_class='makebranch'), # gitk + Match(wm_class='maketag'), # gitk + Match(wm_class='ssh-askpass'), # ssh-askpass + Match(title='branchdialog'), # gitk + Match(title='pinentry'), # GPG key password entry +]) +auto_fullscreen = True +focus_on_window_activation = "smart" +reconfigure_screens = True + +# If things like steam games want to auto-minimize themselves when losing +# focus, should we respect this or not? +auto_minimize = True + +# XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this +# string besides java UI toolkits; you can see several discussions on the +# mailing lists, GitHub issues, and other WM documentation that suggest setting +# this string if your java app doesn't work correctly. We may as well just lie +# and say that we're a working one by default. +# +# We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in +# java that happens to be on java's whitelist. +wmname = "LG3D" ++
Další konfigurační soubory jsou:
+-
+
- Main config file: ~/.config/qtile/config.py +
- Keybindings: ~/.config/qtile/modules/keys.py +
- Bar: ~/.config/qtile/modules/screens.py +
- Widgets: ~/.config/qtile/modules/widgets.py +
- Auto-start: ~/.config/qtile/autostart.sh +
KLávesové zkratky
+Klávesové zkratky jsou definovány v sekci keys. Například:
++ keys = [ + Key([mod], "h", lazy.layout.left(), desc="Move focus to left"), + Key([mod], "l", lazy.layout.right(), desc="Move focus to right"), + Key([mod], "j", lazy.layout.down(), desc="Move focus down"), + Key([mod], "k", lazy.layout.up(), desc="Move focus up"), + Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"), + # Add more keybindings here +] ++
Rozvržení
+Rozvržení oken lze konfigurovat v sekci layouts. Například:
++ layouts = [ + layout.Columns(border_focus_stack=['#d75f5f', '#8f3d3d'], border_width=4), + layout.Max(), + # Add more layouts here + ] ++
Widgety
+Widgety jsou malé aplikace, které se zobrazují na panelu. Například:
++ widget_defaults = dict( + font='sans', + fontsize=12, + padding=3, +) +extension_defaults = widget_defaults.copy() + +screens = [ + Screen( + top=bar.Bar( + [ + widget.CurrentLayout(), + widget.GroupBox(), + widget.Prompt(), + widget.WindowName(), + widget.Chord( + chords_colors={ + 'launch': ("#ff0000", "#ffffff"), + }, + name_transform=lambda name: name.upper(), + ), + widget.Systray(), + widget.Clock(format='%Y-%m-%d %a %I:%M %p'), + widget.QuickExit(), + ], + 24, + ), + ), +] ++
Spouštění
+Po konfiguraci můžete Qtile spustit pomocí příkazu:
++ qtile start ++
Dokumentace a komunita
+Pro další informace a podporu můžete navštívit oficiální dokumentaci Qtile na docs.qtile.org nebo se připojit k komunitě na GitHub a Reddit.
++