Apakah ada cara untuk meletakkan jendela di tengah layar setelah dibuka, atau membuatnya terbuka di tengah layar?
Ini perlu dilakukan menggunakan baris perintah.
Apakah ada cara untuk meletakkan jendela di tengah layar setelah dibuka, atau membuatnya terbuka di tengah layar?
Ini perlu dilakukan menggunakan baris perintah.
Jawaban:
alat wmctrl menyediakan akses baris perintah ke hampir semua fitur yang ditentukan dalam spesifikasi EWMH (Extended Window Manager Hints) . Ini dapat digunakan, misalnya, untuk mendapatkan informasi tentang manajer jendela, untuk mendapatkan daftar desktop dan jendela terkelola yang terperinci, untuk beralih dan mengubah ukuran desktop, membuat jendela layar penuh , selalu di atas atau lengket , dan untuk mengaktifkan , tutup , pindahkan , ubah ukuran , maksimalkan ,dan minimalkan .
Anda dapat menginstalnya dengan
sudo apt-get install wmctrl
Anda dapat memperoleh informasi tentang desktop virtual (ruang kerja) Anda dengan
wmctrl -d
one@onezero:~$ wmctrl -d
0 * DG: 2720x1536 VP: 0,0 WA: 0,24 1360x744 N/A
Dan daftar jendela yang terbuka dengan wmctrl -l
. The -G
pilihan menunjukkan Anda geometri dari jendela:
one@onezero:~$ wmctrl -l
0x02000004 0 onezero Desktop
0x02e00002 0 N/A DNDCollectionWindow
0x02e00003 0 N/A launcher
0x01e00004 0 onezero cairo-dock
0x02e00004 0 N/A panel
0x04800061 0 onezero Transmission
0x02e0000a 0 N/A Dash
0x03a00044 0 onezero arranging windows from the gnu/linux command line with wmctrl ~ Moving to Freedom - Chromium
0x04400006 0 onezero one@onezero: ~
0x04c000e9 0 onezero Google - Mozilla Firefox
wmctrl -lG
one@onezero:~$ wmctrl -lG
0x02000004 0 0 0 1360 768 onezero Desktop
0x02e00002 0 -1460 -868 1360 768 N/A DNDCollectionWindow
0x02e00003 0 0 24 58 744 N/A launcher
0x01e00004 0 290 653 780 115 onezero cairo-dock
0x02e00004 0 0 0 1360 24 N/A panel
0x04800061 0 408 95 732 500 onezero Transmission
0x02e0000a 0 -1402 -844 1302 744 N/A Dash
0x03a00044 0 0 24 1360 744 onezero Center a window via command line - Ask Ubuntu - Stack Exchange - Chromium
0x04400006 0 127 94 983 434 onezero one@onezero: ~
0x04c000e9 0 5 47 1349 715 onezero Google - Mozilla Firefox
Anda dapat menentukan jendela dengan merujuk judul atau sebagian judulnya setelah -r. -e adalah untuk memindahkan dan mengubah ukuran
wmctrl -r "Mozilla Firefox" -e <G>,<X>,<Y>,<W>,<H>
<G>: Gravity specified as a number. The numbers are defined in the EWMH specification. The value of zero is particularly
useful, it means "use the default gravity of the window".
<X>,<Y>: Coordinates of new position of the window.
<W>,<H>: New width and height of the window.
Jadi, untuk memindahkan jendela ke sudut kiri atas dan membuat lebar 1000 piksel dengan tinggi 700, Anda akan menggunakan 0,0.0.1000.700
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700
Untuk memindahkan / mengubah ukurannya. Untuk itu, saya menggunakan solusi "unmaximizing" terlebih dahulu, menggunakan -b
opsi
wmctrl -r "Mozilla Firefox" -b tambahkan, maximized_vert, maximized_horz
wmctrl -r "Mozilla Firefox" -b hapus, maximized_vert, maximized_horz
one@onezero:~$ wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz
Hal-Hal yang Perlu Anda Pahami 1
The -e option expects a list of comma separated integers: "gravity,X,Y,width,height"
itu adalah Resolusi layar saya jadi x = 1360 & y = 786
Menyelaraskan jendela ke setengah kiri layar
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768
Menyelaraskan jendela ke setengah kanan layar
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768
Menyelaraskan jendela ke center of screen
1360/4 = 340
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768
Memanipulasi sebagai pengaturan layar Anda
yang berfungsi dengan jendela yang sedang aktif
IFS='x' read screenWidth screenHeight < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
width=$(xdotool getactivewindow getwindowgeometry --shell | head -4 | tail -1 | sed 's/[^0-9]*//')
height=$(xdotool getactivewindow getwindowgeometry --shell | head -5 | tail -1 | sed 's/[^0-9]*//')
newPosX=$((screenWidth/2-width/2))
newPosY=$((screenHeight/2-height/2))
xdotool getactivewindow windowmove "$newPosX" "$newPosY"
xdotool
tindakan apa yang harus dilakukan untuk membuat mereka menjadi "normal" sebelum menelepon windowmove
. Ide ide?
wmctrl
juga, solusi yang lebih baik diterima. TL; DR: panggilanwmctrl -ir "$(xdotool getactivewindow)" -b remove,maximized_vert,maximized_horz
sebelum xdotool getactivewindow windowmove
panggilan terakhir .
Jika ada yang ingin cuplikan kode untuk disalin / ditempelkan untuk melakukan ini, ini salah satunya:
winname='foo'
IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
read wx wy ww wh < <(wmctrl -lG | grep $winname | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
wmctrl -r $winname -e 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh
Ganti foo
dengan nama jendela yang Anda ingin pusatkan di baris pertama, tentu saja.
Penjelasan (rincian dalam bentuk contoh sesi konsol):
Mendapatkan dimensi layar
llama@llama:~$ xdpyinfo | grep dimensions
dimensions: 1920x1080 pixels (508x285 millimeters)
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*'
1920x1080
x
508x285
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1
1920x1080
llama@llama:~$ IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
llama@llama:~$ echo $sw $sh
1920 1080
Mendapatkan informasi geometri jendela
llama@llama:~$ wmctrl -lG | grep foo
0x00a0000c 0 1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]*//;'
0 1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]*//;'
1113 510 722 475 llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;'
1143 505 722 475
llama@llama:~$ read wx wy ww wh < <(wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
llama@llama:~$ echo $wx $wy $ww $wh
1143 505 722 475
Memindahkan jendela
llama@llama:~$ echo 0,foo,bar,$ww,$wh
0,foo,bar,722,475
llama@llama:~$ echo 0,$(($sw/2)),bar,$ww,$wh
0,960,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),bar,$ww,$wh
0,599,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh
0,599,303,722,475
Sebagian besar aplikasi harus menghormati parameter --geometry saat memulai (beberapa lebih suka -geometry, coba yang kedua jika yang pertama tidak berhasil untuk Anda):
gnome-terminal --geometry 80x25+100+100
Parameter geometri memiliki bentuk ini:
WIDTHxHEIGHT+XOFF+YOFF
Anda dapat meninggalkan bagian yang tidak dibutuhkan:
gnome-terminal --geometry +20+50 #No size, just offsets
Untuk lebih jelasnya:
man X
lalu tekan "/" dan cari SPESIFIKASI GEOMETRI
atau lihat di sini: http://www.cotse.com/dlf/man/xwindows/geometry.htm
bash
atauzsh
dijalankan, polossh
tidak akan berfungsi.