Откройте приложение на обычном рабочем столе в xmonad

Предположим, что я вызываю shell-command из emacs например (shell-command "evince") . Возможно ли переместить приложение (в данном примере evince ) автоматически запускается таким образом на рабочий стол 5 в xmonad .

3 Solutions collect form web for “Откройте приложение на обычном рабочем столе в xmonad”

В духе сделать что-то одно и сделать это хорошо , пирог Дьявола был создан для этих проблем с любыми совместимыми со стандартами WM ( такими как правильно настроенный XMonad , также см. FAQ ).

Некоторая конфигурация вдоль линий (принятая из этого учебника , я не знаю, работает ли этот способ соответствия Evince, возможно, какой-то другой способ (см. Документы) необходим)

 (if (is (application_name) "Evince") (begin (set_workspace 5) (maximize) ) ) 

должен выполнять эту работу. Обратите внимание, что здесь часто упоминается пирог Дьявола, может быть более полезная информация всего за один клик.

Для этого возможна чистая конфигурация xmonad. В вашем .xmonad/xmonad.hs вам нужно настроить manageHook. Я включил более одного «правила» специально.

 theManageHook = composeAll [ -- send applications to the right workspace className =? "Evince" --> doShift "5", className =? "Pidgin" --> doShift "4" --- more settings ... ] main = do xmonad $ gnomeConfig { manageHook = theManageHook <+> manageHook gnomeConfig } 

Вы можете увидеть имя класса данного окна с помощью xprop и щелкнуть по нужному окну. className ссылается на вторую запись в xprop-output. Если вам нужны только xproperties, xprop принимает их как аргументы:

 ~ $ xprop WM_CLASS WM_NAME WM_CLASS(STRING) = "evince", "Evince" WM_NAME(STRING) = "Document Viewer" 

Подробнее об этом можно узнать в FAQ Xmonad .

Ниже приведен пример использования xdotool для изменения класса окна, после чего вы можете переместить его на Рабочий стол 5 с помощью XMonad или Devil's pie.

 #!/bin/sh $1 & NEW_WINDOW_PID=$! WINDOW_EXISTENCE=$(xdotool search --pid ${NEW_WINDOW_PID} 2> /dev/null) #is empty if the window hasn't finished opening. COUNTER=0 while [[ -z $WINDOW_EXISTENCE && $COUNTER < 6 ]] #waits for the window to open do WINDOW_EXISTENCE=$(xdotool search --pid ${NEW_WINDOW_PID} 2> /dev/null) sleep 1 (( COUNTER++ )) done if [ $COUNTER != "6" ]; then NEW_WINDOW_ID=$(xdotool search --onlyvisible --pid ${NEW_WINDOW_PID}) #finds the window that was just opened xdotool set_window --class yay ${NEW_WINDOW_ID}; #change the class of the window to yay fi 

А затем напишите функцию в emacs

 (defun window-in-desktop-5 (cmd) "start shell command on desktop 5" (interactive "sshell-command: ") (shell-command (concat "/path/to/xdotoolscript " cmd))) 

Всякий раз, когда вы вызываете программу через функцию emacs, она изменяет имя класса окна, пока PID окна будет таким же, как функция, которая его вызвала, иначе скрипт истечет через шесть секунд.

  • Изменить красную границу между окнами в xmonad
  • Как повернуть окно в X11
  • В Gnome можно вызвать средство сетевого менеджера из командной строки?
  • Запуск команды при входе в систему с помощью xmonad
  • Перенос ключей для физических экранов в xmonad
  • Используйте ключ WINDOWS вместо ключа ALT в xmonad
  • Автозапуск под случайным WM?
  • Группы рабочих областей в XMonad
  • Самый минималистический способ переключения пользователей в X сеанс
  • Назначение выходного номера на выход X
  • Как установить Pandoc на ArchLinux
  • Linux и Unix - лучшая ОС в мире.