別のプログラム - 指定されたモニターに常駐

別のプログラム - 指定されたモニターに常駐

外部モニタとメインモニタの解像度が常に同じである場合は、指定された各画面で両方のプログラム(VLCやブラウザなど)を開くことができますか?

外部モニタと内部モニタを再起動する必要があり、時には長時間シャットダウンすることがあることに言及する価値があります。彼らが戻ってくるとき、彼らは自分のモニターにとどまらなければならず、現在は通常残りのアクティブなモニターに移動します。

ボーナス:Ubuntu 16.04のUnityなどのデスクトップ環境を使用してこれを達成できますか?ソフトウェアが指定された場所に保持されている限り、カスタムセッションを作成できます。

答え1

Unity を使用する標準バニラ Ubuntu の場合: CCSM: CompizConfig 設定マネージャが救出されます。

sudo apt install compizconfig-settings-manager
  • CCSMの起動
  • 行くWindow Management CCSM メインウィンドウの管理
  • その後、Place WindowsタブFixed Window Placement 固定ウィンドウの配置
  • 両方のモニターは1つの大きな画面領域であるため、各ウィンドウに必要なXY座標を計算します。
    • たとえば、640x480の2つの標準VGAモニタがある場合、2番目のモニタはX = 641で始まり、2番目のモニタにUnityランチャーがない場合は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); 
}
}

関連情報