LoginSignup
4
4

More than 5 years have passed since last update.

Haskellのgi-gtkのHelloworld

Posted at

HaskellのGUIの利用方法

wxHaskellを始めいろいろあるけどgtkを利用した。gi-gtkのモジュールを利用した。
ただ、簡単にはインストールできなかったためHelloWorldまでの手順を記録する

開発環境

  • Linux Mint19
  • stack
  • ghc8.6.3

前準備

stack new なんとかproject

にて新規プロジェクトを立ち上げる。
そして、gi-gtkのパッケージを依存関係としてpackage.yamlのファイルに記述する

dependencies:
- base >= 4.7 && < 5
- gi-gtk
- haskell-gi-base

baseはすでに入っている。haskell-gi-baseはないとgi-gtkパッケージがうまく動作しない。
さらにgi-gtkはstack buid時にコンパイルされるが、依存関係があるため公式のインストールを参考にして以下のコマンドを実行しておく。

sudo apt-get install libgirepository1.0-dev libwebkit2gtk-4.0-dev libgtksourceview-3.0-dev

GUIのHelloworld

公式のHelloworld exampleを参考にして

Main.hs
module Main where

import Lib

main :: IO ()
main = hello
Lib.hs
{-# LANGUAGE OverloadedStrings, OverloadedLabels #-}
module Lib
    ( hello
    ) where



import qualified GI.Gtk as Gtk
import Data.GI.Base

hello :: IO ()
hello = do
  Gtk.init Nothing

  win <- new Gtk.Window [ #title := "こんにちは" ]

  on win #destroy Gtk.mainQuit

  button <- new Gtk.Button [ #label := "おしてね" ]

  on button #clicked (set button [ #sensitive := False,
      #label := "押してくれてありがとう、テストは成功しました" ] )

  #add win button

  #showAll win

  Gtk.main

以上2つのファイルを書き換える。
そしてstack buildすると、gi-gtkを自動でダウンロードしてコンパイルしてくれる。さらに実行ファイルまで生成されるので、

stack exec なんとかproject-exe

とするとウィンドウが表示される。日本語でも表示ができるためgtkを使い慣れた人ならなんとなくわかるのではないでしょうか。


HaskellのGUIをやってみたいがstackが便利なためサポートのあるモジュールを選んだ。だが、公式ではcabalを用いたやりかただったのでstackの方法を記した。エディタはVSCODEだけどサポートや補完もしてくれるのでやりやすい。

4
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4