mirror of
https://codeberg.org/Kankys/eos-modern.git
synced 2026-05-01 00:19:49 +00:00
494 lines
13 KiB
Markdown
494 lines
13 KiB
Markdown
# Qtile správce oken
|
|
|
|
> Datum: 2024-11-23
|
|
|
|
# Qtile správce oken
|
|
|
|
|
|
[Qtile](https://qtile.org/) je správce oken pro Linux, který je napsaný v
|
|
Pythonu a je známý svou flexibilitou a konfigurovatelností.
|
|
|
|
[Obrázek: ]
|
|
|
|
### 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.QuiP
|
|
ckExit(),
|
|
],
|
|
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
|
|
]
|
|
|
|
|
|
|
|
[Obrázek: ]+
|
|
|
|
|
|
### 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 ](https://docs.qtile.org/en/latest/) nebo se
|
|
připojit k
|
|
komunitě na [GitHub](https://github.com/qtile/qtile) a [Reddit](https://www.reddit.com/r/qtile/).
|
|
|
|
---
|
|
|
|
|
|
Qtile je samostatný správce oken, což znamená, že nemusíte mít nainstalováno žádné desktopové prostředí
|
|
(DE)
|
|
jako GNOME, KDE Plasma nebo XFCE. Qtile může být použit jako samostatný správce oken, který se stará o
|
|
správu oken a pracovních ploch. Nicméně, pokud chcete využít některé funkce, které poskytují desktopová
|
|
prostředí (například automatické správu energie, notifikace, systémové nástroje), můžete je nainstalovat
|
|
a
|
|
používat společně s Qtile.
|
|
|
|
|
|
### Použití Qtile bez desktopového prostředí
|
|
|
|
|
|
Pokud chcete používat Qtile bez desktopového prostředí, stačí nainstalovat Qtile a nastavit ho jako
|
|
výchozí správce oken. To můžete udělat takto:
|
|
|
|
|
|
1. Nainstalujte Qtile:
|
|
|
|
|
|
|
|
|
|
|
|
sudo pacman -S qtile
|
|
|
|
|
|
|
|
Nastavte Qtile jako výchozí správce oken:
|
|
|
|
|
|
Vytvořte nebo upravte soubor **~/.xinitrc** a přidejte do něj řádek:
|
|
|
|
|
|
|
|
|
|
|
|
exec qtile
|
|
|
|
|
|
|
|
3. Spusťte Qtile:
|
|
|
|
|
|
|
|
|
|
|
|
startx
|
|
|
|
|
|
|
|
|
|
### Použití Qtile s desktopovým prostředím
|
|
|
|
Pokud chcete využít některé funkce desktopového prostředí, můžete nainstalovat a používat Qtile společně
|
|
s ním. Například, můžete nainstalovat GNOME a používat Qtile jako správce oken:
|
|
|
|
|
|
1. Nainstalujte GNOME:
|
|
|
|
|
|
|
|
|
|
|
|
sudo pacman -S gnome
|
|
|
|
|
|
|
|
2. Nastavte Qtile jako správce oken v GNOME:
|
|
|
|
|
|
Vytvořte nebo upravte soubor **~/.xinitrc** a přidejte do něj řádek:
|
|
|
|
|
|
|
|
|
|
|
|
exec gnome-session --session=qtile
|
|
|
|
|
|
|
|
3. Spusťte GNOME s Qtile:
|
|
|
|
|
|
|
|
|
|
|
|
startx
|
|
|
|
|
|
|
|
|
|
### Použití Qtile s dalšími nástroji
|
|
|
|
Pokud chcete využít některé funkce desktopového prostředí, ale nechcete nainstalovat celé prostředí,
|
|
můžete nainstalovat jednotlivé nástroje a používat je společně s Qtile. Například:
|
|
|
|
|
|
|
|
- Notifikace: Nainstalujte dunst nebo xfce4-notifyd.
|
|
|
|
- Automatická správa energie: Nainstalujte tlp nebo powertop.
|
|
|
|
- Systémové nástroje: Nainstalujte gnome-system-monitor nebo htop.
|
|
|
|
|
|
|
|
|
|
### Příklad konfigurace s notifikacemi
|
|
|
|
|
|
Pokud chcete přidat notifikace pomocí **dunst**, můžete to udělat takto:
|
|
|
|
|
|
1. Nainstalujte dunst:
|
|
|
|
|
|
|
|
|
|
|
|
sudo pacman -S dunst
|
|
|
|
|
|
|
|
2. Přidejte dunst do konfiguračního souboru Qtile:
|
|
|
|
|
|
|
|
|
|
|
|
from libqtile import hook
|
|
import subprocess
|
|
|
|
@hook.subscribe.startup_once
|
|
def autostart():
|
|
subprocess.Popen(['dunst'])
|
|
|
|
|
|
|
|
Tímto způsobem můžete Qtile používat jako samostatný správce oken nebo v kombinaci s dalšími nástroji a
|
|
desktopovými prostředími podle vašich potřeb.
|
|
|
|
---
|
|
|
|
|
|
## Rozdíl mezi Qtile a i3wm
|
|
|
|
|
|
Qtile a i3wm jsou oba populární správci oken pro Linux, ale mají několik klíčových rozdílů v konfiguraci,
|
|
použití a filozofii. Zde je přehled hlavních rozdílů mezi Qtile a i3wm:
|
|
|
|
|
|
### Jazyk konfigurace
|
|
|
|
|
|
Qtile: Konfigurační soubor Qtile je napsán v Pythonu. To umožňuje velkou flexibilitu a možnost použít
|
|
všechny funkce Pythonu pro konfiguraci a rozšíření.
|
|
|
|
|
|
i3wm: Konfigurační soubor i3wm je napsán v jednoduchém textovém formátu. To znamená, že je snadnější pro
|
|
začátečníky, ale méně flexibilní než Python.
|
|
|
|
|
|
### Konfigurace
|
|
|
|
|
|
Qtile: Konfigurace Qtile je uložena v souboru **~/.config/qtile/config.py**. Díky použití
|
|
Pythonu můžete snadno vytvářet složité konfigurace a skripty.
|
|
|
|
|
|
i3wm: Konfigurace i3wm je uložena v souboru **~/.config/i3/config**. Konfigurační soubor je
|
|
jednoduchý textový soubor, který je snadno čitelný a upravitelný.
|
|
|
|
|
|
### Rozvržení oken
|
|
|
|
|
|
Qtile: Qtile podporuje různé typy rozvržení, jako jsou sloupce, řádky, plocha, plovoucí okna atd.
|
|
Rozvržení lze snadno přepínat a konfigurovat.
|
|
|
|
|
|
i3wm: i3wm používá stromovou strukturu pro rozvržení oken. To znamená, že okna jsou organizována do
|
|
stromu, kde každý uzel může obsahovat další uzly nebo okna. Toto rozvržení je velmi efektivní pro práci
|
|
s mnoha okny.
|
|
|
|
|
|
### Klávesové zkratky
|
|
|
|
|
|
Qtile: Klávesové zkratky jsou definovány v konfiguračním souboru a mohou být velmi flexibilní díky
|
|
použití Pythonu.
|
|
|
|
|
|
i3wm: Klávesové zkratky jsou také definovány v konfiguračním souboru, ale jsou méně flexibilní než v
|
|
Qtile. Nicméně, i3wm má velmi dobře propracované výchozí klávesové zkratky, které jsou pro mnoho
|
|
uživatelů dostačující.
|
|
|
|
|
|
### Widgety a rozšíření
|
|
|
|
|
|
Qtile: Qtile podporuje různé widgety, které lze přidat do panelu. Díky použití Pythonu je snadné vytvářet
|
|
vlastní widgety a rozšíření.
|
|
|
|
|
|
i3wm: i3wm má omezenou podporu pro widgety a rozšíření. Nicméně, existují externí nástroje, jako je
|
|
i3status nebo polybar, které lze použít pro přidání widgetů do panelu.
|
|
|
|
|
|
### Komunita a podpora
|
|
|
|
|
|
Qtile: Qtile má aktivní komunitu a dobrou dokumentaci. Podpora je dostupná na GitHubu a dalších fórech.
|
|
|
|
|
|
|
|
i3wm: i3wm má velkou a aktivní komunitu a také dobrou dokumentaci. Podpora je dostupná na GitHubu, Reddit
|
|
a dalších fórech.
|
|
|
|
|
|
### Výkon
|
|
|
|
|
|
Qtile: Qtile je velmi lehký a rychlý správce oken, který má nízkou spotřebu paměti a procesoru.
|
|
|
|
|
|
i3wm: i3wm je také velmi lehký a rychlý správce oken s nízkou spotřebou paměti a procesoru.
|
|
|
|
|
|
|
|
[Kankys](https://lukaskanka.cz/)
|
|
23.11.2024 |