Откройте приложение на обычном рабочем столе в 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: некоторые приложения не запускаются в рабочей области, которые я определил в config
  • Mplayer в полноэкранном режиме в xmonad
  • В Gnome можно вызвать средство сетевого менеджера из командной строки?
  • Самый минималистический способ переключения пользователей в X сеанс
  • Настроить xmobar для отображения рабочих областей
  • Как запустить nm-апплет в xmonad?
  • Перенос ключей для физических экранов в xmonad
  • Xmonad с клавишами fn работает
  • xmobar не появляется
  • Gnome с авариями Xmonad при входе в систему
  • В xmonad, как я могу продвинуть следующее окно в стеке в главное окно?
  • Linux и Unix - лучшая ОС в мире.