शॉर्टकट कुंजी के साथ अंतिम टर्मिनल विंडो कैसे लाएं?


11

मैं त्वरित आदेश बनाने के लिए अक्सर टर्मिनल का उपयोग करता हूं और फिर मैं इसे पृष्ठभूमि में छोड़ देता हूं ताकि मैं काम करते समय 20+ टर्मिनल सत्रों को समाप्त कर पाऊं। इसका कारण यह है कि बस शॉर्टकट कुंजी का उपयोग करना और एक कमांड टाइप करना बहुत जल्दी है।

क्या शॉर्टकट कुंजी सेट करने का कोई तरीका है तो मैं एक नया बनाने के बजाय अपने अंतिम टर्मिनल विंडो को लाऊं?


1
इसका एक संपादित संस्करण एक समाधान होगा? यह एक एकल टर्मिनल विंडो के लिए करने के लिए काफी सरल होगा और इसे पूरी तरह से गायब कर देगा। askubuntu.com/a/595244/72216 मुझे बताएं, मैं उत्तर को आसान में बदल सकता हूं। आपके टर्मिनल विंडो का (विंडो) नाम क्या है?
जैकब व्लिजम

2
प्रयास करें इस
एबी

मेरे द्वारा उपयोग किया जाने वाला विंडो नाम "टर्मिनल" है। लेकिन क्या स्क्रिप्ट विधि आपके पास अभी भी काम करेगी अगर मैं टर्मिनल में टैब का उपयोग करता हूं? (यानी ctrl + shift + T) मैं उन्हें पहचानने में मदद करने के लिए उनका नाम बदल देता हूं कि मैं किस कंप्यूटर में sshed हूं।
क्लिक

जब तक स्ट्रिंग "टर्मिनल" होता है, तब तक यह होता है। क्या मामला है?
जैकब वल्जिम

@JacobVlijm ऐसा नहीं है। मैं अक्सर "ssh" या "स्थानीय" नाम बदल देता हूं, जिसके आधार पर मैं क्या कर रहा हूं। हालांकि मैं एक अद्वितीय उपसर्ग शामिल करने के लिए अपने शीर्षक को बदलने वाली स्क्रिप्ट को संशोधित कर सकता हूं। यानी '%।%' या ऐसा ही कुछ।
क्लीक

जवाबों:


13

मैं एक टर्मिनल स्थिति से 10 इस तरह से मैं दबा सकते हैं पर मेरे एकता लांचर साइडबार में पिन किया गया है Super+ 0करने के लिए लॉन्चर आइकन जो शीर्ष करने के लिए नवीनतम टर्मिनल विंडो लाता है "क्लिक"।

यहाँ छवि विवरण दर्ज करें

यदि लॉन्चर में यह आपके लिए ठीक है (पहले 10 पदों में से एक है, अन्यथा इसे शॉर्टकट नहीं मिलेगा!), यह काम करेगा।


ओह, यह एक महान विचार है! मुझे यह जवाब पसंद है, लेकिन मैं यह देखने के लिए इंतजार करने जा रहा हूं कि दूसरे लोग क्या करेंगे। मैं टर्मिनल को खोजने और इसे सामने लाने के लिए xdotool का उपयोग करके एक स्क्रिप्ट बनाने के बारे में सोच रहा था।
क्लिक करें If

मुझे लगता है कि यह समाधान सबसे आसानी से लागू होने योग्य है और ठीक उसी उद्देश्य से कार्य करता है जिस उद्देश्य की मुझे तलाश है। उस कारण से मैं इसे उत्तर के रूप में चिह्नित करूंगा।
क्लीक

10

मैं गाइक का उपयोग करता हूं और मैं इससे बहुत खुश हूं। F12 दबाएं, एक टर्मिनल विंडो दिखाई देती है, F12 को फिर से दबाएं, यह गायब हो जाता है लेकिन पृष्ठभूमि में चलता रहता है। इसके अलावा: वास्तव में अच्छा लग रहा है।


यहां वोट के लिए एक और वोट। ध्यान देने योग्य बात यह है कि यदि आप कई (अलग-अलग आकार) मॉनिटर का उपयोग करते हैं, तो कुछ संस्करणों को ठीक से काम करने के लिए एक फिक्स की आवश्यकता होती है - हालांकि अभी भी इसके लायक है।
होलोले

ग्वेक पर इतना निर्भर हो गया कि जब मैंने xmonad पर स्विच किया तो मैंने उसमें अनुकरण किया। होना आवश्यक है!
टोनी मार्टिन

6

आप एक कुंजी संयोजन के तहत स्क्रिप्ट नीचे रख सकते हैं। यदि आप कुंजी संयोजन दबाते हैं, तो टर्मिनल विंडो (s) गायब हो जाएगी (पूरी तरह से)। इसे फिर से दबाएं, वे फिर से उसी स्थिति में आ जाएंगे, जैसा कि आपके पास था।

केवल एक चीज जो आपको (एक बार) अपने टर्मिनल विंडो के नाम में पहचान स्ट्रिंग जोड़ने के लिए है (ज्यादातर मामलों में टर्मिनल विंडो में एक ही नाम है)

इसके प्रयेाग के लिए

दोनों स्थापित करें xdotoolऔर wmctrl:

sudo apt-get install xdotool
sudo apt-get install wmctrl
  1. स्क्रिप्ट को एक खाली फ़ाइल में कॉपी करें, इसे इस रूप में सहेजें hide_terminal.py
  2. हेड सेक्शन में, टर्मिनल विंडो के नाम की पहचान स्ट्रिंग सेट करें
  3. इसे एक प्रमुख संयोजन के तहत चलाएं:

    python3 /path/to/hide_terminal.py
    

लिपी

#!/usr/bin/env python3
import subprocess
import os

home = os.environ["HOME"]
hidden_windowid = home+"/.window_id.txt"

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8")
# --- set the identifying string in the terminal window's name below (you mentioned "Terminal"
window_idstring = "Special_window"
# ---
def execute(cmd):
    subprocess.check_call(cmd)

w_id = [l.split()[0] for l in get(["wmctrl", "-l"]).splitlines() if window_idstring in l]
if len(w_id) !=0:
    for w in w_id:
        execute(["xdotool", "windowunmap", w])
        with open(hidden_windowid, "a") as out:
            out.write(w+"\n")
else:
    try:
        with open(hidden_windowid) as read:
            for w in [w.strip() for w in read.readlines()]:
                try:
                    execute(["xdotool", "windowmap", w])
                except subprocess.CalledProcessError:
                    pass
        with open(hidden_windowid, "wt") as clear:
            clear.write("")
    except FileNotFoundError:
        pass

1
आपके पास सब कुछ के लिए एक स्क्रिप्ट है, है ना? ; D
बाइट कमांडर

1
@ बाइटकॉमर मैं विरोध नहीं कर सकता, यह मुझ से ज्यादा मज़बूत है :)
जैकब व्लिजम

ध्यान दें कि यदि आप उपयोग नहीं कर रहे हैं तो आपको अंतिम पंक्ति में टर्मिनल का नाम भी बदलना होगा gnome-terminal। इसके अलावा, यदि आप एक से अधिक खुले टर्मिनल रखते हैं तो यह टूट जाता है। मेरे सिस्टम पर, 1 रन सक्रिय एक को छुपाता है, दूसरा रन दूसरे को छुपाता है और तीसरा रन केवल 2 वें टर्मिनल को लौटाता है। 1 हमेशा के लिए खो जाता है।
टेराडॉन

@terdon Arrgh, आप सही कह रहे हैं! इसे ठीक कर देगा और इसे सभी टर्मिनल विंडो को छिपा / दिखा देगा।
जैकब व्लिजम

इस बिंदु पर अधिक, क्यों नहीं यह बस में मार? यदि आप अजगर के साथ कर रहे हैं तो सिस्टम कॉल लॉन्च कर रहे हैं तो आप इसमें अजगर क्यों लाएंगे?
टेराडन

5

यह वही बात है जो जैकब व्लिजम के उत्तर की है, जो सिर्फ बैश में लिखी गई है:

#!/usr/bin/env bash

## window_name will be the first argument passed or, if no
## argument was given, "Terminal"
window_name=${1:-"Terminal"}

## Get the list of open terminals
terms=( $(wmctrl -l | grep "$window_name" | cut -d ' ' -f 1) )

## If all terminals are hidden
if [ -z "${terms[0]}" ]
then
    ## Read the IDs of hidden windows from .hidden_window_id
    while read termid
    do
        xdotool windowmap "$termid"
    done < ~/.hidden_window_id
## If there are visible terminals
else
    ## Clear the .hidden_window_id file
    > ~/.hidden_window_id
    ## For each open terminal
    for i in "${terms[@]}"
    do
        ## Save the current ID into the file
        printf "%s\n" "$i" >> ~/.hidden_window_id
        ## Hide the window
        xdotool windowunmap "$i"
    done
fi

यदि आप इसे सहेजते हैं ~/bin/show_hide.sh, तो आप इसे किसी भी विंडो की पहचान स्ट्रिंग को देकर चला सकते हैं जिसे आप छिपाना चाहते हैं। यदि कोई तार नहीं दिया गया है, तो यह काम करेगा Terminal:

show_hide.sh Terminal

1

मैं gnome-shell'ड्रॉप डाउन टर्मिनल' एक्सटेंशन का उपयोग कर रहा हूं , डिफ़ॉल्ट शॉर्टकट है TABलेकिन यह आसानी से बदल जाता है।


1

यह सरल wmctrl कमांड विंडो को शीर्षक में दिए गए स्ट्रिंग के साथ बढ़ाएगा या यदि कोई विंडो स्ट्रिंग से मौजूद नहीं है, तो कमांड चलाएं।

wmctrl -a <str> || <command to launch application>

उदाहरण के लिए gedit मैं उपयोग कर सकता हूं

wmctrl -a gedit || gedit

अपनी एप्लिकेशन विंडो के लिए एक उपयुक्त स्ट्रिंग खोजने के लिए, अपना एप्लिकेशन खोलें और चलाएं

wmctrl -l

0

निम्नलिखित दृष्टिकोण ने मेरे लिए काम किया:

#!/usr/bin/env bash

# Written by Eric Zhiqiang Ma (http://www.ericzma.com)
# Last update: Jul. 9, 2014

# Read the tutorials at
# http://www.systutorials.com/5475/turning-gnome-terminal-to-a-pop-up-terminal/

# Required tools: xdotool

terminal="gnome-terminal"
stat_file="/dev/shm/actiavte-termianl.term.$USER"
termtype="Terminal"
wait_sec=1
max_wait_cnt=4

# parse options first
if [ "$1" != "" ]; then
    terminal="$1"
fi


term_exists () {
    allterms=`xdotool search --class "$termtype"`
    for e in $allterms; do [[ "$e" == "$1" ]] && return 0; done
    return 1
}

create_terminal () {
    echo "Create new terminal"
    $terminal --maximize &

    exists=1
    wait_cnt=0
    until [ "$exists" == "0" ]; do
        # sleep a while
        sleep $wait_sec

        # Note that the focus window may be from a terminal that
        # already exists; the makes create_terminal choose the existing terminal
        # Making the wait_sec large enough so that the terminal can be created and
        # displayed can make the false choosing more unlikely.

        term=$(xdotool getwindowfocus)
        term_exists "$term"
        exists=$?
        # avoid infinite wait
        let wait_cnt=wait_cnt+1
        if [ $wait_cnt -gt $max_wait_cnt ]; then
            echo "Wait for too long. Give up."
            term=""
            exists=0
        fi
    done

    echo "Created terminal window $term"
    # save the state
    echo "$term" >$stat_file
}

# read the state
if [ -f $stat_file ]; then
    term=$(cat $stat_file)
fi

# check whether it exists
term_exists "$term"
exists=$?
if [[ "$exists" != "0" ]]; then
    create_terminal
    exit 0
fi

# check whether it is already activated
curwin=$(xdotool getwindowfocus)

if [ "$term" == "$curwin" ]; then
    # deactivate (minimize) the terminal if it is currently activated
    xdotool windowminimize $curwin
else
    # activate the terminal if it is not currently activated
    xdotool windowactivate $term
fi

exit 0

इसके बाद बस इसे अनुमति दें और स्क्रिप्ट को सेटिंग्स में एक कुंजी से बांधें।

स्रोत:

http://www.systutorials.com/5475/turning-gnome-terminal-to-a-pop-up-terminal/


1
लिंक के टूटने या बदलने की स्थिति में उस लिंक से कुछ महत्वपूर्ण भागों को जोड़ें।
जॉर्ज उडेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.