sudo를 통해 실행중인 Qt 응용 프로그램이 사용자 테마 / 글꼴 구성을 사용하도록 강제하는 방법은 무엇입니까?


0

여러분.

Qt5에서 응용 프로그램을 개발하고 있지만 낮은 수준의 하드웨어 액세스가 필요하므로 루트로 실행해야합니다. 내 대상 운영 체제는 데비안 (ARM) 및 우분투 (x86)입니다.

문제는 sudo를 통해 루트로 실행되는 모든 앱이 루트 설정과 환경을 사용하고 있다는 것입니다.

어떻게 든 Qt 앱을 일반 사용자와 동일한 테마 및 글꼴로 실행해야합니다.

어떻게 든 이것을 달성 할 수 있습니까? 추가 실행 매개 변수 및 명령으로 쉘 스크립트를 통해 실행하는 것과 같은가?

차이점을 보여주는 스크린 샷은 다음과 같습니다.

sudo를 통해 루트로 실행되는 Qt 앱

사용자로 실행되는 Qt 앱


2
더 나은 솔루션 IMHO : 하드웨어 종속 부품을 분리하고 API를 래핑 한 후 루트와 별도의 프로세스로 실행합니다. 그러면 Qt GUI 부분이 사용자로 실행될 수 있습니다. 또한 다른 UI (예 : 명령 줄)를 쉽게 추가 할 수 있습니다.
dirkt

두 번째 dirkt의 제안입니다. 또는 대안으로 필요한 POSIX 기능 (예 :)을 CAP_SYS_RAWIO실행 파일에 추가하고 실제로 필요한 프로그램 부분에서만 기능을 활성화하십시오. 참조하십시오 man 7 capabilities. GUI 프로그램을 루트로 실행하는 것은 일반적으로 이러한 종류의 사용에 대해 감사되지 않은 방대한 양의 소프트웨어 (예 : Qt)를 포함하므로 나쁜 생각으로 간주됩니다.
Johan Myréen

글쎄, 나는 API에서 모두를 다시 구현하는 위대한 개발자가 아닙니다. 몇 년 동안 C ++ CLI 앱을 개발했지만 Qt 구현에 새로운 기능입니다. signal11에 의해 hidapi 라이브러리를 사용하고 있습니다. 이는 주요 HW 레벨 구현입니다 (작은 사용자 정의 포함). 내 첫 번째 아이디어는 어떻게 든 udev 규칙과 같은 것을 통해 모든 USB HID 장치를 사용자로 여는 것을 허용했지만 너무 "일반적인"해결책을 찾지 못했습니다 ...
HeliTux

답변:


0

사용자 테마 ~/.themes는 루트가 보이지 않는 홈 디렉토리에 있습니다. 시스템 전체 테마는 항상에서 잘 작동합니다 /usr/share/themes.

터미널을 열고 다음을 입력 할 수 있습니다.

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

이 방법으로 루트 및 일반 사용자는 테마 디렉토리를 공유합니다.

필요한 경우 글꼴 및 아이콘 환경 설정에 대해서도 동일한 작업을 수행 할 수 있습니다.

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

유일한 단점은 루트 권한으로 응용 프로그램을 실행할 때 알려주는 시각적 신호가 없다는 것입니다.


불행히도 이것은 효과가 없습니다. Qt가 다른 곳에서 테마 데이터를 찾고있는 것 같습니다. 그 어쩌면 더 Qt는 코드가 관련이 있기 때문에 어쩌면 ...의 유래이 퀘스트를 게시 재고
HeliTux

이들은 테마가 아니라 Qt 스타일 일 수 있습니다. 이들은 ~/.config/QtProject/qtcreator/styles컴퓨터에 있습니다-컴퓨터에서 이것을 더 잘 확인하십시오. 이것이 실제로 올바른 폴더라면에 대해 위의 과정을 반복하십시오 ~/.config.
harrymc

0

불행히도 최근 배포판의 최신 Qt 버전에서는 불가능한 것 같습니다. 아치에 대한 이 링크 에 문제가 설명되어 있지만 제안 된 해결 방법은 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.