7 अप्रैल को अपडेट करें: एक अलग संस्करण जोड़ा गया और अल्बर्ट मिला, अपडेट और बोनस को देखें !!!
डैश कार्यक्षमता के बारे में : आपने " नई विंडो खोलने से पहले इसके लिए जाँच करने के लिए लॉन्चर के डिफ़ॉल्ट व्यवहार को बदलने के लिए वैसे भी " कहा है। मूल उत्तर है, नहीं, एक नियमित उपयोगकर्ता के रूप में आपके पास उस व्यवहार को डैश में जोड़ने का कोई तरीका नहीं है। हालाँकि, अगर कोई एकता स्कोप डेवलपर होगा जो इसे लागू करने के लिए तैयार होगा, तो आप उन्हें हल कर सकते हैं या यदि आप संकल्प और सीखने के लिए तैयार हैं तो खुद को विकसित कर सकते हैं। मेरे कोडिंग कौशल बहुत मामूली हैं, इसलिए मैं शेल स्क्रिप्टिंग और वर्कअराउंड के रूप में स्क्रिप्ट के लिए उपलब्ध ग्राफ़िकल फ्रंट-एंड का उपयोग करता हूं।
सम्बंधित जानकारी
मूल पोस्ट:
मैंने एक पटकथा लिखी है जिसमें आप जो मांगते हैं उसे हासिल करने के लिए जिनीट डायलॉग और wmctrl का उपयोग करते हैं। ध्यान दें कि यह एक ग्राफिकल स्क्रिप्ट है, जिसका अर्थ है कि यह केवल विंडोज़ के साथ, GUI में काम करेगा, और यदि आप tty में कुछ लॉन्च करने की कोशिश करेंगे तो यह काम नहीं करेगा। इसके अलावा, अल्फ्रेड को जो मैं समझता हूं, वही काम करता है। के रूप में वर्णित आप इसे करने के लिए एक डेस्कटॉप शॉर्टकट या इसे करने के लिए लांचर शॉर्टकट बना सकते हैं यहाँ और यहाँ ।
लिपी:
#!/bin/bash
# Author: Serg Kolo
# Description: A launcher script that checks whether
# or not a window of a particular program already exists
# If a window of such program is open, bring it to focus
# Otherwise - launch a new window
# Written for /ubuntu//q/440142/295286
# Date: April 6 , 2015
#
MYPROG=$( zenity --entry --title='MY LAUNCHER' --text='Type the name of application to run' )
sleep 0.5
wmctrl -lx | awk '{print $3}' | grep -i "$MYPROG"
if [ $? -eq 0 ]; then
sleep 1
wmctrl -xa $MYPROG
#as an alternative try the line bellow
#wmctrl -a $MYPROG
exit 1
else
$MYPROG &
exit 0
fi
साइड नोट्स: पिछले संस्करण में, स्क्रिप्ट का इको $ का उपयोग किया गया था ?, यह जांचने के लिए कि क्या पिछले एक्सप्रेशंस सफलतापूर्वक बाहर निकले हैं। मुरु के सुझाव (संपादित से) के अनुसार, मैंने कोड को कुछ अधिक कॉम्पैक्ट संस्करण में बदल दिया है, इसलिए मेरा सुझाव है कि आप पिछले संस्करण और वर्तमान पर एक नज़र डालें।
इसके अलावा, पहले wmctrl -a $MYPROG
Google-क्रोम या क्रोमियम-ब्राउज़र के परीक्षण के साथ काम नहीं किया था; कुछ मूर्खतापूर्ण कारणों से कुछ प्रोग्रामों में विंडो की WM_CLASS संपत्ति होती है, जबकि इसके द्वारा सूचीबद्ध प्रोग्राम dpkg --get-selections
लोअरकेस है (बस पढ़ें man wmctrl
और चलाएं wmctrl -lx
, आपको पता चल जाएगा)। उस -ax को जोड़कर इस बात का ध्यान रखना चाहिए। स्क्रिप्ट पहले से खुली क्रोमियम विंडो को लाती है जैसा कि उसे करना चाहिए
एक और बात - wmctlr इसमें कुछ अजीब है कि इसे कभी-कभी देरी की आवश्यकता होती है (किसी अन्य स्क्रिप्ट में इसके साथ अनुभव था), इसलिए मुझे sleep 1
लाइन जोड़ना पड़ा । पहले यह फ़ायरफ़ॉक्स के साथ चालू और बंद होगा, लेकिन अब यह तैरने का काम करता है।
एक्शन में स्क्रिप्ट
एनीमेशन बॉलो में आप देख सकते हैं कि स्क्रिप्ट के पहले रन पर, फ़ायरफ़ॉक्स ओपन का एक उदाहरण है, और स्क्रिप्ट स्विच उस विंडो पर केंद्रित है; दूसरे परीक्षण में, मैंने google-chrome का नया उदाहरण खोला, जो पहले नहीं खुला था। (साइड नोट: यदि आप डेस्कटॉप के बारे में उत्सुक हैं, तो, यह कैरो डॉक के साथ ओपनबॉक्स है)
टिप्पणियों में प्रति सुझाव, एम्बेडेड एनीमेशन को हटा दिया गया, केवल लिंक पोस्ट किया गया। अगर यह टूट गया है तो कृपया रिपोर्ट करें!
http://i.stack.imgur.com/puuPZ.gif
अपडेट, 7 अप्रैल
मैंने ज़ीनिटी के ड्रॉप-डाउन एंट्री बॉक्स में सूचीबद्ध सभी कार्यक्रमों को बनाने के लिए स्क्रिप्ट को कुछ हद तक सुधार दिया। अब उपयोगकर्ता को प्रत्येक प्रोग्राम को याद करने की आवश्यकता नहीं है, लेकिन तीर कुंजियों का उपयोग करके बस उनमें से एक सूची को स्क्रॉल कर सकते हैं या बस ड्रॉप डाउन मेनू खोल सकते हैं। इसके अलावा, यह बेहतर संस्करण विंडोज़ को नाम से नहीं, बल्कि विंडो आईडी द्वारा बढ़ाता है, जो बेहतर प्रदर्शन देता है। ध्यान दें, जिस तरह से मैं .desktop फ़ाइलों के माध्यम से जाता हूं, एक तरह से बेमानी है, दो बार कट कमांड का उपयोग करते हुए, लेकिन चूंकि मेरी स्क्रिप्ट-फू इतनी अच्छी नहीं है, इसलिए यह सब मैं कर सकता हूं। सुधार के सुझावों का स्वागत है!
#!/bin/bash
# Author: Serg Kolo
# Description: Second version of a launcher script that checks whether
# or not a window of a particular program already exists
# If a window of such program is open, bring it to focus
# Otherwise - launch a new window
# Written for /ubuntu//q/440142/295286
# Date: April 7 , 2015
#
set -x
MYPROG=$(zenity --entry --text 'Select program from list' --entry-text $(ls /usr/share/applications/*.desktop | cut -d'/' -f5 | cut -d'.' -f1 | xargs echo))
sleep 0.5
# Do we have a window of such program ?
wmctrl -lx| awk '{print $3}' | grep -i $MYPROG
if [ $? -eq 0 ]; then
sleep 0.5 # if yes, find that window id, and raise it
WINID=$(wmctrl -lx | grep -i $MYPROG | awk 'NR==1{print $1}')
wmctrl -ia $WINID &
# exit 0
else
echo $MYPROG | grep -i libreoffice
if [ $? -eq 0 ]
then
MYPROG=$(echo $MYPROG | sed 's/-/ --/g')
fi
$MYPROG &
# exit 0
fi
बक्शीश:
मुझे वास्तव में अल्बर्ट मिला है , जो अल्फ्रेड का लिनक्स संस्करण है, लेकिन खुद इसे आजमाया नहीं है। हालांकि बाहर की जाँच। हालांकि, जैसा कि जैकब ने पहले ही उल्लेख किया है, यह अभी भी छोटी गाड़ी है।
ग्नोम-डो नामक एक ऐप है, जो ग्राफिक रूप से अल्फ्रेड के समान दिखता है, हालांकि इसमें इस स्क्रिप्ट की समान कार्यक्षमता नहीं है।
मुझे पता है कि अगर आप इस स्क्रिप्ट को पसंद करते हैं, अगर कुछ भी ठीक करने की आवश्यकता है, और यदि आप इसे उपयोगी पाते हैं तो उत्तर को न भूलें