今のところ、Capyはまだ壊れた変更を行っているので、生産で使用する準備ができていません
CapyはZigバージョン0.14.0-dev.1911+3bf89f55c / 2024.10.0-mach (ノミネートされたZigバージョン) 、Zig 0.13.0では機能しません
CapyはZigのGUIライブラリです。主に、オペレーティングシステムからネイティブコントロールを使用してアプリケーションを作成することを目的としています。 Capyは、簡単に書くことができ、多目的であることを目的とした宣言的なUIライブラリです。
スタンドアロンのUIアプリケーションに力を与えること、ゲームへの統合またはその他のレンダリングプロセスが非ゴールであることを目標にしています。
新しいプロジェクトを開始している場合は、Capy-Templateをクローンしてビルド指示に従ってください。
それ以外の場合は、または詳細については、ドキュメントをご覧ください。
質問をして、#Capy-UI Matrixチャネルで更新を受信できます。
Capyを使用した簡単なアプリケーション:
const capy = @import ( "capy" );
const std = @import ( "std" );
pub usingnamespace capy . cross_platform ;
pub fn main () ! void {
try capy . init ();
var window = try capy . Window . init ();
try window . set (
capy . column (.{ . spacing = 10 }, .{ // have 10px spacing between each column's element
capy . row (.{ . spacing = 5 }, .{ // have 5px spacing between each row's element
capy . button (.{ . label = "Save" , . onclick = @ptrCast ( & buttonClicked ) }),
capy . button (.{ . label = "Run" , . onclick = @ptrCast ( & buttonClicked ) })
}),
// 'expanded' means the widget will take all the space it can
// in the parent container
capy . expanded (
capy . textArea (.{ . text = "Hello World!" })
)
})
);
window . setPreferredSize ( 800 , 600 );
window . show ();
capy . runEventLoop ();
}
fn buttonClicked ( button : * capy.Button ) ! void {
std . log . info ( "You clicked the button with text {s}" , .{ button . getLabel ()});
}ボタンやテキスト領域のようなものを簡単に追加できます。この例は、通常、ウィジェットのパラメーターが匿名の構造体( .{ .label = "Save" } )に囲まれていることに気付くために使用できます。また、 capy.Expanded( ... )でウィジェットを包むだけで、できる限りすべてのスペースをとるように指示することもわかります。
貢献は、問題を開き、遭遇したバグやどのような機能を希望するかを抑止するのと同じくらい簡単です。
プロジェクトをより直接支援したい場合は、プロジェクトをフォークしてからプルリクエストを作成できます。
プラットフォームは、他のすべてのOSから構築できる場合にのみサポートされていると見なされます。
伝説:
windows X86_64
windows I386
? MacOSM1
? macOS x86_64
Linux x86_64
Linux I386
✅LinuxAARCH64(PinePhone、Pinebook ...)
freebsd x86_64
?アンドロイド
? iOS
webAssembly
注:Linuxには「公式」GUIライブラリがないため、GTK 4が選択されているため、ほとんどのディストリビューションで構成できます。それはまた、Libadwaitaが採用されない理由でもあります。これは、スタイリングや他のDESとの統合を許可することによってのみGNOMEとGNOMEを対象としているためです。
今のところ、すべてのプラットフォームが同じコンポーネントをサポートするわけではありません。したがって、サポートされているもののリストは次のとおりです。
| Win32 | macos | GTK | アンドロイド | WASM | |
|---|---|---|---|---|---|
| ボタン | ✅ | ✅ | ✅ | ✅ | ✅ |
| キャンバス | ✅ | ✅ | ✅ | ||
| チェックボックス | ✅ | ✅ | |||
| 落ちる | ✅ | ✅ | |||
| 画像 | ✅ | ✅ | |||
| ラベル | ✅ | ✅ | ✅ | ✅ | ✅ |
| メニュー | |||||
| ナビゲーション | |||||
| Navigationsidebar | ✅ | ||||
| スクロール可能 | ✅ | ✅ | |||
| スライダー | ✅ | ✅ | ✅ | ||
| タブ | ✅ | ✅ | |||
| Textarea | ✅ | ✅ | |||
| テキストフィールド | ✅ | ✅ | ✅ | ✅ | |
| ウィンドウ | ✅ | ✅ | ✅ | ✅ | ✅ |