カスタムQT / X11アプリケーションをデスクトップの背景として使用して組み込み設定を構築する

カスタムQT / X11アプリケーションをデスクトップの背景として使用して組み込み設定を構築する

私は組み込み設定に使用されるQT5(X11用)でカスタムアプリケーションを作成しています。システムが起動すると、システムは自分のアプリケーションで起動することを望みます。アプリケーションのメインウィンドウは実際にデスクトップの背景であり、他のウィンドウはその上に開き、通常のウィンドウ管理機能を使用できる必要があります。

システムはDebian Busterに基づいています。これを達成するには、どのようにコンポーネントを組み合わせる必要がありますか?

ベストアンサー1

このパズルには、ウェルカムプログラム(私はsddmを使用しています)、ウィンドウマネージャ(私はopenboxを使用しています)、アプリケーション自体など、いくつかの作品があります。

最初はアプリケーション自体です。ウィンドウマネージャに、ウィンドウがデスクトップの背景であることを知らせる必要があります。これは詳細を見つけるのが最も難しい部分ですが、最終的にpcmanfm-qtのソースコードを見て、いくつかの実験を行った後、Googleで検索してみてください。私を見つけた定数のうちスタックオーバーフローに関する質問。私はメインウィンドウのコンストラクタで次のコードを使用しました。従来の方法でアプリケーションを実行し続けるために、コマンドラインパラメータの後にこのコードを配置しました。

setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setAttribute(Qt::WA_X11NetWmWindowTypeDesktop);
setFixedSize(QApplication::desktop()->size());

注:画面に合わないように「デスクトップウィンドウ」を拡張することを決定したレイアウトマネージャを使用するまで、元のsetFixedSizeの代わりに「サイズ調整」を使用していました。

挨拶、ウィンドウマネージャ、およびマイアプリケーションを一緒にリンクするには、カスタム「セッション」を定義する必要があります。これを2つのファイルで行います。 1つ目は/usr/bin/starthhsにあるシェルスクリプトです。

#!/bin/bash
openbox --startup '/home/ubilinux/cvx86/gui asdesktop'

2番目は/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=

おすすめ記事