Khởi chạy chương trình với GUI mà không cần trình quản lý hiển thị


9

Tôi đã nghe nói rằng có một cách khởi chạy các chương trình với giao diện đồ họa mà không cần trình quản lý hiển thị - ngay từ thiết bị đầu cuối. Đây có phải là thật và nếu vậy, làm thế nào tôi có thể làm điều đó?


Bạn có cần phải tương tác với GUI không?
Daniel B

@DanielB yeah, có lẽ
Ben

1
Bạn có thể chạy chúng mà không có trình quản lý hiển thị, nhưng bạn cần một phiên X đang chạy. Bạn đang sử dụng bản phân phối nào? Bạn đã cài đặt máy chủ X chưa? Bạn có thể chạy xinithay startxkhông?
terdon

@terdon yeah, tôi hiện đang chạy lmint, nhưng câu hỏi dành cho kiến ​​thức chung hơn (không phải mục tiêu phân phối).
Ben

Câu trả lời:


5

Bạn có thể chạy chúng mà không có trình quản lý hiển thị, nhưng bạn cần một phiên X đang chạy. Các chi tiết sẽ phụ thuộc vào phân phối của bạn nhưng bạn sẽ có thể có được một phiên X tối thiểu với một thiết bị đầu cuối bằng cách chạy

xinit

Tôi đã không làm điều này trong nhiều năm nhưng, lần trước tôi đã làm, điều đó sẽ mang lại một cái gì đó như thế này:

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

Khi đó, bạn có thể chạy một chương trình GUI bình thường, tốt nhất là bằng cách khởi chạy nó trong nền (với &) để bạn không mất quyền truy cập vào thiết bị đầu cuối duy nhất của mình.


2
Điều đáng nói là "chạy chúng bình thường" rất có thể sẽ liên quan đến việc làm nền cho quá trình, vì vậy rất có thể bạn muốn sử dụng xterm &để có thêm một thiết bị đầu cuối, không chỉ xterm. V.v.
một CVn

6

Dưới đây là những điều cơ bản để chạy một ứng dụng GUI không đầu, với cách ( vnc) để kết nối với nó. Hoạt động trên RHEL7Centos 7, với gia đình. Và tách ra khỏi hình ảnh Docker của riêng tôi mà tôi sử dụng cho Crashplan tại https://github.com/xseng/dockerfiles/tree/master/crashplan/ (xem Dockerfileđể thiết lập và init/setupđể khởi động.

# Needed environment variables
export DISPLAY=:99.0
export SCREEN_WIDTH=1200
export SCREEN_HEIGHT=960
export SCREEN_DEPTH=24
export GEOMETRY="${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH}"

# Needed packages
yum install -y xorg-x11-server-Xvfb x11vnc gtk2 xorg-x11-fonts-*

# Set a password (if variable vncpass is sat, else its `secret`)
mkdir -p ~/.vnc && x11vnc -storepasswd ${vncpass:-secret} ~/.vnc/passwd

# Start up the fake display and run the application you want (the `java ...` part)
xvfb-run --server-args="$DISPLAY -screen 0 $GEOMETRY -ac +extension RANDR" java .... > log/ui_output.log 2> log/ui_error.log &

# Wait for the app to start, or else, the vnc server will die before starting
sleep 5

# vnc itself
x11vnc -forever -usepw -shared -rfbport 5900 -display $DISPLAY

Bây giờ bạn có thể kết nối với máy chủ: 5900 và xem ứng dụng.


3

Đúng. Chỉ cần làm những điều tương tự một người quản lý hiển thị làm. Ngoài màn hình đăng nhập đồ họa (mà bạn không cần trong trường hợp này), trình quản lý hiển thị chỉ thực hiện hai điều:

  1. Đầu tiên, nó khởi động một "máy chủ hiển thị" X11, chẳng hạn như Xorg,
  2. sau đó bắt đầu "khách hàng" cho Xorg biết những gì và nơi để vẽ.

Bạn có thể sử dụng các công cụ như startxđể bắt đầu X11 theo cách tương tự từ đăng nhập bảng điều khiển; nó sẽ khởi chạy Xorg theo sau bởi các máy khách được liệt kê trong ~/.xinitrctệp của bạn .

Ví dụ: tệp .xinitrc có thể có startkdehoặc gnome-sessionhoặc có thể liệt kê các thành phần riêng lẻ (trình quản lý cửa sổ, bảng điều khiển / thanh tác vụ, máy tính để bàn ...)

(Lưu ý rằng có một số khác biệt giữa xinitstartx- thông thường bạn nên sử dụng cái sau, vì một số bản phân phối có một vài phần cấu hình quan trọng mà xin xin đơn giản sẽ bỏ qua, cụ thể là xserverrctập lệnh.)

Với Wayland, máy tính để bàn và bảng điều khiển là một phần tích hợp của "nhà soạn nhạc", do đó toàn bộ giao diện bắt đầu trong một bước duy nhất mà không cần các công cụ bổ sung. Ví dụ: bạn có thể chạy westonhoặc bắt đầu sử dụng Gnome gnome-session --session=gnome-wayland.


1

Bạn có thể khởi chạy các ứng dụng X bằng chuyển tiếp ssh X (ssh -X; có thể cần phải được bật trong cấu hình máy chủ), miễn là bạn có màn hình X cục bộ .

Ứng dụng sẽ khởi chạy và hiển thị cục bộ, trong khi chạy trên hệ thống không đầu. Bạn sẽ cần cài đặt X trên hệ thống không đầu để có thư viện phù hợp và điều này có thể không hoạt động với các ứng dụng Gnome hiện đại hơn.

Bạn cũng có thể sử dụng $DISPLAYđể khởi chạy ứng dụng trên màn hình X đính kèm ngay cả khi vỏ của bạn là một điều khiển từ xa (ssh hoặc console). Nếu bạn đã root và người đăng nhập trên màn hình X không, bạn có thể ghi đè xauthbảo mật và bật lên một cửa sổ trên màn hình của họ. Điều này cũng hoạt động nếu bạn có hai máy chủ hiển thị X khác nhau trên các màn hình khác nhau.

Một poster khác đề cập đến VNC; Tôi cũng đã sử dụng NX cho mục đích này và tôi thích nó hơn.


Câu trả lời không liên quan, nhưng hữu ích
Ben
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.