鉴于外部显示器和主显示器始终具有相同的分辨率,是否可以在各自指定的屏幕中打开两个程序(即 VLC 和浏览器)?
值得一提的是,外部显示器和内部显示器必须重新启动,有时会长时间关闭。当他们回来时,他们需要留在各自的监视器上,而目前他们通常都会被移到剩余的活动监视器中。
额外奖励:这可以通过使用 Ubuntu 16.04 中的 Unity 等桌面环境来实现吗?只要软件保留在其给定位置,我就可以创建自定义会话。
答案1
对于使用 Unity 的标准 vanilla Ubuntu:CCSM:CompizConfig 设置管理器来救援:
sudo apt install compizconfig-settings-manager
- 启动CCSM
- 去Window Management
- 然后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 的特定用例,他们通过使用电子screen
API 检测添加的显示器来自动完成这项工作。
重要的:在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);
}
}