wmctrl
Geçiş komutunu kullanmaya çalıştım , ancak Ubuntu kurulumumda işe yaramadı. Geçiş açılacak, ancak açılmayacaktır. (Sanırım wmctrl
biraz üzerinde AFAIK bozuk olan gnome masaüstü ortamını kullanıyorum olabilir ).
Her neyse, çok fazla araştırma yaptıktan ve bashta uygun kodun nasıl yazılacağına karar verdikten sonra wmctrl
, mevcut GNOME masaüstünde 'her zaman en üstte' durumunu etkin bir şekilde değiştirmek için bir mantık katmanı içindeki komutları kullanan tek bir komut yarattım . Bu cevabı Ask Unix / Linux'a göndermiştim, fakat aynı sorunun olması durumunda onu da buraya göndereceğimi düşündüm.
İşte komut:
bash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'
Etkin pencere durumu özelliğini "_NET_WM_STATE" kullanarak kontrol eder ve xprops
"ABOVE" metnini içeriyorsa, "her zaman en üstte" seçeneğinin etkin olduğu anlamına gelir. Sonra sadece wmctrl
komutu ile parametre add
veya remove
uygun olarak çalıştırır.
Komut yıkımı (her komut ■
yer tutucunun yerine gelecek şekilde eklenir ):
Etkin pencere kimliğini al:
xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
Pencere durumunu xprop
kimliği kullanarak al:
xprop -id $(■) _NET_WM_STATE
Pencerenin "her zaman üstte" olarak ayarlandığını belirten durumun "YUKARI" olup olmadığını kontrol edin:
[[ $(■) =~ "ABOVE" ]]
True olursa "kaldır", aksi halde "ekle" döndür:
■ && echo "remove" || echo "add"
wmctrl
Döndürülen değeri parametre olarak kullanarak komutu çalıştırın :
wmctrl -r :ACTIVE: -b $(■),above
bash
Komut ikame ${ ... }
, bash boolean değerlendirme [[ ... ]]
ve regex eşleştirme işlecini kullanabilmeniz için her şeyi gönderin =~
:
bash -c '■'
Özellikle bu son adımın anlaşılması çok uzun sürdü. Klavye kısayollarının varsayılan olarak bash'de çalışmadığını fark edene kadar, komutları konsolda neden test ettiğimi bilmiyordum, bunları doğrudan klavye kısayolu olarak çalıştırırken sessizce başarısız oluyordum. Beni yıllarca duvara sürükledi!
Not: bash'a gönderdiğiniz komutun etrafında alıntılara ihtiyaç duyduğunuz için, komutu yazarken hiçbir zaman bir seviyeden daha fazla derinlemesine gitmediğimden (çift tırnak işaretleri kullanarak) dikkatli olmam gerekiyordu. İplerin tırnak içine başka bir şekilde yerleştirilmesi tırnaklardan kaçmak için çok fazla kafa karıştırıcı ters eğik çizgi gerektirecektir.