2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自作OSのデスクトップUIを描画できるようにしたよ😉

Posted at

はい、miku_JK_Jbです

今回は自作OSがユーザー空間でデスクトップUIを描画できるようにした作業について解説していくよ

先にデスクトップUIを見せるとこんな感じ

まずはスタンダードモードだIMG_3163.jpeg

続いてシンプルモードだ
IMG_3173.jpeg
どうだ!これが自作OSのUIだ!!

まぁシンプルモードで色ずれが発生していたり、アプリケーションバーが表示されていなかったりとまだ改善点はたくさんあるんだけどね

それじゃあどうやってデスクトップのUIを描けるようになったのかについて解説するぞう🐘

まず最初にやったのはもろちん設計だ
IMG_2903.jpeg
設計では主にデザインやどのモードをどのデザインにするか、マウスカーソルの形などを決めた

これがデスクトップUIの設計だ

次にUIのパーツを作っていく
これはユーザーが自分で好きなUIにカスタマイズできるようにするために各UIのパーツをモジュール化していった

作ったパーツはこんな感じだ
・タスクバー
・上部バー
・WiFiマーク
・サウンドマーク
・ハンバーガーメニュー(3本のメニュー線)
・電池残量系
・通知ベルマーク
これを作成した

正直これは3本のメニュー線(ハンバーガーメニュー)以外の完成度が💩なのでグラフィカルに美しくしたい

次にUIモードの判別処理を作成した

これはデスクトップUIがスタンダードモードなのかシンプルモードなのかユーザーがカスタマイズしたカスタマイズモードなのかを判別してそのモードを表示できるようにする処理を実装した
まあ今はカスタマイズモードのカスタマイズするアプリを実装していないので、実質スタンダードモードなのかシンプルモードなのかの判別処理になっている

後はカーネルに追加して終了だ!!
まあこれは単純でカーネルにさっき紹介した作業の関数を呼び出してデスクトップ画面を描画できるようになる処理の実装だ

これでデスクトップUIが表示できるようになった
IMG_3163.jpeg
IMG_3173.jpeg
ちなみにこれは完全にカーネル空間から独立してユーザー空間で処理が行われている
カーネル空間とユーザー空間の分離の作業はすでに終わっているが次回のブログで紹介する
今はFreeType経由での多言語化とフォント描画の対応で自作した動的リンカーが動かない問題に四苦八苦している

これが自作OSがユーザー空間でデスクトップの描画ができるようになった作業についての解説でした✨
ということでmiku_JK_Jbでした
次回はFreeType経由で多言語化とフォント描画ができるようになったらいいな🤤

2
0
0

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?