2014-06-10 15 views
4

현재 설정되어있는 아이콘 테마가 필요한 Vala (C 호환 언어)에 응용 프로그램을 작성하고 있습니다.
GTK + 또는 Qt가 종속성을 가지지 않도록하고 싶습니다.Icon 테마를위한 XSettings Manager를 쿼리하십시오.

나는 GTK + 3은 settings.ini을 가지고 있으며, GTK + 2는 .gtkrc-2.0 파일을 가지고 있지만, this에 따라 해당 파일이 더 XSettings 관리자가 실행되지 않는 경우에만 폴백 것을 알고있다.

XSettings Manager 및 it seems에 대한 정보를 찾으려고 시도했지만 XSettings는 데스크톱 환경에서 구현되는 사양 일뿐입니다. 가장 인기있는 구현은 아마도 그놈 - 설정 - 데몬를 격언하지만 lxsettings - 데몬 LXDE 또는 에서 (lxsession에 통합) XFCE의을 xfsettingsd 같은 다른 사람이있다.

이제 Net/IconThemeName 키의 값에 대해 XSettings 관리자를 쿼리하는 방법을 알아야합니다.

나는 this specification을 찾았지만 꽤 이해하지 못합니다. (전에 Xlib과 함께 일한 적이 없습니다.)
내가 필요한 것인가? 나는 XSettings 관리자 사양을 구현하고 싶지 않아,하지만 난 현재 설정되어있는 아이콘 테마 현재 실행중인 구현을 조회 할 :


은 명확합니다.

아무도 이해할 수 있습니까? the spec? 나에게 다소 혼란스러워 보입니다.

아니면 완전히 잘못하고 있습니까?

+0

아이콘 테마를 사용하는 응용 프로그램의 종류는 무엇입니까? Gtk + 또는 Qt (X11은 직접적으로 명백하게 보이지 않습니다)? 그것은 아이콘 테마로 무언가를하는 명령 줄 도구입니까? 어쩌면 테마 이름을 명령 줄 매개 변수로 사용할 수 있을까요? –

+0

GTK 또는 Qt를 사용하는 응용 프로그램에서 사용하는 라이브러리를 작성하고 있습니다. (havent가 결정되었습니다 - 둘 다 알고 있습니다). 하지만 IconTheme 정보가 라이브러리 안에 있어야합니다. 나는 라이브러리를 사용하는 응용 프로그램에서 정보를 얻는 것이 불가능하지 않을 것에 동의합니다. 하지만 느린 파이썬 GUI에서 데이터를 가능한 한 최상으로 분리하고 싶습니다. – Ansgar

답변

2

XSettings에 액세스하기위한 C 인터페이스를 제공하는 libxsettings-client라는 라이브러리가 있습니다. API를 Vala로 포팅해야 할 것입니다.이 API는 얼마나 작습니까 (< 70 행). Vala에 이미 포함되어있는 x11.vapi에 의존합니다. 이식하는 방법에 대한 정보는 binding legacy APIs을보십시오.

+0

libxsettings-client는 약간의 작업 또는 적어도 몇 가지 주석을 사용할 수 있습니다.나는 vala에 [code] (http://libxsettings-client.sourcearchive.com/documentation/0.17-5/dir_2c2fea91bd7e08e5275e65154a8842df.html) 구현을 끝내었다. 나는 값들을 읽는 것만으로 (그리고 그것들을 바꾸지 않기 때문에) 나는 그 978 라인들을 ~ 120 라인의 vala 코드로 압축 할 수 있었다. 올바른 방향으로 나를 가리켜 주셔서 감사합니다 :) – Ansgar

2

xsettingsd 패키지에서 dump_xsettings 명령을 실행할 수 있습니다 (libxsettings-client가이 패키지의 일부라고 생각합니다). 나는 GNOME 설정 데몬과 unity-settings-daemon이 dbus 인터페이스도 공개한다고 믿지만 xsettings manager agnostic이 되려면 _XSETTINGS_S0 소유자의 _XSETTINGS_SETTINGS 속성에서 값을 읽고 (수동으로 또는 libxsettings를 통해) 결과를 구문 분석해야합니다. 형식은 실제로 복잡하지는 않지만 모든 키가 단일 창 속성에 저장되어 있고 모든 키를 읽고 디코딩한다는 점을 명심해야합니다 (하나를 변경하려면 모든 키를 직렬화해야 함)

+0

btw xsettings 이진 데이터에 대한 자바 스크립트 serializer/deserializer 썼습니다 - https://github.com/sidorares/x11-xsettings/blob/master/index.js –