Gtk2Hs はじめに

ホーム


Haskellを勉強するための目標として、Gtk2Hsを始めました。ある程度サンプルがまとまったので、ここに公開します。

この章では、Gtk2Hsのインストール方法を紹介しています。

このチュートリアルは、Gtk2HsとGtk3Hsの両方をサポートしています。

Gtk2Hsとは

Haskell で Gtk2 や Gtk3 GUIライブラリを使ってGUIアプリケーションを作れるフレームワークです。

Haskellで使えるGUIフレームワークは、ほかにも、wxHaskellをはじめ、いくつかあるみたいです。

wxHaskellについては wxHaskell GUI プログラミング で説明しています。

Gtk2Hsのインストール

Gtk3Hsのインストールは、Windows 7, 8.1、macOS 9と10、および各種Linuxで成功しましたが、macOSにインストールするのは大変でした。Gtk2HSのインストールが簡単なUbuntuやMintだけで楽しむのも一つの方法だと思います。Windowsへのインストールは中程度の難度でした。

UbuntuやMintへのインストール

UbuntuやLinux MintなどのDebian系LinuxにGtk3Hsをインストールするには、ターミナルに次のように入力します。

sudo apt-get install libghc-gtk3-dev

このコマンドでHaskellもインストールされるので便利です。
なお、Ubuntu 14.04、Linux Mint 17 にはGtk3Hsはインストールできません。 Ubuntu 14.04やLinum Mint 17 には、次のコマンドで、Gtk2Hsをインストールします。

sudo apt-get install libghc-gtk-dev

このコマンドも、Haskellもインストールされます。

なお、同じコンピューターにGtk2HsとGtk3Hsの両方をインストールして使い分けすることはできますが、私の場合は、Mint 17にGtk2Hsを、Mint 18にGtk3Hsをインストールして使い分けました。

もし、一つのコンピューターに両方のバージョンをインストールした場合は、ソースファイルの冒頭で、どちらを使うかを指定します。しかしこのチュートリアルでは、そのコードは省略しています。

Fedora 系 Linux へのインストール

次のコマンドでFedora系Linuxにもインストールできますが、コンパイルしたアプリの表示がおかしかったりしますので、Fedora系Linuxでの使用はあまりお勧めしません。

sudo dnf install ghc-gtk3-devel

各 Linuxの最新バージョンについて

Ubuntu 18.04、Mint 19、Fedora 28では、コンパイルした実行ファイルをダブルクリックで実行できません。ターミナルから起動することはできます。Gtk2Hsだけでなく、ほかの処理系でコンパイルした実行ファイルも同じです。もしかしたら手動で実行権限を与えなければならなくなったのかもしれません。

Windows へのインストール

Windowsへのインストールは、

  1. Haskellのインストール
  2. Gtk+のインストール
  3. Gtk2Hsのインストール

の三段階になります。

Haskell のインストール

次のリンクから HaskellPlatform8.0.2-a-full-...-setup.exeをダウンロードしてインストールしてください。「...」のところは、お使いのシステムに合わせて、「i386」か「x86_64」を選んでください。

Index of /~platform/8.0.2/

なお、Haskell Platformの最新安定板は次のリンクからダウンロードできますが、現在のバージョン 8.4.3 には、Gtk2HS のインスールができません。

Download Hakell Platform

インストールが終了したら、コマンドプロンプトを起動して ghci と入力してください。 もし、コマンドプロンプトが最初から開いていたら、コマンドプロンプトを再起動してから ghci と入力してください。

ghci
GHCi, version 8.0.2: https://www.haskell.org/ghc/ :? for help
Prelude>

上記のように表示されたら、Haskell Platformは無事にインストールされています。

ghci(Haskellのインタープリタ)を終了するには :q と入力します。ghciのコマンドは : (コロン)で始まります。

Prelude> :q
Leaving GHCI.

Gtk+ のインストール

32bit Windowsの場合は、下記リンクから 「gtk+-bundle_2.24.10-20120208_win32.zip」をダウンロードしてください。

Index of /Public/gnome/binaries/win32/gtk+/2.24

64bit Windowsの場合は、下記リンクから 「gtk+-bundle_2.22.1_20101229_win64.zip」をダウンロードしてください。

https://ftp.gnome.org/Public/gnome/binaries/win64/gtk+/2.22/

ダウンロードした ZIP ファイルを解凍してください。私の場合は C: 直下の gtk フォルダに解凍しました。そして解凍したフォルダの bin フォルダにパスを通してください。

コマンドプロンプトが開いていた場合は、コマンドプロンプトを再起動してください。そして、コマンドプロンプトに、次のように入力してサンプルアプリが起動したら、Gtk のインストールは成功しています。

gtk-demo

Gtk2Hs のインストール

Gtk2Hsのインストールは、Haskell Platformに付随している cabal を使ってインストールします。コマンドプロントに次のように入力してください。

cabal update
cabal install gtk2hs-buildtools
cabal install gtk

インストールが終わりましたら、コマンドプロンプトを閉じるか、再起動してください。

Windows での実行

上記で Windows へのインストールは完了しました。次のソースコードを記述して、お好きなところに UTF-8 で保存してください。ここでは、button.hs という名前にました。ファイルの拡張子は .hs になります。

button.hs


import Graphics.UI.Gtk

main :: IO()
main = do

  initGUI
  
  window <- windowNew
  set window [windowTitle := "ボタン"]
  windowSetDefaultSize window 230 150
  containerSetBorderWidth window 15
  windowSetPosition window WinPosCenter
  
  align <- alignmentNew 1 1 0 0
  containerAdd window align
  
  button <- buttonNewWithLabel "終了"
  widgetSetSizeRequest button 100 30
  containerAdd align button
  
  on button  buttonActivated $ do
    mainQuit
    widgetHide window
  
  on window objectDestroy mainQuit
  
  widgetShowAll window
  
  mainGUI
    

ghci (インタープリタ) による実行

コマンドプロントを起動して、button.hs を保存したディレクトリに移動してださい。そして ghci button.hsと入力してください。


ghci button.hs
GHCi, version 8.0.2: https://www.haskell.org/ghc/  :? for help
[1 of 1] Compiling Main             ( button.hs, interpreted )
Ok, modules loaded: Main.
*Main>
    

上記のように「Ok, modules loaded: Main.」と表示されれば読み込みに成功しています。
もし「Failed, modules loaded: none.」と表示された場合は、コードに間違いがあるか、ファイルタイプがUTF-8になっていないかなどの問題があります。読み込みが成功した場合はコマンドプロントに「main」と入力して実行します。

main

ghc (コンパイラ) による実行

コマンドプロントに「ghc button.hs」と入力してコンパイルします。

ghc button.hs
[1 of 1] Compiling Main ( button.hs, button.o )
Linking button.exe ...

上記のように表示されればコンパイルは成功しています。

button.hs:9:31: error:
lexical error in string/character literal (UTF-8 decoding error)

上記のように表示されればどこかが間違っています。修正して、再度コンパイルします。

無事にコンパイルできた場合は、コマンドプロンプトで実行ファイル名を指定して起動します。.exe 拡張子はつける必要はありません (つけても問題ありません)。

button

コンバイルされた「button.exe」ファイルをダブルクリックしても起動できます。ただしコマンドプロンプトも開いてしまいます。今、コマンドプロンプトを開かずに起動する方法を探しています。

macOS へのインストール

macOSへのインストールは macOS へのインストールをご覧ください。


16548 visits
Posted: Dec. 22, 2018
Update: Jan. 12, 2019

ホーム   目次   ページトップ