Ubuntu / Gnome: Belirli bir çalışma alanında uygulama açma


10

Bir uygulamaya belirli bir çalışma alanında açılmasını nasıl söyleyebilirim?


Daha fazla bilgi:

Çalışma alanı 2'de C ++ IDE'm, çalışma alanı 3'te Java IDE'm ve çalışma alanı 4'te e-posta, tarayıcım ve çeşitli. Ayrıca oturum açtıktan sonra çalışan bir kabuk komut dosyası kullanın:

#!/bin/bash
gnome-terminal & # WS 1
netbeans-6-9-1 & # WS2
qtcreator-2-0-1 & # WS 3
firefox & # WS 4
thunderbird & # WS 4

Tabii ki şu anda hepsi mevcut çalışma alanında açılıyor ... Her komutun hangi çalışma alanında başlaması gerektiğini belirtmem için bir yol var mı?

Şimdiden teşekkürler!


1
Bu programların her zaman çalışmasını sağlıyorsanız, en kolay ve en basit yol, hepsini istediğiniz yere yüklemek ve 'oturumu
kapatırken

1
@MrStatic: Öneri için teşekkürler, ancak başka nedenlerle bir kabuk betiğinde olmasını istiyorum - ve bunun için 'çıkış yaparken uygulamaları hatırlayamıyorum'
bguiz

Yanıtlar:


4

Hangi çalışma alanında hangi pencerelerin çalışacağını belirlemek için devilspie kullanabilirsiniz .

Tam olarak bunun bir örneği için dokümanlara bakın .

Ancak MrStatic'in de iyi bir önerisi var. Önce bunu deneyin, kabuk betiğinize bile ihtiyacınız olmayabilir.

Bir kabuk betiğinde kullanabileceğiniz bir komut olması gerekiyorsa, wmctrl'e bakın .


öneri için teşekkürler, kontrol edeceğim - Yine de sadece CLI çözümünün üstün bir çözüm olduğunu düşünürdüm, bu yüzden herhangi bir fikriniz varsa, bana bildirin!
bguiz

4
Wmctrl'yi deneyin. Yukarıdaki cevabıma bir link ekledim.
Mikel

7

wmctrlAracı denedim ve benim için çalışan en kolay çözümün aşağıdaki komutla pencereyi taşımak olduğunu buldum:

wmctrl -r <WindowName> -t <WorkspaceNumber>

Çalışma alanı numaralarının 0'dan başladığını unutmayın. Son olarak, komutla tercih ettiğiniz çalışma alanına geçebilirsiniz:

wmctrl -s <WorkspaceNumber>

1

Komut dosyalarında bu temel yapıyı belirli çalışma alanlarındaki belirli bir uygulama kümesini açmak için kullanıyorum ... örnek terminalimi açar ve çalışma alanına 1 taşır ...

cd
gnome-terminal
until wmctrl -l | grep -q "me@mypc ~"; 
do
    sleep 0.1
done
wmctrl -r "me@mypc ~" -t 1

Bu kod hakkında küçük bir açıklama memnuniyetle karşılanacaktır. Neden cd ile başlıyor? tarihine kadar ne bekliyorsun? "ben @ myspc ~" bir pencere adı mı ??
wranvaud

0

Wmctrl yükle

sudo apt install wmctrl

Ve bir komut dosyası oluşturun (bu örnekte ikinci çalışma alanındaki yıldırım ( -t 1)):

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

Wmctrl'de uygulama adınızı bilmek için terminalinize dokunarak görebilirsiniz:

wmctrl -l

Ve bunu koddaki doğru adla değiştirin.

Büyük harf ("thunderbird" değil "thunderbird") ile dikkatli olun !!

3B çalışma alanındaki firefox ile diğer örnek ( -t 2):

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

Tarçın ile Debain 10 üzerinde çalışın. Ama herkes için çalışmalı


-1

Yapmanın imkansız olduğu konusunda oldukça eminim. Bunun nedeni, GNOME gibi pencereleme ortamlarının yazılımın bunu halletmesini beklemesidir ve yazılım üreticileri pencereleme ortamlarının bunu işlemesini beklemektedir.

Devilspie iyi bir fikirdir, ancak desen eşleştirmesi yapar (yani, name == 'google-chrome' ise). İki tarayıcı açarsam ne olur? İkisi de aynı çalışma alanına mı taşınıyor? Her biri belirli bir krom örneğine sahip 6x3 = 18 çalışma alanım var. Bu programları yeniden adlandırabilirsem (yani 'google-chrome1', 'google-chrome2' ...) yardımcı olabilir, ancak bunu yapmanın bir yolunu bulamıyorum. Bu yüzden wmctrl kullanmalıyız.

wmctrl, pencere başlıklarını kullanmaya ek olarak biraz daha iyi bir b / c'dir, pencere kimlikleri veya sadece o anda vurgulanan pencereyi de kullanabilirsiniz. Pencere kimlikleri, hemen üretilmedikleri b / c'yi elde etmek için bir acıdır. Aşağıya bakınız

gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1

ancak daha sonra gedit SONRASI çıkana kadar kontrol komut satırına döndürülmez. Bunu aşmak için tek yapmamız gereken bir &işaret koymak

gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1

ancak artık denetim, zamanın% 99,999'u, pencere yöneticileri pencereyi başlatmadan ÖNCE komut satırına geri döndü ve pencere kimliğini bulmanın bir yolu yok. Yeni pencerelerin oluşturulup oluşturulmadığını görmek ve aradığımız pencere olup olmadığını tahmin etmek için çok karmaşık bir döngü tekniği ayarlanmalıdır.

Etkin pencereyi bayrakla kontrol :ACTIVE:etmek aynı soruna sahiptir, programın çalışmasını bitirmesini beklemez.

wmctrlçok garip bir program olarak bana saldırıyor. Faresi olmayan veya programlarını fiziksel olarak çalışma alanlarına sürükleyemeyen kişiler için tasarlanmış gibi görünüyor.


OP, tarayıcının dördüncü çalışma alanına gittiğini söyledi. Oturum başlatma komut dosyası çalıştırıldıktan sonra diğer çalışma alanlarındaki tarayıcıları açabilmek gerekirse, bu komut dosyasındaki son komut uyku olabilir; pkill devilspie.
Mikel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.