Bagaimana cara saya skrip untuk membuka satu set program masing-masing di ruang kerja tertentu?

35

Saya melihat-lihat sebentar dan tidak bisa menemukan jawaban untuk masalah saya berikut ini:

Saya memiliki setup enam desktop di Ubuntu 12,04 dengan Unity. Saat memulai, setiap pagi, saya menjalani rutinitas membuka lima atau enam program yang sama. Saya membuka masing-masing ruang kerja tertentu. Saya ingin ini otomatis. Apakah ada cara untuk skrip atau mengkonfigurasi ini?

Pertanyaan tambahan : Untuk semakin memperumit masalah ini, saya menjalankan dua layar dalam mode tampilan kembar. Saya benar-benar harus memulai setiap program pada layar tertentu, lebih disukai di layar penuh.

Jahn
sumber
1
Anda mungkin menemukan ini membantu. Itu menunjuk ke wmctrl, tapi saya belum menggunakannya: movingtofreedom.org/2010/08/10/…
RobotHumans
ini mungkin bermanfaat. askubuntu.com/questions/87002/…
Suhaib
1
Datang dari ini dari tampilan yang sangat sederhana, apakah ada alasan mengapa Anda tidak dapat meninggalkan mesin Anda dalam mode tunda saat Anda pergi? Saya pikir ini akan menjadi perbaikan cepat untuk Anda saat Anda menemukan solusi yang lebih permanen ...
Adeyfk
Ketika Anda mengatakan desktop, apakah yang Anda maksud adalah ruang kerja?
p0llard
Aktivitas KDE mungkin dapat melakukan ini.
Mekanik siput

Jawaban:

20

Gagasan jdp407 tentang menggunakan compizconfig akan mengaitkan aplikasi tertentu dengan ruang kerja tertentu sehingga SETIAP SAAT aplikasi dibuka, ditempatkan di ruang kerja yang sesuai. Jika ini tidak diinginkan, Anda dapat melakukan hal berikut:

1) Pasang wmctrl

sudo apt-get install wmctrl

2) Buat file dengan konten berikut dan membuatnya dapat dieksekusi

#!/bin/bash
wmctrl -s 0 #Switches to workspace 0 [workspaces are numbered from 0]
gnome-terminal & #Say you want a terminal in the 0th workspace
nautilus & #Maybe a file browser too
sleep 2 #Windows take some time to open. If you switch immediately, they'll open up in wrong workspaces. May have to change the value 2.
wmctrl -s 1 #Switches to workspace 1
firefox & #You get the idea. Continue for all workspaces
sleep 2
wmctrl -s 0 #You will be left at this workspace when the script finishes executing

3) Panggil skrip ini dari .xsessionrcdalam direktori home Anda [jika Anda harus membuat file ini] untuk mengotomatiskan proses pada setiap login. Atau Anda bisa memanggilnya dari terminal saat dibutuhkan. EDIT: Letakkan di "Aplikasi Startup", bukan .xsessionrc. .xsessionrc akan mengeksekusi bahkan sebelum lingkungan desktop selesai memuat.


Anda mungkin ingin membuat sesi kustom seperti yang disarankan oleh jdp407, sehingga Anda memiliki dua sesi untuk dipilih, yang membuka aplikasi ini secara otomatis dan yang tidak. Tapi itu sepertinya tidak perlu bagiku.


Jika Anda merasa beralih ke ruang kerja, membuka aplikasi yang sesuai dan kemudian beralih ke yang berikutnya memakan waktu, Anda dapat membuka semua aplikasi dalam satu kesempatan, dan kemudian memindahkan windows menggunakan wmctrl. Sebagai contoh

wmctrl -r 'Firefox' -t 1

akan menggeser jendela dengan Firefox dalam judulnya ke ruang kerja 1. Jika ada lebih dari satu jendela, yang pertama dalam daftar jendela yang dikelola wmctrlakan dipindahkan. Anda harus mengetahui judul windows yang akan dibuat oleh aplikasi untuk menggunakan ini. Itu sebabnya saya tidak menyarankan ini sebagai opsi utama. Jika judul tidak ambigu seperti halnya dengan aplikasi yang paling umum digunakan maka inilah cara yang harus ditempuh.


Membuka aplikasi dalam layar penuh:

Beberapa aplikasi seperti terminal gnome memiliki argumen baris perintah untuk membuka jendela dalam keadaan maksimal atau dalam mode layar penuh. Jika ada opsi seperti itu gunakan mereka. Atau gunakan wmctrlsebagai berikut

wmctrl -r 'prasanth@nb37' -b add,maximized_vert,maximized_horz

Ini memaksimalkan jendela terminal saya (sudah ada).

wmctrl -r 'prasanth@nb37' -b add,fullscreen

Ini mengirim jendela ke mode layar penuh.


Buka wmctrlhalaman manual. Anda dapat menggunakan lebih banyak fungsionalitasnya.

S Prasanth
sumber
1
Tampaknya menggunakan wmctrl untuk memilih ruang kerja tidak berfungsi di distribusi post-Lynx. Opsi '-s' hanya dapat diatur ke '0', atau itu akan menimbulkan kesalahan, atau tidak melakukan apa-apa sama sekali. Sumber: movingtofreedom.org/2010/08/10/…
p0llard
Saya menggunakan 12,04 dengan unity2d (tidak ada efek visual) dan berfungsi untuk saya. Sepertinya itu tidak akan berfungsi dengan efek visual diaktifkan.
S Prasanth
wmctrlberfungsi dengan baik di sini (LXDE dan XFCE, pengomposisian melalui xcompgr diaktifkan)
Glutanimate
Bekerja untuk saya di Mint 14 dengan Cinnamon, terima kasih!
k102
Di Ubuntu 14.04, gunakan wmctrl -o X,Yuntuk pindah ke viewport tertentu. Jika Anda memiliki banyak monitor, Anda dapat memindahkan aplikasi ke monitor lain menggunakan wmctrl -r "App name" -e G,X,Y,W,H. Bekerja dengan baik dengan efek visual yang satu.
Nate
10

Ada dua 'masalah' di sini: yang pertama melibatkan membuka serangkaian program khusus ketika Anda login; yang kedua melibatkan membuatnya terbuka di ruang kerja tertentu. Saya akan menangani keduanya secara terpisah:

  1. Membuat Sesi X Kustom

    Ini cukup mudah dilakukan. Anda hanya perlu membuat Skrip Sesi X, dan kemudian minta LightDM untuk menggunakannya. Anda perlu mengetahui perintah untuk meluncurkan program yang Anda inginkan dari terminal.

    1. Buka Terminal.
    2. Ketik touch ~/.customxsession, dan tekan enter.
    3. Ketik gedit ~/.customxsession, dan tekan enter.
    4. Anda sekarang akan memiliki editor teks terbuka dengan file kosong.
    5. Anda perlu menentukan Sesi X dalam file ini. Saya telah membuat sampel 'isi file kosong' di bagian bawah jawaban. Saya pikir Ubuntu menggunakan sesi gnome sebagai window manager, tapi saya mungkin salah. Saya tidak dapat mengujinya saat ini (laptop rusak) jadi jika itu tidak berfungsi seperti yang diharapkan (misalnya: memuat Gnome dan bukannya Unity), Anda mungkin perlu melakukan riset.
    6. Simpan file, dan tutup Gedit.
    7. Ketik touch /usr/share/xsessions/multi.desktop, dan tekan enter.
    8. Ketik gedit /usr/share/xsessions/multi.desktop, dan tekan enter.
    9. Anda sekarang akan memiliki editor teks terbuka dengan file kosong.
    10. Salin dan tempel kode di bagian bawah jawaban (berlabel '/usr/share/xsessions/multi.desktop:') ke Gedit.
    11. Simpan file, dan tutup Gedit.
    12. Mulai ulang. Ketika Anda masuk ke layar login, jika Anda melihat sesi yang tersedia (klik Logo Ubuntu kecil di sebelah nama pengguna Anda), Anda akan melihat yang disebut Multi-Sesi. Jika Anda masuk dengannya, program yang Anda masukkan dalam X Session Script akan terbuka secara otomatis.
  2. Menugaskan Program ke Ruang Kerja

    Ini juga cukup mudah, tetapi perlu beberapa perangkat lunak tambahan yang tidak diinstal di Ubuntu secara default.

    1. Instal compizconfig-settings-manager (Anda dapat menggunakan Pusat Perangkat Lunak, atau jalankan sudo apt-get install compizconfig-settings-managerdi Terminal).
    2. Buka Pengaturan CompizConfig dari Dash.
    3. Buka plugin 'Place Windows' (ada di bagian 'Window Management').
    4. Klik 'Baru' di bagian 'Windows dengan tampilan tetap'.
    5. Klik ikon 'Plus'.
    6. Tetapkan 'Ketik' sebagai 'Judul Jendela', dan masukkan judul jendela salah satu program di kotak 'Nilai'. Pastikan 'Relasi' disetel ke 'DAN', dan klik 'Tambah'.
    7. Atur ruang kerja dengan memasukkan angka di kotak 'X' dan 'Y'. Ketika Anda memiliki 4 ruang kerja untuk 'X', '1' adalah kiri dan '2' benar, dan untuk 'Y', '1' adalah di atas dan '2' di bawah. Melihat Anda memiliki 6 ruang kerja, tergantung pada cara mengaturnya, pengaturan 'Y' ke '3' akan memilih baris bawah, dan pengaturan 'X' ke '3' akan memilih kolom ke-3.
    8. Ulangi Langkah 4-7 untuk program yang tersisa yang ingin Anda tetapkan ruang kerja.
    9. Tutup Pengaturan CompizConfig.
  3. Masuk

    Ketika Anda masuk, Anda harus memberi tahu Ubuntu bahwa Anda ingin menggunakan Sesi X kustom Anda.

    1. Mulai ulang.
    2. Ketika Anda masuk ke layar login, jika Anda melihat sesi yang tersedia (klik Logo Ubuntu kecil di sebelah nama pengguna Anda), Anda akan melihat yang disebut Multi-Sesi. Jika Anda masuk dengannya, program yang Anda masukkan dalam X Session Script akan terbuka secara otomatis, dan ditugaskan ke ruang kerja yang Anda pilih.
  4. Masalah

    Cukup banyak yang bisa salah dengan ini, baik jika Anda membuat kesalahan kecil, atau jika saya membuat kesalahan ketika menulis jawaban ini. Jika ada yang tidak beres, pastikan Anda mengikuti instruksi pada surat itu, dan koreksi apa pun jika Anda belum. Jika Anda masih memiliki masalah, tinggalkan komentar.

~ / .customxsession:

#!/usr/bin/env bash
program-command-1 &
program-command-2 &
program-command-3 &
program-command-4 &
program-command-5 &
program-command-6 &
exec gnome-session

/usr/share/xsessions/multi.desktop:

[Desktop Entry]
Name=Multi-Session
Exec=/home/your-username/.customxsession
p0llard
sumber
1

Tambahkan aplikasi yang diperlukan dalam Program Aplikasi Starup Dan kemudian tambahkan skrip ini juga. Ini skrip saya: ManageWorkSpaces.sh

echo "Jeril"
wmctrl -r NetBeans IDE 7.1.1 -t 0
wmctrl -r /bin/bash -t 1
wmctrl -r Google Chrome -t 2
wmctrl -r jerilkuruvila - Skype™ -t 3

// fokus pada terminal

wmctrl -a NetBeans IDE 7.1.1   -t 0 

Tetapi saya tidak tahu tentang menangani 2 display.

jkuruvila
sumber
Hai Jeril! Selamat Datang di Tanya Ubuntu! Solusi Anda tidak bekerja untuk saya. Jika saya menjalankan wmctrl -d, saya hanya punya satu "desktop". Apakah Anda menguji ini pada Unity di Ubuntu 12.10?
Flimm
Halo Flimm, saya menggunakan wmctrl -r, saya punya 4 ruang kerja. Versi Ubuntu saya adalah 12,04
jkuruvila