sudo経由で実行されているQtアプリケーションにユーザーテーマ/フォント設定を使用させるにはどうすればよいですか?


0

みんな。

Qt5でアプリケーションを開発していますが、低レベルのハードウェアアクセスが必要なため、rootとして実行する必要があります。私のターゲットオペレーティングシステムは、Debian(ARM)とUbuntu(x86)です。

問題は、ルートとして(sudo経由で)実行されるすべてのアプリがルート設定と環境を使用していることです。

通常のユーザーと同じテーマとフォントでQtアプリを強制的に実行する必要があります。

どういうわけかこれを達成することは可能ですか?追加の実行パラメーターとコマンドを使用してシェルスクリプト経由で実行するのが好きですか?

違いを示すスクリーンショットは次のとおりです。

sudo経由でrootとして実行されているQtアプリ

ユーザーとして実行されているQtアプリ


2
より良いソリューション私見:ハードウェアに依存する部分を分割し、APIでラップし、ルートとして別のプロセスとして実行します。その後、Qt GUIパーツをユーザーとして実行できます。また、コマンドラインなどの他のUIを簡単に追加できます。
-Dirkt

ダークトの提案を2回目にします。または、代わりに、必要なPOSIX機能(例:)をCAP_SYS_RAWIO実行可能ファイルに追加し、実際に必要なプログラムの部分でのみ機能を有効にします。をご覧くださいman 7 capabilities。GUIプログラムをルートとして実行することは、この種の使用について監査されていない膨大な量のソフトウェア(たとえばQt)が含まれているため、一般に悪い考えと見なされます。
ヨハンMyréen17年

まあ、私はAPIですべてを再実装するのにそれほど素晴らしい開発者ではありません。私はC ++ CLIアプリを数年開発しましたが、Qt実装にはまったく新しいものです。私はsignal11によってhidapiライブラリを使用しています。これはメインのHWレベルの実装です(私の小さなカスタマイズを使用)。私の最初のアイデアは、何らかの形でudevのルールのようなものを介してユーザとしてすべてのUSB HIDデバイスを開く許可するようにしたが、いずれあまりにも「一般的な」解決策を見つけていない、まだ...
HeliTux

回答:


0

ユーザーテーマは~/.themesホームディレクトリにあり、rootはこのディレクトリを探しません。システム全体のテーマはから常に正常に動作し/usr/share/themesます。

ターミナルを開いて次のように入力できます。

sudo ln -s ~/.themes /root/.themes

この方法で、rootユーザーと通常のユーザーはテーマディレクトリを共有します。

必要に応じて、フォントとアイコンの設定にも同じことを行うことができます。

sudo ln -s ~/.icons /root/.icons
sudo ln -s ~/.fonts /root/.fonts

唯一の欠点は、root権限でアプリケーションを実行しているときに通知する視覚的なキューがないことです。


残念ながら、これは効果がありません。Qtはどこか別のテーマデータを探しているようです。Qtコードがより関連している可能性があるため、このクエストをstackoverflowに投稿することを再検討するかもしれません
。--HeliTux

これらはテーマではなく、Qtスタイルです。これらは次のようなものに存在します~/.config/QtProject/qtcreator/styles-これをコンピューターで確認してください。これが実際に正しいフォルダーである場合は、上記に対して上記を繰り返してみてください~/.config
harrymc

0

残念ながら、最近のディストリビューションの新しいQtバージョンでは不可能なようです。このリンクではArchの問題が説明されていますが、Ubuntu / Debianで回避策が機能しないことが示唆されています。

しかし、回避策が見つかりました。ルートQtアプリケーションで(すべてのマシンで)100%の静的設計が必要な場合は、おそらくはるかに優れています。

アプリケーションのカスタムQtスタイルシートとカスタムスタイルを指定する必要があります。

sudo ./QtApplication -style Adwaita -stylesheet=./stylesheet.css

システムで利用可能なスタイルは/ usr / lib / x86_64-linux-gnu / qt5 / plugins / styles /にあります。私の場合、利用可能なスタイルはAdwaita、Breeze、およびOxygenです。これらのスタイルは、プッシュボタン、リスト、ダイヤルなどのUI要素のスタイルにのみ影響します。カスタムUIの色とフォントを適用するために、カスタムスタイルシートを使用しました。QtCreator向けのこのカスタムスタイルシートに基づいて独自に作成しました

アイコンのテーマの適用方法もわかりませんが、私の場合は大したことではありません。

これにより、ローカルのスタイルとフォントがどのように設定されていても、完全にカスタム指定されたデザインでアプリが実行されます。ユーザーとルートで使用できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.