Introdução
O script abaixo pede ao usuário para escolher a opção de redimensionamento de 1/3 ou 2/3 para uma janela, então permite ao usuário selecionar uma janela que será redimensionada. A janela a ser redimensionada para 1/3 pulará à esquerda e a janela 2/3 pulará à direita. O script pode ser vinculado a um atalho de teclado, conforme necessário.
Configuração preliminar
O script depende do programa wmctrl
para fazer o trabalho. Verifique se ele está instalado primeiro com
sudo apt-get install wmctrl
Configurando o script
-
Crie uma pasta na sua pasta pessoal chamada
bin
. Você pode fazer isso com o comandomkdir $HOME/bin'
-
Nessa pasta, crie um arquivo
resizer.sh
. Copie o script abaixo para esse arquivo. -
Verifique se o script é executável com
chmod 755 $HOME/bin/resizer.sh
-
Abra Configurações do sistema - > Teclado - > Atalhos - > Atalhos personalizados .
Crie um novo atalho e forneça o caminho completo do script como comando,
por exemplo,/home/serg/bin/resizer.sh
.
Meu exemplo
Eu configurei o atalho primeiro:
Emseguida,pressioneoatalho.Omenupop-uppermiteaseleçãoderedimensionamentode1/3ou2/3;Euescolho1.Observequenãoháentradaadicional,excetoumúnicodígito
Emseguida,escolhoajaneladonavegadorflutuante.Saltaparaaesquerda,agoracom1/3delargura,alturadaáreadetrabalho.
Omesmocomportamentoseráparaaopção2/3,excetoajanela2/3serácolocadanoladodireito
Peculiaridades
Tendotestadoestescript,oredimensionamentonãofuncionaemjanelasdivididasmaximizadasouesquerda/direita(CtrlSuper→/←).Portanto,ajaneladevesernãomaximizada,flutuandolivremente.
Fontedescript
#!/bin/bash#--------------------#Author:SergKolo#Date:Sept26,2015#Purpose:ascripttoresizeawindowtoits#1/3or2/3ofwidth.#Writtenforhttp://askubuntu.com/q/678608/295286#--------------------#---------------------#Thisparttakesuserinputthroughgraphicalpopup;#Inputmustbe1or2,anythingelseresultsintoanerror#Ifuserselects1,wesetwindowto1/3ofdesktopwidth#andplaceitontheleft;#Ifuserselects2,wesetwindowto2/3ofdesktopwidth#andplaceitontheright;SIZE=$(zenity--entry--text"Enter (1) for 1/3 and (2) for 2/3 of width")
case $SIZE in
"1")NUM=0.333; XPOS=0;;
"2")NUM=0.667;XPOS=455;;
*) zenity --error --text="Invalid input"; exit ;;
esac
#--------------------
# In this part we determine the geometry of the desktop
# and then calculate the width that we want the window to
# be set using bc, the command line calculator
# printf is used to convert floating point result to
# integer value, which is required for wmctrl
ROOT_WIDTH=$(xwininfo -root | awk '/Width/ {print $2}')
ROOT_HEIGHT=$(xwininfo -root | awk '/Height/ {print $2}' )
NEW_WIDTH=$(bc <<< $ROOT_WIDTH*$NUM)
NEW_WIDTH=$(printf "%.0f" $NEW_WIDTH)
#----------------------
# This is what actually does the job.
# wmctrl allows you to select the window with -r :SELECT:
# and sets that window to specific gravity,x-position,y-position,width
# height. To keep the script neutral, I've decided to set the
# height to default desktop height. User can resize the height as
# necessary by themselves
wmctrl -r :SELECT: -e 0,$XPOS,0,$NEW_WIDTH,$ROOT_HEIGHT