单独的程序 - 留在他们指定的显示器上

Syn*_*tic 5 ubuntu xorg desktop-environment x11 unity

鉴于外部显示器和主显示器始终具有相同的分辨率,是否可以让两个程序说 VLC 和一个浏览器在各自的指定屏幕上打开?

值得一提的是,外接显示器和内置显示器必须重新开机,有时会长时间关闭。当他们回来时,他们需要留在各自的监视器上,而目前他们通常都会被移到剩余的活动监视器中。

奖励:这是否可以通过使用 Ubuntu 16.04 中的 Unity 等桌面环境来实现?只要软件保留在其给定位置,我就可以创建自定义会话。

Fab*_*bby 2

对于使用 Unity 的标准 vanilla Ubuntu:CCSM:CompizConfig 设置管理器来救援:

\n\n
sudo apt install compizconfig-settings-manager\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 启动CCSM
  • \n
  • 转到Window Management\nCCSM 主窗口管理
  • \n
  • 然后Place Windows,制表符Fixed Window Placement\n固定窗口放置
  • \n
  • 两台显示器都是一个大屏幕区域,因此请计算您希望每个窗口位于的 XY 坐标:\n\n
      \n
    • 例如,如果您有 2 个 640x480 的标准 VGA 显示器,则第二台显示器从 X=641 开始,如果第二台显示器上没有 Unity Launcher,则 Y=1,否则 X=641+42(启动器的宽度)
    • \n
  • \n
  • 在列表项下Windows with fixed positions,按New
  • \n
  • 获取窗口名称或将其与您想要定位的每个应用程序的 X 和 Y 坐标一起键入。
  • \n
  • Voil\xc3\xa0: 完成
  • \n
\n\n

对于 OP 的特定用例,他们通过使用电子screenAPI 检测添加的显示器来自动完成这项工作。

\n\n

重要提示:在app.on(\'ready\'),屏幕 API 工作所需的状态下,发出以下语句:

\n\n
const electron = require(\'electron\');\nelectron.screen.on(\'display-added\', (e,d) => { _reposition(); }\n\nasync function _reposition() { \n      const util = require(\'util\'); \n      const exec = util.promisify(require(\'child_process\').exec);\n       const { stdout, stderr } = await setTimeout(() => { exec(\'compiz --replace\') }, 5000); \n       console.log(stdout); console.log(stderr); \n}\n}\n
Run Code Online (Sandbox Code Playgroud)\n