Có một môi trường máy tính để bàn thân thiện với nhiều màn hình có sẵn cho Ubuntu không?


14

Tôi sử dụng máy tính xách tay và thích di chuyển trong ngày từ nơi làm việc (vật lý) này sang nơi khác và kết nối với màn hình bên ngoài nếu có.

Tôi cũng phải đa nhiệm rất nhiều, vì vậy tôi có rất nhiều cửa sổ mở tại bất kỳ thời điểm nào và nhiều không gian làm việc (ảo) để sắp xếp chúng.

Nhưng mỗi lần tôi kết nối / ngắt kết nối màn hình ngoài, mọi sự sắp xếp cẩn thận của tôi đều biến mất. Điều này làm cho tôi thực sự điên .

Có một môi trường máy tính để bàn chỉ để các cửa sổ một mình khi bạn kết nối / ngắt kết nối màn hình thứ hai? Hoặc thậm chí tốt hơn, mà nhớ cách sắp xếp cửa sổ trên mỗi sắp xếp màn hình? Vì vậy, khi tôi đi từ văn phòng nhà của tôi (màn hình 17 "trên màn hình máy tính xách tay) đến nơi làm việc thông thường của tôi (màn hình 21" bên trái màn hình máy tính xách tay) hoặc bàn của đồng nghiệp của tôi (màn hình 19 "bên phải màn hình latop), cửa sổ kết thúc nơi chúng là lần cuối cùng màn hình được kết nối - hoặc ở lại nếu chúng không bao giờ nhìn thấy màn hình này.

Cách thống nhất "xử lý" màn hình bên ngoài chỉ khiến tôi buồn và ước rằng tôi không có tất cả những màn hình phụ đó để kết nối và một khi tôi kết nối, nó khiến tôi bị xiềng xích trong sự sắp xếp này, như thể tôi có một chiếc máy tính để bàn bị đóng đinh xuống sàn.


Điều này xảy ra với bất kỳ người quản lý cửa sổ? Gnome 3, KDE, LXDE, XFCE?
Braiam

Tôi không biết. Nó xảy ra với sự thống nhất.
artm

Bạn đã tìm thấy một giải pháp tốt cho việc này? Tôi đã bị buộc phải sử dụng máy tính xách tay Dell mà tôi đã cài đặt Ubuntu, nhưng tôi đã quen với MacBook Pro của mình. Trên máy Mac có một chương trình tên là Ở lại, không thể thiếu, vì nó nhớ các vị trí cửa sổ cho từng cấu hình màn hình. Cắm màn hình, tất cả các cửa sổ di chuyển đến nơi chúng ở. Cắm một màn hình thứ hai, tất cả chúng lại di chuyển. Rút phích cắm, tất cả quay trở lại nơi họ đang ở. Hơn nữa, Mac đủ thông minh ngay cả khi không ở lại để đảm bảo tất cả các cửa sổ đều hiển thị. Trên máy tính xách tay Ubuntu này, tôi liên tục phải tìm các cửa sổ tắt màn hình.
Greywire

Tôi không thể tìm thấy bất cứ điều gì như Ở lại trên linux. Có vẻ như bạn có thể nhận được tất cả thông tin và kiểm soát từ các lệnh riêng lẻ và các tập lệnh bên dưới đến gần. Tôi đang làm việc để cải thiện những thứ này để có được chức năng tôi cần ...
Greywire

Vẫn âm thanh như những gì tôi đang thiếu. Không, tôi chưa tìm thấy giải pháp.
artm

Câu trả lời:


10

Tôi đang cung cấp cho bạn hai kịch bản shell. Nó sẽ giúp bạn tiết kiệm sắp xếp các vị trí và kích thước cửa sổ . Nếu bằng cách nào đó các sắp xếp cửa sổ mong muốn của bạn bị xáo trộn, bạn sẽ có thể khôi phục các sắp xếp đó với kích thước và vị trí cửa sổ chính xác cho tất cả các cửa sổ bằng cách sử dụng các tập lệnh này.

Bạn cần phải cài đặt wmctrltrừ khi bạn đã có nó. Cài đặt qua thiết bị đầu cuối,

sudo apt-get install wmctrl

Script để lưu cấu hình windows

# Script_Name: save_window_conf.sh
#!/bin/bash
if [ -f $HOME/.my_windows_config.txt ]; then
    echo -e "Information: Previous configuration file \"$HOME/.my_windows_config.txt\" already exists.\nTo save a new configuration remove it manually using the following command,\n\n\trm $HOME/.my_windows_config.txt"
    exit 1
else
    wmctrl -p -G -l | awk '($2 != -1)&&($3 != 0)&&($NF != "Desktop")' | awk '{print $1}' | while read mywinid
    do
        xwininfo -id "$mywinid" >> $HOME/.my_windows_config.txt
    done
fi

Khi thực thi đoạn script trên sẽ lưu vị trí và kích thước cửa sổ của bạn cho tất cả các cửa sổ đang mở của bạn vào một tệp có tên .my_windows_config.txttrong thư mục chính của bạn. Nó là một tập tin văn bản ẩn.

Script để tải lại cấu hình windows

# Script_Name: load_window_conf.sh
#!/bin/bash

file=$HOME/.my_windows_config.txt
declare -a mywinid
declare -a x
declare -a y
declare -a width
declare -a height

nl=$(cat "$file" | grep xwininfo |wc -l)

for i in $(seq 1 $nl)
do
    mywinid[i]=$(cat "$file" | grep "xwininfo" | awk -v p="$i" '{if(NR==p) print $4}')
    x[i]=$(cat "$file" | grep "Absolute upper-left X" | awk -v p="$i" '{if(NR==p) print $NF}')
    y[i]=$(cat "$file" | grep "Absolute upper-left Y" | awk -v p="$i" '{if(NR==p) print $NF}')
    width[i]=$(cat "$file" | grep "Width" | awk -v p="$i" '{if(NR==p) print $NF}')
    height[i]=$(cat "$file" | grep "Height" | awk -v p="$i" '{if(NR==p) print $NF}')
done

for it in $(seq 1 $nl)
do
    wmctrl -i -r "${mywinid[$it]}" -e 0,"${x[$it]}","${y[$it]}","${width[it]}","${height[it]}"
done

Khi bạn thực thi tập lệnh thứ hai, nó sẽ khôi phục vị trí cửa sổ của bạn với kích thước chính xác cho tất cả các cửa sổ của bạn.

Sử dụng

Lưu các tập lệnh này trong $HOME/bin/thư mục của bạn . Thêm $HOME/bin/vào của bạn PATH. Đối với điều này, thêm những dòng này vào cuối của bạn$HOME/.bashrc

PATH=$HOME/bin:$PATH
export PATH

Nó sẽ cho phép bạn thực thi các tập lệnh chỉ với tên của họ. Cho phép thực thi tập lệnh,

chmod +x $HOME/bin/save_window_conf.sh
chmod +x $HOME/bin/load_window_conf.sh

Để lưu cấu hình trong của bạn $HOME/.my_windows_config.txt

Sau khi bạn mở và điều chỉnh tất cả các cửa sổ của bạn chạy trong thiết bị đầu cuối,

save_window_conf.sh

Để tải lại cấu hình từ $HOME/.my_windows_config.txt

load_window_conf.sh

Hy vọng nó sẽ giải quyết vấn đề của bạn. Đây là một ảnh chụp màn hình,

nhập mô tả hình ảnh ở đây


Wow, cảm ơn, điều này có vẻ đầy hứa hẹn. Tôi sẽ thử kịch bản.
artm

@artm Tôi đã chỉnh sửa một chút trục trặc và một lỗi đánh máy, bây giờ có vẻ ổn. Tôi đã thử nghiệm nó trên phiên Unity và Gnome-fallback, nên hoạt động trên gnome3. Hãy cho tôi biết nếu bạn phải đối mặt với bất kỳ vấn đề.
souravc

@artm nên là quyết định của bạn khi bạn muốn loại bỏ .my_windows_config.txt. Nếu bạn muốn tải cùng một cấu hình cửa sổ nhiều lần cho các cửa sổ hiện có, bạn có thể muốn bảo vệ nó. Nhưng nếu bạn bắt đầu một phiên hoàn toàn mới, các id cửa sổ đó sẽ khác và trong trường hợp đó tốt hơn là xóa tệp cấu hình cũ tại $HOME/.my_windows_config.txt. Bạn cần xóa tệp lưu cấu hình theo cách thủ công trước khi lưu cấu hình mới.
souravc

Trên XFCE4 trong Ubuntu 18.04, tôi đã phải thay đổi trọng lực (đầu tiên là "0" trong tham số -e) thành 31, nếu không các cửa sổ đã được khôi phục khoảng 31px ngay bên phải. Tôi nghĩ rằng đó có thể là kích thước của bảng XFCE mặc định. Cảm ơn mã!
akom

-1

Hướng dẫn chung ở đây: Nghị quyết

Các giải pháp của bạn về độ phân giải động gần với Xorg & XrandR hoặc Xinerama

Bạn có:
Bốn phương pháp để thiết lập

  1. Theo phiên với .xprofile.

  2. Tự động bằng cách sử dụng công cụ xrandr

  3. Tĩnh bằng cách đặt trong xorg.conf.

  4. GUI giao diện đồ họa Xrandr.

Câu trả lời hay là Cài đặt cho nhiều màn hình không được lưu trữ

Để khắc phục Quản lý cửa sổ của bạn trên các không gian làm việc của bạn, bạn có thể sử dụng hệ thống định hình được cung cấp bởi Compiz Config Manager


2
Tôi không gặp vấn đề với độ phân giải hoặc sắp xếp hiển thị - những công việc như mong đợi.
artm

Vì vậy, MỌI môi trường máy tính để bàn là THÂN THIỆN cho bạn. Đừng đổ lỗi cho công chúng, xin vui lòng.
nhanh chóng

Tôi không đổ lỗi cho bất cứ ai. Tôi chỉ muốn các cửa sổ mở ở lại nơi tôi đặt chúng khi kết nối / ngắt kết nối màn hình.
artm 2/214

Vì vậy, bạn có bốn giải pháp với tài liệu tham khảo chính thức. Câu trả lời của tôi bao gồm đầy đủ "sự điên rồ" của bạn;)
nhanh chóng

2
Ồ, hãy tự mình thử: mở một cửa sổ trên mỗi không gian làm việc sau đó kết nối một màn hình xuất hiện trên đỉnh của màn hình gốc và xem nơi các cửa sổ của bạn kết thúc. Sau đó cho tôi biết xrandr có liên quan như thế nào để ngăn các cửa sổ nhảy ngẫu nhiên khi màn hình được kết nối.
artm 2/214
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.