미니 자습서 : Cinnamon 용 애플릿 만들기

간단한 애플릿을 만들 것입니다. 계피. 우선, 우리는 계피 다양한 유형의 애플릿을 제공합니다.

  • 텍스트애플릿 (패널에 라벨 표시)
  • 아이콘애플릿 (패널에 아이콘 표시)
  • TextIcon애플릿 (패널에 아이콘과 레이블 모두 표시)
  • 애플릿 (빈 상자가 표시되는 하드 코어 개발자의 경우 직접 채울 수 있음)

이 튜토리얼에서는 단순히 패널에 아이콘을 표시하려고하므로 "IconApplet"을 사용합니다. 애플릿을 프로그래밍하려면 계피 또는 그놈 자바 스크립트 프로그래밍에 대해 알고 알아야합니다.

코드의 위치.

먼저 파일의 위치를 ​​살펴 보겠습니다. 애플릿의 위치는 다음 주소에 있습니다.

/.local/share/cinnamon/applets O 전용 /usr/share/cinnamon/applets

계피_애플렛

애플릿을 구성하는 파일.

계피_애플릿2

applet.js 정의를 진행합니다.

codigo

애플릿.js

이제 코드를 살펴 보겠습니다. 애플릿.js 각 문장을 설명하세요.

applet.js 코드 시작

애플릿 코드

자바 스크립트 코드

이전 코드의 각 문장을 살펴 보겠습니다.

const Lang = imports.lang; / * 우리는 Gtk 및 Lang 라이브러리를 호출하며, 모든 GNOME 애플리케이션의 기본 부분이며, 창, 위젯을 생성하고 링크 할 수 있습니다. * / Const Applet = imports.ui.applet; / * 우리는 Cinnamon과 Gnome에 대한 애플릿을 만들 수있는 Applet 라이브러리를 호출하고 동시에 속성과 기능을 제공합니다. * / Const GLib = imports.gi.GLib; / * GLib는 헬퍼 라이브러리이며, 예를 들어 hellognome.html 파일이 어디에 있는지, 시그널을 담당하는 라이브러리라고 GNOME에서 할 수 있습니다. * / Const Gettext = imports.gettext.domain ( 'cinnamon-applets '); const _ = Gettext.gettext; // Cinnamon 데스크톱의 특성을 가져올 수있는 Gettext 라이브러리입니다. const PopupMenu = imports.ui.popupMenu; / * PopupMenu는 메뉴 관리자를 사용하기위한 라이브러리로, 일반적으로 애플릿에서 사용되는 팝업 메뉴 위젯을 호출 할 수 있습니다. * / Function MyApplet (orientation) {this._init (orientation); }

애플릿의 생성자는 아래에 정의되어 있습니다. 클래스 또는 클래스를 살펴 보겠습니다.

gjs 클래스

우리는 각 문장의 정의를 계속합니다.

MyApplet.prototype = {__proto__ : Applet.IconApplet.prototype, // 클래스 또는 클래스를 정의합니다. _init : function (orientation) {Applet.IconApplet.prototype._init.call (this, orientation); / * 우리는 Cinnamon을 통해 방향을 설정합니다. 애플릿의 패널이 맨 위에 있는지 맨 아래에 있는지 설정합니다 (이는 애플릿 메뉴의 방향에 영향을 미칩니다). * / 시도 {// 뭔가 해보기} 잡기 (e) {// 무슨 일이 일어나는가? 오류가 발생하면} / * 애플릿에서 발생할 수있는 오류를 포착하고 글로벌 오류 로그에 기록되도록하기 위해 try / catch를 사용합니다. 이렇게하면 문제가 발생하면 Looking Glass에서 오류를 볼 수 있습니다. Alt F2를 누르고 "lg"를 입력 한 다음 "오류"탭을 클릭합니다. * / This.menuManager = new PopupMenu.PopupMenuManager (this) ; // 팝업 메뉴를 생성하고 메뉴 관리자를 설정 this.menu = new Applet.AppletPopupMenu (this, orientation); // 메뉴를 만듭니다. this.menuManager.addMenu (this.menu); // 팝업 메뉴에 메뉴를 추가합니다. this.makeMenu (); // menuitem makeMenu, makeMenu라는 메뉴 항목을 만듭니다. this.buildContextMenu (); // buildContextMenu, buildContextMenu라는 메뉴 항목을 만듭니다. this.set_applet_icon_name ( "폴더"); / * 애플릿을 생성합니다.이 경우는 고유하며 선택한 아이콘은 폴더 또는 폴더이며 원하는 경우 텍스트 애플릿을 설정할 수도 있습니다. * /

예를 들어 "folder"의 이름을 "terminal", "docky"로 변경하여 새 이름을 설정하면 Gnome 또는 Cinnamon 아이콘 또는 다른 아이콘 테마의 이름을보고 주소로 이동합니다.

/usr/share/icons

Z7qwRdp

this.set_applet_tooltip (_ ( "창을 죽이려면 여기를 클릭하세요")); // 애플릿에서 발생할 수있는 오류를 포착합니다. catch (e) {global.logError (e); } makeMenu : function () {this.menu.addMenuItem (새 PopupMenu.PopupMenuItem ( "테스트 메시지", {reactive : true})); }, / * makeMenu 메뉴 항목의 이름과 그 특성을 정의합니다. 이 경우 레이블은 Test Message "입니다. {reactive : true}를 정의합니다. 포인터가 false이면 true를 통해 메뉴 항목을 통과 할 때 메뉴 항목의 배경이 변경되도록 설정합니다. * / BuildContextMenu : function () {this.menu .addMenuItem (new PopupMenu.PopupMenuItem ( "show", {reactive : true}));}, // makeMenu 메뉴 항목의 이름과 그 특성을 정의합니다.이 경우 레이블은 "show"입니다. on_applet_clicked : function (event) {this.menu.toggle ();} // 팝업 메뉴 함수를 호출하기 위해 애플릿에서 방출하는 신호 main (메타 데이터, 방향) {let myApplet = new MyApplet (orientation); return myApplet;} / * 마지막으로 , 우리는 각 애플릿에서 동일 할 수있는 "main"함수를 추가하기 만하면됩니다. 애플릿의 인스턴스가 생성되어 Cinnamon으로 반환됩니다. * / // 루프를 닫습니다. return myApplet;

우리는 metadata.json 정의를 진행합니다.

LP0ol8b

스크린 샷-140314-21 : 11 : 34

"last-edited": "1331990905", // 마지막 버전. "description": "사용자 정의 된 gtk 메뉴를 표시하려면 애플릿을 클릭하십시오.", // 애플릿 설명. "icon": "docky", // 애플릿 설명에 사용되는 아이콘. 예를 들어 "docky"의 이름을 "terminal", "folder"로 변경하십시오. "uuid": "black"// metadata.json 파일이 포함 된 폴더 "name": "Custom gtk menu"// 애플릿 이름.

참고 : 새 이름을 설정하려면 Gnome 또는 Cinnamon 아이콘 또는 기타 아이콘 테마의 이름을 확인하고 파일 시스템 주소로 이동합니다.

/usr/share/icons

생성 된 애플릿 이미지

  lKxpdkS

Qt, Gtk, Vala 및 Cinnamon 또는 Gnome 용 애플릿을 만드는 데 사용되는 기타 언어

Cinnamon 용 애플릿의 위치를 ​​보겠습니다.

애플릿의 위치는 다음 주소에 있습니다.

/.local/share/cinnamon/applets

O 전용

/usr/share/cinnamon/applets

얼간이

애플릿의 구성

베타

applet.js 정의를 진행합니다. 

codigo

애플릿.js

applet.js 코드 시작

스크린 샷-140314-21 : 30 : 48

applet.js의 끝

이제 applet.js 코드를보고 그 문장을 설명해 보겠습니다.

작성된 코드는 Javascript로 작성된 이전 예제와 거의 동일합니다.
신호 만 변경되어 자동 실행 파일이라고합니다.

on_applet_clicked : function (event) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }

자동 실행 파일은 Qt, Gtk, Gtkmm, wxWidget, Vala 등으로 작성할 수 있습니다. 자체 실행 파일을 생성 할 수있는 언어. 자동 실행 파일은 메뉴라고하며 Qtmenu 폴더에 있습니다.

베타

PyGTK, Ruby Gtk, Perl Gtk 등과 같은 Gtk에 대한 바인딩이있는 다른 프로그래밍 언어를 사용할 수도 있습니다. 스크립트를 사용하여 해당 언어로 작성된 코드를 실행하는 데 사용할 수 있습니다. 원칙은 우리의 필요에 따라 프로그램을 호출하고 팝업 메뉴와 팝업 창을 만드는 데 항상 동일합니다.

Qt로 작성된 자동 실행 코드를 보겠습니다.

qt

우리는 metadata.json 정의를 진행합니다.

LP0ol8b

몽고

코드는 이전 예제와 동일한 방식으로 작성됩니다.

Qt로 만든 애플릿 이미지

큐테

Gtk 3.10으로 생성 된 애플릿 이미지

다음은 Gtk로 작성된 실행 파일을 사용하는 애플릿의 작은 예입니다.이 경우 OpenBox에서 사용되는 myGtkMenu 메뉴를 사용합니다.

자체 실행 메뉴입니다.

메가

튜토리얼 및 예제 다운로드


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   아이오 리아

    흥미로운 기사 ...

    1.    Marianogaudix

      감사합니다 . 나의 것은 우리가 매일 조금씩 배우는 것이다.

  2.   Danie

    아주 좋아, 좋아. 이런 종류의 애플릿이 어떻게 만들어 졌는지 항상 알고 싶었어

  3.   엔젤 아라야

    작은 수정. Gettext는 기사에서 말하는 것처럼 Cinnamon에만 국한된 것이 아니며 템플릿에서 자동 번역을 가능하게하는 라이브러리입니다.

  4.   MSX

    아주 좋은 튜토리얼과 당신이 그것을 넣지 않은 중요한 것 : 벽지에 대한 링크?

    1.    Marianogaudix

      Linux Mint 16 Petra 월페이퍼를 다운로드하십시오.
      패키지는 mint-backgrounds-petra라고합니다. http://packages.linuxmint.com/list.php?release=Petra

  5.   테슬라

    매우 흥미로운 기사입니다. 사실 저는이 애플릿이 어떻게 만들어 졌는지 항상 궁금했습니다. MPD 나 비슷한 것을위한 미니 플레이어 애플릿을 만드는 것이 좋습니다.

    공유를위한 감사합니다!

  6.   마티아스

    훌륭합니다. 시나몬의 nm 애플릿 (네트워크 관리자)을 수정하는 방법을 알아 내고 있습니다. 인터넷에 액세스 할 수 없을 때 색상이 바뀌도록 (Wi-Fi 카드가 있습니다.) 이것은 제 자신의 방향을 잡는 데 도움이됩니다.

  7.   마티아스 바 테로 17

    글쎄요, 마리안, 당신이 여기에 포스팅하는 줄 몰랐어요. 문안 인사.

    1.    Marianogaudix

      어떻게 지내요, Matute… .. 나는 항상이 부분을 돌아 다니고 있습니다. 건배

  8.   Lolbimbo

    좋은 기사.

  9.   Honovan

    찾을 수없는 파일이 저작권 위반으로 비활성화되었습니다.

    내 말은 당신이 거기에 있으면 다시 업로드 할 수 있다는 것입니다 ???. 제발.

    감사합니다.