Bakulogスマートフォン用の表示で見るBakulog獏の夢日記的な何か。デスクトップマスコットタイトルの通りです。ふつうにD言語でDWTを導入するまでの参考にもなるかもしれません。本題に入る前に、「D言語でデスクトップマスコット作る」というのは私が言いだしたネタではなくてnamachanさんが宣言していた話題であることを注記させていただきます。私はデスクトップマスコット関連の話題に手広くアプローチしたいので本記事を書ける程度にはD言語に触りましたが、凝ったデスクトップマスコットを作れるほどD言語に詳しいわけではありません。くじDWTというGUIフレームワークJava/SWTなら非矩形ウィンドウはこう作れるDWT製のアプリをビルドする(Windows)DWT製のアプリをビルドする(Ubuntu)絵の出る非矩形ウィンドウを表示するコードまとめと要改善点DWTというGUIフレームワークでは本題。記事タイトルにもありますが本記事ではD言語でデスクトップマスコットを作る方法の導入を見せます。デスクトップマスコットを作るにあたり、GUIフレームワークの特性として長方形の枠を消したウィンドウ(=非矩形ウィンドウ)が出せるかどうかが重要なポイントになります。D言語で使えるGUIフレームワークの一覧は公式ページなどで確認できますが、最初のハードルとして「非矩形ウィンドウに対応してるのはどれ?」という観点で注意深くフレームワークを選ばなければなりません。幸いにしてD言語の場合はJava用のフレームワーク「SWT」のラッパーにあたるDWTというやつが非矩形ウィンドウに対応しているので、これを使ってみます。完成イメージはこんな感じ。15.10でデスクトップマスコットのひな型が出来るまでの手順を紹介します。Java/SWTなら非矩形ウィンドウはこう作れる実装の前に本記事で参考にしたJavaの記事を紹介します。「Javaで非矩形ウィンドウ(その3)」という記事があり、この記事ではJavaとSWTで非矩形ウィンドウが作れるのを紹介しています。リンク先にはjarの入ったサンプルもあるため、Javaコードを普通に読んでD言語にそれっぽく置き換えれば良さそうだ、という見通しが立ちます。いう時はフレームワークの底が共通なのは心臓に優しくていいですね。DWT製のアプリをビルドする(Windows)Qiitaに「dwtを使ってみた(Windowsインストール編)」というドンピシャな記事があるため私からは説明しません。DWT製のアプリをビルドする(Ubuntu)こっちは普通にやったらコケたので少し丁寧に。ビルドまでの手順は「DWTのインストール」と「簡単なサンプル実行」の2段階に分かれます。installでインストールすればOKです。問題は後半のサンプルスクリプト実行です。サンプルスクリプト自体はGithubのハローワールドサンプルとして載ってるのを使って大丈夫です。いちおうこちらにも転記しておきます。display.dispose();}これをビルドするのですが、Githubに載っているLinux用のビルドコマンドをそのまま試した所失敗しました。私がビルドを通すにあたっては以下のように修正しています。-L-lgnomeui-2ポイントはdwt-baseとswtのライブラリをリンクする所で末尾に".a"拡張子をつけるところです。コレでうまく行く理由が気になる場合は"-L-l:dwt-base.a"の手前あたりにリンカのファイル探索結果メッセージが出力されるようオプション"-L--verbose"を追記したううえで、".a"拡張子を書かずに(=Githubにあるコマンドの通りに)ビルドを試してみてください。いうのが計3か所出てきますが、これは私がDWTをインストールしたディレクトリです。必要に応じて書き換えて下さい。)を使うと失敗する場合があるのでこれについてもご注意を。絵の出る非矩形ウィンドウを表示するコードコード見てもらった方が速いのでそのまま貼ります。display.dispose();}上の例ではファイルの実行ディレクトリに"hoge.bmp"という画像がある想定でコードが書かれています。これをビルドすると記事冒頭に載せたようなD言語くんが表示されます。この例ではなるべく単純に動くようにしたかったためbmp画像を使ってますが、別にpngやjpgでも動作すると思います。今回は「非矩形ウィンドウが出た!」というだけの話題ですが以上となります。デスクトップマスコットらしい改善を行うにはマウスで掴んで動かせるようにする画像アニメーションさせる会話ダイアログを表示する自分で勝手に動くようにするなど必要な事がまだまだあるので、公開するデスクトップマスコットの作成に際してはそのあたりでも工夫が要求されるでしょう。その際に参考にする資料ですが、DWTはSWTを素直にラップしてるのでSWTのドキュメンテーションをよく読むことが必要になります。DWTのインストールディレクトリにある"org.eclipse.swt.snippets"ディレクトリ以下には色々なGUIコントロールを使うD言語コードのサンプルが沢山入っているので、このあたりも参考にすると思い通りの実装が出来るんじゃないかなーと思います。はてなブログPro獏の夢日記的な何か。xR、ロボティクス、ゲームエンジン(Unity)、モバイル(AndroidとXamarin.Forms)、C#仕事関係は原則TwitterのDMでお願いします。月別アーカイブはてなブログをはじめよう!baku_dreameaterさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。