GNOME環境を楽しもう


[ GNOMEプログラミング | gdmから使う | GNOMEリンク | 0からインストールした時の記録 ]


GNOMEプログラミング

とりあえずGtk+が使えないとダメ

いまのとこ、Gnomeアプリを作るした準備の段階

ドラッグアンドドロップに対応するには

扱うデータタイプの指定をする
GtkTargetEntry drop_types[] = {
                { "text/uri-list",       0, TARGET_URL },
                { "x-url/http",          0, TARGET_URL },
                { "x-url/ftp",           0, TARGET_NETSCAPE_URL },
                { "_NETSCAPE_URL",       0, TARGET_NETSCAPE_URL }
};

GtkTargetEntry drag_types[] = {
    { "_NETSCAPE_URL",       0, TARGET_URL }   
};

gint n_drop_types = 
                sizeof(drop_types) / sizeof(drop_types[0]);

gint n_drag_types = 
                sizeof(drag_types) / sizeof(drag_types[0]);

シグナルのバインド
gtk_signal_connect (GTK_OBJECT (foo0), "drag_data_received",
                            GTK_SIGNAL_FUNC (receive_cb), &state);

gtk_signal_connect (GTK_OBJECT (foo1), "drag_data_get",
                            GTK_SIGNAL_FUNC (drag_cb), &state);

gtk_drag_dest_set (GTK_WIDGET (foo0),
			   GTK_DEST_DEFAULT_MOTION |
			   GTK_DEST_DEFAULT_HIGHLIGHT |
			   GTK_DEST_DEFAULT_DROP,
			   drop_types, n_drop_types,
  			   GDK_ACTION_MOVE |
                           GDK_ACTION_COPY);

gtk_drag_source_set (GTK_WIDGET(foo1),
                             GDK_BUTTON1_MASK,
                             drag_types, n_drag_types,
                             GDK_ACTION_MOVE |
                             GDK_ACTION_COPY);

タイマを使う

gint MyClass::idle() MyClass::MyClass()内で
connect_to_method(Gtk_Main::timeout(jikan), this, &idle);

Gdkの知識も必要

フツー、ダブルバッファ構成でしょ。イメージバッファの操作
gdk_draw_rectangle(buffer,
		   GTK_WIDGET(gtkobject)->style->white_gc,
		   true, 0, 0, width, height);

GdkImageを操る

struct _GdkImage
{
  GdkImageType	type;
  GdkVisual    *visual;	    /* visual used to create the image */
  GdkByteOrder	byte_order;
  guint16	width;
  guint16	height;
  guint16	depth;
  guint16	bpp;	    /* bytes per pixel */
  guint16	bpl;	    /* bytes per line */
  gpointer	mem;
};

楽するにはパイプを使えた方がいい。

#include <iostream.h>
#include <fstream.h>
#include <streambuf.h>
#include <procbuf.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

int main() {
        procbuf *myproc;
        char ch;

        myproc = new procbuf;

        myproc->open("w", ios::in);

        cout << myproc;
        return 0;
}

マウスの状態を調べるには


gdmから使う

gdmをつかうとIRIXのログイン画面みたいになります。これは私がいままでにxdm系のプログラムを使ったなかで最も納得できるものでした。

ユーザ環境の設定作業

既に.xsessionがあれば、
% cp ~/.xsession ~/.gnomerc

とし、.gnomercを編集
#!/bin/sh
を先頭に書く
exec wmaker
などのウインドウマネージャの起動を指定している行をコメントアウトして
/usr/bin/gnome-session
を追加(ここでexec /usr/bin/gnome-sessionで起動するとその後のセッションの記録が取れなくなりました。)

gdmの手動インストール

tgzから入れる場合は以下のようにしてました。現在(2000/1/13)はVineSeedのSRPMから作っています。なので最近のgdmでは不都合が生じるかもしれません。

READMEによると gdm というユーザを作れ、とあったのでこれを作る。

      # su -
      # /usr/sbin/adduser gdm
      % tar zxvf ../SOURCES/gdm-
      % cd gdm
      % ./configure;make
      % sudo make install
      % cd config
      % ./configure;make
      % sudo make install
    
で入れた。

/usr/local/etc/gdm以下の設定ファイルを編集

# cp /usr/local/etc/gdm/gnomerc /usr/local/etc/
(シンボリックリンクの方が良いかも)

/etc/inittabの書き換え

# Run xdm in runlevel 5 x:5:respawn:/usr/local/bin/gdm -nodaemon
としておきました。

GNOMEリンク

[ アプリケーション | アプレット ]

tgzからGNOME環境を作るには

GTK+

  • GTK+
  • gtk.themes.org
  • glade[0.5.0](1999/06/27)
    GUI作成ツール
    glade--を入れておけばC++のソースも出力できる。
  • glade--[0.2.7](1999/06/24)
  • GtkGLArea
    OpenGL用のGtk+ウィジェット
  • Gtk--
  • gtkglareamm
    OpenGL用のGtk--のウィジェット
  • gtk+ japanese tips
  • The Official Yamagata Hiroo Page (GNOMEのドキュメントの日本語訳)
  • 日本語Gnome
  • International Programming on Linux (モジラのTextFieldバグパッチもある)
  • GTK Tutorial 日本語訳
  • Gnome Developers' Infomation 日本語翻訳版
  • アプリケーション

    アプレット

    [ Return ]

    0からインストールした時の記録

    rpmをシカトしてソフトを入れまくっている。 あらかじめ何故かインストールしてあったGNOME関連のものはいい加減にアンインストールしてある。

    最近やっとrpmシステムの概要が理解しつつあるので、 ファイルも多いことだしrpmで楽しようと考えた。

    でも、バイナリで入れるのには抵抗があるし、普段使っていないCPUのためにも specファイルを元に自分でパッケージを作ってそれをインストールするという かたちにした。

    インストールするパッケージが多く、ルートでこの作業を続けるのは危険なため、 ユーザのディレクトリ以下でパッケージ作成を行えるように設定した。

    rpmパッケージ作成作業をユーザのディレクトリで行う ~/.rpmrcに topdir: /home/GONBEE/local/rpm と記述(GONBEEを各自の環境に合わせる) 作業に必要なディレクトリを作成

    % mkdir ~/local/rpm % mkdir ~/local/rpm/BUILD % mkdir ~/local/rpm/RPMS/ % mkdir ~/local/rpm/SOURCES % mkdir ~/local/rpm/SPECS % mkdir ~/local/rpm/SRPMS
    ダウンロードしてきたファイルを~/local/rpm/SOURCESに入れる。

    基本方針

    ユーザ権限で~/local/rpm内で作業し、~/local/rpm/RPM/i386以下に出来たパッケージをインストール
    % cd ~/local/rpm/BUILD
    % tar zxvf ../SOURCES/foo-1.0.1.tar.gz
    % cp foo-1.0.1/foo.spec ../SPECS
    % rpm --clean -ba ../SPEC/foo.spec
        
    でchwonでrootにしようとするパッケージは
    % sudo rpm --clean -ba ../SPEC/foo.spec
        
    として対処 また、
    % sudo rpm -Uvh ../RPMS/i386/foo.rpm
        
    としたとき、依存関係でイチャモンをつけられたら、 ちょうどUnixUserのにVineが入っていたので このSRPMSの中から
    % rpm --rebuild /CDROM/SRPMS/tarinakatta-1.2.3.src.rpm
    % rpm -ivh ../RPMS/i386/tarinakatta-1.2.3.rpm
        
    このときもイチャモン付けられたら --nodepsオプションで対処。

    作業の順番

    基本的にはGNOMEのページに書かれている順でOK でも、一部ダメなとこもありました。 alsaのドライバとライブラリをrpmを使って入れ直す。

    Required library source downloads:

    Required gnome source downloads:

    gnomeを動かすには

    (始めは何を動かしゃいいのか死ぬ程悩みました。)

    .xinitrc のウインドウマネージャの起動の指定のところを exec gnome-sessionに変更

    GNOME環境の整備ログ(挫折)

    19990608
  • gnome-libs 1.0.10
    edit spec
    package /usr/share/doc/gnome-doc.el not listed in file index
    package /usr/share/doc/mkstub not listed in file index
    みたいな文句を言われた
    
  • 19990604
  • xscreensaver 3.13
  • 19990514

    [GNOME環境のアップデート]

  • ORBit-0.4.3.tar.gz
    edit spec
  • libghttp-1.0.2.tar.gz
    failed dependencies:
            libghttp.so.0 is needed by gnorpm-0.7-1
            libghttp.so.0 is needed by gnome-core-1.0.5-1
    よって--nodeps
  • gnome-objc-1.0.2.tar.gz
    edit spec
  • control-center-1.0.5.tar.gz
  • gnome-coreをリビルド
  • enlightenment-conf-0.15.tar.gz
    edit spec
  • gnome-admin-1.0.2.tar.gz
    edit spec
  • gnome-print-0.1.1.tar.gz
    要root権限
    failed dependencies:
            /usr/local/bin/perl is needed by gnome-print-0.1.1-1
    よって--nodeps
    そしたら何か、
    Font URWChanceryL-MediItal already present.
    みたいなのがぞろぞろでてきた。
  • gnome-games-1.0.2.tar.gz
    要root権限
  • gnorpm-0.8.tar.gz
  • 19990418
  • gnome-libs[1.0.8]
  • gnome-core[1.0.5]
    File not found: /var/tmp/gnome-core-root/usr/share/default.session
  • gnome-pim[]
    package /usr/share/locale/it not listed in file index package /usr/share/locale/it/LC_MESSAGES not listed in file index package /usr/share/locale/it/LC_MESSAGES/gnome-pim.mo not listed in file index package /usr/share/locale/ja not listed in file index package /usr/share/locale/ja/LC_MESSAGES not listed in file index package /usr/share/locale/ja/LC_MESSAGES/gnome-pim.mo not listed in file index package /usr/share/locale/ko not listed in file index package /usr/share/locale/ko/LC_MESSAGES not listed in file index package /usr/share/locale/ko/LC_MESSAGES/gnome-pim.mo not listed in file index package /usr/share/locale/no not listed in file index package /usr/share/locale/no/LC_MESSAGES not listed in file index package /usr/share/locale/no/LC_MESSAGES/gnome-pim.mo not listed in file index package /usr/share/locale/pt not listed in file index package /usr/share/locale/pt/LC_MESSAGES not listed in file index package /usr/share/locale/pt/LC_MESSAGES/gnome-pim.mo not listed in file index package /usr/share/locale/ru not listed in file index package /usr/share/locale/ru/LC_MESSAGES not listed in file index package /usr/share/locale/ru/LC_MESSAGES/gnome-pim.mo not listed in file index package /usr/share/locale/sv not listed in file index package /usr/share/locale/sv/LC_MESSAGES not listed in file index package /usr/share/locale/sv/LC_MESSAGES/gnome-pim.mo not listed in file index package /usr/share/mime-info/gnome-pim.keys not listed in file index みたいなのが出て来た
  • ノートでRPMパッケージをつかってgnome環境を作ってみて分かったのだが、どうもRPMパッケージになっているものとtar.gzを展開してから取り出したSPECファイルから作ったRPMパッケージはそれぞれ異なった(設定等が)ものになっている。
  • 19990409
  • gnome-libs[1.0.6]
  • 19990408
  • [Gtk---1.0.0で日本語表示]
    プログラムの先頭で gtk_set_locate() を呼べばいい!
  • 19990403
  • gmc[4.5.29]
  • gnome-libs[1.0.5]
  • ORBit[0.4.2]
  • 19990402
  • gnumeric[0.22]
  • gtk+[1.2.1]
  • glib[1.2.1]
  • gnome-core[1.0.4]
  • 19990328
  • gmcのアップデート[4.5.28]
  • gnome-terminalを日本語化していてgdk_draw_text_wcがペンの属性を考慮してくれないみたい
  • 19990327Enlightenmentにしてから、XEmacsのコンパイルボタンが言うことを聞かない!
    コンパイル対象外のファイルを開いたフレームがあると、たとえコンパイル対象ソースを表示したフレームのコンパイルボタンを押しても、何故か対象がのファイルがコンパイルの対象と誤解されてしまう。
    19990325 .gtkrcに日本語フォントの設定を書いていないと日本語が出ない!
    ----- BEGIN -----
    # -- THEME AUTO-WRITTEN DO NOT EDIT
    include "/usr/share/themes/Metal/gtk/gtkrc"
    
    style "all"
    {
            fontset = "rk14,k14"
    }
    widget_class "*" style "all"
    ----- END -----
    
    19990317
  • Gnomeページャで日本語を表示を可能にするパッチを作成


    ま、あれこれ試して出来たパッチがこれです。
    (じつはこれWindowMakerの関数をパクっているだけだったりします。)

  • gimp[1.1.3]で日本語フォントが出せない?
  • 19990316
    gimp[1.1.3]画像編集やっぱ日本語はいいね
    Disk Catalog[0.05]カタログ
    Gnumeric[0.17]表計算フォントの設定で日本語表示が可能
    specファイルのバージョンを修正
    gxTar[0.1.0]アーカイブビュアーbz2に対応
    gftp[1.12]Ftpクライアント英語メニュー
    GnoRPMRPM管理英語メニュー

  • GNOMEのいくつかのアプリをいれると自動的にメニューに追加される。
    .deskファイルを/usr/share/gnome/apps以下のジャンル別ディレクトリに 入れることで実現している。 でこの調査をしたら /usr以下にgnomeをいれたので specファイルが無いアプリも/usr 以下に入れないとダメそうなので 自作のspec自動生成ツール(autoSpec.tcl)をつくってこれに対応しようとしている。
    ところが、既に入れたee(ElectricEyes)が /usr/share/apps以下に.desktopファイルが置かれてしまっていた。 またspecファイルがなかったdisk_catalogも同様であった。 このため手動でこれに対処した。
  • ファイルマネージャで/usr/share/gnome/apps以下を開き、 .desktopファイルをパネルにドラッグするとランチャが作られる。
  • esd 対応のmpg123を入れる。


  • [ Linux | ホーム | ゲストブック ]
    このページに対する御意見、御感想、質問、苦情等は下のアドレスまでどうぞ!
    nampa2@geocities.co.jp