3

Есть ли способ включить Windows Snap в Gnome3 Classic? Я использую KDE4, и это из коробки. Прямо сейчас я тестирую Kali Llinux и пытаюсь заставить его работать.

Я хочу легкую среду, и мне нужно только привязать. Какие-нибудь идеи, кроме создания собственной Kali с KDE или использования compiz?

1 ответ1

3

Я не думаю, что вы можете активировать оснастку без композитинга (Gnome3 classic). Это действительно из коробки на полном Gnome3 (я думаю) и определенно с Корицей. Во всяком случае, я написал сценарий, который по сути делает то же самое.

Он не будет работать автоматически, то есть он не будет активирован простым перетаскиванием окна к краю экрана, но вы можете назначить ему ярлыки. Например, Ctrl+R для привязки к правой стороне и т.д.

Сценарий требует disper, xdpyinfo и wmctrl все из которых должны быть легко доступны и находятся в DEBiAN РЕПО (который использует поташ). Если вы сохраните скрипт как snap_windows.sh , вы можете использовать его следующим образом:

  • snap_windows.sh / свернет текущее окно.
  • snap_windows.sh l привязывает текущее окно к левой стороне экрана
  • snap_windows.sh r привязывает текущее окно к правой стороне экрана

Если вы используете два экрана, он всегда будет привязываться к левой / правой части экрана с правой стороны. Он не идеален, и я не использовал его с тех пор, как перешел на Cinnammon, поэтому дайте мне знать, если у вас есть проблемы с этим.

Вот сценарий:

#!/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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .