एक अलग कार्यक्षेत्र पर एक आवेदन कैसे शुरू करें?


13

मुझे वर्तमान में उपयोग किए जाने वाले कार्यक्षेत्र से अलग कार्यस्थल पर GUI एप्लिकेशन [लोटस सिम्फनी] शुरू करने की आवश्यकता है। [पूर्व .: एक गनोम डेस्कटॉप पर 4 कार्यस्थान हैं।]

प्रश्न: मैं यह कैसे करूँ?

ps: इसकी आवश्यकता है क्योंकि रिबूट के बाद लोटस सिम्फनी की पहली शुरुआत बहुत धीमी है, लेकिन एक बार उपयोग करने के बाद यह बहुत जल्दी शुरू हो जाती है। मुझे लगता है कि यह खुद को कैश करता है। इसलिए मैं इसे हर बूट पर एक अलग कार्यक्षेत्र पर शुरू करना चाहता हूं, इसलिए इसे बाद में जल्दी करना होगा यदि मुझे इसका उपयोग करने की आवश्यकता है।


मुझे लगता है कि यह जानना उपयोगी हो सकता है कि OS और GNOME का कौन सा संस्करण आप उपयोग कर रहे हैं।
enzotib

ubuntu 10.04 - सूक्ति-डेस्कटॉप-डेटा 1: 2.30.2-0ubuntu1
लांसबैन्स

जवाबों:


8

डेविल्स पाई की जांच करें (हालांकि मुझे यकीन नहीं है कि यह Gnome3 के साथ काम करेगा), और आप स्टैकओवरफ्लो बैश पर अधिक उपयोगी जानकारी पा सकते हैं ।

मूल रूप से आपको निम्न कार्य करना चाहिए:

#!/bin/bash
wmctrl -n 8

firefox &
thunderbird &
/usr/bin/netbeans --locale en &
amsn &
gnome-terminal &
sleep 15

wmctrl -r firefox -t 0
wmctrl -r netbeans -t 1 
wmctrl -r terminal -t 2 
wmctrl -r amsn -t 6 
wmctrl -r thunderbird -t 7

#focus on terminal
wmctrl -a terminal 

(मेरे पास ऊपर दिए गए StackOverFlow लिंक से उपरोक्त कोड को सिर्फ कॉपी और पृष्ठांकित करना है, क्योंकि मुझे लगता है कि यह स्वयं व्याख्यात्मक है)।

अपडेट करें:

Gnome 3 एक्सटेंशन के लिए सबसे अच्छी साइट पर एक आसान समाधान के लिए यहां देखें , आपको Gnome 3 के लिए Auto Move Windows एक्सटेंशन इंस्टॉल करना चाहिए । यदि यह आपके लिए काम नहीं कर रहा है (जैसा कि आप लिंक पर देख सकते हैं तो कुछ विकृतियां हैं स्थापना के स्वचालन सही काम नहीं कर रहा, एक अधिक विस्तृत शोषण मिल यहाँ यह कैसे काम पाने के लिए पर।


2

मूल पोस्ट किसी विशेष कार्यक्षेत्र पर एक एप्लिकेशन को प्रदर्शित करने के लिए एक स्क्रिप्ट का उपयोग करने के बारे में थी, जैसे कि एक अन्य स्क्रिप्ट का उपयोग स्टार्ट अप स्क्रिप्ट में किया जा सकता है ताकि एक उपयोगकर्ता को काम करने के लिए जारी रखने की अनुमति मिल सके, जबकि दूसरे कार्यक्षेत्र पर बहुत धीमी गति से शुरू किया गया एप्लिकेशन लोड हो। मेरी स्क्रिप्ट किसी भी कमांड प्रॉम्प्ट से किसी भी दिए गए कार्यक्षेत्र पर किसी एक अनुप्रयोग को लॉन्च करने के लिए बल्कि बोझिल wmctrl सिंटैक्स के लिए फ्रंट-एंड के रूप में महान काम करती है। इस प्रकार एक और स्क्रिप्ट जो बस कुछ की सूची बनाती है, lh 1 thunderbird; lh 2 firefox; lh 3 calculator...., या जो भी हो, अब आसान है। हालांकि समय के साथ कुछ कठिनाइयाँ हैं, इस प्रकार मेरी स्क्रिप्ट में नींद है। नीचे अद्यतन संस्करण है, जिसे मैं फिर से बनाए या पोस्ट नहीं करूंगा। एएस आईएस का उपयोग करें, किसी विशेष उपयोग के लिए उपयुक्तता की कोई गारंटी नहीं है। कृपया जैसा चाहें संशोधित करें। मैं सुझाव देता हूं कि /usr/local/bin/lhबस, क्योंकिlh किसी अन्य ज्ञात प्रोग्राम का नाम नहीं है, कम से कम टकसाल 18 पर नहीं। चर के रूप में - मैंने जिन चर को उद्धृत किया है उन्हें उद्धृत करना आवश्यक समझा।

#!/bin/sh
## Author: B.A. Computer Services www.ba-computer.com
## Purpose: Frontend to launch anything on a specific desktop/workspace.
##  lh is short for LaunchHere

USAGE="USAGE: $(basename $0) [-r] workspace(1,2,..) command\
    LaunchHere launches COMMAND on specific workspace.\
    -r option returns to current workspace"
[ -z "$1" ] && echo $USAGE && exit 0
ISRETURN=$(false); [ "$1" = "-r" ] && ISRETURN=true && shift;  
WRKSPC=$1;[ -z "$WRKSPC" ] && echo $USAGE && exit 0
WSN=$(expr $WRKSPC - 1)  ## wmctrl starts with 0 as first wrkspc
shift; CMD="$*"; [ -z "$CMD" ] && echo $USAGE && exit 0

WM=$(which wmctrl);[ -z "$WM" ] && echo MISSING wmctrl && exit 1
CURRENT=$(wmctrl -d | grep '*' | cut -c1)


# Switch to desired workspace
$WM -s $WSN
$CMD &
PID=$!
echo Executed $CMD on workspace $WRKSPC,  PID=$PID
sleep 3

# Return to CURRENT workspace ?
# [ $ISRETURN ] && echo TRUE || echo FALSE
[ $ISRETURN ] && $WM -s $CURRENT

यह बहुत अच्छा है। एक जादू की तरह काम करता है। आपका बहुत बहुत धन्यवाद!
माइक

0

बीटा - लेकिन यह मेरे लिए लिनक्स टकसाल पर काम करता है।

#!/bin/sh
## Author: B.A. Computer Services www.ba-computer.com
## Purpose: Frontend to launch anything on a specific desktop/workspace.
##  lh is short for LaunchHere

USAGE="USAGE: $(basename $0) workspace(0,1,2,..) command"
WRKSPC=$1;[ -z "$WRKSPC" ] && echo $USAGE && exit 0
shift; CMD="$*"; [ -z "$CMD" ] && echo $USAGE && exit 0

WM=$(which wmctrl);[ -z "$WM" ] && echo MISSING wmctrl && exit 1

echo Executing $CMD on workspace $WRKSPC
$WM -s $WRKSPC
eval $CMD &
sleep 1
$WM -r :ACTIVE: -t $WRKSPC

evalसंभवतः पर होना चाहिए "$@", या आदेश है, अगर इसकी तर्क का कोई खाली स्थान या फ़ाइल नाम ग्लोबिंग वर्ण, नहीं होगा काम में शामिल है। सामान्य तौर पर, इस स्क्रिप्ट को चर विस्तार को उद्धृत करने की आवश्यकता होती है।
Kusalananda

0

मैं इस धागे में @ user278634 के पोस्ट से प्रेरित हूं , धन्यवाद।

मैंने क्या संशोधित किया है:

  1. कमांड पीड $ होने के कारण 'eval $ CMD &' को 'eval "$ CMD &"' में बदलें!
  2. निर्दिष्ट एक पर स्विच करने के बजाय वर्तमान कार्यक्षेत्र रखें; केवल निर्दिष्ट कार्यस्थान पर कमांड लॉन्च करना।
  3. नींद 1 सेकंड के बजाय विंडो-आईडी पाए जाने के बाद कमांड को निर्दिष्ट कार्यक्षेत्र में ले जाएं। यह मेरे लिए थोड़ा महत्वपूर्ण है क्योंकि मैं आमतौर पर डेस्कटॉप-लॉगिन के स्टार्टअप पर प्रत्येक कार्यक्षेत्र और एक्स-ज्यामिति के लिए 8 टर्मिनल खोलता हूं। यह 'स्लीप 1' का उपयोग करते हुए 8 सेकंड से अधिक समय लेगा, जबकि मेरी स्क्रिप्ट में सिर्फ 2..3 सेकंड लगते हैं।

यहाँ मेरी स्क्रिप्ट है:

#!/bin/sh
# = NAME
# lh - Launch Here
#
# = SYNOPSIS
# lh <workspace> <command> [<command-args>]
#
# = DESCRIPTION
# launch command (with any command-args) on a specific desktop/workspace.
#
# Example:
#
#   lh 2 xterm -geometry 80x46+881+0
#
# = Author
# Fumisky Wells

USAGE="USAGE: $(basename $0) workspace(0,1,2,..) command"
WRKSPC=$1;[ -z "$WRKSPC" ] && echo $USAGE && exit 0
shift; CMD="$*"; [ -z "$CMD" ] && echo $USAGE && exit 0    
WM=$(which wmctrl);[ -z "$WM" ] && echo MISSING wmctrl && exit 1    
eval "$CMD &"
pid=$!    
while :; do
  wid=$($WM -l -p | grep " $pid " | awk '{print $1}')
  if [ "$wid" != "" ]; then
    $WM -i -r $wid -t $WRKSPC
    exit
  fi
  # not found yet...
  sleep 0.1
done

0

Wmctrl स्थापित करें

sudo apt install wmctrl

और एक स्क्रिप्ट बनाएं (इस उदाहरण में दूसरे कार्यक्षेत्र पर थंडरबर्ड ( -t 1)):

#!/bin/sh

 (thunderbird &)  & sleep 5 && 
sh -c "wmctrl -i -r `wmctrl -l | grep Thunderbird` -t 1"

Wmctrl पर अपना एप्लिकेशन नाम जानने के लिए आप इसे अपने टर्मिनल पर टैप करके देख सकते हैं:

wmctrl -l

और इसे स्क्रिप्ट में सही नाम से बदलें।

कैपिटल लेटर ("थंडरबर्ड" नहीं "थंडरबर्ड") के साथ कैर्रीफ़ुल बनें !!

3D कार्यस्थान पर फ़ायरफ़ॉक्स के साथ अन्य उदाहरण ( -t 2):

#!/bin/sh
(firefox &)  & sleep 5 && 
sh -c "wmctrl -i -r `wmctrl -l | grep Firefox` -t 2"

बक्शीश :

यहाँ स्टार्ट-अप पर अमल करने की आज्ञा है:

sh -c "thunderbird  & sleep 5 && wmctrl -i -r `wmctrl -l | grep Thunderbird` -t 1"

दालचीनी के साथ डेबिन 10 पर काम करें। लेकिन सभी के लिए काम करना चाहिए

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