как можно вызвать функцию подкачки для макета monadtall внутри qshell для оконного менеджера qtile
(01) Я изучаю qtile/qshell (qtile-0.14.2), используя метод, предложенный в http://docs.qtile.org/en/latest/manual/hacking.html
(02) У меня есть макет monadtall, информация которого в qshell выглядит следующим образом
group['s'].layout> info
{'clients': ['howare',
'you',
'world',
'hello',
'ksridhar@ksridhar: ~/rapidinfo/repos/trial-arena/08'],
'current': 0,
'group': 's',
'main': 'howare',
'name': 'monadtall',
'secondary': ['you',
'world',
'hello',
'ksridhar@ksridhar: ~/rapidinfo/repos/trial-arena/08']}
(03) Теперь я хочу поменять местами окна "привет" и "мир". Я пробовал следующее
group['s'].layout> doc('swap')
swap(window1, window2)
Swap two windows
group['s'].layout> swap('hello', 'world')
Command exception: Traceback (most recent call last):
File "/home/ksridhar/rapidinfo/repos/trial-arena/08/qtile-0.14.2/libqtile/command.py", line 95, in call
return (SUCCESS, cmd(*args, **kwargs))
File "/home/ksridhar/rapidinfo/repos/trial-arena/08/qtile-0.14.2/libqtile/layout/xmonad.py", line 692, in cmd_swap
self.clients.swap(window1, window2, 1)
File "/home/ksridhar/rapidinfo/repos/trial-arena/08/qtile-0.14.2/libqtile/layout/base.py", line 513, in swap
i1 = self.clients.index(c1)
ValueError: 'hello' is not in list
Обратите внимание, что в предыдущей команде info (шаг (02)) были указаны имена окон hello и world на дополнительной панели.
(04) любая помощь по командной строке qtile-cmd также будет большим подспорьем.
Я новичок, и мои наблюдения могут быть глупыми, так что заранее простите меня. Я использую версию Qtile 0.14.2. Я вставил в код функцию отслеживания, чтобы прийти к следующему выводу.
Когда я смотрю файл layout/xmonad.py, я вижу следующее
(a) функции cmd_swap_left, cmd_swap_right, cmd_swap_main вызывают self.cmd_swap (win, target) прямо или косвенно не имеют аргументов и, таким образом, являются кандидатами на "сопоставление" ключей.
(b) функции cmd_swap_left, cmd_swap_right, cmd_swap_main при вызове self.cmd_swap (win, target) предоставляют значение типа Window
(c) Но когда функция cmd_swap вызывается через qshell 'call'
group['s'].layout> swap('hello', 'world')
функция cmd_swap вызывается с аргументами типа 'str'!
Похоже, что функция cmd_swap() предназначалась для "внутреннего" использования и была раскрыта случайно!
Если я программист, пользователь qshell или qtile-cmd, как мне это преодолеть (т.е. вызвать команду swap)?