Perintah aktual yang Anda inginkan adalah sesuatu seperti
wmctrl -r :ACTIVE: -b add,maximized_vert &&
wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1
Itu akan membuat jendela saat ini mengambil setengah layar (ubah $HALF
ke dimensi layar Anda) dan jepret ke sisi kiri. Untuk mengambil ke kanan, gunakan
wmctrl -r :ACTIVE: -b add,maximized_vert &&
wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1
Anda juga dapat bermain dengan wmctrl
untuk mendapatkan ID dari jendela yang Anda sukai daripada menggunakan :ACTIVE:
. Saya tidak dapat membantu di sana karena itu tergantung pada windows yang bersangkutan. Lihat man wmctrl
lebih lanjut.
Saya sudah menulis naskah untuk itu. Saya tidak menggunakan Unity jadi saya tidak bisa menjamin itu akan berhasil, tetapi saya tidak melihat alasan mengapa tidak. Perlu wmctrl
, xdpyinfo
dan disper
harus diinstal:
sudo apt-get install wmctrl x11-utils disper
Kemudian, simpan skrip di bawah ini sebagai ~/bin/snap_windows.sh
, buat agar dapat dieksekusi chmod a+x ~/bin/snap_windows.sh
dan Anda dapat menjalankannya
snap_windows.sh r
Untuk mengambil ke sisi kanan. Gunakan l
untuk sisi kiri dan tidak ada argumen untuk memaksimalkan jendela. Perhatikan bahwa ini berjalan pada jendela saat ini sehingga Anda harus menetapkan cara pintas untuk itu jika Anda ingin itu berjalan pada apa pun selain terminal.
Script ini sedikit lebih rumit daripada yang Anda minta karena saya telah menulisnya untuk bekerja pada setup tunggal dan dual-monitor.
#!/usr/bin/env bash
## If no side has been given, maximize the current window and exit
if [ ! $1 ]
then
wmctrl -r :ACTIVE: -b toggle,maximized_vert,maximized_horz
exit
fi
## If a side has been given, continue
side=$1;
## How many screens are there?
screens=`disper -l | grep -c display`
## Get screen dimensions
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'`;
HALF=$(($WIDTH/2));
## If we are running on one screen, snap to edge of screen
if [ $screens == '1' ]
then
## Snap to the left hand side
if [ $side == 'l' ]
then
## wmctrl format: gravity,posx,posy,width,height
wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1
## Snap to the right hand side
else
wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1
fi
## If we are running on two screens, snap to edge of right hand screen
## I use 1600 because I know it is the size of my laptop display
## and that it is not the same as that of my 2nd monitor.
else
LAPTOP=1600; ## Change this as approrpiate for your setup.
let "WIDTH-=LAPTOP";
SCREEN=$LAPTOP;
HALF=$(($WIDTH/2));
if [ $side == 'l' ]
then
wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$LAPTOP,0,$HALF,-1
else
let "SCREEN += HALF+2";
wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$SCREEN,0,$HALF,-1;
fi
fi