कस्टम हॉटकी / शॉर्टकट किसी ऐप को खोलने / लाने के लिए


11

मुझे नहीं लगता कि यह सिस्टम में बनाया गया है, लेकिन क्या यह बहुत अधिक परेशानी के बिना करना संभव है?

कहते हैं कि मैं एक हॉटकी के साथ एक विशिष्ट कार्यक्रम खोलता हूं, और जब मैं उस हॉटकी को फिर से दबाता हूं, तो प्रोग्राम विंडो को सामने लाया जाता है।

मैं Ubuntu 9.04 पर ऐसा करना चाहता हूं।

शायद डी-बस के साथ? कोई विशेषज्ञ?

अद्यतन : यहाँ है क्या मैं किसी के लिए मदद के मामले में समाप्त हो गया है:

#!/bin/bash
if [ -f "/tmp/myterm.pid" ]; then
  WID=`cat /tmp/myterm.pid`
  xdotool windowactivate $WID
  if [ "$?" != "0" ]; then
    WID=""
  fi
else
  WID=`xdotool search --title "UNIQUE TITLE" | head -1`
fi

if [ "$WID" == "" ]; then
  /usr/bin/gnome-terminal --window-with-profile=MYPROFILE "$@"
  WID=`xdotool search --title "UNIQUE TITLE" | head -1`
  echo $WID > /tmp/myterm.pid
else
  xdotool windowactivate $WID
fi

निश्चित रूप से इसका सरलीकरण किया जा सकता है, लेकिन मैं कोई bashबुद्धिमान नहीं हूं । इसके अलावा, मेरे उदाहरण के लिए काम करने के लिए, मैंने टर्मिनल में एक कस्टम प्रोफ़ाइल बनाई जो खिड़की के लिए एक अद्वितीय शीर्षक लागू करती है ताकि बाद में इसे पाया जा सके। संभावनाएं अनंत हैं!


1
इस सरल कार्य के लिए, jtb का तरीका बेहतर काम करता है, क्योंकि xdotools कभी-कभी X त्रुटियों को फेंक देता है, और wmctrl तेज होता है।
इवान

जवाबों:


10

wmctrlकार्यक्रम क्या आप देख रहे हैं है ( sudo apt-get install wmctrl)। wmctrl -a "AppTitle"ऐप को सामने लाने के लिए आप कमांड का उपयोग कर सकते हैं । wmctrl -lसभी उपलब्ध खिड़कियों को सूचीबद्ध करेगा, इसलिए शेल स्क्रिप्ट लिखना आसान होना चाहिए जो यह जांचता है कि आपका प्रोग्राम चल रहा है या तो इसे लॉन्च करें या इसे सामने लाएं। तब आप इसे केवल कीबोर्ड शॉर्टकट से बांध सकते हैं।

पहले निम्नलिखित स्क्रिप्ट को कहीं बचाएं, मैं उपयोग करूंगा /home/jtb/code/bringToFront। यह दो तर्क लेता है, पहला वह है जो आप प्रोग्राम को लॉन्च करने के लिए टर्मिनल पर टाइप करेंगे, दूसरा प्रोग्राम विंडो के शीर्षक का एक विकल्प है। यदि शीर्षक में कोई निरंतर अद्वितीय स्ट्रिंग नहीं है, तो आपको प्रोग्राम की विंडो खोजने के लिए थोड़ा और काम करने की आवश्यकता होगी।

#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]  
then
    wmctrl -a "$2"
else
    $1 &
fi
  1. अपनी वर्तमान निर्देशिका chmod +x bringToFrontकी स्क्रिप्ट के साथ, स्क्रिप्ट को निष्पादन योग्य बनाने के लिए चलाएँ । फिर सुनिश्चित करें कि यह काम करता है; लॉन्च करने के लिए / आप फ़ायरफ़ॉक्स फ़ोकस कर सकते हैं ./bringToFront firefox "Mozilla Firefox"

  2. अब हमें एक शॉर्टकट कुंजी को बांधने की आवश्यकता है। gconf-editorफ़ोल्डर संरचना को बाईं ओर चलाएं और नेविगेट करें /apps/metacity/keybinding_commands

  3. commandरिक्त मान के साथ पहले पर डबल क्लिक करें , शायद command_1। स्क्रिप्ट के लिए पूर्ण पथ टाइप करें और दो पैरामीटर प्रदान करें, जैसे /home/jtb/code/bringToFront firefox Firefox

  4. बाईं ओर के पैनल से global_keybindings, अगला फ़ोल्डर चुनें । runआपके द्वारा परिभाषित कमांड से मेल खाते प्रविष्टि को खोजें , शायद run_command_1। इसे डबल क्लिक करें और उस कीबोर्ड शॉर्टकट को टाइप करें जिसका आप उपयोग करना चाहते हैं। कोण कोष्ठक में संशोधक रखो, जैसे <Ctrl><Alt>F

अब Control+ Alt+ Fआपके फ़ायरफ़ॉक्स विंडो को सामने लाएगा, या पहले से चालू नहीं होने पर लॉन्च करेगा।


हाँ, मुझे इसके बारे में कुछ मिनट पहले पता चला, लेकिन मैं xdotool के साथ गया था। धन्यवाद!
इवान

मैं यह उल्लेख करना भूल गया कि मैंने पूरी तरह से प्रभाव (एक गरीब आदमी का क्वेक कंसोल!) को पूरा करने के लिए gconf में वैश्विक शॉर्टकट और कमांड का उपयोग किया है।
इवान

आह, हाँ, मैंने अपने आप में xdotool का उपयोग नहीं किया है, लेकिन ऐसा लगता है कि यह आपको कुछ अधिक लचीलापन देगा। Gconf के बारे में अच्छी बात है। चूंकि यह बहुत ही गैर-स्पष्ट है, इसलिए मैं किसी और को ऐसा करने के लिए अधिक विवरण शामिल करने के लिए उत्तर को संपादित कर सकता हूं।
jtb

Poort Man's Quake कंसोल? आपका मतलब तिल्दा की तरह है? freshmeat.net/projects/tilda
prestomation

हां, मैं टिल्डा का भी उपयोग करता हूं, लेकिन मैं सप्ताह के माध्यम से कई परियोजनाओं पर काम करता हूं, और प्रत्येक के लिए मैं हमेशा तीन या चार टैब खोलता हूं, इसलिए जल्दी से प्रोजेक्ट के कंसोल ("कार्यक्षेत्र") पर स्विच किए बिना टिल्डा मेरे लिए बहुत उपयोगी है।
इवान

3

यहाँ इसके साथ एक और तरीका है xdotools। पॉप-अप करने की प्रक्रिया को इसे चलाने के लिए जारी की गई कमांड लाइन द्वारा मान्यता प्राप्त है (कोई पीआईडी ​​फ़ाइल या अद्वितीय विंडो शीर्षक की आवश्यकता नहीं)।

#!/bin/bash

cmd="$@"
# command line to be run. Note that the resulting
# process will hold this in /proc/PID/cmdline 

pid=`pgrep -nf "^$cmd$"`
# most recent process having "$cmd" in /proc/PID/cmdline

if [ -z "$pid" ]; then # no pid
    exec $cmd
    # run command
else
    winid=`xdotool search --all --pid $pid --onlyvisible | head -1`
    # first visible window owned by pid
    xdotool windowactivate $winid
    # give window focus
fi

0

उसके लिए धन्यवाद। मैं एक विंडो शॉर्टकट स्क्रिप्ट बनाने के लिए इसके संशोधित संस्करण का उपयोग करता हूं जो कई उदाहरणों के माध्यम से साइकिल चलाने का समर्थन करता है। अगर आपको रुचि हो तो:

http://somanov.wordpress.com/2009/12/02/window-shortcuts-for-linux-desktops/

चीयर्स :)


0

पहले jtb द्वारा पोस्ट किया गया उत्तर उत्कृष्ट है लेकिन कभी-कभी आप सटीक शीर्षक (जैसे आप "GitKraken" खोलना चाहते हैं, लेकिन आपके ब्राउज़र का शीर्षक "GitKraken vs CLI" भी क्वेरी से मेल खा रहा है) चाहते हैं।

#!/bin/bash
if [ $1 == "-exact" ]
then
    additional_arguments="-F "
    app_launch_command=$2
    app_title=$3
else
    additional_arguments=""
    app_launch_command=$1
    app_title=$2
fi

if [ `wmctrl -l $additional_arguments| grep -c "$app_title"` != 0 ]
then
    wmctrl $additional_arguments -a "$app_title"
else
    $app_launch_command &
fi

तो अब आप निम्न की तरह अपने लाने के लिए कर सकते हैं स्क्रिप्ट:

#exact match
./bringToFront.sh -exact "flatpak run com.axosoft.GitKraken" "GitKraken"
#or
./bringToFront.sh -exact <command_to_launch_the_app> <app_title

#partial match like the old script
./bringToFront.sh "flatpak run com.axosoft.GitKraken" "GitKraken"
#or
./bringToFront.sh <command_to_launch_the_app> <app_title>

0

यह समाधान पैरामीटर नहीं किया गया है, लेकिन मैंने इसका उपयोग ध्यान केंद्रित करने या सूक्ति-कैलकुलेटर शुरू करने के लिए किया है।

-R विकल्प विंडो को ढूंढता है या विफल रहता है, अगर यह पाया जाता है कि इसे वर्तमान डेस्कटॉप पर स्थानांतरित किया गया है, तो ध्यान केंद्रित किया गया है। सूक्ति-कैलकुलेटर नाम यह के नाम के साथ खिड़की कैलक्यूलेटर , यह आसानी से parameterised किया जा सकता है, लेकिन मैं ऐसा करने के लिए की जरूरत कभी नहीं पाया है। मैंने इसे मैप किया है Ctrl-Alt-c

#!/bin/bash
# start the calculator and raise and focus (requires wmctrl)
# X Tian 06sep2017 created

wmctrl -R Calculator
if [[ $? -ne 0 ]]
  then 
    gnome-calculator &
fi

0

मेरे पास एक ही मुद्दा था और चूंकि मुझे कोई सूटिंग समाधान नहीं मिला, इसलिए मैंने एक बनाया:

https://hyperkeys.xureilab.com

https://github.com/xurei/hyperkeys

आप परिभाषित शॉर्टकट के साथ एक विंडो को पिन कर सकते हैं। मैं व्यक्तिगत रूप से पिन करने के लिए SHIFT + ALT + [QWER] का उपयोग करता हूं और ALT + [QWER] को सामने लाने के लिए। यदि यह खुला नहीं है, तो आप ऐप नहीं खोल सकते।

यह एक ओपन-सोर्स, लिनक्स-फर्स्ट टूल है। एक विंडोज संस्करण भी उपलब्ध है।

आशा है ये मदद करेगा ! मैं प्रतिक्रिया के लिए देख रहा हूँ, इसलिए यदि आपके कोई प्रश्न हैं, तो एक मुद्दा बनाएं ;-)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.