Ubuntu

單獨的程序 - 留在指定的監視器上

  • January 20, 2019

鑑於外接顯示器和主顯示器始終具有相同的解析度,是否可以在各自指定的螢幕中打開兩個程序,例如 VLC 和瀏覽器?

值得一提的是,外接顯示器和內置顯示器必須重新開機,有時會長時間保持關閉狀態。當他們回來時,他們需要留在各自的監視器上,而目前他們通常會全部移動到剩餘的活動監視器中。

獎勵:這是否可以通過使用 Ubuntu 16.04 中的 Unity 等桌面環境來實現?只要軟體保留在其給定位置,我就可以創建自定義會話。

對於使用 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 座標一起鍵入。

  • 這裡是:完成

screen對於 OP 的特定案例,他們通過使用電子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); 
}
}

引用自:https://unix.stackexchange.com/questions/493325