Advertisement
atm-irbis

My Qtile config (with russian comments)

Apr 22nd, 2013
527
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.15 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. from libqtile.manager import Key, Screen, Group, Drag, Click
  4. from libqtile.command import lazy
  5. from libqtile import layout, bar, widget, hook
  6. import subprocess, re, os
  7.  
  8. # Привязки клавиш
  9. keys = [
  10.     # Выход из qtile
  11.     Key(["shift", "mod4"], "q",  lazy.shutdown()),
  12.     # Перезапуск qtile
  13.     Key(["shift", "mod4"], "r",  lazy.restart()),
  14.     # Вызов внешнего приложения
  15.     Key(["mod4"], "r",  lazy.spawncmd()),
  16.     # Переключение на группу
  17.     Key(["mod4"], "g",  lazy.switchgroup()),
  18.     # Команды Qtile
  19.     Key(["mod4"], "w",  lazy.qtilecmd()),
  20.     # Вызов терминала
  21.     Key(["mod4"], "Return",  lazy.spawn('konsole')),
  22.     # Фокус вниз
  23.     Key(["mod4"], "k", lazy.layout.down()),
  24.     # Фокус вверх
  25.     Key(["mod4"], "j", lazy.layout.up()),
  26.     # Переставить окна
  27.     Key(["shift","mod4"], "k", lazy.layout.shuffle_down()),
  28.     Key(["shift","mod4"], "j", lazy.layout.shuffle_up()),
  29.     # Увеличить занимаемое окном место
  30.     Key(["mod4"], "h", lazy.grow()),
  31.     # Уменьшить занимаемое окном место
  32.     Key(["mod4"], "l", lazy.shrink()),
  33.     # Вернуть окно в исходное состояние
  34.     Key(["mod4"], "n", lazy.normalize()),
  35.     # Максимизировать окно
  36.     Key(["mod4"], "m", lazy.maximize()),
  37.     # Следующая планировка
  38.     Key(["mod4"], "space", lazy.nextlayout()),
  39.     # Развернуть планировку
  40.     Key(["mod4"], "Tab", lazy.layout.rotate()),
  41.     # Разделить планировку
  42.     Key(["mod4", "shift"], "Return",lazy.layout.toggle_split()),
  43.     # Обратить планировку
  44.     Key(["mod4", "mod1"], "space", lazy.layout.flip()),
  45.     # Увеличить занимаемое место
  46.     Key(["mod1"], "i", lazy.layout.increase_ratio()),
  47.     # Уменьшить занимаемое место
  48.     Key(["mod1"], "d", lazy.layout.decrease_ratio()),
  49.     # Закрыть окно
  50.     Key(["shift","mod4"], "c", lazy.window.kill()),
  51.     # Прибавить звук
  52.     Key(["mod4"], "equal", lazy.spawn("amixer -c 0 -q set Master 2dB+")),
  53.     # Убавить звук
  54.     Key(["mod4"], "minus", lazy.spawn("amixer -c 0 -q set Master 2dB-")),
  55.     # Скриншот
  56.     Key(["mod1"], "s", lazy.spawn("scrot")),
  57. ]
  58.    
  59. # Привязки мышки    
  60. mouse = [
  61.     Drag(["mod4"], "Button1", lazy.window.set_position_floating(),
  62.         start=lazy.window.get_position()),
  63.     Drag(["mod4"], "Button3", lazy.window.set_size_floating(),
  64.         start=lazy.window.get_size()),
  65.     Click(["mod4"], "Button2", lazy.window.bring_to_front())
  66. ]
  67.  
  68. # Группы (также известные как теги)
  69. # ["a", "s", "d", "f", "u", "i", "o", "p"]
  70. groups = [
  71.     Group("a"),
  72.     Group("s"),
  73.     Group("d"),
  74.     Group("f"),
  75.     Group("u"),
  76.     Group("i"),
  77.     Group("o"),
  78.     Group("p"),
  79. ]
  80.  
  81. # Само управление группами
  82.  
  83. for i in groups:
  84.     # Перемещение на указaнную группу
  85.     keys.append(
  86.         Key(["mod4"], i.name, lazy.group[i.name].toscreen())
  87.     )
  88.  
  89.     # Перенос окна на указанную группу
  90.     keys.append(
  91.         Key(["mod4", "shift"], i.name, lazy.window.togroup(i.name))
  92.     )
  93.  
  94. # Планировки
  95. layouts = [
  96.     layout.Max(),
  97.     layout.Stack(stacks=2),
  98.     layout.MonadTall(),
  99.     layout.Tile(ratio=0.25)
  100. ]
  101.  
  102. # Экран и панель с виджетами
  103. screens = [
  104.     Screen(
  105.         bottom = bar.Bar(
  106.                     [
  107.                         widget.GroupBox(fontsize=12,urgent_alert_method='text'),     # Индикатор групп
  108.                         widget.CurrentLayout(fontsize=14,foreground='9100ff'),       # Индикатор планировок
  109.                         widget.Prompt(font='URW Palladio L',fontsize=11),            # Строка (без нее не будет работать запускалка)
  110.                         widget.WindowName(font='URW Chancery L',fontsize=12),        # Отображение заголовка окна
  111.                         widget.Volume(font='Clockopia'),                             # Отображение громкости
  112.                         widget.CPUGraph(),                                           # Загрузка процессора
  113.                         widget.Systray(),                                            # Трей
  114.                         widget.Clock('%d-%m-%Y %a %I:%M %p',font='Clockopia',foreground='18baeb'), # Часы
  115.                     ],
  116.                     30,
  117.                 ),
  118.     ),
  119. ]
  120.  
  121. # Автозапуск
  122.  
  123. def is_running(process):
  124.     s = subprocess.Popen(["ps", "axuw"], stdout=subprocess.PIPE)
  125.     for x in s.stdout:
  126.         if re.search(process, x):
  127.             return True
  128.     return False
  129.  
  130. def execute_once(process):
  131.     if not is_running(process):
  132.         return subprocess.Popen(process.split())
  133.  
  134. @hook.subscribe.startup
  135. def startup():
  136.     os.system("feh --bg-scale ~/.config/qtile/wp1.jpg")
  137.     execute_once("konsole")
  138.    
  139. # размещение окон по соответствующим группам
  140. # в случае, если группа для окна неопределена, то окно разместится в группе "а"
  141. @hook.subscribe.client_new
  142. def to_layout(cl):
  143.     if re.search("GNOME_PPP",cl.name):
  144.         cl.togroup("a")
  145.     elif re.search("KWrite",cl.name):
  146.         cl.togroup("s")
  147.     elif re.search("Kate",cl.name):
  148.         cl.group("s")
  149.     elif re.search("Dolphin",cl.name):
  150.         cl.togroup("f")
  151.     elif re.search("Ark",cl.name):
  152.         cl.togroup("f")
  153.     elif re.search("MPlayer",cl.name):
  154.         cl.togroup("u")
  155.     elif re.search("Gwenview",cl.name):
  156.         cl.togroup("u")
  157.     elif re.search("LibreOffice",cl.name):
  158.         cl.togroup("o")
  159.     elif re.search("Okular",cl.name):
  160.         cl.togroup("o")
  161.     elif re.search("Konsole",cl.name):
  162.         cl.togroup("i")
  163.     elif re.search("Chromium",cl.name):
  164.         cl.togroup("p")    
  165.     else:
  166.         cl.togroup("a")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement