자바스크립트를 이용하여 GNOME에서 창을 띄어보기


출처: YES! Gnome JS Bindings Documentation is now available! 

#!/usr/bin/gjs

//The previous line is a hash bang which tells how to run the script.
// Note that the script has to be executable (run in terminal in the right folder: chmod +x scriptname)
// Initialize GTK+
var Gtk = imports.gi.Gtk;
Gtk.init(null, 0);
// Create your window, name it, and connect the “click x to quit” function.
// The word “window” is a JavaScript keyword, so we have to
// call it something different.
var mywindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});
mywindow.title = "Hello World!";
mywindow.connect("destroy", function(){Gtk.main_quit()});
// Add some text to your window
var label = new Gtk.Label({label: "Hello World"});
mywindow.add(label);
// Make the label and the window itself visible to the user
label.show();
mywindow.show();
// Let the user run the app
Gtk.main();


chmod +x helloworld.js

./helloworld.js


Hello World!



Buy me a coffeeBuy me a coffee

어제부터 GTK+ 3.0 Reference Manual을 주말마다 짬을 내어 올해안까지 번역해보자는 목표를 세워보았다.

이렇게 목표를 잡고 나서 간한단 GTK+ 프로그램을 C로 작성해보았다.
아래는 C소스코드입니다.

#include <gtk/gtk.h>

GtkWidget* build_label() {
    GtkWidget *label = gtk_label_new("Hello, World!");
    gtk_label_set_selectable(GTK_LABEL(label), FALSE);
    return label;
}

int main (int argc, char **argv)
{
    GtkWidget *win;

    gtk_init (&argc, &argv);

    win = gtk_window_new (GTK_WINDOW_TOPLEVEL);

    gtk_container_add(GTK_CONTAINER(win), build_label());
    gtk_window_resize(GTK_WINDOW(win), 300, 200);

    g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    gtk_widget_show_all (win);

    gtk_main ();
   
    return 0;
}

소스코드를 컴파일 하는 방법은, GTK+3.0 라이브러리가 설치되어야 하며, 아래와 같은 명령어를 작성하여 누르면 컴파일이 됩니다. 실행파일을 열면 아래와 같은 화면이 나옵니다.

gcc `pkg-config --cflags gtk+-3.0`  -o gtkmain gtkmain.c  `pkg-config --libs gtk+-3.0`



조만간 재미있는 GTK+용 프로그램이 나오겠지?ㅎㅎ



Buy me a coffeeBuy me a coffee

2011년 9월 27일 (화) 부로 블로그를 2개 운영하기로 하였습니다.


유명 블로거이신 아크몬드(@archmond)님의 선례에 따라 저의 관심사인 모바일 플랫폼(Apple iOS, Android OS, Windows Phone 7, GTK, MeeGo, LiMO계열) 및 Handset관련한 뉴스 및 개발 전문 블로그 만들고 계속 글을 올릴 계획입니다.

비밀 프로젝트에서 GTK, iOS, Android를 다룬 것에 착안하여 새로운 블로그를 만들게 되었지요.

예전에 놀고 있던 서브블로그에 잠깐 손을 대었고, 주소는 http://m.studioego.info/ 입니다.

일단 2차 도메인을 변경을 하였고, 현재 유행하고 있는 모바일 플랫폼(Platform)인 Android, Windows Phone, iPhone, 그리고 모바일에 적합하게 개발된 Linux 배포판인 MeeGo와 LiMo계열에서 사용하고 있는 GUI Toolkit인 GTK+와 QT를 여기서 소개 및 최신 소식을 올릴 예정입니다.

주로 이 블로그에선 Android와 Windows Phone (주인장은 2010년말 생산된 13인치 MacBookPro를 사용중?!) 그리고 GTK+를 중심으로 포스팅을 할 예정입니다. 

 Android에 대해선 예전에 프로젝트 하면서 정리한 내용, 그리고 Android Developer Blog의 내용을 주로 전달 할 예정이며, MeeGo는 공식 MeeGo 사이트에서, GTK+ 내용은 Ubuntu 중심으로 Web UPD8GNOME Mailing의 내용을 언급하며 업데이트를 하겠습니다.

 이제 돈좀 모으면 MeeGo 기반 Nokia N9와 조만간 나올 Nokia의 Windows Phone을 구입하여 자랑 할겸 블로그에 개발 내용을 하루에 한개씩 포스팅을 하겠습니다.


http://m.studioego.info/  으로 바로가기

Buy me a coffeeBuy me a coffee




GTK+ 3.2가 2011년 9월 25일(일)에 출시되었습니다.



GTK+ 3.2.0에서는 2가지 중요한 실험적인 기능이 포함되었습니다.

  1. HTML5을 사용하는 웹 브라우저 안에서 GTK+어플리케이션을 실행할수 있는 기능 (First, the ability to run Gtk+ applications inside a browser using HTML5.)
  2. Wayland display server를 지원(Second, initial support for the Wayland display server.)


GTK+ 3.2는 사용자가 바로 혜택을 누릴수 있는 수많은 소소한 기능을 소개합니다.

  • CSS Themeing 기능의 향상(CSS themeing support has been improved)
  • GtkFileChooser는 사용 할수 있도록 돌리었음. (GtkFileChooser has been overhauled)
  • GtkFontSelection 은 GtkFontChooser 위젯의 새로운 세트로 대체 되었음(GtkFontSelection has been replaced by a new set of GtkFontChooser widgets)
  • 여러 새로운 위젯들이 소개되었음(several new widgets have been introduced as well.)

GTK+3.2에서 HTML5의 지원은 여전히 실험적입니다. 이 것은 HTML5에 적합한 브라우저 안에서 계산기나 노트패드 어플리케이션류의 GTK+ 어플리케이션을 작동할수 있도록 허락을 해준다. 

아래는 Firefox 4.0안에서 GIMP를 실행하는 데모비디오입니다.


아래 동영상은 HTML5을 지원하는 Firefox4안에서 계산기와 Evince를 실행하는 동영상입니다.

Gtk+ broadway demo from Alexander Larsson on Vimeo.



또 다른 큰 새로운 것도 실험적인 것입니다. 알다시피 Wayland 자체는 매우 실험적인데, GTK+ 3.2 에서는 Wayland display server를 지원한다. 현재 많이 알려져 있는 X.org를 대신하여 미래에 많이 사용할 Wayland에 대해 GTK+가 미래를 위해 준비를 확실히 하고 있다.

QT또는 Wayland를 지원을 하는 중이기 때문에 두가지 오픈 소스 툴킷(GTK+, QT은 미래를 위한 준비를 하고 있다고 볼수 있습니다.



※ GTK+란? (What is GTK+)

GTK+는 그래픽 유저 인터페이스(GUI)를 만들기 위한 멀티 플랫폼 툴킷입니다. (아래서 부턴 알아서 번역을 바랍니다.)

GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off tools to complete application suites.

GTK+ has been designed from the ground up to support a range of languages, not only C/C++. Using GTK+ from languages such as Perl and Python (especially in combination with the Glade GUI builder) provides an effective method of rapid application development.

GTK+ is free software and part of the GNU Project. However, the licensing terms for GTK+, the GNU LGPL, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties. GTK+ is the only 100% free-of-cost open source industrial-strength GUI toolkit available today.

Since its origins as the toolkit for the GNU Image Manipulation Program (GIMP), GTK+ has been used in a wide range of software. Notably, GTK+ is the foundation of the GNOME desktop.


Buy me a coffeeBuy me a coffee

저의 지인이며 비밀 스터디의 주도권을 가지고 계신 ganadist님께서 안드로이드 빌드 툴을 GTK와 Python기반으로 개발하셨다고 합니다.

아래는 저의 컴퓨터에서 실행한 화면으로 아직 Android Source kit을 받지 않았기 때문에 설정화면이 이상하게 되었군요.


(제대로 동작하는 화면의 경우는 그분의 동의를 받지 못해서 올리지 못하고, 주말 쯤 제가직접 프로그램 돌리는 스크린샷을 올리겠습니다.)


소스는 https://github.com/ganadist/abuild 에서 받을 수 있습니다.

안드로이드(Android)를 처음 접하는 초보자들도 쉽게 빌드 할수 있도록 GTK기반으로 UI를 구성한 후, 작성하였다고 합니다.


이 프로그램의 요구사항은 GNOME 3.0 개발환경에 맞게 만들어졌기 때문에 GTK+-3.0 이상이 설치되어야 한다고 나와 있군요. (GTK+-2.0과 GTK+-3.0간 호환성이 없다보니..)


* Requirements
	- python 2.6 or higher
	- pygobject 2.90 or higher
	- gtk 3.0 or higher with gobject-introspection
	- vte 2.90 or higher with gobject-introspection


실행방법

git으로 소스트리(참고 - https://github.com/ganadist/abuild  )를 받은 후 ./abuild를 실행하면 됩니다. 단 안드로이드 커널 소스를 미리 받으셔야 합니다.


* How to run?
	- change directory to source
	- run ./abuild
	 . need to fix for deployment
	- click "Source Top" button and select android source directory
	- if source directory has valid contents, "Build", "Product",
	  "Variant" button will be enabled
	  . TIP: If you set TOP shell environment and that is android
	    source directory, it will be set as "Source Top" directory
	- select check buttons and press "Build" button


ps. 제대로 빌드하는 모습을 다음 일요일에 제대로 된 실행화면을 블로그로 업로드할 예정입니다.

Buy me a coffeeBuy me a coffee

Overview of GObjectIntrospection architecture

http://live.gnome.org/GObjectIntrospection/Architecture


GNOME3와 GTK3.0에서 도입된 GObjectIntrospection 구조.






Buy me a coffeeBuy me a coffee

우분투 11.04의 기본 Desktop으로 채택될 예정인 Unity를 사용해보았습니다.

Ubuntu Unity - http://unity.ubuntu.com/

2010/11/21 - [컴퓨터/Linux] - Gnome을 대체할 Unity소개 #Ubuntu 11.04 Natty Narwhal uses Unity Desktop by Default!


아래는 Ubuntu 11.04 Natty Narwhal의 기본 데스크탑인 Unity의 화면입니다.

Unity Desktop



2004년 말부터 GNOME(http://www.gnome.org/) Desktop를 주로 쓰던 저에게 Unity는 신선한 충격을 가져다 줍니다. KDE Desktop처럼 온갖 기능 붙혀서 무겁게 느껴지거나 GNOME같이 평범한 Linux Desktop도 아닌 뭔가 새롭고 신선한느낌정도?

Unity Desktop의 UI가 겉으로 보면 예쁘지만, 실제로 사용하다 보면 약간 뭔가 어지럽습니다. 익숙하지 않아서 그럴지도?

Netbook을 위한 Desktop을 표방하고 있습니다만, 아직 GNOME환경에 비해서 느리고 빠릿빠릿하지 않다는 느낌이 듭니다.


Unity가 GNOME(GTK+기반)과 달리 QT기반으로 작성되었으며 X 윈도우 시스템을 대체할 OpenGL기반의 데스크탑 관리시스템인 웨이랜드(Wayland) 데스크탑 엔진, Compiz를 대체할 mutter를 사용합니다.

이전에는 X Windows위에 GTK기반의 GNOME Desktop을 사용했다만 Ubuntu를 관리하는 Canonical사는 독자적인 방향으로 새로운 UI를 제공하겠다는 목표로 Unity project를 진행하고 있습니다.

Unity가 데스크탑, 노트북말고도Tablet같은 Touch screen이 있는 노트북이나 넷북에도 적용할 예정입니다. 아래 화면에서 보듯 UI가 손가락으로 클릭하기 좋게 구성 되어 있습니다.


Unity UI를 보면 볼수록 뭔가 Mac OSX를 많이 흉내내려고 노력한 흔적이 많이 보입니다.


Canonical사는 Ubuntu OS에 Unity라는 새로운 사용자 경험을 보여주합니다. 기존의 GNOME기반의 경험을 가진 사람에겐 뭔가 느낌이 이상하게 느껴지는건 익숙하지 않아서일까요?


ps. 아직 Alpha release단계라 버그가 많습니다. 가끔씩 죽는 경우가 생겨 launchpad에 bug reporting을 자주 하는 편입니다.

Buy me a coffeeBuy me a coffee



python으로 webkit을 사용한 프로그램을 제작을 하다 webkit api를 잘 몰라서 검색을 해보았습니다.

me2day account auth

검색을 해보다 보니 흥미로운 링크를 보았습니다.

HOWTO Create Python GUIs using HTML

Python과 HTML을 이용해서 GUI를 구성한다?

여기 링크에서 소개하고 있는 것은 Ubuntu와 같은 리눅스에서 python이라는 언어를 가지고 GNOME기반의 gtk와 웹브라우저 엔진인 webkit과 HTML을 이용해서 GUI을 만들어보자는 것입니다.


이 문서를 읽고 따라 해보았습니다. python도 thread와 conditional variable등의 개념이 들어가니 OS책을 보고 실습하는 듯한 느낌도?


Buy me a coffeeBuy me a coffee

+ Recent posts