আপনি যে আসল কমান্ডটি চান তা হ'ল কিছু
wmctrl -r :ACTIVE: -b add,maximized_vert &&
wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1
এটি বর্তমান উইন্ডোটিকে অর্ধেক পর্দা নিতে ( $HALF
আপনার পর্দার মাত্রায় পরিবর্তন করবে) এবং বাম দিকে স্ন্যাপ করবে। ডানদিকে স্ন্যাপ করতে, ব্যবহার করুন
wmctrl -r :ACTIVE: -b add,maximized_vert &&
wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1
আপনি wmctrl
যে উইন্ডোগুলিতে আগ্রহী সেগুলি ব্যবহার না করে আইডি পেতে আপনি খেলতেও পারেন :ACTIVE:
। আমি সেখানে সাহায্য করতে পারি না যেহেতু এটি প্রশ্নযুক্ত উইন্ডোগুলির উপর নির্ভর করে। কটাক্ষপাত আছে man wmctrl
আরো অনেক কিছুর জন্য।
আমি এর জন্য একটি স্ক্রিপ্ট লিখেছি। আমি ityক্য ব্যবহার করি না তাই আমি গ্যারান্টি দিতে পারি না যে এটি এর সাথে কাজ করবে, তবে কেন করার কোনও কারণ আমি দেখতে পাচ্ছি না। দরকার wmctrl
, xdpyinfo
এবং disper
ইনস্টল করার জন্য:
sudo apt-get install wmctrl x11-utils disper
তারপরে, নীচের স্ক্রিপ্টটিকে সে হিসাবে সংরক্ষণ করুন ~/bin/snap_windows.sh
, এটির সাথে এক্সিকিউটেবল করুন chmod a+x ~/bin/snap_windows.sh
এবং আপনি চালাতে পারেন
snap_windows.sh r
ডানদিকে স্ন্যাপ করতে। l
বাম দিকের জন্য ব্যবহার করুন এবং উইন্ডোটি সর্বাধিকতর করতে কোনও আর্গুমেন্ট। নোট করুন যে এটি বর্তমান উইন্ডোতে চলেছে সুতরাং আপনি যদি এটি টার্মিনাল ছাড়া অন্য কোনও কিছুতে চালাতে চান তবে আপনাকে এটিতে একটি শর্টকাট বরাদ্দ করতে হবে।
আপনি যা চেয়েছিলেন তার চেয়ে স্ক্রিপ্টটি কিছুটা জটিল কারণ আমি এটি একক এবং দ্বৈত-মনিটরের উভয় সেটআপে কাজ করার জন্য লিখেছি।
#!/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