Ubuntuで利用できる動的なマルチモニター対応のデスクトップ環境はありますか?


14

私はラップトップを使用し、日中に1つの(物理的な)職場から別の職場に移行し、可能であれば外部モニターに接続します。

また、多くのマルチタスクを行う必要があるため、特定の時間に多数のウィンドウを開いて、それらを整理するための多くの(仮想)ワークスペースを用意します。

しかし、外部モニターを接続/切断するたびに、私の注意深い配置はすべてなくなります。これは私を本当に怒らせます。

2台目のモニターを接続/切断するときに、ウィンドウをそのままにするデスクトップ環境はありますか?それとも、モニター配置ごとのウィンドウ配置を覚えているでしょうか?ホームオフィス(ラップトップ画面の上部にある17インチモニター)から通常の職場(ラップトップ画面の左側にある21インチモニター)または同僚の机(ラトップ画面の右側にある19インチモニター)に移動したとき、モニターが最後に接続された場所にウィンドウが表示されます-このモニターを見たことがない場合は、そのままにしておきます。

外部モニタを統一して「処理」する方法は悲しいだけでなく、追加のモニタをすべて接続する必要がなかったらいいのにと思います。


これはウィンドウマネージャーで発生しますか?GNOME 3、KDE、LXDE、XFCE?
Braiam

知りません。それは団結で起こります。
ARTM

これに対する良い解決策を見つけましたか?私はubuntuを装着したDellノートパソコンを使用せざるを得ませんでしたが、MacBook Proには慣れています。MacにはStayと呼ばれるプログラムがあります。これは、各モニター構成のウィンドウの位置を記憶するため、不可欠です。モニターを接続すると、すべてのウィンドウが元の場所に移動します。2番目のモニターを接続すると、すべてが再び動きます。プラグを抜くと、全員が元の場所に戻ります。さらに、MacはStayがなくても十分にスマートであるため、すべてのウィンドウが表示されます。このUbuntuラップトップでは、画面の外にあるウィンドウを見つける必要があります。
Greywire

Linuxにとどまるようなものは見つかりません。個々のコマンドからすべての情報と制御を取得できるようで、以下のスクリプトが近づいています。必要な機能を取得するためにこれらの改善に取り組んでいます
...-Greywire

私が欠けているもののように聞こえます。いいえ、解決策が見つかりません。
-artm

回答:


10

2つのシェルスクリプトを提供しています。ウィンドウの位置とサイズの配置保存するのに役立ちます。何らかの方法で目的のウィンドウの配置が乱れた場合、これらのスクリプトを使用して、すべてのウィンドウの正確なウィンドウサイズと位置でそれらの配置を復元できます。

wmctrl既にお持ちでない場合はインストールする必要があります。ターミナル経由でインストール、

sudo apt-get install wmctrl

Windows構成を保存するスクリプト

# Script_Name: save_window_conf.sh
#!/bin/bash
if [ -f $HOME/.my_windows_config.txt ]; then
    echo -e "Information: Previous configuration file \"$HOME/.my_windows_config.txt\" already exists.\nTo save a new configuration remove it manually using the following command,\n\n\trm $HOME/.my_windows_config.txt"
    exit 1
else
    wmctrl -p -G -l | awk '($2 != -1)&&($3 != 0)&&($NF != "Desktop")' | awk '{print $1}' | while read mywinid
    do
        xwininfo -id "$mywinid" >> $HOME/.my_windows_config.txt
    done
fi

実行時に、上記のスクリプトは、開いているすべてのウィンドウのウィンドウの位置とサイズを.my_windows_config.txt、ホームディレクトリで指定されたファイルに保存します。非表示のテキストファイルです。

Windows構成を再ロードするスクリプト

# Script_Name: load_window_conf.sh
#!/bin/bash

file=$HOME/.my_windows_config.txt
declare -a mywinid
declare -a x
declare -a y
declare -a width
declare -a height

nl=$(cat "$file" | grep xwininfo |wc -l)

for i in $(seq 1 $nl)
do
    mywinid[i]=$(cat "$file" | grep "xwininfo" | awk -v p="$i" '{if(NR==p) print $4}')
    x[i]=$(cat "$file" | grep "Absolute upper-left X" | awk -v p="$i" '{if(NR==p) print $NF}')
    y[i]=$(cat "$file" | grep "Absolute upper-left Y" | awk -v p="$i" '{if(NR==p) print $NF}')
    width[i]=$(cat "$file" | grep "Width" | awk -v p="$i" '{if(NR==p) print $NF}')
    height[i]=$(cat "$file" | grep "Height" | awk -v p="$i" '{if(NR==p) print $NF}')
done

for it in $(seq 1 $nl)
do
    wmctrl -i -r "${mywinid[$it]}" -e 0,"${x[$it]}","${y[$it]}","${width[it]}","${height[it]}"
done

2番目のスクリプトを実行すると、すべてのウィンドウの正確なサイズでウィンドウの位置が復元されます。

使用法

これらのスクリプトを$HOME/bin/ディレクトリに保存します。を追加$HOME/bin/しますPATH。このために、これらの行を最後に追加します$HOME/.bashrc

PATH=$HOME/bin:$PATH
export PATH

これらのスクリプトを名前のみで実行できるようにします。スクリプトの実行許可を与えます。

chmod +x $HOME/bin/save_window_conf.sh
chmod +x $HOME/bin/load_window_conf.sh

設定を保存するには $HOME/.my_windows_config.txt

ターミナルで実行するすべてのウィンドウを開いて調整した後、

save_window_conf.sh

から設定をリロードするには $HOME/.my_windows_config.txt

load_window_conf.sh

それがあなたの問題を解決することを願っています。これがスクリーンショットです

ここに画像の説明を入力してください


うわー、ありがとう、これは有望に見える。スクリプトを試してみます。
ARTM

@artm少しグリッチとタイプミスを編集しましたが、今では大丈夫そうです。UnityとGnome-fallback-sessionでテストしました。gnome3でも動作するはずです。問題が発生した場合はお知らせください。
souravc 14年

@artmを削除するときは、あなたの決定になります.my_windows_config.txt。既存のウィンドウに対して同じウィンドウ構成を数回ロードする場合は、それを保持することをお勧めします。ただし、まったく新しいセッションを開始する場合、これらのウィンドウIDは異なるため、その場合はで古い構成ファイルを削除することをお勧めします$HOME/.my_windows_config.txt。新しい構成を保存する前に、構成保存ファイルを手動で削除する必要があります。
souravc

Ubuntu 18.04のXFCE4では、重力(-eパラメーターの最初の「0」)を31に変更する必要がありました。そうしないと、ウィンドウは約31px前後に復元されました。これがデフォルトのXFCEパネルのサイズかもしれません。コードをありがとう!
akom

-1

一般的なガイドはこちら:解像度

動的解像度に関するソリューションは、XorgXrandRまたはXineramaに近い

あなたが持っている:
セットアップする4つの方法

  1. .xprofileとのセッションごと。

  2. xrandrツールを使用して動的に

  3. xorg.confで設定することにより静的に。

  4. XrandrグラフィカルフロントエンドGUI。

良い答えは、複数のモニターの設定が保存されないことです

ワークスペース全体でウィンドウ管理を回避するには、Compiz Config Managerが提供するプロファイリングシステムを使用できます。


2
解像度やディスプレイの配置に問題はありません-期待通りに機能します。
ARTM

だから、どんなデスクトップ環境もあなたにとってフレンドリーです。公共のせいにしないでください。
迅速に

誰のせいでもない。モニターを接続/切断するときに、開いているウィンドウを置いたままにしておきたいだけです。
ARTM

したがって、公式に参照できる4つのソリューションがあります。私の答えはあなたの「狂気」を適切にカバーしています;)
迅速に

2
ああ、試してみてください。各ワークスペースでウィンドウを開き、元の画面の上部に表示されるモニターを接続して、ウィンドウがどこにあるかを確認します。次に、モニターが接続されているときにウィンドウがランダムにジャンプするのを防ぐのにxrandrがどのように関連しているか教えてください。
ARTMの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.