Nếu bạn chạy màn hình riêng biệt trên mỗi màn hình (ít có khả năng những ngày này), biến DISPLAY
môi trường là những gì bạn muốn.
Nếu bạn sử dụng Xinerama (lây lan một màn logic trên nhiều màn hình), tuy nhiên:
- Ngoài: X11 từ vựng: Một "hiển thị" là một hoặc nhiều "màn hình" với các thiết bị đầu vào; ví dụ. bàn phím và chuột, a.k.a. là "chỗ ngồi". Một "màn hình" là một khung hợp lý được hiển thị một phần hoặc toàn bộ trên một hoặc nhiều "màn hình"; khi sử dụng nhiều màn hình cho một "màn hình", các cửa sổ có thể được hiển thị một phần trên mỗi màn hình, nhưng chia sẻ cùng một mã định danh X11
DISPLAY
; đây được gọi là Xinerama.Định dạng DISPLAY
là máy chủ:
display-number.
screen-id, do đó, ví dụ: trên thiết lập Xinerama của tôi, cả hai màn hình đều là một phần của màn hình 0
trên số hiển thị đếm từ 0
với mỗi người dùng đã đăng nhập trên cùng một máy chủ. "Ghế" là các nhóm hợp lý của màn hình + đầu vào đang sử dụng phần cứng khác nhau; nhiều "hiển thị" có thể xảy ra bằng cách sử dụng chuyển đổi "bảng điều khiển ảo", đó là cách Gnome và KDE cho phép nhiều người dùng đăng nhập trên một máy "ghế" duy nhất.
Hầu hết các bộ công cụ GUI cho phép bạn chỉ định hình ảnh của cửa sổ bằng cách sử dụng công tắc --geometry
hoặc -geometry
.
Qt sử dụng biểu mẫu MIT cũ hơn -geometry
. GTK +/Gnome sử dụng kiểu --geometry
theo kiểu GNU.
Giả định rằng bạn cho phép Qt xử lý dòng lệnh của bạn, ví dụ: chuyển số argv
vào QtApplication
hoặc tương tự.
"hiển thị logic" sẽ có độ phân giải là tổng các độ phân giải theo mỗi hướng sắp xếp màn hình của bạn. Ví dụ, tôi có màn hình 2 × 1920 × 1080 được nối ngay bây giờ. xrandr
báo cáo:
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 8192 x 8192
Để hiển thị một cửa sổ trên màn hình bên phải, tôi có thể cung cấp cho một chuỗi hình học có của nó x
phối hợp giữa những năm 1920 ... 3839 (bao gồm).
Định dạng thông thường là: rộngx
chiều cao±
x-bù đắp±
y bù đắp - nhưng chiều rộng và chiều cao là không bắt buộc, nếu bạn thích để có những giá trị mặc định. Số ±
là +
để tính tương đối so với trên cùng/bên trái hoặc -
để tính tương đối so với dưới cùng/phải.
Vì vậy, ví dụ:
gedit --geometry 800x600+1920+0 # set size at top-left of right screen
gedit --geometry +1920+100 # default size at top-left of right screen
gedit --geometry -0+0 # default size at top-right of entire display
Thật không may, chỉ tính chương trình Con đường tôi biết để xác định diện tích màn hình hiển thị trên mỗi màn hình từ vỏ sẽ được phân tích đầu ra từ xrandr
; ví dụ.
$ xrandr
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
1366x768 60.0 +
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
1920x1080 60.0*+
1680x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x720 60.0
1024x768 60.0
800x600 60.3
640x480 60.0
720x400 70.1
HDMI1 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 510mm x 287mm
1920x1080 60.0*+
1680x1050 59.9
1280x1024 60.0
1440x900 59.9
1280x720 60.0
1024x768 60.0
800x600 60.3
640x480 60.0
720x400 70.1
DP1 disconnected (normal left inverted right x axis y axis)
$ xrandr | perl -ne 'if (/(\d+)x(\d+)\+(\d+)\+(\d+)/) '\
> ' { print "$3,$4 - ", $3 + $1 - 1, ",", $4 + $2 - 1, "\n" }'
0,0 - 1919,1079
1920,0 - 3839,1079
(Bạn sẽ thường muốn tránh tách Perl one-liner giữa hai dòng trong vỏ, nhưng '\
... '
lừa có để làm cho nó dễ đọc trên SO.)
Hãy chỉ định đây có phải là ứng dụng đồ họa hay không, một giao diện điều khiển đơn giản và liệu điều này có sử dụng bất kỳ bộ công cụ nào như ncurses hay không. –
Điều này sẽ phụ thuộc vào trình quản lý cửa sổ của bạn và cách nó chọn vị trí hiển thị cửa sổ mới. – chepner
Khi bạn nói chạy tập tin thực thi của tôi trên màn hình khác. Tôi có hiểu chính xác, ứng dụng của bạn là ứng dụng dựa trên GUI không? bash không liên quan gì đến việc định vị trong trường hợp đó. Thư viện bạn đang sử dụng để tạo cửa sổ có thể có một số phương pháp để khóa vị trí cửa sổ. –