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

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

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

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

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

答案1

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

sudo apt install compizconfig-settings-manager
  • 启动CCSM
  • Window Management CCSM 主窗口管理
  • 然后Place Windows,选项卡Fixed Window Placement 固定窗口放置
  • 两台显示器都是一个大屏幕区域,因此请计算每个窗口所需的 XY 坐标:
    • 例如,如果您有 2 个 640x480 的标准 VGA 显示器,则第二个显示器从 X=641 开始,如果第二个显示器上没有 Unity Launcher,则 Y=1,否则 X=641+42(启动器的宽度)
  • 在列表项下Windows with fixed positions,按New
  • 获取窗口名称或将其与您想要定位的每个应用程序的 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); 
}
}

相关内容