Bagaimana cara menggunakan Window snapping untuk Ubuntu? [duplikat]

14

Kemungkinan Duplikat:
Bagaimana cara meniru + panah winkey + tombol pintas maksimal Windows 7?

Saya mencoba Ubuntu dan saya ingin agar windows saya snap ke kiri dan kanan seperti Windows 7 ketika saya menggunakan hotkey Window Key + Arrow. Bagaimana saya bisa melakukan ini?

Doug
sumber
Ubuntu menggunakan Compiz untuk memberikan efek jendela. Saya telah melihat tetapi tidak dapat melihat plugin resmi untuk Compiz yang akan memberi Anda efek Win 7 yang sangat disayangkan karena ini adalah fitur jendela yang bagus. Saya akan terus mencari dan memposting sebagai jawaban jika saya menemukan sesuatu.

Jawaban:

18

Ini mudah untuk diaktifkan dari CompizConfig Settings Manager. (Instal, jika Anda belum melakukannya).

Kemudian di bawah Window Management, aktifkan Grid. Saya telah menyimpan binding default CTRL + ALT + NumPad tetapi Anda dapat dengan mudah mengubahnya Super + Arrow sesuai keinginan.

bitlave
sumber
Satu-satunya hal yang saya lewatkan dari itu adalah menggabungkan tindakan. Yaitu memindahkan jendela ke kanan dan ke bawah menghasilkan jendela berada di kuartal kanan bawah layar (mirip dengan perilaku windows).
kleinfreund
@kleinfreund jika Anda mengklik Gridtombol di sebelah kotak centang ada banyak pengaturan yang dapat Anda ubah; yang Corners / Edgestab memungkinkan Anda mengatur sudut docking.
swref
Ini tidak berfungsi pada Pop OS 18.10, pintasan kunci, mereka tidak melakukan apa pun
Zach Bloomquist
4

Buka di sini untuk instruksi lengkap dalam bentuk yang dapat dibaca manusia dari Mike's Ubuntu, (terima kasih Mike) dan di sini adalah posting forum Ubuntu asli (terima kasih gotsanity). Saya sudah memeriksa ini di sistem saya jadi itu harus bekerja untuk Anda. Saya juga menambahkan dan mengedit sedikit untuk membuatnya lebih mudah dimengerti.

Satu-satunya perubahan yang akan saya lakukan untuk arahannya adalah Anda pertama kali memeriksa untuk melihat apakah Anda telah menginstal compiz (cara termudah adalah dengan menggunakan manajer perangkat lunak dan meletakkan "compiz" di jendela pencarian.

Jika Anda melakukannya, ketikkan yang berikut ini di terminal: -

sudo apt-get install compizconfig-settings-manager wmctrl

Kalau tidak, manajer pengaturan compiz tidak akan hadir di sistem Anda.

Buka terminal dan ketik:

xinput list

Ini akan menampilkan daftar. Temukan nomor id Anda untuk mouse Anda. Anda akan membutuhkan nomor ini di langkah selanjutnya. Milik saya adalah 10. Milik Anda kemungkinan besar akan berbeda.
Perintah berikut ini membuat folder tersembunyi baru di folder rumah Anda untuk menampung skrip yang diperlukan dan memindahkan Anda ke dalamnya.

mkdir .scripts

cd .scripts

Kemudian ketik

gedit compizsnap-left.sh    

Editor teks akan muncul. Tempel ini di, dan kemudian ubah id mouse Anda dari 11 ke angka dari output dari perintah "daftar xinput". Setelah selesai, simpan file tersebut.

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2-10))

echo $WIDTH
TEMPWIDTH=$(($WIDTH-10))
echo $TEMPWIDTH
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done

    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[0\]=." | sed s/"valuator\[0\]="//)" -le 10 ]
    then

        wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-10

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

Kemudian, lakukan hal yang sama untuk dua skrip lainnya. (Tidak lupa mengubah ID mouse)

compizsnap-right.sh

Kode:

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2))

echo $WIDTH
TEMPWIDTH=$(($WIDTH-10))
echo $TEMPWIDTH
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done

    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[0\]=." | sed s/"valuator\[0\]="//)" -ge $TEMPWIDTH ]
    then

        wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

Dan

compizsnap-max.sh

Kode:

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done
    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[1\]=." | sed s/"valuator\[1\]="//)" -le 10 ]
    then

        wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

(Apakah Anda ingat untuk mengubah ID mouse)

Sekarang kita perlu memberi tahu compiz bagaimana berperilaku ketika mouse bergerak ke kanan, atas dan kiri layar.

Jalankan Sistem> Preferensi> CompizConfig Settings Manager. Pergi ke bagian perintah. Setel berikut ini:
Di bidang Command 0:

sh ~/.scripts/compizsnap-left.sh

Di bidang Command 1:

sh ~/.scripts/compizsnap-right.sh

Di bidang Command 2:

sh ~/.scripts/compizsnap-max.sh

Akhirnya, buka tab tepi mengikat dan atur perintah 0 ke kiri, atur perintah 1 ke kanan, dan atur perintah 2 ke atas.

NB Compiz mungkin mengeluh bahwa sudah ada fungsi yang diatur ke binding tepi yang ingin Anda gunakan - ganti dengan Anda.

Mantel
sumber
ini berfungsi dengan baik, ada tips tentang cara membuatnya bekerja dengan dua monitor dalam konfigurasi TwinView?
Nathan Schwermann
2

Salah satu perbedaan antara sebagian besar pengelola jendela Unix dan Windows adalah bahwa sebagian besar pengelola jendela Unix menawarkan perlawanan terhadap pergerakan jendela di tepi layar. Oleh karena itu Anda tidak memerlukan perintah khusus untuk memindahkan jendela ke tepi kiri atau kanan layar; cukup seret satu ke tepi dan itu akan berhenti ketika sampai di sana. Saya tidak tahu adanya tombol pintas keyboard Gnome (pengelola standar Ubuntu untuk saat ini) yang memindahkan windows.

garyjohn
sumber