2012-10-28 3 views
45

그놈 3 바탕 화면의 레이아웃을 사용자 지정하라는 요청을 받았습니다. 분명히 그 방법은 "확장 기능"을 작성하는 것입니다.GNOME 셸 확장자 작성을위한 문서

나는 내가하고 싶었던 것들을 할 수 있었지만, 완전히 굶주림을 느꼈다.. 유용한 서류가 없습니다. . 나는 내 인생의 을 낭비하여 유용한 정보를 찾기 위해 필사적으로 모든 상상할 수있는 검색어를 검색했습니다.

그놈 웹 사이트는 수백 개의 다운로드 용 확장자가입니다. 이들은 사소한 3- 라이너가 아닙니다. 그것들은 정교한 코드 조각입니다. 그것은 누구나 문서를 작성하는 방법을 설명하는 문서없이이 글을 쓸 수 있다는 믿음을 무시합니다.

누군가 실제 문서가 어디에 있는지 말해 줄 수 있습니까? 지금까지 내가 해왔 던 가장 좋은 방법은 기존의 확장 기능을 분해하여 내가 관심있는 특정 비트를 수행하는 마법 명령을 추적하는 것입니다 (쉬운 작업은 아닙니다!)

명령 이름, 개체 경로 , 예제 프로그램, 무엇이든 도움이 될 것입니다!

답변

52

나는 최근에 직접 파고 들었다. 설명서는 대부분 사용할 수 없거나 구형입니다. 여기에 나를 도와 일부 소스 (개발을 통해) 시작하는됩니다

설명서가 거의 없거나 최신이므로 개 소스를 많이 읽어야합니다 (). 위의 그놈 - 셸 소스 (자바 스크립트 부분)는 In-official 문서에서 다루지 않는 부분으로 다이빙 할 때 가장 좋은 방법입니다.

extensions.gnome.org은 당신이 만들고자하는 것과 비슷한 일을하는 확장 기능을 확인하고 그 소스를 봅니다 (대부분 GitHub 또는 Bitbucket의 오픈 소스입니다.) 또한 설치해서 찾을 수 있습니다. 출처 : ~/.local/share/gnome-shell/extensions/).

특정 기능에 대한 설명서 또는 설명서를 검색 할 때 설명서에서 다른 언어로 된 바인딩을 참조 할 수도 있습니다 (매개 변수와 반환 값이 일치하지 않을 수도 있음).

루킹이 특히 도움이되지 않습니다 :


마지막으로, 여기에 몇 가지 디버깅 조언입니다. 예외 (설명) 한 줄만 표시하며 시작 시간 (확장 프로그램이 처음 시작될 때)에 발생하는 경우에만 표시됩니다.

전체 StackTraces 및 런타임 예외의 경우 ~/.xsession-errors -file을 참조하십시오. 그것은 아주 길고 비 대한일지도 모릅니다. 나는 그것을 읽는이 handy script를 사용 그놈 3.6 이후, 당신은 디스플레이 매니저로 gdm를 사용하는 경우

# Grabs the last session-errors from the current X11 session. 
# This includes full Stack-Trace of gnome-shell-extension errors. 
# See https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial#lookingGlass 
tail -n100 ~/.cache/gdm/session.log | less 

것으로, 현재 세션의 로그 파일 ~/.cache/gdm/session.log입니다.

systemd를 사용하여 일부 최신 배포판에

, 당신이 오류 로그를 얻을 수 있습니다 : 확장의 디버깅의 환경 설정을 부분를 들어

journalctl -f /usr/bin/gnome-session 

, 당신이 사용하여 기본 설정을 시작할 수 gnome-shell-extension-prefs - 도구를 사용하여 콘솔에서 예외 출력을 볼 수 있습니다 (gnome-shell-extension-prefs [uuid]과 같은 도구를 호출하여 확장 프로그램 환경 설정을 직접 표시 할 수도 있음).

현재 중단 점과 디버깅의 실제 방법이 없기 때문에 (이,하지만 it's tricky), 당신은 빠른 검사의 콘솔에 로그의 print() α- 함수를 사용할 수 있습니다. 위에서 언급 한 출력 (세션 오류 파일이나 터미널 시작시 gnome-shell-extension-prefs -tool)을 볼 수 있습니다.


들어가기가 약간 어려울 지 모르지만 확장 프레임 워크는 매우 강력합니다. 재미! 참조의 광범위한 목록이 Gnome Developer - API Reference 페이지에서 볼 수 있습니다 Making Gnome-Shell Extensions

+0

그것은 그놈 세션 로그 ~/.cache/무례한/그놈 세션 GNOME.log에서 발견 될 수도있다 (예를 들면, 우분투 14.04에서). –

10

:


나는 여기에서 찾을 수 있습니다 다소 더 자세히
, 함께 블로그 포스트를 썼다.

나는 내 확장을 위해 다음과 같은 사용하지만 사용은 다를 수 :

  • GTK+ 3
    GTK +는 GNOME 응용 프로그램에서 사용자 인터페이스를 구성하는 데 사용되는 기본 라이브러리입니다. 사용자 인터페이스 제어 및 신호 콜백을 통해 사용자 인터페이스를 제어합니다.

  • GDK 3
    GDK는 윈도우 시스템의 세부에서 GTK +를 분리하는 중간 계층이다.

  • Clutter
    클러는 ​​빠른 시각적으로 풍부한 그래픽 사용자 인터페이스를 생성하는 G 객체 기반 라이브러리이다.

  • GObject Introspection
    G 객체 반성 (G 객체 기반) C 라이브러리 및 언어 바인딩 사이의 미들웨어 계층을 제공하기 위해 노력하고있다.

  • Shell
    쉘 참조 설명서

  • St
    세인트 - 쉘 툴킷는 - 유용한 배우를 정의하는 그놈 쉘의 사용자 정의 클러 기반 툴킷이다. StBoxLayoutStBin과 같은 일부 액터는 다양한 레이아웃 옵션을 구현합니다.

  • Icon Theme Specification
    freedesktop.org 사양

    아이콘 테마를 저장하는 일반적인 방법을 설명합니다.

참고 :이 마지막 두 시각적 요소 매개 변수를 찾는 데 매우 도움이됩니다!

  • PyGTK

      PyGTK는 파이썬 GTK +입니다. 이 레퍼런스에는 클래스 설명이 들어있는 각 Python PyGTK 모듈 (기본 GTK + 라이브러리에 해당)에 대한 장이 포함되어 있습니다.
    • PyGObject
      PyGObject

      는 G 객체 반성의 사용을 통해 전체 GNOME 소프트웨어 플랫폼에 깨끗하고 일관된 액세스를 제공하는 파이썬 확장 모듈이다. 특히 GLib, GObject, GIO 및 GTK + 용 Python Bindings입니다.
      이 참조에는 클래스 설명이 들어있는 각 PyGObject 모듈에 대한 장이 포함되어 있습니다.