จะเริ่มต้นแอปพลิเคชันบนพื้นที่ทำงานอื่นได้อย่างไร


13

ฉันต้องเริ่มต้นแอปพลิเคชัน GUI [Lotus Symphony] บนพื้นที่ทำงานที่แตกต่างจากที่ใช้อยู่ในปัจจุบัน [เช่น: มีเวิร์กสเปซ 4 อันบนเดสก์ท็อป GNOME]

ถาม: ฉันจะทำสิ่งนี้ได้อย่างไร

ps: มันเป็นสิ่งจำเป็นเพราะการเริ่มต้นครั้งแรกของ Lotus Symphony หลังจากการรีบูตเป็นไปอย่างช้ามาก แต่หลังจากการใช้งานครั้งเดียวมันจะเริ่มต้นอย่างรวดเร็ว ฉันคิดว่ามันแคชตัวเอง นั่นเป็นเหตุผลที่ฉันต้องการเริ่มต้นทุกครั้งที่บูตบนพื้นที่ทำงานที่แตกต่างกันดังนั้นมันจะเร็วกว่านี้ถ้าฉันต้องการใช้มัน


ฉันคิดว่ามันจะมีประโยชน์หากคุณทราบว่าระบบปฏิบัติการและ GNOME รุ่นใดที่คุณใช้อยู่
enzotib

ubuntu 10.04 - gnome-desktop-data 1: 2.30.2-0ubuntu1
LanceBaynes

คำตอบ:


8

ตรวจสอบพายปีศาจ (แม้ว่าฉันไม่แน่ใจว่ามันจะทำงานร่วมกับ Gnome3) และคุณสามารถหาข้อมูลที่เป็นประโยชน์เพิ่มเติมเกี่ยวกับทุบตี StackOverflow

โดยทั่วไปคุณควรทำสิ่งต่อไปนี้:

#!/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 ด้านบนเนื่องจากฉันคิดว่ามันเป็นคำอธิบายด้วยตนเอง)

UPDATE:

ดูที่นี่สำหรับวิธีแก้ปัญหาที่ง่ายขึ้นที่ไซต์ที่ดีที่สุดสำหรับส่วนขยาย Gnome 3 คุณควรติดตั้งส่วนขยายAuto Move Windowsสำหรับ Gnome 3 ในกรณีที่มันไม่ทำงานสำหรับคุณ (อย่างที่คุณเห็นในลิงก์ ระบบอัตโนมัติของการติดตั้งใช้งานไม่ได้รับการหาประโยชน์โดยละเอียดเพิ่มเติมที่นี่เกี่ยวกับวิธีการใช้งาน


2

โพสต์ต้นฉบับเกี่ยวข้องกับการใช้สคริปต์เพื่อทำให้แอปพลิเคชันปรากฏบนพื้นที่ทำงานเฉพาะซึ่งอาจใช้สคริปต์อื่นในสคริปต์ Start Up เพื่อให้ผู้ใช้ทำงานต่อไปในขณะที่แอปพลิเคชันเริ่มช้ามากโหลดในพื้นที่ทำงานอื่น สคริปต์ของฉันทำงานได้ยอดเยี่ยมเป็นส่วนหน้าสำหรับไวยากรณ์ wmctrl ที่ค่อนข้างยุ่งยากในการเรียกใช้แอปพลิเคชันใดก็ได้บนพื้นที่ทำงานที่กำหนดจากพรอมต์คำสั่งใด ๆ ดังนั้นสคริปต์เพิ่มเติมที่แสดงรายการสิ่งที่ต้องการเช่นlh 1 thunderbird; lh 2 firefox; lh 3 calculator.... หรืออะไรก็ตามนั้นเป็นเรื่องง่าย อย่างไรก็ตามมีปัญหาบางอย่างกับเวลาดังนั้นการนอนในสคริปต์ของฉัน ด้านล่างเป็นรุ่นที่อัปเดตซึ่งฉันจะไม่ดูแลหรือโพสต์อีกครั้ง ใช้อย่างที่เป็นอยู่ไม่มีการรับประกันความเหมาะสมสำหรับการใช้งานโดยเฉพาะ แก้ไขตามที่คุณต้องการ ฉันขอแนะนำให้ประหยัด/usr/local/bin/lhเพราะเพียงเพราะlh ไม่ใช่ชื่อโปรแกรมอื่นที่รู้จักกันอย่างน้อยไม่ได้อยู่ใน Mint 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

มันยอดเยี่ยมมาก ทำงานเหมือนจับใจ ขอบคุณมาก!
Mic

0

เบต้า - แต่มันใช้ได้กับฉันใน linux mint

#!/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ควรจะเกิดขึ้น"$@"หรือคำสั่งหากมีข้อโต้แย้งใด ๆ ที่มีช่องว่างหรือชื่อตัวละคร globbing ตัวอักษรจะไม่ทำงาน โดยทั่วไปสคริปต์นี้จำเป็นต้องอ้างถึงการขยายตัวแปร
Kusalananda

0

ฉันได้รับแรงบันดาลใจจากโพสต์ของ @ user278634ในกระทู้นี้ขอบคุณ

สิ่งที่ฉันแก้ไขคือ:

  1. เปลี่ยน 'eval $ CMD &' เป็น 'eval "$ CMD &"' เนื่องจากการรับคำสั่ง pid $!
  2. รักษาเวิร์กสเปซปัจจุบันแทนการสลับไปยังที่ระบุ เพียงแค่เรียกใช้คำสั่งที่พื้นที่ทำงานที่ระบุ
  3. ย้ายคำสั่งไปยังเวิร์กสเปซที่ระบุหลังจากพบ window-id แทนที่จะเป็น sleep 1 วินาที นี่เป็นสิ่งสำคัญสำหรับฉันเพราะฉันมักจะเปิด 8 เทอร์มินัลสำหรับแต่ละพื้นที่ทำงานและ X-geometry เมื่อเริ่มต้นการเข้าสู่ระบบเดสก์ท็อป อาจใช้เวลามากกว่า 8 วินาทีเมื่อใช้ 'sleep 1' ในขณะที่สคริปต์ของฉันใช้เวลาเพียง 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

และสร้างสคริปต์ (ในตัวอย่าง Thunderbird บนพื้นที่ทำงานที่สอง ( -t 1)):

#!/bin/sh

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

หากต้องการทราบชื่อแอปพลิเคชันของคุณบน wmctrl คุณสามารถดูได้โดยการแตะที่เทอร์มินัลของคุณ:

wmctrl -l

และแทนที่ด้วยชื่อที่ถูกต้องในสคริปต์

เป็นคาร์ฟูลด้วยอักษรตัวใหญ่ ("ธันเดอร์เบิร์ด" ไม่ใช่ "ธันเดอร์เบิร์ด") !!

ตัวอย่างอื่น ๆ ที่มี firefox ในพื้นที่ทำงาน 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"

ทำงานกับ Debain 10 ด้วย Cinnamon แต่ควรใช้ได้กับทุกคน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.