Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from libqtile.manager import Key, Screen, Group, Drag, Click
- from libqtile.command import lazy
- from libqtile import layout, bar, widget, hook
- import subprocess, re, os
- # Привязки клавиш
- keys = [
- # Выход из qtile
- Key(["shift", "mod4"], "q", lazy.shutdown()),
- # Перезапуск qtile
- Key(["shift", "mod4"], "r", lazy.restart()),
- # Вызов внешнего приложения
- Key(["mod4"], "r", lazy.spawncmd()),
- # Переключение на группу
- Key(["mod4"], "g", lazy.switchgroup()),
- # Команды Qtile
- Key(["mod4"], "w", lazy.qtilecmd()),
- # Вызов терминала
- Key(["mod4"], "Return", lazy.spawn('konsole')),
- # Фокус вниз
- Key(["mod4"], "k", lazy.layout.down()),
- # Фокус вверх
- Key(["mod4"], "j", lazy.layout.up()),
- # Переставить окна
- Key(["shift","mod4"], "k", lazy.layout.shuffle_down()),
- Key(["shift","mod4"], "j", lazy.layout.shuffle_up()),
- # Увеличить занимаемое окном место
- Key(["mod4"], "h", lazy.grow()),
- # Уменьшить занимаемое окном место
- Key(["mod4"], "l", lazy.shrink()),
- # Вернуть окно в исходное состояние
- Key(["mod4"], "n", lazy.normalize()),
- # Максимизировать окно
- Key(["mod4"], "m", lazy.maximize()),
- # Следующая планировка
- Key(["mod4"], "space", lazy.nextlayout()),
- # Развернуть планировку
- Key(["mod4"], "Tab", lazy.layout.rotate()),
- # Разделить планировку
- Key(["mod4", "shift"], "Return",lazy.layout.toggle_split()),
- # Обратить планировку
- Key(["mod4", "mod1"], "space", lazy.layout.flip()),
- # Увеличить занимаемое место
- Key(["mod1"], "i", lazy.layout.increase_ratio()),
- # Уменьшить занимаемое место
- Key(["mod1"], "d", lazy.layout.decrease_ratio()),
- # Закрыть окно
- Key(["shift","mod4"], "c", lazy.window.kill()),
- # Прибавить звук
- Key(["mod4"], "equal", lazy.spawn("amixer -c 0 -q set Master 2dB+")),
- # Убавить звук
- Key(["mod4"], "minus", lazy.spawn("amixer -c 0 -q set Master 2dB-")),
- # Скриншот
- Key(["mod1"], "s", lazy.spawn("scrot")),
- ]
- # Привязки мышки
- mouse = [
- Drag(["mod4"], "Button1", lazy.window.set_position_floating(),
- start=lazy.window.get_position()),
- Drag(["mod4"], "Button3", lazy.window.set_size_floating(),
- start=lazy.window.get_size()),
- Click(["mod4"], "Button2", lazy.window.bring_to_front())
- ]
- # Группы (также известные как теги)
- # ["a", "s", "d", "f", "u", "i", "o", "p"]
- groups = [
- Group("a"),
- Group("s"),
- Group("d"),
- Group("f"),
- Group("u"),
- Group("i"),
- Group("o"),
- Group("p"),
- ]
- # Само управление группами
- for i in groups:
- # Перемещение на указaнную группу
- keys.append(
- Key(["mod4"], i.name, lazy.group[i.name].toscreen())
- )
- # Перенос окна на указанную группу
- keys.append(
- Key(["mod4", "shift"], i.name, lazy.window.togroup(i.name))
- )
- # Планировки
- layouts = [
- layout.Max(),
- layout.Stack(stacks=2),
- layout.MonadTall(),
- layout.Tile(ratio=0.25)
- ]
- # Экран и панель с виджетами
- screens = [
- Screen(
- bottom = bar.Bar(
- [
- widget.GroupBox(fontsize=12,urgent_alert_method='text'), # Индикатор групп
- widget.CurrentLayout(fontsize=14,foreground='9100ff'), # Индикатор планировок
- widget.Prompt(font='URW Palladio L',fontsize=11), # Строка (без нее не будет работать запускалка)
- widget.WindowName(font='URW Chancery L',fontsize=12), # Отображение заголовка окна
- widget.Volume(font='Clockopia'), # Отображение громкости
- widget.CPUGraph(), # Загрузка процессора
- widget.Systray(), # Трей
- widget.Clock('%d-%m-%Y %a %I:%M %p',font='Clockopia',foreground='18baeb'), # Часы
- ],
- 30,
- ),
- ),
- ]
- # Автозапуск
- def is_running(process):
- s = subprocess.Popen(["ps", "axuw"], stdout=subprocess.PIPE)
- for x in s.stdout:
- if re.search(process, x):
- return True
- return False
- def execute_once(process):
- if not is_running(process):
- return subprocess.Popen(process.split())
- @hook.subscribe.startup
- def startup():
- os.system("feh --bg-scale ~/.config/qtile/wp1.jpg")
- execute_once("konsole")
- # размещение окон по соответствующим группам
- # в случае, если группа для окна неопределена, то окно разместится в группе "а"
- @hook.subscribe.client_new
- def to_layout(cl):
- if re.search("GNOME_PPP",cl.name):
- cl.togroup("a")
- elif re.search("KWrite",cl.name):
- cl.togroup("s")
- elif re.search("Kate",cl.name):
- cl.group("s")
- elif re.search("Dolphin",cl.name):
- cl.togroup("f")
- elif re.search("Ark",cl.name):
- cl.togroup("f")
- elif re.search("MPlayer",cl.name):
- cl.togroup("u")
- elif re.search("Gwenview",cl.name):
- cl.togroup("u")
- elif re.search("LibreOffice",cl.name):
- cl.togroup("o")
- elif re.search("Okular",cl.name):
- cl.togroup("o")
- elif re.search("Konsole",cl.name):
- cl.togroup("i")
- elif re.search("Chromium",cl.name):
- cl.togroup("p")
- else:
- cl.togroup("a")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement