Tôi không nghĩ rằng bạn có thể kích hoạt snap mà không cần kết hợp (Gnome3 classic). Nó xuất hiện trong hộp trên Gnome3 (tôi nghĩ vậy) và chắc chắn là với Cinnamon. Dù sao, tôi đã viết một kịch bản mà về cơ bản là làm điều tương tự.
Nó sẽ không hoạt động tự động, nghĩa là nó sẽ không được kích hoạt chỉ bằng cách kéo một cửa sổ vào cạnh màn hình, nhưng bạn có thể gán phím tắt cho nó. Ví dụ: Ctrl+ Rđể chụp sang phía bên tay phải, v.v.
Kịch bản yêu cầu phân tán , xdpyinfo
và wmctrl
, tất cả trong số đó phải dễ dàng có sẵn và nằm trong repos debian (mà kali sử dụng). Nếu bạn lưu tập lệnh dưới dạng snap_windows.sh
, bạn có thể sử dụng tập lệnh như sau:
snap_windows.sh
sẽ tối đa hóa / tối đa hóa cửa sổ hiện tại.
snap_windows.sh l
sẽ chụp cửa sổ hiện tại ở phía bên trái màn hình
snap_windows.sh r
sẽ chụp cửa sổ hiện tại ở phía bên phải màn hình
Nếu bạn đang sử dụng hai màn hình, nó sẽ luôn chụp ở phía bên trái / bên phải của màn hình bên phải. Nó không hoàn hảo và tôi đã không sử dụng nó kể từ khi tôi chuyển sang Cinnammon vì vậy hãy cho tôi biết nếu bạn gặp rắc rối với nó.
Đây là kịch bản:
#!/bin/bash
## If no side has been given, toggle maximizing 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