Отдельные программы - остаются на их обозначенном мониторе

Согласно Жилю на Суперпользователь :

Простой, с использованием inotifywait (установите пакет inotify-tools вашего дистрибутива):

 while inotifywait -e close_write myfile.py; сделать ./myfile.py; done 
 

Это имеет большое ограничение: если какая-то программа заменяет myfile.py другим файлом, а не записывает в существующий myfile , inotifywait умрет. Так работает большинство редакторов.

Чтобы преодолеть это ограничение, используйте inotifywait в каталоге:

 while true; сделать 
change = $ (inotifywait -e close_write, move_to, create.) 
change = $ {change #. / *} 
if ["$ change" = "myfile. ру "]; затем ./myfile.py; fi 
готово 
 

5
09.01.2019, 00:41
1 ответ

Для стандартной ванильной Ubuntu с использованием Unity :CCSM :Диспетчер настроек CompizConfig на помощь:

sudo apt install compizconfig-settings-manager
  • Запустить CCSM
  • Перейдите к Управление окнами CCSM Main Window Management
  • Затем Разместить окна , вкладка Фиксированное размещение окон Fixed Window Placement
  • оба монитора представляют собой один большой экран, поэтому вычислите координату XY, которую вы хотите получить для каждого окна, в :
    • . если у вас 2 стандартных монитора VGA 640x480, второй монитор начинается с X=641, Y=1 если у вас нет Unity Launcher на втором мониторе, иначе X=641+42 (ширина лаунчера)
  • под пунктом списка Окна с фиксированными позициями , прес Новое
  • Возьмите имя окна или введите его вместе с координатами X и Y для каждого приложения, которое вы хотите расположить.
  • Вуаля :Готово

Для конкретного случая использования OP -они сделали эту работу автоматически, обнаружив добавленные дисплеи с помощью электронного screenAPI.

Важноapp.on('ready')состоянии, необходимом для работы API экрана, выполните следующие операторы:

const electron = require('electron');
electron.screen.on('display-added', (e,d) => { _reposition(); }

async function _reposition() { 
      const util = require('util'); 
      const exec = util.promisify(require('child_process').exec);
       const { stdout, stderr } = await setTimeout(() => { exec('compiz --replace') }, 5000); 
       console.log(stdout); console.log(stderr); 
}
}
2
27.01.2020, 20:42

Теги

Похожие вопросы