저는 임베디드 설정에 사용될 QT5(X11용)에서 사용자 정의 애플리케이션을 작성 중입니다. 시스템이 부팅될 때 시스템이 내 응용 프로그램으로 부팅되기를 원하며 응용 프로그램의 기본 창은 실제로 데스크탑 배경이고 다른 창은 그 위에 열려야 하며 일반 창 관리 기능을 사용할 수 있어야 합니다.
시스템은 Debian Buster를 기반으로 합니다. 이를 달성하려면 어떻게 구성 요소를 조합해야 합니까?
답변1
이 퍼즐에는 환영 프로그램(저는 sddm을 사용합니다), 창 관리자(저는 openbox를 사용합니다), 애플리케이션 자체 등 여러 조각이 있습니다.
첫 번째는 애플리케이션 자체입니다. 우리는 창 관리자에게 우리 창이 바탕 화면 배경임을 알려야 합니다. 이것이 세부 정보를 찾는 가장 어려운 부분이지만 결국 pcmanfm-qt의 소스 코드를 살펴보고 몇 가지 실험을 수행한 후 Google에서 검색해 보세요. 나를 찾은 상수 중스택 오버플로에 대한 질문. 나는 메인 창의 생성자에서 다음 코드를 사용했습니다. 전통적인 방식으로 애플리케이션을 계속 실행할 수 있도록 명령줄 매개변수 뒤에 이 코드를 넣었습니다.
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setAttribute(Qt::WA_X11NetWmWindowTypeDesktop);
setFixedSize(QApplication::desktop()->size());
참고: 화면에 맞지 않도록 "데스크톱 창"을 확장하기로 결정한 레이아웃 관리자를 사용하기 전까지는 원래 setFixedSize 대신 "크기 조정"을 사용했습니다.
인사말, 창 관리자 및 내 응용 프로그램을 함께 연결하려면 사용자 정의 "세션"을 정의해야 합니다. 이 작업을 두 개의 파일로 수행합니다. 첫 번째는 /usr/bin/starthhs에 있는 쉘 스크립트입니다.
#!/bin/bash
openbox --startup '/home/ubilinux/cvx86/gui asdesktop'
두 번째는 /usr/share/xsessions/handheldhyperspec.desktop에 있는 "데스크톱 파일"입니다.
[Desktop Entry]
Type=Application
Exec=starthhs
TryExec=starthhs
Name=Handheld hyperspec
Comment=Handheld hyperspec
마지막으로 새로 정의된 세션에 자동으로 로그인하도록 인사말을 구성해야 합니다. 이를 위해 다음 내용으로 /etc/sddm.conf.d/autologin 파일을 만들었습니다.
[Autologin]
User=root
Session=handheldhyperspec.desktop
Relogin=