Bir uygulamanın pencere boyutunu ve konumunu komut satırı aracılığıyla ekranda nasıl ayarlayabilirim?


33

Firefox penceresinin belirli bir boyutta ve örneğin kabuk komutuyla ekrandaki konumunun açılmasını istiyorum, örneğin:

firefox myfile.html size 800x600 location bottom-left

Böyle bir komut var mı?


Bunu yapmayı başardım (bu forumun yardımı ile), başka bir çözüm bulsanız
Emanuel Berg

Yanıtlar:


20

Burada, Rudolf Olah tarafından sunulan örnekleri içeren Yokai'nin cevabının topluluk versiyonu .


xdotoolPencere boyutunu ve konumunu kontrol etmek için çağrılan aracı kullanabilirsiniz . Sadece sen yazmak herhangi bir komut dosyası, bu bashkullanarak xdotool, tam maksimize pencere ile işe kurulum olabilir ve pencere boyutunu ayarlamak için metne ve x edilebilir: manipüle ederek y koordinatlarını mousemoveve clickkomutları.

  1. Pencere kimliğini bulun:

    xdotool search --onlyvisible --name firefox
  2. Pencere boyutunu ayarla

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
  3. Pencereyi taşı

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y

Örneğin, firefox için pencere kimliği 123 ise, bunu yaparsınız:

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

Sol alt konumlandırma, ekran çözünürlüğünüze göre belirlenmelidir.


1
Orada olan bir böcek xdotool, wmctrlvb .. ve Ubuntu, XFCE (sahip olduğum): pencere zaten tam ekran modunda başlattı eğer, artık bunu taşıyamazsınız: bugs.launchpad.net/ubuntu/+source/unity/ + bug / 971147
ThePhi

19

Bildiğim kadarıyla, bu mümkün değildir çünkü Firefox pencereyi kontrol etmek için komutları kabul etmiyor. Bu aynı zamanda (çoğunlukla) pencere yöneticisinin sorumluluğudur, bu yüzden bunu yapacak parametrelerin olacağından şüpheliyim. Ancak, pencereyi wmctrl ile kontrol edebilirsiniz , ancak bu biraz zor olacak:

#!/bin/sh

firefox -new-instance -new-window "http://www.reddit.org" &

# Process ID of the process we just launched
PID=$!

# Window ID of the process...pray that there's     
# only one window! Otherwise this might break.
# We also need to wait for the process to spawn
# a window.
while [ "$WID" == "" ]; do
        WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
done
# Set the size and location of the window
# See man wmctrl for more info
wmctrl -i -r $WID -e 0,50,50,250,250

Bunu yapmanın daha akıllıca yolları olabilir ve Firefox'la birlikte çalışabilirlikle ilgili bazı sorunlar olabilir (örneğin, başka hiçbir örnek çalışmamaktadır), ancak sizi yönlendirmelidir.


1
Sadece küçük bir not. Pencere büyütülmüşse yeniden boyutlandırma çalışmaz. Bu nedenle öncelikle bu özelliği devre dışı bırakmanız gerekir: wmctrl -i -r $ WID -b remove, maximized_vert; wmctrl -i -r $ WID -b kaldır, maximized_horz; Ondan sonra Firefox penceresini yeniden boyutlandırabildim.
ka3ak

3

Geçmişte, Javascript ile pencere boyutunu ayarlayan ve ardından istediğim sayfaya yönlendiren bir HTML belgesi oluşturdum. Aptalca bir kesmek ama hey, işe yarıyor.


Bu artık işe yaramıyor gibi görünüyor. Görünüşe göre, window.resizeTo yalnızca, window.open aracılığıyla oluşturulan bir açılır pencere ise bir etkiye sahiptir.
hugomg

2

Bunun sadece kabuk komutları ile mümkün olduğunu sanmıyorum, çünkü pencere yöneticinizle bir ilgisi yok.
Bunu etkileyebilecek wmctrl ve devilspie'yi duydum . Ancak bunu, örneğinizde yazdığınız kadar basit yapmanın bir yolu olduğundan şüpheliyim.


1

Bunu her zaman yapıyorum. Ancak DevilsPie2 kullanıyorum, çünkü daha sağlam. LUA kodlama dilini kullanıyor, bu çok zor değil.

İşte açıldığında en soldaki monitörde (dizüstü bilgisayar ekranı) açmak istediğim Thunderbird için lua betiğim:

if (get_window_name()=="Mozilla Thunderbird") then
   pin_window()
   set_window_geometry( 50, 10, 1220, 780 )
end

where 50 = X coordinate (for upper-left corner of the window)
      10 = Y coordinate ( " " )
    1220 = window width
     780 = window height

Bunu ayarlamak için, ev yapılandırmanızda (Ubuntu benzeri dağıtımlarda) devilspie2 adlı bir dizin oluşturursunuz, örneğin /home/$USERNAME/.config/devilspie2

Thunderbird için dosya adı önemli olmasa da thunderbird.lua dosyasını yarattım. Her uygulama için farklı bir dosya adım var, ancak dilerseniz her şeyi tek bir komut dosyasına koyabilirsiniz. Giriş yaptığınızda otomatik olarak başlayacak devilspie2'yi ayarlayın, örneğin /home/$USERNAME/.config/autostart/devilspie2.desktop

Burada, lua kodunuzda kullanabileceğiniz çeşitli seçenekler hakkında iyi bir sayfaya bir bağlantı verilmiştir: https://github.com/gusnan/devilspie2/blob/master/README

Bir not: Komut dosyalarının çalıştırılabilir olması gerekmez. Benimki 664 ve iyi çalışıyor. Kontrol ettiğim diğer programlardan bazıları openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload ve & yad. Pin_window'ı kullanıyorum, böylece tüm masaüstlerinde ve uygulamaya bağlı olarak diğer komutlarda görünebiliyorlar.


LXDE ile çalışmıyor gibi görünüyor. Kesinlikle hiçbir pencere olayı tanınmaz (çalışırken hiçbir şey yazdırılmaz devilspie2 --debug)
John Smith İsteğe bağlı

0

Bu pozisyonun problemini çözmez, ama en azından boyutları ayarlayabilirsin:

firefox -width 200 -height 500
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.