په لینکس کې د بدیل کړکۍ مدیریت

زه یو له هغو څخه یم چې کیپس لاک د ترتیب بدلولو لپاره تنظیم کړم ځکه چې زه د 2 کیلي فشارولو کې ډیر سست یم کله چې زه کولی شم یوه فشار ورکړم. زه حتی 2 غیر ضروري کیلي غواړم: زه به یو د انګلیسي ترتیب د فعالولو لپاره وکاروم او دوهم د روسی لپاره. مګر دوهم غیر ضروري کیلي د شرایطو مینو ته زنګ وهل دي ، کوم چې دومره غیر ضروري دی چې د ډیری لپ ټاپ جوړونکو لخوا پرې شوی. نو تاسو باید د هغه څه څخه راضي اوسئ چې تاسو یې لرئ.

او زه هم نه غواړم د وینډوز بدلولو پر مهال په ټاسک بار کې د دوی عکسونه وګورم ، یا د سکرول کولو پرمهال نومونه ونیسم Alt + Tab، د ډیسټاپونو له لارې سکرول کول ، او داسې نور. زه غواړم د کیلي ترکیب فشار کړم (په مثالي توګه یوازې یوه ، مګر نور وړیا غیر ضروري کیلي شتون نلري) او سمدلاسه هغه کړکۍ ته ورشم چې زه ورته اړتیا لرم. د مثال په توګه:

  • Alt+F: فایرفوکس
  • Alt+D: فایرفوکس (شخصي لټون کول)
  • Alt+T: ترمینل
  • Alt+M: محاسبه کوونکی
  • Alt+E: IntelliJ Idea
  • etc

سربیره پردې ، د فشار په واسطه ، د مثال په توګه ، آن Alt+M زه غواړم کیلکولیټر وګورم پرته لدې چې دا برنامه اوس روانه ده که نه. که دا روانه وي، نو د هغې کړکۍ ته اړتیا ده چې تمرکز ورکړل شي، او که نه، مطلوب پروګرام چل کړئ او تمرکز یې انتقال کړئ کله چې دا پورته شي.

د هغو قضیو لپاره چې د مخکیني سکریپټ لخوا پوښل شوي ندي، زه غواړم نړیوال کلیدي ترکیبونه ولرم چې په اسانۍ سره هرې پرانیستې کړکۍ ته ټاکل کیدی شي. د مثال په توګه، زه 10 ترکیبونه ګمارل شوي Alt + 1 پورې Alt + 0، کوم چې په کوم برنامو پورې تړلي ندي. زه یوازې کلیک کولی شم Alt + 1 او هغه کړکۍ چې اوس مهال په تمرکز کې ده د کلیک کولو پر مهال به تمرکز ترلاسه کړي Alt + 1.

د کټ لاندې د یو څو نورو ځانګړتیاو توضیحات او ځواب شتون لري چې دا څنګه ترسره کیدی شي. مګر زه به سمدلاسه تاسو ته خبرداری درکړم چې دا ډول تخصیص "د ځان لپاره" کولی شي د شدید روږدي کیدو او حتی وتلو لامل شي که تاسو اړتیا لرئ د وینډوز ، ماک OS یا حتی د لینکس سره د بل چا کمپیوټر وکاروئ.

په حقیقت کې، که تاسو د دې په اړه فکر کوئ، موږ هره ورځ دومره ډیری پروګرامونه نه کاروو. یو براوزر، یو ټرمینل، یو IDE، یو ډول میسینجر، د فایل مدیر، یو کیلکولیټر او شاید، دا تقریبا ټول دي. د ورځني کارونو 95٪ پوښلو لپاره ډیری کلیدي ترکیبونو ته اړتیا نشته.

د هغو پروګرامونو لپاره چې ډیری کړکۍ خلاصې وي، یو یې د اصلي په توګه ټاکل کیدی شي. د مثال په توګه، تاسو ډیری IntelliJ Idea کړکۍ خلاصې او ټاکل شوي Alt + E. د نورمال شرایطو لاندې، کله چې تاسو فشار ورکړئ Alt + E د دې پروګرام ځینې کړکۍ به خلاص شي، ډیری احتمال هغه چې لومړی پرانستل شوی و. په هرصورت، که تاسو کلیک وکړئ Alt + E کله چې د دې پروګرام یوه کړکۍ لا دمخه په تمرکز کې وي، نو دا ځانګړې کړکۍ به د اصلي په توګه وټاکل شي او دا به هغه وي چې تمرکز به یې وي کله چې د راتلونکو ترکیبونو فشارول کیږي.

اصلي کړکۍ بیا ټاکل کیدی شي. د دې کولو لپاره ، تاسو باید لومړی ترکیب له سره تنظیم کړئ ، او بیا ورته بله کړکۍ د اصلي کړکۍ په توګه وټاکئ. د ترکیب بیا تنظیم کولو لپاره ، تاسو اړتیا لرئ پخپله ترکیب فشار ورکړئ ، او بیا د ځانګړي ریسیټ ترکیب ، ما دا ګمارلی دی Alt+بیک سپیس. دا به یو سکریپټ ته زنګ ووهي چې د مخکیني ترکیب لپاره به اصلي کړکۍ بې ځایه کړي. او بیا تاسو کولی شئ یوه نوې اصلي کړکۍ وټاکئ لکه څنګه چې په تیرو پراګراف کې تشریح شوي. نړیوال ترکیبونو ته د تړل شوي کړکۍ بیا تنظیم کول په ورته ډول پیښیږي.

پیژندنه اوږده شوه، مګر ما غوښتل چې لومړی ووایم چې موږ به څه وکړو، او بیا یې تشریح کړو چې څنګه یې وکړو.

د هغو کسانو لپاره چې له لوستلو ستړي شوي دي

په لنډه توګه، د سکریپټونو لینک د مقالې په پای کې دی.

مګر تاسو لاهم نشئ کولی دا سمدلاسه نصب او وکاروئ. تاسو به لومړی دا معلومه کړئ چې سکریپټ څنګه مطلوب کړکۍ ومومي. له دې پرته، دا به ممکنه نه وي چې سکریپټ ته ووایاست چیرې چې واقعیا تمرکز ته اړتیا لري. او تاسو اړتیا لرئ پوه شئ چې څه وکړي که ناڅاپه مناسب کړکۍ ونه موندل شي.

او زه به تمرکز ونکړم چې څنګه د کلیدي ترکیبونو په فشارولو سره د سکریپټونو اجرا کول تنظیم کړم. د مثال په توګه، په KDE کې دا د سیسټم ترتیبات → شارټ کټ → دودیز شارټ کټ کې دی. دا باید په نورو کړکۍ مدیرانو کې هم وي.

د wmctrl معرفي کول

Wmctrl - د X کړکۍ مدیر سره د تعامل لپاره د کنسول افادیت. دا د سکریپټ لپاره کلیدي برنامه ده. راځئ چې یو ګړندی نظر وګورو چې تاسو یې څنګه کارولی شئ.

لومړی، راځئ چې د پرانیستې وینډوز لیست ښکاره کړو:

$ wmctrl -lx
0x01e0000e -1 plasmashell.plasmashell             N/A Desktop — Plasma
0x01e0001e -1 plasmashell.plasmashell             N/A Plasma
0x03a00001  0 skype.Skype                         N/A Skype
0x04400003  0 Navigator.Firefox                   N/A Google Переводчик - Mozilla Firefox
0x04400218  0 Navigator.Firefox                   N/A Лучшие публикации за сутки / Хабр - Mozilla Firefox (Private Browsing)
...

غوراوي -l د ټولو خلاص کړکیو لیست ښکاره کوي، او -NS محصول ته د ټولګي نوم ضمیمه کوي (سکایپ.سکایپ, Navigator.Firefox وغيره). دلته موږ د کړکۍ ID (کالم 1)، د ټولګي نوم (3 کالم) او د کړکۍ نوم (وروستی کالم) ته اړتیا لرو.

تاسو کولی شئ د اختیار په کارولو سره ځینې کړکۍ فعالولو هڅه وکړئ -a:

$ wmctrl -a skype.Skype -x

که هرڅه د پلان سره سم پرمخ لاړ شي، د سکایپ کړکۍ باید په سکرین کې ښکاره شي. که د اختیار پر ځای -x اختیار وکاروئ -i، بیا د ټولګي نوم پرځای تاسو کولی شئ د کړکۍ ID مشخص کړئ. د ID سره ستونزه دا ده چې د کړکۍ ID هرکله چې غوښتنلیک پیل شي بدلیږي او موږ نشو کولی دا دمخه پوه شو. له بلې خوا، دا ځانګړتیا په ځانګړې توګه یوه کړکۍ پیژني، کوم چې مهم کیدی شي کله چې یو غوښتنلیک له یوې څخه ډیرې کړکۍ پرانیزي. په دې اړه نور لږ څه.

پدې مرحله کې موږ باید په یاد ولرو چې موږ به د محصول لخوا د ریجیکس په کارولو سره مطلوب کړکۍ وپلټو wmctrl -lx. مګر دا پدې معنی ندي چې موږ باید یو څه پیچلي وکاروو. معمولا د ټولګي نوم یا د کړکۍ نوم کافي وي.

په اصل کې، اصلي مفکوره باید لا دمخه روښانه وي. ستاسو د کړکۍ مدیر لپاره په نړیوال هټکیز / شارټ کټ ترتیبات کې، د سکریپټ اجرا کولو لپاره اړین ترکیب ترتیب کړئ.

د سکریپټونو کارولو څرنګوالی

لومړی تاسو اړتیا لرئ د کنسول اسانتیاوې نصب کړئ wmctrl и xdotool:

$ sudo apt-get install wmctrl xdotool

بیا تاسو اړتیا لرئ سکریپټونه ډاونلوډ کړئ او اضافه یې کړئ $ PATH. زه معمولا دوی دننه کړم ~/بن:

$ cd ~/bin
$ git clone https://github.com/masyamandev/Showwin-script.git
$ ln -s ./Showwin-script/showwin showwin
$ ln -s ./Showwin-script/showwinDetach showwinDetach

که لارښود ~/بن هلته نه و، نو تاسو اړتیا لرئ چې دا جوړ کړئ او بیا پیل کړئ (یا بیا ننوتل)، که نه ~/بن نه به ووهي $ PATH. که هرڅه په سمه توګه ترسره شي، نو سکریپټونه باید د کنسول څخه د لاسرسي وړ وي او د ټب بشپړول باید کار وکړي.

اصلي سکریپټ ښودنه 2 پیرامیټرونه اخلي: لومړی یو ریجیکس دی، چې موږ به یې د اړتیا وړ کړکۍ لټون وکړو، او دویم پیرامیټر یو کمانډ دی چې د اړتیا وړ کړکۍ موندلو په صورت کې باید اجرا شي.

تاسو کولی شئ د سکریپټ چلولو هڅه وکړئ، د بیلګې په توګه:

$ showwin "Mozilla Firefox$" firefox

که فایرفوکس نصب شوی وي، د هغې کړکۍ باید تمرکز وکړي. حتی که فایرفوکس نه و، دا باید پیل شوی وای.

که دا کار وکړي، نو تاسو کولی شئ هڅه وکړئ په ترکیبونو کې د امرونو اجرا کول تنظیم کړئ. په نړیوال هټکیز / شارټ کټ تنظیماتو کې اضافه کړئ:

  • Alt + F: د "موزیلا فایرفاکس $" فایرفاکس وښیې
  • Alt+D: شوون "موزیلا فایرفاکس (شخصي لټون)$" "د فایرفاکس -خصوصي کړکۍ"
  • Alt+C: شوون "کرومیم براوزر. کرومیم براوزر N*" کرومیم براوزر
  • Alt+X: showwin "chromium-browser.Chromium-browser I*" "chromium-browser-incognito"
  • Alt+S: "skype.Skype" skypeforlinux ښکاره کړئ
  • Alt+E: showwin "jetbrains-idea" idea.sh

او داسې نور. هرڅوک کولی شي کلیدي ترکیبونه او سافټویر ترتیب کړي لکه څنګه چې دوی مناسب وي.
که هرڅه سم کار وکړي، نو د پورته ترکیبونو په کارولو سره به موږ وکولی شو په ساده ډول د کیلي په فشارولو سره د وینډوز تر مینځ تیر کړو.

زه به د کروم مینه وال مایوسه کړم: دا کولی شي د خپل محصول لخوا منظم کړکۍ توپیر وکړي wmctrl تاسو نشئ کولی، دوی ورته ټولګي نومونه او د کړکۍ سرلیکونه لري. په وړاندیز شوي ریجیکس کې، حروف N* او I* یوازې د دې لپاره اړین دي چې دا منظم بیانونه له یو بل څخه توپیر ولري او دوی د اصلي کړکۍ په توګه وټاکل شي.

د پخواني ترکیب اصلي کړکۍ بیا تنظیمولو لپاره (په حقیقت کې د ریجیکس لپاره، کوم چې ښودنه وروستی ځل ویل شوی) تاسو اړتیا لرئ سکریپټ ته زنګ ووهئ showwinDetach. ما دا سکریپټ د کلیدي ترکیب لپاره ټاکلی دی Alt+بیک سپیس.

په سکریپټ کې ښودنه یو بل فعالیت شتون لري. کله چې دا د یو پیرامیټر سره ویل کیږي (پدې حالت کې پیرامیټر یوازې یو پیژندونکی دی)، دا په هیڅ ډول ریجیکس نه ګوري، مګر ټول وینډوز مناسب ګڼي. پخپله، دا بې ګټې ښکاري، مګر پدې توګه موږ کولی شو هره کړکۍ د اصلي په توګه وټاکو او ژر تر ژره دې ځانګړي کړکۍ ته لاړ شو.

ما لاندې ترکیبونه ترتیب کړي دي:

  • Alt+1: showwin "CustomKey1"
  • Alt+2: showwin "CustomKey2"
  • ...
  • Alt+0: showwin "CustomKey0"
  • Alt+Backspace: showwinDetach

پدې توګه زه کولی شم هر ډول وینډوز ترکیبونو ته وتړم Alt + 1...Alt + 0. یوازې په کلیک کولو سره Alt + 1 زه اوسنۍ کړکۍ دې ترکیب ته وتړم. زه کولی شم په کلیک کولو سره بندیز لغوه کړم Alt + 1، او بیا Alt+بیک سپیس. یا کړکۍ بنده کړئ، دا هم کار کوي.

بیا به زه تاسو ته ځینې تخنیکي توضیحات ووایم. تاسو اړتیا نلرئ دوی ولولئ ، مګر یوازې هڅه وکړئ چې دوی تنظیم کړئ او وګورئ. مګر زه به بیا هم د نورو خلکو سکریپټونو پوهیدو وړاندیز وکړم مخکې لدې چې ستاسو په کمپیوټر کې یې چل کړئ :).

د ورته غوښتنلیک مختلف وینډوز ترمنځ توپیر څنګه

په اصل کې، لومړی مثال "wmctrl -a skype.Skype -x" کار کاوه او کارول کیدی شي. مګر راځئ چې بیا د فایرفوکس سره مثال وګورو، په کوم کې چې 2 وینډوز خلاص دي:

0x04400003  0 Navigator.Firefox                   N/A Google Переводчик - Mozilla Firefox
0x04400218  0 Navigator.Firefox                   N/A Лучшие публикации за сутки / Хабр - Mozilla Firefox (Private Browsing)

لومړۍ کړکۍ نورمال حالت دی، او دویمه د شخصي لټون کول دي. زه غواړم دا وینډوز د مختلف غوښتنلیکونو په توګه په پام کې ونیسم او د مختلف کلیدي ترکیبونو په کارولو سره دوی ته لاړ شم.

دا اړینه ده چې سکریپټ پیچلي کړئ چې وینډوز بدلوي. ما دا حل کارولی: ټولې وینډوز لیست کړئ، ترسره کړئ شپي د ریجیکس لخوا، لومړۍ کرښه ورسره واخلئ سر، لومړی کالم ترلاسه کړئ (دا به د کړکۍ ID وي) په کارولو سره پريد ID په واسطه کړکۍ ته لاړ شئ.

د منظم بیان او دوه ستونزو په اړه باید ټوکه وي، مګر په حقیقت کې زه هیڅ پیچلی نه کاروم. زه منظم څرګندونو ته اړتیا لرم ترڅو زه وکولی شم د کرښې پای (د "$" سمبول) په ګوته کړم او د "موزیلا فایرفاکس$" له "موزیلا فایرفاکس (شخصي لټون)$" سره توپیر وکړم.

امر یو څه داسې ښکاري:

$ wmctrl -i -a `wmctrl -lx | grep -i "Mozilla Firefox$" | head -1 | cut -d" " -f1`

دلته تاسو کولی شئ دمخه د سکریپټ دوهم ځانګړتیا په اړه اټکل وکړئ: که grep هیڅ شی بیرته نه راوړي ، نو مطلوب غوښتنلیک خلاص ندی او تاسو اړتیا لرئ دا د دوهم پیرامیټر څخه د کمانډ اجرا کولو سره پیل کړئ. او بیا په دوره توګه وګورئ چې ایا اړین کړکۍ پرانستل شوې ترڅو د تمرکز لیږدولو لپاره. زه به پدې تمرکز ونه کړم؛ هرڅوک چې ورته اړتیا لري سرچینې به وګوري.

کله چې د غوښتنلیک کړکۍ د توپیر وړ نه وي

نو، موږ زده کړل چې څنګه د غوښتل شوي غوښتنلیک کړکۍ ته تمرکز انتقال کړو. مګر څه که چیرې یو غوښتنلیک له یوې څخه ډیرې کړکۍ خلاصې وي؟ کوم یو ته باید تمرکز وکړم؟ پورته سکریپټ به ډیری احتمال د لومړۍ خلاصې کړکۍ ته لیږدول کیږي. په هرصورت، موږ نور انعطاف غواړو. زه غواړم په یاد ولرم چې کومې کړکۍ ته اړتیا لرو او دې ځانګړي کړکۍ ته لاړ شم.

مفکوره دا وه: که موږ غواړو د کیلي ترکیب لپاره ځانګړې کړکۍ په یاد ولرو، نو موږ باید دا ترکیب فشار کړو کله چې مطلوب کړکۍ په تمرکز کې وي. په راتلونکي کې، کله چې تاسو دا ترکیب فشار کړئ، تمرکز به دې کړکۍ ته ورکړل شي. تر هغه چې کړکۍ وتړل شي یا موږ د دې سکریپټ ترکیب لپاره بیا تنظیم کوو showwinDetach.

سکریپټ الګوریتم ښودنه دغسې یو شی:

  • وګورئ چې ایا موږ دمخه د کړکۍ ID په یاد ساتلی و چې تمرکز یې باید لیږدول شي.
    که تاسو په یاد ولرئ او دا ډول کړکۍ لاهم شتون لري ، نو موږ دې ته تمرکز لیږدوو او وتلو.
  • موږ ګورو چې کومه کړکۍ اوس مهال په تمرکز کې ده، او که دا زموږ د غوښتنې سره سمون خوري، نو د هغې ID په یاد ولرئ چې په راتلونکي کې دې ته لاړ شئ او بهر ته لاړ شئ.
  • موږ لږترلږه یو مناسب کړکۍ ته ځو که چیرې شتون ولري یا مطلوب غوښتنلیک خلاص کړي.

تاسو کولی شئ ومومئ چې کومه کړکۍ اوس مهال د xdotool کنسول یوټیلیټ په کارولو سره د هغې محصول د هیکساډیسیمل ب formatه بدلولو سره په تمرکز کې ده:

$ printf "0x%08x" `xdotool getwindowfocus`

په باش کې د یو څه د یادولو ترټولو اسانه لاره د فایلونو رامینځته کول په مجازی فایل سیسټم کې چې په حافظه کې موقعیت لري. په اوبنټو کې دا په ډیفالټ کې فعال شوی /dev/shm/. زه نشم کولی د نورو توزیعاتو په اړه څه ووایم، زه هیله لرم چې یو څه ورته وي. تاسو کولی شئ د کمانډ سره وګورئ:

$ mount -l | grep tmpfs

سکریپټ به په دې فولډر کې خالي لارښودونه رامینځته کړي، لکه: /dev/shm/$USER/showwin/$SEARCH_REGEX/$WINDOW_ID. برسیره پردې، هرکله چې ورته ویل کیږي دا به یو سیم لینک جوړ کړي /dev/shm/$USER/showwin/showwin_last په /dev/shm/$USER/showwin/$SEARCH_REGEX. دا به د دې لپاره اړین وي، که اړتیا وي، د سکریپټ په کارولو سره د یو ځانګړي ترکیب لپاره د کړکۍ ID لرې کړئ showwinDetach.

څه ښه کیدی شي

لومړی، سکریپټونه باید په لاسي ډول تنظیم شي. په حقیقت کې ، د خپلو لاسونو سره ډیر څه کولو او ترسره کولو اړتیا له امله ، ستاسو څخه ډیری به حتی د سیسټم تنظیم کولو هڅه ونه کړي. که دا ممکنه وه چې په ساده ډول بسته بندي نصب کړئ او هرڅه په اسانۍ سره تنظیم کړئ ، نو شاید دا به یو څه شهرت ترلاسه کړي. او بیا وګورئ، غوښتنلیک به په معیاري توزیع کې خپور شوی وي.

او شاید دا په اسانۍ سره ترسره شي. که د کړکۍ id په واسطه تاسو د پروسې ID ومومئ چې دا یې رامینځته کړی ، او د پروسې id په واسطه تاسو کولی شئ ومومئ چې کوم کمانډ یې رامینځته کړی ، نو دا به ممکن وي چې تنظیم اتومات کړئ. په حقیقت کې، زه نه پوهیدم چې ایا ما په دې پراګراف کې څه لیکلي دي دا ممکنه وه. حقیقت دا دی چې زه په شخصي توګه د هغه طریقې څخه راضي یم چې دا اوس کار کوي. مګر که زما پرته بل څوک ټوله طریقه مناسبه ومومي او یو څوک یې ښه کړي، نو زه به خوشحاله یم چې غوره حل وکاروم.

بله ستونزه، لکه څنګه چې ما مخکې لیکلي، دا ده چې په ځینو مواردو کې کړکۍ له یو بل څخه توپیر نشي کولی. تر دې دمه ما دا یوازې په کروم / کرومیم کې د انکګنیټو سره لیدلي ، مګر شاید بل چیرې ورته ورته وي. د وروستي ریزورټ په توګه، تل د نړیوالو ترکیبونو اختیار شتون لري Alt + 1...Alt + 0. یوځل بیا ، زه فایرفاکس کاروم او زما لپاره په شخصي توګه دا ستونزه مهمه نده.

مګر زما لپاره د پام وړ ستونزه دا ده چې زه د کار لپاره ماک OS کاروم او زه نشم کولی هلته ورته کوم شی تنظیم کړم. افادیت wmctrl زه فکر کوم چې زه یې د نصبولو وړ وم، مګر دا واقعیا په Mac OS کې کار نه کوي. د غوښتنلیک سره یو څه ترسره کیدی شي اتوماتیک، مګر دا دومره ورو دی چې د کار کولو پرمهال یې کارول اسانه ندي. زه هم نشم کولی کلیدي ترکیبونه تنظیم کړم ترڅو دوی په ټولو برنامو کې کار وکړي. که څوک ناڅاپه د حل سره راشي، زه به خوښ شم چې دا وکاروم.

پر ځای د يو پایلې

دا د داسې ښکاري ساده فعالیت لپاره په غیر متوقع ډول د کلمو لوی شمیر وګرځید. ما غوښتل چې نظر وړاندې کړم او متن له اندازې زیات نه کړم، مګر ما تر اوسه نه پوهیږي چې څنګه یې په ساده ډول ووایاست. شاید دا به د ویډیو فارمیټ کې غوره وي، مګر خلک دلته دا ډول نه خوښوي.

ما د دې په اړه لږ څه خبرې وکړې چې د سکریپټ لاندې څه دي او دا څنګه تنظیم کړئ. زه پخپله د سکریپټ توضیحاتو ته نه یم تللی ، مګر دا یوازې 50 کرښې دي ، نو پدې پوهیدل ستونزمن ندي.

زه امید لرم چې بل څوک به دا نظر هڅه وکړي او حتی د هغې ستاینه وکړي. زه کولی شم د خپل ځان په اړه ووایم چې سکریپټ شاوخوا 3 کاله دمخه لیکل شوی و او دا زما لپاره خورا اسانه دی. دومره اسانه چې دا د نورو خلکو کمپیوټرونو سره کار کولو پرمهال د جدي ناراحتۍ لامل کیږي. او د کار کولو MacBook سره.

سکریپټونو ته لینک

سرچینه: www.habr.com

Add a comment