Làm cách nào để tập lệnh để mở một tập hợp các chương trình trên mỗi không gian làm việc cụ thể?


35

Tôi nhìn xung quanh một lúc và không thể tìm ra câu trả lời cho vấn đề sau:

Tôi có một thiết lập sáu máy tính để bàn trên Ubuntu 12.04 với Unity. Khi bắt đầu, mỗi buổi sáng, tôi trải qua một thói quen mở cùng năm hoặc sáu chương trình. Tôi mở từng cái trên một không gian làm việc cụ thể. Tôi muốn có tự động này. Có cách nào để kịch bản hoặc cấu hình này?

Câu hỏi thêm : Để làm phức tạp thêm vấn đề, tôi đang chạy hai màn hình ở chế độ xem đôi. Tôi thực sự cần phải bắt đầu mỗi chương trình trên một màn hình cụ thể, tốt nhất là ở chế độ toàn màn hình.


1
Bạn có thể thấy điều này hữu ích. Nó trỏ đến wmctrl, nhưng tôi đã không sử dụng nó: movingtofreedom.org/2010/08/10/...
RobotHumans

điều này có thể hữu ích Askubfox.com/questions/87002/ trộm
Suhaib

1
Đến với điều này từ một góc nhìn rất đơn giản, có lý do nào khiến bạn không thể rời khỏi máy ở chế độ treo khi bạn rời khỏi không? Tôi nghĩ rằng nó sẽ là một sửa chữa nhanh chóng cho bạn trong khi bạn đang tìm một giải pháp lâu dài hơn ...
Adeyfk

Khi bạn nói máy tính để bàn, bạn có nghĩa là một không gian làm việc?
p0llard

Các hoạt động KDE có thể có thể làm điều này.
Ốc cơ khí

Câu trả lời:


20

Ý tưởng sử dụng compizconfig của jdp407 sẽ liên kết một ứng dụng cụ thể với một không gian làm việc cụ thể để MỌI THỜI GIAN mà ứng dụng được mở, nó được đặt trong không gian làm việc tương ứng. Nếu điều này không mong muốn, bạn có thể làm như sau:

1) Cài đặt wmctrl

sudo apt-get install wmctrl

2) Tạo một tệp có nội dung sau đây và làm cho nó có thể thực thi được

#!/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) Gọi tập lệnh này từ .xsessionrctrong thư mục chính của bạn [nếu bạn có thể phải tạo tệp này] để tự động hóa quy trình tại mỗi lần đăng nhập. Hoặc bạn chỉ có thể gọi nó từ một thiết bị đầu cuối khi cần thiết. EDIT: Đặt nó trong "Ứng dụng khởi động", không phải .xsessionrc. .xsessionrc sẽ thực thi ngay cả trước khi môi trường máy tính để bàn tải xong.


Bạn có thể muốn tạo một xsession tùy chỉnh theo đề xuất của jdp407, để bạn có hai phiên để chọn, một phiên sẽ tự động mở các ứng dụng này và một phiên không. Nhưng điều đó dường như không cần thiết với tôi.


Nếu bạn cảm thấy việc chuyển sang không gian làm việc, mở các ứng dụng phù hợp và sau đó chuyển sang tiếp theo sẽ tốn thời gian, bạn có thể mở tất cả các ứng dụng trong một lần chụp, sau đó di chuyển các cửa sổ bằng cách sử dụng wmctrl. Ví dụ

wmctrl -r 'Firefox' -t 1

sẽ chuyển một cửa sổ có Firefox trong tiêu đề của nó sang không gian làm việc 1. Nếu có nhiều hơn một cửa sổ, cửa sổ đầu tiên trong danh sách các cửa sổ được quản lý wmctrlsẽ được di chuyển. Bạn sẽ cần phải biết tiêu đề của các cửa sổ sẽ được tạo bởi các ứng dụng để sử dụng cái này. Đó là lý do tại sao tôi không đề xuất đây là lựa chọn chính. Nếu các tiêu đề sẽ không rõ ràng như trường hợp của các ứng dụng được sử dụng phổ biến nhất thì đây là cách để đi.


Mở ứng dụng ở chế độ toàn màn hình:

Một số ứng dụng như gnome-terminal có các đối số dòng lệnh để mở cửa sổ ở trạng thái tối đa hoặc ở chế độ toàn màn hình. Nếu các tùy chọn như vậy tồn tại sử dụng chúng. Nếu không thì sử dụng wmctrlnhư sau

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

Điều này tối đa hóa cửa sổ đầu cuối (đã tồn tại) của tôi.

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

Điều này sẽ gửi cửa sổ đến chế độ toàn màn hình.


Đi qua wmctrltrang người đàn ông. Bạn có thể tìm thấy sử dụng cho nhiều chức năng của nó.


1
Rõ ràng sử dụng wmctrl để chọn không gian làm việc không hoạt động trong các bản phân phối sau Lynx. Tùy chọn '-s' chỉ có thể được đặt thành '0', hoặc nó sẽ gây ra lỗi hoặc không làm gì cả. Nguồn: movetofreedom.org / 2010/08/10 / Từ
p0llard

Tôi sử dụng 12.04 với unity2d (không có hiệu ứng hình ảnh) và nó hoạt động với tôi. Có vẻ như nó sẽ không hoạt động với hiệu ứng hình ảnh được kích hoạt.
S Prasanth

wmctrlhoạt động tốt ở đây (LXDE và XFCE, kết hợp thông qua xcompgr được bật)
Glutanimate

Làm việc cho tôi trong Mint 14 với Cinnamon, cảm ơn!
k102

Trong Ubuntu 14.04, sử dụng wmctrl -o X,Yđể di chuyển đến một khung nhìn cụ thể. Nếu bạn có nhiều màn hình, bạn có thể di chuyển các ứng dụng sang màn hình khác bằng cách sử dụng wmctrl -r "App name" -e G,X,Y,W,H. Hoạt động tốt với hiệu ứng hình ảnh thống nhất.
Nate

10

Có hai "vấn đề" ở đây: vấn đề thứ nhất liên quan đến việc mở một bộ chương trình cụ thể khi bạn đăng nhập; thứ hai liên quan đến việc làm cho chúng mở trên các không gian làm việc cụ thể. Tôi sẽ giải quyết cả hai cách riêng biệt:

  1. Tạo một phiên X tùy chỉnh

    Điều này khá dễ dàng để làm. Bạn chỉ cần tạo một X Script Script, sau đó báo cho LightDM sử dụng nó. Bạn sẽ cần biết các lệnh để khởi chạy các chương trình bạn muốn từ thiết bị đầu cuối.

    1. Mở Terminal.
    2. Nhập touch ~/.customxsessionvà nhấn enter.
    3. Nhập gedit ~/.customxsessionvà nhấn enter.
    4. Bây giờ bạn sẽ có một trình soạn thảo văn bản mở với một tệp trống.
    5. Bạn cần xác định Phiên X trong tệp này. Tôi đã tạo một mẫu 'điền vào chỗ trống' ở cuối câu trả lời. Tôi nghĩ Ubuntu sử dụng phiên gnome như trình quản lý cửa sổ, nhưng tôi có thể sai. Tôi không thể kiểm tra nó tại thời điểm này (máy tính xách tay bị hỏng) vì vậy nếu nó không hoạt động như mong đợi (ví dụ: tải Gnome thay vì Unity), bạn có thể cần thực hiện một số nghiên cứu.
    6. Lưu tệp và đóng Gedit.
    7. Nhập touch /usr/share/xsessions/multi.desktopvà nhấn enter.
    8. Nhập gedit /usr/share/xsessions/multi.desktopvà nhấn enter.
    9. Bây giờ bạn sẽ có một trình soạn thảo văn bản mở với một tệp trống.
    10. Sao chép và Dán mã ở cuối câu trả lời (được gắn nhãn '/usr/share/xsimes/multi.desktop:') vào Gedit.
    11. Lưu tệp và đóng Gedit.
    12. Khởi động lại. Khi bạn đến màn hình đăng nhập, nếu bạn xem các phiên có sẵn (nhấp vào Logo Ubuntu nhỏ bên cạnh tên người dùng của bạn), bạn sẽ thấy một phiên gọi là Nhiều phiên. Nếu bạn đăng nhập bằng nó, các chương trình bạn đặt trong X Script Script sẽ tự động mở.
  2. Chỉ định chương trình cho không gian làm việc

    Điều này cũng khá dễ dàng, nhưng nó cần một số phần mềm bổ sung không được cài đặt trong Ubuntu theo mặc định.

    1. Cài đặt compizconfig-settings-manager (bạn có thể sử dụng Trung tâm phần mềm hoặc chỉ cần chạy sudo apt-get install compizconfig-settings-managertrong Terminal).
    2. Mở Cài đặt CompizConfig từ Dash.
    3. Mở Plugin 'Đặt Windows' (trong phần 'Quản lý cửa sổ').
    4. Nhấp vào 'Mới' trong phần 'Windows với chế độ xem cố định'.
    5. Nhấp vào biểu tượng 'Plus'.
    6. Đặt 'Loại' là 'Tiêu đề cửa sổ' và nhập tiêu đề cửa sổ của một trong các chương trình trong hộp 'Giá trị'. Đảm bảo 'Mối quan hệ' được đặt thành 'VÀ' và nhấp vào 'Thêm'.
    7. Đặt không gian làm việc bằng cách nhập số vào hộp 'X' và 'Y'. Khi bạn có 4 không gian làm việc cho 'X', '1' ở bên trái và '2' ở bên phải và đối với 'Y', '1' là trên cùng và '2' ở dưới cùng. Xem như bạn có 6 không gian làm việc, tùy thuộc vào cách mọi thứ được thiết lập, đặt 'Y' thành '3' sẽ chọn hàng dưới cùng và đặt 'X' thành '3' sẽ chọn cột thứ 3.
    8. Lặp lại các bước 4-7 cho các chương trình còn lại mà bạn muốn chỉ định không gian làm việc.
    9. Đóng Cài đặt CompizConfig.
  3. Đăng nhập

    Khi bạn đăng nhập, bạn cần thông báo cho Ubuntu rằng bạn muốn sử dụng Phiên X tùy chỉnh của mình.

    1. Khởi động lại.
    2. Khi bạn đến màn hình đăng nhập, nếu bạn xem các phiên có sẵn (nhấp vào Logo Ubuntu nhỏ bên cạnh tên người dùng của bạn), bạn sẽ thấy một phiên gọi là Nhiều phiên. Nếu bạn đăng nhập bằng nó, các chương trình bạn đặt trong X Script Script sẽ tự động mở và được gán cho các không gian làm việc bạn đã chọn.
  4. Các vấn đề

    Khá nhiều điều có thể đã sai với điều này, hoặc nếu bạn mắc một lỗi nhỏ hoặc nếu tôi đã mắc lỗi khi viết câu trả lời này. Nếu có lỗi xảy ra, hãy đảm bảo bạn đã làm theo hướng dẫn của bức thư và sửa bất cứ điều gì nếu bạn không có. Nếu bạn vẫn có một vấn đề, hãy để lại nhận xét.

~ / .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/xsimes/multi.desktop:

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

1

Thêm các ứng dụng cần thiết trong Chương trình StarupAppluggest Và sau đó thêm tập lệnh này. Đây là kịch bản của tôi: 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

// tập trung vào thiết bị đầu cuối

wmctrl -a NetBeans IDE 7.1.1   -t 0 

Nhưng tôi không có ý tưởng về việc xử lý 2 màn hình.


Xin chào! Chào mừng bạn đến hỏi Ubuntu! Giải pháp của bạn không hiệu quả với tôi. Nếu tôi chạy wmctrl -d, tôi chỉ có một "máy tính để bàn". Bạn đã thử nghiệm điều này trên Unity trong Ubuntu 12.10 chưa?
Flimm

Xin chào Flimm, tôi đang sử dụng wmctrl -r, tôi có 4 không gian làm việc. Phiên bản Ubuntu của tôi là 12.04
jkuruvila
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.