Ubuntu için dinamik, çoklu monitör dostu bir masaüstü ortamı var mı?


14

Bir dizüstü bilgisayar kullanıyorum ve gün içinde bir (fiziksel) işyerinden diğerine geçmeyi ve varsa harici bir monitöre bağlanmayı seviyorum.

Ayrıca çok görevli olmalıyım, bu yüzden herhangi bir zamanda açık çok fazla pencerem ve onları düzenlemek için birçok (sanal) çalışma alanım var.

Ancak harici monitörü her bağladığımda / bağlantısını kestiğimde tüm dikkatli düzenlemelerim gitti. Bu beni gerçekten deli ediyor .

İkinci bir monitör bağladığınızda / çıkarırken pencereleri yalnız bırakan bir masaüstü ortamı var mı? Ya da daha iyisi, monitör düzenlemesi başına pencere düzenlemesini hatırlıyor? Ev ofisimden (dizüstü bilgisayar ekranının üstündeki 17 "monitör) her zamanki işyerime (dizüstü bilgisayar ekranının 21" monitör soluna) veya meslektaşımın masasına (latop ekranın 19 "monitör sağına) gittiğimde, pencereler, monitörün en son bağlandığı yerde son bulur - veya bu monitörü hiç görmedikleri takdirde sabit kalırlar.

Birliğin dış monitörleri "işleme" şekli beni sadece üzüyor ve bağlanacak tüm bu ekstra monitörlere sahip olmamamı ve bağlantı kurduğumda, zemine çivilenmiş bir masaüstü makinem varmış gibi bu düzenlemeye zincirlenmiş olmamı istiyor.


Bu herhangi bir pencere yöneticisinde olur mu? GNOME 3, KDE, LXDE, XFCE?
Braiam

Bilmiyorum. Birlik ile olur.
artm

Buna iyi bir çözüm buldunuz mu? Ubuntu'yu taktığım bir Dell dizüstü bilgisayar kullanmak zorunda kaldım, ancak MacBook Pro'uma alışkınım. Mac'te, her monitör yapılandırması için pencere konumlarını hatırladığından, Stay adında bir program var. Bir monitör takın, tüm pencereler bulundukları yere hareket eder. İkinci bir monitör takın, hepsi tekrar hareket eder. Fişi çekin, hepsi bulundukları yere geri döner. Ayrıca Mac, tüm pencerelerin görünür olduğundan emin olmak için Stay olmadan bile yeterince akıllıdır. Bu Ubuntu dizüstü bilgisayarda ekranın dışındaki pencereleri bulmak zorunda kalıyorum.
Greywire

Linux üzerinde kalmak gibi bir şey bulamıyorum. Tek tek komutlardan tüm bilgileri ve kontrolü alabileceğiniz anlaşılıyor ve aşağıdaki komut dosyaları yaklaşıyor. İhtiyacım olan işlevselliği elde etmek için bunları geliştirmeye çalışıyorum ...
Greywire

Kaldığım sesler eksik. Hayır, bir çözüm bulamadım.
artm

Yanıtlar:


10

Size iki kabuk komut dosyası sağlıyorum. Pencere pozisyonları ve boyut düzenlemenizi kaydetmenize yardımcı olacaktır . İstediğiniz pencere düzenlemeleri bir şekilde bozulursa, bu komut dosyasını kullanarak tüm pencereler için tam pencere boyutu ve konumları olan düzenlemeleri geri yükleyebilirsiniz .

wmctrlZaten sahip değilseniz yüklemeniz gerekir. Terminal üzerinden kurulum,

sudo apt-get install wmctrl

Windows yapılandırmasını kaydetmek için komut dosyası

# 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

Yürütme sırasında yukarıdaki komut dosyası, tüm açık pencereleriniz için pencerelerinizin konumunu ve boyutunu .my_windows_config.txtana dizininizdeki bir dosyaya kaydeder . Gizli bir metin dosyasıdır.

Windows yapılandırmasını yeniden yüklemek için komut dosyası

# 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

İkinci komut dosyasını yürüttüğünüzde, tüm pencereleriniz için tam boyutta windows konumunuzu geri yükler.

kullanım

Bu komut dosyalarını $HOME/bin/dizininize kaydedin . Ekle $HOME/bin/Sepetinde PATH. Bunun için bu satırları$HOME/.bashrc

PATH=$HOME/bin:$PATH
export PATH

Bu komut dosyalarını yalnızca adlarıyla yürütmenizi sağlar. Komut dosyalarının yürütülmesine izin verin,

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

Yapılandırmayı bilgisayarınıza kaydetmek için $HOME/.my_windows_config.txt

Tüm pencerelerinizi açıp ayarladıktan sonra terminalde çalıştırın,

save_window_conf.sh

Yapılandırmayı bilgisayarınızdan yeniden yüklemek için $HOME/.my_windows_config.txt

load_window_conf.sh

Sorununuzu çözeceğini umuyoruz. İşte bir ekran görüntüsü,

resim açıklamasını buraya girin


Vay canına, teşekkürler, bu umut verici görünüyor. Senaryoları deneyeceğim.
artm

@artm Küçük bir aksaklık ve bir yazım hatası düzenledim, şimdi iyi görünüyor. Birlik ve Gnome-fallback oturumunda test ettim, gnome3 üzerinde çalışmalı. Herhangi bir sorunla karşılaşırsanız bana bildirin.
souravc

@artm kaldırmak istediğinizde kararınız olmalıdır .my_windows_config.txt. Varolan pencereler için aynı pencere yapılandırmasını birkaç kez yüklemek isterseniz, korumak isteyebilirsiniz. Ancak tamamen yeni bir oturum başlatırsanız bu windows kimliği farklı olacaktır ve bu durumda eski yapılandırma dosyasını kaldırmak daha iyidir $HOME/.my_windows_config.txt. Yeni bir yapılandırmayı kaydetmeden önce, kaydedilen yapılandırma dosyasını el ile kaldırmanız gerekir.
souravc

Ubuntu 18.04'teki XFCE4'te yerçekimini (-e parametresinde ilk "0") 31 olarak değiştirmek zorunda kaldım, aksi takdirde pencereler bulundukları yerden yaklaşık 31 piksel geri yüklendi. Bunun varsayılan XFCE panelinin boyutu olabileceğini düşünüyorum. Kod için teşekkürler!
akom

-1

Ortak kılavuz burada: Çözünürlük

Dinamik çözünürlük hakkındaki çözümleriniz Xorg & XrandR veya Xinerama'ya yakın

Elinizde:
Kurulum için dört yöntem

  1. .Xprofile ile oturum.

  2. Xrandr aracını kullanarak dinamik olarak

  3. Statik olarak xorg.conf içinde ayarlayarak.

  4. Xrandr Grafiksel Ön Uç GUI.

İyi yanıt : Birden çok monitörün ayarları kaydedilmez

Pencere Yönetiminizi çalışma alanlarınızda geçici olarak çözmek için Compiz Config Manager tarafından verilen profil oluşturma sistemini kullanabilirsiniz


2
Çözünürlükler veya ekran düzenlemeleriyle ilgili bir sorunum yok - bunlar beklendiği gibi çalışıyor.
artm

Yani HERHANGİ BİR masaüstü ortamı DOSTU sizin için. Kamuoyunu suçlama lütfen.
hızlı

Ben kimseyi suçlamıyorum. Monitörleri bağlarken / çıkarırken açık pencerelerin kalmasını istiyorum.
artm

Yani resmi referanslı dört çözümünüz var. Cevabım senin "deliliğini" yeterince kapsıyor;)
hızlı

2
Oh, sadece kendiniz deneyin: her çalışma alanında bir pencere açın, ardından orijinal ekranın üstünde görünen bir monitör bağlayın ve pencerelerin nerede bittiğini görün. O zaman bana bir monitör bağlandığında xrandr'ın pencerelerin rasgele atlamasını durdurmakla ilgili olduğunu söyle.
artm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.