IT Share you

그놈 쉘 확장을 작성하기위한 문서

shareyou 2020. 12. 1. 20:00
반응형

그놈 쉘 확장을 작성하기위한 문서


그놈 3 데스크탑의 레이아웃을 사용자 정의하라는 요청을 받았습니다. 분명히 그렇게하는 방법은 "확장자"를 작성하는 것입니다.

내가하고 싶은 일을 할 수 있었지만 정보가 완전히 굶주린 것 같습니다 . 어디서나 유용한 문서를 찾을 수 없습니다 . 나는 전체 낭비 한 유용한 정보를 찾기 위해 미친 듯이 필사적 인 시도에서 상상할 수있는 모든 검색어를 인터넷 검색 내 인생을.

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

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

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


나는 최근에 그것을 직접 파고 들었다. 문서는 일반적으로 드물거나 오래되었습니다. 다음은 개발을 시작하는 데 도움이되는 몇 가지 소스입니다.

문서를 거의 사용할 수 없거나 최신 상태이므로 많은 소스 읽기 작업이 필요합니다 . 위의 gnome-shell 소스 (자바 스크립트 부분)를 연결했습니다. 이것은 In-official 문서 (당신이 찾을 수있는 가장 완전한 것)에서 다루지 않는 부분에 뛰어들 때 좋은 시작입니다.

특히 도움이되는 것은 extensions.gnome.org 에서 만들고자하는 것과 유사한 작업을 수행하는 확장 프로그램확인 하고 해당 소스를 살펴 보는 것입니다 (대부분 GitHub 또는 Bitbucket의 오픈 소스입니다. 또한 설치하여 찾을 수 있습니다. 아래의 출처 ~/.local/share/gnome-shell/extensions/).

특정 함수에 대해 사용할 내용이나 더 많은 문서를 검색 할 때 다른 언어로 된 바인딩에 대한 설명서를 참조 할 수도 있습니다 (매개 변수와 반환 값이 일치하지 않을 수 있다고 생각).


마지막으로 다음은 디버깅 조언입니다 .

LookingGlass는 특별히 도움이되지 않습니다. 예외 (설명)의 한 줄만 표시되며 시작시 (확장 프로그램이 처음 시작될 때) 발생하는 경우에만 표시됩니다.

전체 StackTrace 및 런타임 예외에 대해서는 ~/.xsession-errors-file을 참조하십시오 . 매우 길고 부풀 수 있습니다. 편리한 스크립트사용 하여 읽을 수 있습니다.

# 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

참고 사용하는 경우 그놈 3.6 이후 있음을 gdm표시 관리자로, 현재 세션의 로그 파일입니다 ~/.cache/gdm/session.log.

systemd를 사용하는 일부 최신 배포판에서는 다음을 사용하여 오류 로그를 얻을 수 있습니다.

journalctl -f /usr/bin/gnome-session

확장 의 prefs-part디버깅하려면gnome-shell-extension-prefs 터미널 에서 -tool을 사용하여 환경 설정을 시작 하고 콘솔에서 예외 출력을 볼 수 있습니다 ( gnome-shell-extension-prefs [uuid]확장 환경 설정을 직접 표시하기 위해 와 같은 도구를 호출 할 수도 있음).

현재 중단 점을 사용하여 디버깅하는 실제 방법이 없기 때문에 (하지만 까다 롭습니다 ) 콘솔로그온하여 빠른 확인을 할 수 있습니다 print(). -function을 사용하십시오 . 위에서 언급 한대로 출력이 표시됩니다 (session-error 파일 또는 gnome-shell-extension-prefs-tool을 시작할 때 터미널에서 ).


들어가기가 조금 어려울 수 있지만 확장 프레임 워크는 매우 강력합니다. 재미를 !


나는 블로그 포스트를 좀 더 자세하게 썼는데 여기에서 찾을 수있다 : Making Gnome-Shell Extensions


광범위한 참조 목록은 Gnome 개발자-API 참조 페이지 에서 찾을 수 있습니다 .

내 확장에 다음을 사용했지만 용도가 다를 수 있습니다.

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

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

  • Clutter
    Clutter는 빠르고 시각적으로 풍부한 그래픽 사용자 인터페이스를 만들기위한 GObject 기반 라이브러리입니다.

  • GObject Introspection
    GObject Introspection은 (GObject 기반) C 라이브러리와 언어 바인딩 사이에 미들웨어 계층을 제공하기 위해 노력하고 있습니다.

  • Shell
    Shell 참조 매뉴얼

  • St
    St- Shell Toolkit-유용한 행위자를 정의하는 GNOME Shell의 사용자 정의 Clutter 기반 툴킷입니다. 같은이 배우의 일부StBoxLayoutStBin구현 다양한 레이아웃 옵션.

  • 아이콘 테마 사양
    freedesktop.org 사양은 아이콘 테마를 저장하는 일반적인 방법을 설명합니다.

참고 : 이 마지막 두 가지는 시각적 요소 매개 변수를 찾는 데 매우 유용합니다!

  • PyGTK
    PyGTK is GTK+ for Python. This reference contains a chapter for each Python PyGTK module (that corresponds to the underlying GTK+ library) containing the class descriptions.

  • PyGObject
    PyGObject is a Python extension module that gives clean and consistent access to the entire GNOME software platform through the use of GObject Introspection. Specifically speaking, it is Python Bindings for GLib, GObject, GIO and GTK+.
    This reference contains a chapter for each PyGObject module containing the class descriptions.

참고URL : https://stackoverflow.com/questions/13107743/documentation-for-writing-gnome-shell-extensions

반응형