{"id":24834660,"url":"https://github.com/na-trium-144/webcface","last_synced_at":"2025-10-14T08:31:58.553Z","repository":{"id":174624049,"uuid":"652469423","full_name":"na-trium-144/webcface","owner":"na-trium-144","description":"Web-based Communication Framework \u0026 Dashboard-like UI","archived":false,"fork":false,"pushed_at":"2025-09-28T11:35:38.000Z","size":197352,"stargazers_count":6,"open_issues_count":27,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-28T12:06:46.204Z","etag":null,"topics":["immediate-gui","immediate-mode","ipc","msgpack","publish-subscribe","rpc","websocket"],"latest_commit_sha":null,"homepage":"https://na-trium-144.github.io/webcface/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/na-trium-144.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-12T06:21:42.000Z","updated_at":"2025-09-28T10:48:42.000Z","dependencies_parsed_at":"2024-02-09T08:24:25.671Z","dependency_job_id":"15e10d64-4bf0-49d5-ae4c-a490ba966236","html_url":"https://github.com/na-trium-144/webcface","commit_stats":null,"previous_names":["na-trium-144/webcface"],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/na-trium-144/webcface","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-trium-144%2Fwebcface","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-trium-144%2Fwebcface/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-trium-144%2Fwebcface/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-trium-144%2Fwebcface/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/na-trium-144","download_url":"https://codeload.github.com/na-trium-144/webcface/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-trium-144%2Fwebcface/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018313,"owners_count":26086342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["immediate-gui","immediate-mode","ipc","msgpack","publish-subscribe","rpc","websocket"],"created_at":"2025-01-31T03:33:32.152Z","updated_at":"2025-10-14T08:31:58.547Z","avatar_url":"https://github.com/na-trium-144.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003csub\u003e\u003cimg src=\"https://raw.githubusercontent.com/na-trium-144/webcface-webui/main/public/icon.svg\" height=\"40\" /\u003e\u003c/sub\u003e\nWebCFace\n====\n\u003c!-- ↑ a workaround to ensure the heading is properly displayed in both Doxygen and GitHub --\u003e\n\n[![C++17](https://img.shields.io/badge/C%2B%2B-17-blue?logo=C%2B%2B)](https://github.com/na-trium-144/webcface)\n[![release](https://img.shields.io/github/v/release/na-trium-144/webcface)](https://github.com/na-trium-144/webcface/releases)\n[![coverage](https://raw.githubusercontent.com/na-trium-144/webcface/badge/coverage.svg)](https://github.com/na-trium-144/webcface/actions/workflows/cmake-coverage.yml)  \n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/webcface?logo=Python\u0026logoColor=white)](https://github.com/na-trium-144/webcface-python)\n[![PyPI - Version](https://img.shields.io/pypi/v/webcface)](https://pypi.org/project/webcface/)  \n[![javascript](https://img.shields.io/badge/JavaScript%2C%20TypeScript-gray?logo=JavaScript\u0026logoColor=white)](https://github.com/na-trium-144/webcface-js)\n[![npm](https://img.shields.io/npm/v/webcface)](https://www.npmjs.com/package/webcface)\n\nWeb-based Communication Framework \u0026amp; Dashboard-like UI\n\n* WebCFace allows inter-process communication like ROS1, data visualization and function calls via GUI, and the creation of simple UIs in Immediate-Mode.\n* It allows sending and receiving data such as numbers, strings, and images, as well as calling functions between C++ (C++17 or later), C, Python (3.6 or later), and JavaScript/TypeScript.\n* Works on Linux, MacOS, and Windows (MSVC, MinGW, MSYS2, Cygwin).\n\n\u003e \n\u003e * ROS1のようなプロセス間通信と、GUIによるデータの可視化や関数呼び出し、また Immediate-Mode でのシンプルなUIの作成ができます。\n\u003e * C++ (C++17以上), C, Python (3.6以上), JavaScript/TypeScript で相互に数値、文字列、画像などのデータを送受信したり、関数を呼び出したりすることができます。\n\u003e * Linux, MacOS, Windows(MSVC, MinGW, MSYS2, Cygwin) で動作します。\n\n## Table of contents\n\n\u003c!--ts--\u003e\n   * [Table of contents](#table-of-contents)\n   * [Features](#features)\n      * [Easy to Setup](#easy-to-setup)\n      * [Inter-Process Communication](#inter-process-communication)\n      * [WebUI](#webui)\n      * [WebCFace-Tools](#webcface-tools)\n   * [Documentation](#documentation)\n   * [Links](#links)\n   * [Installation](#installation)\n      * [Linux (x86_64, arm64, armhf) / MacOS (x86_64, arm64)](#linux-x86_64-arm64-armhf--macos-x86_64-arm64)\n         * [Deb Package](#deb-package)\n         * [Unzip manually (Linux)](#unzip-manually-linux)\n         * [macOS](#macos)\n      * [Homebrew (MacOS, Linux)](#homebrew-macos-linux)\n      * [Windows MSVC (x86, x64, arm64)](#windows-msvc-x86-x64-arm64)\n      * [Docker (x86_64, arm64, armhf)](#docker-x86_64-arm64-armhf)\n         * [webcface-server](#webcface-server)\n         * [webcface-tools](#webcface-tools-1)\n   * [License](#license)\n\u003c!--te--\u003e\n\n## Features\n\n### Easy to Setup\n\nWebCFace consists of a server-side program `webcface-server` and client libraries.\nTo use it, simply start the server and run a program using the client library.\nUnlike ROS, it does not have workspace management features, making it easy to integrate into any framework project.\n\nFor C / C++, if you are using CMake, you can use `find_package(webcface)`, or if you are using pkg-config, you can use `pkg-config --cflags --libs webcface`.\n\nThe library itself is a single file:\n\n* Linux: `libwebcface.so.\u003cversion\u003e`\n* Mac: `libwebcface.\u003cversion\u003e.dylib`\n* Windows: `webcface-\u003cversion\u003e.dll` (Release) or `webcfaced-\u003cversion\u003e.dll` (Debug)\n\nso you can also manually link to this library.\n\nFor Python and JavaScript, simply install the `webcface` package from PyPI / npm.\nSince it uses WebSocket for communication, it works directly in web browsers.\n\n\u003e WebCFaceはサーバー側のプログラム `webcface-server` と、\n\u003e クライアントライブラリで構成されています。\n\u003e 使い方はサーバーを起動し、クライアントライブラリを利用したプログラムを起動するだけです。\n\u003e ROSのようなワークスペース管理機能はなく、どんなフレームワークのプロジェクトにも簡単に組み込むことができます。\n\u003e \n\u003e C / C++ の場合、WebCFaceのライブラリは\n\u003e CMake を使っていれば `find_package(webcface)`、\n\u003e pkg-config なら`pkg-config --cflags --libs webcface`\n\u003e で簡単に利用できます。\n\u003e \n\u003e またライブラリ本体は\n\u003e \n\u003e * Linux: `libwebcface.so.\u003cversion\u003e`\n\u003e * Mac: `libwebcface.\u003cversion\u003e.dylib`\n\u003e * Windows: `webcface-\u003cversion\u003e.dll` (Release) or `webcfaced-\u003cversion\u003e.dll` (Debug)\n\u003e \n\u003e の1つのみであり、手動でこのライブラリにリンクして使うこともできます。\n\u003e \n\u003e Python, JavaScript には PyPI / npm に `webcface` パッケージを用意しているのでそれをインストールするだけで使えます。\n通信にWebSocketを使用しているため、Webブラウザ上でもそのまま動作します。\n\n### Inter-Process Communication\n\nWebCFace uses WebSocket and MessagePack for communication.\nThis allows communication not only between processes but also with web browsers.\nAdditionally, if available, it uses Unix domain sockets instead of TCP for communication on the same machine or via Docker, WSL, etc.\n\nThe data types that can be sent and received with WebCFace include:\n\n* Numeric type / Numeric array type (Value)\n* String type (Text)\n* Image (Image)\n* Function call (Func)\n* Text log (Log)\n\nAlthough it may have less flexibility compared to ROS or gRPC, which allow users to define message types, it is easy to send and receive data with these combinations of data types.\nFor code examples, refer to the documentation [1-2. Tutorial (Communication)](https://na-trium-144.github.io/webcface/md_docs_212__tutorial__comm.html).\n\nImage data can be resized or compressed to JPEG or PNG during transmission on the server side, reducing communication volume if compressed images are sufficient for display purposes.\n\nThe communication data format of WebCFace is common regardless of OS or library language, and it is backward compatible between versions.\nThis means that communication is possible between clients of different versions and different OS versions without any issues, as long as the server is newer than the client.\nFor details, refer to [8-4. Versioning](https://na-trium-144.github.io/webcface/md_docs_284__versioning.html).\n\n\u003e WebCFaceの通信にはWebSocketとMessagePackを使っています。\nこのためプロセス間だけでなくWebブラウザーとの通信が可能になっています。\nさらに同一マシン上やDocker,WSL経由など使用可能な場合はTCPの代わりにUnixドメインソケットを使用します。\n\u003e \n\u003e WebCFaceで送受信できるデータ型として\n\u003e \n\u003e * 数値型・数値配列型(Value)\n\u003e * 文字列型(Text)\n\u003e * 画像(Image)\n\u003e * 関数呼び出し(Func)\n\u003e * テキストログ(Log)\n\u003e \n\u003e などの型が用意されています。\n\u003e ユーザーがメッセージ型を定義できるROSやgRPCと比べると自由度は低いかもしれませんが、\n\u003e これらのデータ型の組み合わせであれば簡単に送受信させることができます。\n\u003e コード例についてはドキュメントの\n\u003e [1-2. Tutorial (Communication)](https://na-trium-144.github.io/webcface/md_docs_212__tutorial__comm.html)\n\u003e を参照してください。\n\u003e \n\u003e Image型データは送受信の過程で画像を縮小したりJPEGやPNGに圧縮したりといった操作をサーバー側で行うことができます。\n\u003e 表示目的など、圧縮した画像で十分な場合には簡単に通信量を削減できます。\n\u003e \n\u003e WebCFaceの通信データ形式はOSやライブラリの言語によらず共通で、またバージョン間で後方互換性があります。\n\u003e つまり、サーバーがクライアントより新しいバージョンでさえあれば、異なるバージョンのクライアント同士でも、異なるバージョンのOSでも問題なく通信が可能です。\n\u003e 詳細は\n\u003e [8-4. Versioning](https://na-trium-144.github.io/webcface/md_docs_284__versioning.html)\n\u003e を参照してください。\n\n### WebUI\n\nWebCFace provides not only an API for sending and receiving data between programs but also a UI (WebUI) that allows visualizing data and calling functions communicated via WebCFace from a web browser.\n\nFurthermore, you can define the arrangement of buttons and input fields on the side of programs using WebCFace in C++, Python, etc., and display them in the WebUI.\nThis allows you to create simple UIs without knowledge of HTML or CSS.\nFor code examples, refer to the documentation [1-1. Tutorial (Visualizing)](https://na-trium-144.github.io/webcface/md_docs_211__tutorial__vis.html).\n\nSimilarly, 2D and 3D shapes can also be drawn in the WebUI with only descriptions on the side of programs using WebCFace.\n\n\u003e WebCFaceではプログラム間でデータの送受信ができるAPIだけでなく、\n\u003e WebブラウザーからWebCFaceで通信されているデータを可視化したり関数を呼び出したりできるUI(WebUI)を提供します。\n\u003e \n\u003e さらにボタンや入力欄などの並べ方をWebCFaceを使ったC++,Pythonなどのプログラムの側で定義してそれをWebUIに表示させることができ、\n\u003e これによりHTMLやCSSの知識がなくても簡易なUIを作成することができます。\n\u003e コード例はドキュメントの\n\u003e [1-1. Tutorial (Visualizing)](https://na-trium-144.github.io/webcface/md_docs_211__tutorial__vis.html)\n\u003e を参照してください。\n\u003e \n\u003e また、同様に2D、3Dの図形もWebCFaceを使ったプログラム側の記述のみでWebUIに描画させることができます。\n\n![webcface-webui](https://raw.githubusercontent.com/na-trium-144/webcface/main/docs/images/webcface-webui.png)\n\n### WebCFace-Tools\n\nSeveral commands are provided to access WebCFace data from the command line.\n\n[webcface-launcher](https://na-trium-144.github.io/webcface/md_docs_271__launcher.html)\nis a feature that allows you to start and stop pre-registered commands from the WebCFace View.\nYou can keep only the server and launcher running at all times and remotely control programs using the WebUI.\n\n[webcface-tui](https://na-trium-144.github.io/webcface/md_docs_275__tui.html)\nis a TUI application that can be operated on the terminal, allowing you to check data in real-time and operate the View without opening a web browser.\n\n\u003e コマンドラインからWebCFaceのデータにアクセスできるコマンドもいくつか用意しています。\n\u003e \n\u003e [webcface-launcher](https://na-trium-144.github.io/webcface/md_docs_271__launcher.html)\n\u003e は事前に登録しておいたコマンドの起動・停止をWebCFaceのViewから操作することができる機能です。\n\u003e serverとlauncherだけを常時起動しておき、WebUIを使ってプログラムをリモートに操作するという使い方ができます。\n\u003e \n\u003e [webcface-tui](https://na-trium-144.github.io/webcface/md_docs_275__tui.html)\n\u003e はターミナル上で操作できるTUIアプリで、Webブラウザを開かなくてもデータをリアルタイムで確認したり、Viewの操作もできます。\n\n![tui_value](https://github.com/na-trium-144/webcface/raw/main/docs/images/tui_value.gif)\n\n![tui_view](https://github.com/na-trium-144/webcface/raw/main/docs/images/tui_view.png)\n\n\u003c!--\n### PlotJuggler\n\n[plotjuggler-webcface-plugin](https://github.com/na-trium-144/plotjuggler-webcface-plugin) を使うと、WebCFaceで通信されているデータを [PlotJuggler](https://github.com/facontidavide/PlotJuggler) を使って見ることもできます。\n--\u003e\n\n\u003c!--\ntodo: グラフなど使ってわかりやすくする \u0026 ほかの通信ライブラリとの比較をする\n\n### Benchmark\n\nver1.11時点のReleaseビルドの src/example/benchmark.cc で通信速度をチェックしてみました。\n以下の表は クライアント→サーバー→クライアント でさまざまなサイズの文字列データの送受信にかかった時間です。\nなおこれはサーバーとクライアントが同一マシン上の場合の結果なので、Wi-FiやEthernetを経由する場合はその環境次第ですがこれより遅くなると思います。\n\n使用したPCのCPUは、MacOSは Apple M1 、それ以外は Intel Core i5-13500 です。\n\n\u003cdetails\u003e\u003csummary\u003e表\u003c/summary\u003e\n\n| OS | 10Byte | 100Byte | 1kByte | 10kByte | 100kByte | 1MByte |\n| ---- | ---- | ---- | ---- | ---- | ---- | ---- |\n| Windows (MSVC build) | 244 μs | 301 μs | 381 μs | 428 μs | 2.82 ms | 22.5 ms |\n| Windows (MinGW build) | 219 μs | 218 μs | 262 μs | 411 μs | 1.93 ms | 17.0 ms |\n| Linux (on WSL1) | 177 μs | 213 μs | 195 μs | 272 μs | 1.26 ms | 12.3 ms |\n| Server=MSVC + Client=WSL1 | 323 μs | 258 μs | 401 μs | 420 μs | 2.34 ms | 18.2 ms |\n| Server=MSVC + Client=WSL2 | 379 μs | 369 μs | 488 μs | 656 μs | 2.47 ms | 17.6 ms |\n| Server=WSL1 + Client=MSVC | 335 μs | 287 μs | 252 μs | 504 μs | 2.02 ms | 16.3 ms |\n| Server=WSL2 + Client=MSVC | 553 μs | 637 μs | 622 μs | 810 μs | 2.28 ms | 29.5 ms |\n| Linux (Native) | 491 μs | 439 μs | 519 μs | 1.01 ms | 4.78 ms | 27.8 ms |\n| MacOS | 130 μs | 136 μs | 165 μs | 439 μs | 2.98 ms | 28.3 ms |\n\n\u003c/details\u003e\n--\u003e\n\n## Documentation\n\nCurrently available in Japanese only.\n\n* Download and installation instructions are in the README (below this)\n* 1 Tutorial: [Visualizing](https://na-trium-144.github.io/webcface/md_docs_211__tutorial__vis.html) / [Communication](https://na-trium-144.github.io/webcface/md_docs_212__tutorial__comm.html)\n* 2 [Server](https://na-trium-144.github.io/webcface/md_docs_221__server.html) / [WebUI](https://na-trium-144.github.io/webcface/md_docs_222__webui.html)\n* 3 [Setup WebCFace Library](https://na-trium-144.github.io/webcface/md_docs_231__setup.html) / [Building from Source](https://na-trium-144.github.io/webcface/md_docs_232__building.html)\n* [C/C++ API Reference](https://na-trium-144.github.io/webcface/namespaces.html)\n* [webcface-python API Reference](https://na-trium-144.github.io/webcface-python/)\n* [webcface-js API Reference](https://na-trium-144.github.io/webcface-js/)\n\n## Links\n\n* [webcface](https://github.com/na-trium-144/webcface): Server \u0026 C/C++ client library (this repository)\n* [webcface-webui](https://github.com/na-trium-144/webcface-webui): Web browser UI application\n* [webcface-tools](https://github.com/na-trium-144/webcface-tools): Command line tools\n* [webcface-js](https://github.com/na-trium-144/webcface-js): JavaScript client library\n* [webcface-python](https://github.com/na-trium-144/webcface-python): Python client library\n* [webcface-package](https://github.com/na-trium-144/webcface-package): Repository for releasing built server, libraries, WebUI, and tools\n* [homebrew-webcface](https://github.com/na-trium-144/homebrew-webcface): Manages Homebrew tap\n\u003c!-- * [plotjuggler-webcface-plugin](https://github.com/na-trium-144/plotjuggler-webcface-plugin): PlotJuggler plugin --\u003e\n\n## Installation\n\nFor WebCFace ver1, refer to the [v1 branch](https://github.com/na-trium-144/webcface/tree/v1?tab=readme-ov-file#installation) (documentation is Japanese only).\n\nFor ver2, you can download built archives for Linux, MacOS and Windows as follows, or run it with Docker.\nIf you want to build from source, refer to [3-2. Building from Source](https://na-trium-144.github.io/webcface/md_docs_232__building.html).\n\n\u003e WebCFace ver1については [v1ブランチ](https://github.com/na-trium-144/webcface/tree/v1?tab=readme-ov-file#installation) を参照してください。\n\u003e \n\u003e ver2は以下のようにLinux,Windows,MacOS用にビルドしたアーカイブをダウンロードするか、Dockerで動かすことができます。\n\u003e 自分でソースからビルドする場合は [3-2. Building from Source](https://na-trium-144.github.io/webcface/md_docs_232__building.html) を参照してください。\n\n### Linux (x86_64, arm64, armhf) / MacOS (x86_64, arm64)\n\nYou can use the following [installation script](installer.sh).\nBy default, it will install WebCFace using apt-get (on Debian-based systems) or extract the archive manually to /opt/webcface (both on Linux and macOS) and /Applications (on macOS).\nIf it found WebCFace already installed using apt or extracted at /opt/webcface manually, it will install over that.\n(Installation does not occur immediately upon execution, and one or two confirmation prompts will be displayed.)\n\nAfter installation, you may need to add PATH settings to files such as .bashrc or .zshrc.\nFollow the instructions displayed after running the installer.\n\nLinux binaries are built on Ubuntu 20.04, and MacOS binaries are built on Ventura.\nSo they are not guaranteed to work on older OSs or other distros.\n\n\u003e 以下の[インストールスクリプト](installer.sh)を使ってインストールできます。\n\u003e デフォルトでは apt-get でインストールされるか、または手動で /opt/webcface (Linux,MacOS) と /Applications (MacOSのみ) に展開されます。\n\u003e すでにaptを使って、もしくは /opt/webcface に手動で展開されたものがある場合、それを上書きしてインストールします。\n\u003e (実行すると即座にインストールされるわけではなく、1つか2つ確認のプロンプトが表示されます。)\n\u003e\n\u003e インストール後、 .bashrc や .zshrc などのファイルにPATHの設定を追加する必要がある場合があります。\n\u003e インストーラー実行後に表示される指示に従ってください。\n\u003e \n\u003e Linux用バイナリは Ubuntu 20.04 で、 MacOS用バイナリは Ventura でビルドしているため、Ubuntu以外のディストリビューションや古いOSでの動作は保証しません。\n\n```sh\nsudo sh -c \"$(curl -f https://na-trium-144.github.io/webcface/installer.sh)\"\n```\n\nIf you want to automate the installation, add `--` followed by options such as `-a`/`-x` or `-y` at the end.\n\n\u003e スクリプト内などで呼び出して自動化したい場合は、後ろに `--` と `-a`/`-x` や `-y` などのオプションを追加してください。\n\n```sh\nsudo sh -c \"$(curl -f https://na-trium-144.github.io/webcface/installer.sh)\" -- -a -y\n```\n\n```\nUsage: installer.sh [-a|-x] [-y] [-d DIR] [-u] [VERSION]\n  -a: Install with apt-get (only for Debian-based systems)\n  -x: Extract archive manually, without using apt-get\n  -d DIR: Extract archive to DIR (default: /opt/webcface)\n  -u: Extract webcface-desktop.app to $HOME/Applications, instead of the default /Applications (only for macOS)\n  -y: Assume yes for all prompts\n  VERSION: Version to install, without 'v' prefix (default: 3.1.1-1)\n           Available versions: 3.1.1-1 3.1.1 2.9.0-1 2.9.0 2.8.0 2.7.0 2.5.2-1 2.5.2 2.5.1 2.5.0-2 2.5.0-1 2.5.0 2.4.2 2.4.1-2 2.4.1-1 2.4.1 2.4.0-1 2.4.0 2.3.0 2.2.1 2.2.0 2.1.0 2.0.5 2.0.4\n```\n\n\u003cdetails\u003e\n\n#### Deb Package\n\nYou can download and install the Deb package from [WebCFace Releases](https://github.com/na-trium-144/webcface/releases), [webui Releases](https://github.com/na-trium-144/webcface-webui/releases), and [tools Releases](https://github.com/na-trium-144/webcface-tools/releases).\nIn addition to the contents distributed as zip archives, it includes the WebCFace Desktop application launcher.\n\n\u003e Debパッケージとしてビルドしたものを [WebCFaceのReleases](https://github.com/na-trium-144/webcface/releases) と [webuiのReleases](https://github.com/na-trium-144/webcface-webui/releases) 、[toolsのReleases](https://github.com/na-trium-144/webcface-tools/releases) からダウンロードしてインストールできます。\n\u003e 内容はzipアーカイブで配布しているものに加えて WebCFace Desktop のアプリケーションランチャーが含まれます。\n\n\u003cdetails open\u003e\u003csummary\u003ex86_64\u003c/summary\u003e\n\n```sh\ncurl -fLO https://github.com/na-trium-144/webcface/releases/download/v3.1.1/webcface_3.1.1_amd64.deb\ncurl -fLO https://github.com/na-trium-144/webcface-tools/releases/download/v3.0.1/webcface-tools_3.0.1_amd64.deb\ncurl -fLO https://github.com/na-trium-144/webcface-webui/releases/download/v1.15.0/webcface-webui_1.15.0_all.deb\ncurl -fLO https://github.com/na-trium-144/webcface-webui/releases/download/v1.15.0/webcface-desktop_1.15.0_linux_amd64.deb\nsudo apt install ./webcface*.deb\nrm ./webcface*.deb\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003earm64\u003c/summary\u003e\n\n```sh\ncurl -fLO https://github.com/na-trium-144/webcface/releases/download/v3.1.1/webcface_3.1.1_arm64.deb\ncurl -fLO https://github.com/na-trium-144/webcface-tools/releases/download/v3.0.1/webcface-tools_3.0.1_arm64.deb\ncurl -fLO https://github.com/na-trium-144/webcface-webui/releases/download/v1.15.0/webcface-webui_1.15.0_all.deb\ncurl -fLO https://github.com/na-trium-144/webcface-webui/releases/download/v1.15.0/webcface-desktop_1.15.0_linux_arm64.deb\nsudo apt install ./webcface*.deb\nrm ./webcface*.deb\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003earmhf\u003c/summary\u003e\n\n```sh\ncurl -fLO https://github.com/na-trium-144/webcface/releases/download/v3.1.1/webcface_3.1.1_armhf.deb\ncurl -fLO https://github.com/na-trium-144/webcface-tools/releases/download/v3.0.1/webcface-tools_3.0.1_armhf.deb\ncurl -fLO https://github.com/na-trium-144/webcface-webui/releases/download/v1.15.0/webcface-webui_1.15.0_all.deb\ncurl -fLO https://github.com/na-trium-144/webcface-webui/releases/download/v1.15.0/webcface-desktop_1.15.0_linux_armv7l.deb\nsudo apt install ./webcface*.deb\nrm ./webcface*.deb\n```\n\u003c/details\u003e\n\n#### Unzip manually (Linux)\n\nInstead of using apt, you can download the zip file for Linux from the [webcface-package repository](https://github.com/na-trium-144/webcface-package/releases) and extract it to a location of your choice.\n\n* If you have sudo privileges, we recommend extracting it to /usr/local or /opt/webcface.\n* Also, add bin/ in the extracted directory to PATH and lib/\\*-linux-gnu\\*/pkgconfig/ to PKG_CONFIG_PATH.\n\u003c!-- * If you want to use the systemd service file, add a link to the file extracted to /opt/webcface/lib/systemd/system in /etc/systemd/system/.\n    * If you extract it to a location other than /opt/webcface, you will need to manually rewrite the path written in the service file. --\u003e\n\n\u003e aptを使う代わりに、\n\u003e [webcface-package リポジトリから](https://github.com/na-trium-144/webcface-package/releases)\n\u003e linux用のzipファイルをダウンロードし、任意の場所に展開して使うこともできます。\n\u003e * sudo権限が使える場合は /usr/local または /opt/webcface に展開するのがおすすめです。\n\u003e * また、展開したディレクトリ内の bin/ をPATHに、 lib/\\*-linux-gnu\\*/pkgconfig/ をPKG_CONFIG_PATHに追加してください。\n\u003c!-- \u003e * さらにsystemdのサービスファイルを使用したい場合は /opt/webcface/lib/systemd/system に展開されたファイルに対して /etc/systemd/system/ にリンクを貼るなどしてください。\n\u003e     * /opt/webcface 以外の場所に展開した場合はserviceファイルに書かれているパスを手動で書き換える必要があります。 --\u003e\n\n\u003cdetails open\u003e\u003csummary\u003ex86_64\u003c/summary\u003e\n\n```sh\ncurl -fLO https://github.com/na-trium-144/webcface-package/releases/download/v3.1.1-1/webcface_3.1.1-1_linux_amd64.zip\nsudo unzip webcface_3.1.1-1_linux_amd64.zip -d /opt/webcface\nrm webcface_3.1.1-1_linux_amd64.zip\necho 'export PATH=\"/opt/webcface/bin:$PATH\"' \u003e\u003e ~/.bashrc\necho 'export PKG_CONFIG_PATH=\"/opt/webcface/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH\"' \u003e\u003e ~/.bashrc\nsudo ln -sf /opt/webcface/lib/systemd/system/*.service /etc/systemd/system/\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003earm64\u003c/summary\u003e\n\n```sh\ncurl -fLO https://github.com/na-trium-144/webcface-package/releases/download/v3.1.1-1/webcface_3.1.1-1_linux_arm64.zip\nsudo unzip webcface_3.1.1-1_linux_arm64.zip -d /opt/webcface\nrm webcface_3.1.1-1_linux_arm64.zip\necho 'export PATH=\"/opt/webcface/bin:$PATH\"' \u003e\u003e ~/.bashrc\necho 'export PKG_CONFIG_PATH=\"/opt/webcface/lib/aarch64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH\"' \u003e\u003e ~/.bashrc\nsudo ln -sf /opt/webcface/lib/systemd/system/*.service /etc/systemd/system/\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003earmhf\u003c/summary\u003e\n\n```sh\ncurl -fLO https://github.com/na-trium-144/webcface-package/releases/download/v3.1.1-1/webcface_3.1.1-1_linux_armhf.zip\nsudo unzip webcface_3.1.1-1_linux_armhf.zip -d /opt/webcface\nrm webcface_3.1.1-1_linux_armhf.zip\necho 'export PATH=\"/opt/webcface/bin:$PATH\"' \u003e\u003e ~/.bashrc\necho 'export PKG_CONFIG_PATH=\"/opt/webcface/lib/arm-linux-gnueabihf/pkgconfig:$PKG_CONFIG_PATH\"' \u003e\u003e ~/.bashrc\nsudo ln -sf /opt/webcface/lib/systemd/system/*.service /etc/systemd/system/\n```\n\u003c/details\u003e\n\n#### macOS\n\n[From the webcface-package repository](https://github.com/na-trium-144/webcface-package/releases)\nYou can download a zip file for macOS, but since it is not signed or notarized, it will be blocked by Gatekeeper when downloaded from a browser.\n(A screen will appear saying \"Cannot open because the developer cannot be verified.\")\n\nInstead, you can avoid Gatekeeper by downloading and extracting it from the command line as follows.\n(The following command extracts webcface_universal to /opt/webcface and webcface-desktop_app to /Applications, and writes the environment variables to zshrc. Please read appropriately if you are using a different environment.)\n\n* It is a universal binary, and is the same for both IntelMac and Apple Silicon.\n* The webcface library has install_name set to the path /opt/webcface/lib, so if you extract it to a location other than that, you may also need to\n`export DYLD_LIBRARY_PATH=\"(webcface directory path)/lib:$DYLD_LIBRARY_PATH\"`\n\n\u003e [webcface-package リポジトリから](https://github.com/na-trium-144/webcface-package/releases)\n\u003e macos用のzipファイルをダウンロードできますが、\n\u003e 署名や公証をしていないためブラウザーからダウンロードするとGatekeeperにブロックされてしまいます。\n\u003e (開発元を検証できないため開けません。の画面になります)\n\u003e \n\u003e その代わり、以下のようにコマンドラインからダウンロード、展開することでGatekeeperを回避できます。\n\u003e (以下のコマンドは webcface_universal を /opt/webcface に、 webcface-desktop_app を /Applications に展開し、環境変数をzshrcに書き込みます。それ以外の環境の場合は適宜読み替えてください)\n\u003e \n\u003e * Universalバイナリになっており、IntelMacもAppleシリコンも共通です。\n\u003e * webcfaceライブラリはinstall_nameが /opt/webcface/lib のパスになっているため、それ以外の場所に展開した場合は\n\u003e `export DYLD_LIBRARY_PATH=\"(webcfaceディレクトリのパス)/lib:$DYLD_LIBRARY_PATH\"`\n\u003e も必要になるかもしれません。\n\n```sh\ncurl -fLO https://github.com/na-trium-144/webcface-package/releases/download/v3.1.1-1/webcface_3.1.1-1_macos_universal.zip\ncurl -fLO https://github.com/na-trium-144/webcface-package/releases/download/v3.1.1-1/webcface-desktop_3.1.1-1_macos_app.zip\nsudo unzip webcface_3.1.1-1_macos_universal.zip -d /opt/webcface\nsudo unzip webcface-desktop_3.1.1-1_macos_app.zip -d /Applications\nrm webcface_3.1.1-1_macos_universal.zip\nrm webcface-desktop_3.1.1-1_macos_app.zip\necho 'export PATH=\"/opt/webcface/bin:$PATH\"' \u003e\u003e ~/.zshrc\necho 'export PKG_CONFIG_PATH=\"/opt/webcface/lib/pkgconfig:$PKG_CONFIG_PATH\"' \u003e\u003e ~/.zshrc\n```\n\n\u003c/details\u003e\n\n### Homebrew (MacOS, Linux)\n\nYou can install from [na-trium-144/webcface tap](https://github.com/na-trium-144/homebrew-webcface) using brew, but it is not recommended because the webcface built with brew requires many dependent libraries as shared libraries.\n\nAlso, if you install with brew, the WebCFace Desktop app is not included.\n\n\u003e [na-trium-144/webcface のtap](https://github.com/na-trium-144/homebrew-webcface) からインストールできますが、\n\u003e brewでビルドしたwebcfaceはsharedライブラリとして多数の依存ライブラリが必要になるのであまりおすすめしません。\n\u003e \n\u003e また、brewでインストールした場合 WebCFace Desktop アプリは付属しません。\n\n```sh\nbrew tap na-trium-144/webcface\nbrew install webcface webcface-webui webcface-tools\n```\n\n### Windows MSVC (x86, x64, arm64)\n\nYou can download the exe or zip file for Windows from the [webcface-package repository](https://github.com/na-trium-144/webcface-package/releases).\n\n* x86, x64 and arm64 versions are available.\n    * However, the installer and WebCFace Desktop app are always 32-bit.\n* When you run the exe file, the installer will start.\n    * Since it is not signed, it may be blocked by Windows Defender.\n    In that case, click \"More info\" → \"Run\" to run it.\n    * The installation location is by default C:\\Program Files\\webcface (changeable).\n    * Also, the PATH environment variable is set automatically, and a shortcut to WebCFace Desktop is added to the Start menu.\n    * Uninstall it like any other app from the Control Panel or Settings app.\n* Instead of using the installer, you can download and extract the zip file to any location.\n    * To use command-line tools or import it with Meson or CMake, you need to manually add the bin/ in the extracted webcface directory to the PATH environment variable.\n* You need to install the [latest Visual C++ Redistributable Package](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-microsoft-visual-c-redistributable-version) if it's not installed.\n* It should work on relatively new Windows 10 or later. It has not been tested on older Windows.\n* Since it is built with the latest version of Visual Studio 2022, linking to the webcface library from older versions of Visual Studio may not work properly.\n\nMinGW binaries are not distributed at this time (please build from source)\n\n\n\u003e [webcface-package リポジトリから](https://github.com/na-trium-144/webcface-package/releases)\n\u003e windows用のexeファイルまたはzipファイルをダウンロードできます。\n\u003e \n\u003e * x86, x64, arm64バージョンがあります。\n\u003e     * ただしインストーラーと WebCFace Desktop アプリは32bitになっています\n\u003e * exeファイルは実行するとインストーラーが起動します。\n\u003e     * 署名していないため Windows Defender にブロックされるかもしれません。\n\u003e     その場合は「詳細情報」→「実行」をクリックして実行してください。\n\u003e     * インストール場所はデフォルトで C:\\Program Files\\webcface になります。(変更可能です)\n\u003e     * また、自動的に環境変数のPATHが設定され、スタートメニューにも WebCFace Desktop のショートカットが追加されます。\n\u003e     * アンインストールはコントロールパネルや設定アプリから他のアプリと同様にできます。\n\u003e * インストーラーを使う代わりに、zipファイルを任意の場所に展開して使用することもできます。\n\u003e     * コマンドラインツールやライブラリを使う(Meson,CMakeでインポートする)には、展開したwebcfaceディレクトリの中の bin/ を手動で環境変数のPATHに追加する必要があります。\n\u003e * [最新の Visual C++ 再頒布可能パッケージ](https://learn.microsoft.com/ja-jp/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-microsoft-visual-c-redistributable-version)\n\u003e がインストールされていない場合はインストールする必要があります。\n\u003e * 比較的新しいWindows10以上であれば動作するはずです。古いWindowsでは動作確認していません。\n\u003e * いずれも最新バージョンの Visual Studio 2022 でビルドしているため、それよりも古い Visual Studio からwebcfaceライブラリにリンクすると正常動作しないかもしれません。\n\u003e \n\u003e MinGW用バイナリは今のところ配布していません(ソースからビルドしてください)\n\n### Docker (x86_64, arm64, armhf)\n\nYou can also pull and run `webcface-server` and tools using Docker.\nThe image is released as [ghcr.io/na-trium-144/webcface-package/webcface-amd64](https://ghcr.io/na-trium-144/webcface-package/webcface-amd64).\nFor arm64 or armhf, replace `amd64` in the image name.\n\n\u003e Dockerを使って `webcface-server` とコマンドラインツールを実行することもできます。\n\u003e Dockerイメージは [ghcr.io/na-trium-144/webcface-package/webcface-amd64](https://ghcr.io/na-trium-144/webcface-package/webcface-amd64) としてリリースしています。\n\u003e arm64やarmhfの場合はイメージ名の `amd64` の部分を変更してください。\n\n#### webcface-server\n\n* Example (TCP and Unix Socket)\n```sh\ndocker run --rm \\\n    -p 7530:7530 \\\n    -v /tmp/webcface:/tmp/webcface \\\n    ghcr.io/na-trium-144/webcface-package/webcface-amd64:latest\n```\n\n#### webcface-tools\n\n* Example (Unix Socket)\n```sh\ndocker run --rm \\\n    -v /tmp/webcface:/tmp/webcface \\\n    ghcr.io/na-trium-144/webcface-package/webcface-amd64:latest \\\n    webcface-ls\n```\n* Example (TCP)\n```sh\ndocker run --rm \\\n    --add-host=host.docker.internal:host-gateway \\\n    ghcr.io/na-trium-144/webcface-package/webcface-amd64:latest \\\n    webcface-ls -a host.docker.internal\n```\n\n## License\n\nWebCFace and related programs are all released under the MIT license. For details, see [LICENSE](https://github.com/na-trium-144/webcface/blob/main/LICENSE).\n\nThird-party libraries used by WebCFace itself and tools are licensed as follows:\n\n\u003e WebCFaceと関連するプログラムはすべてMITライセンスで公開しています。詳細は [LICENSE](https://github.com/na-trium-144/webcface/blob/main/LICENSE) を参照してください。\n\u003e \n\u003e WebCFace本体とtoolsが使用しているサードパーティーのライブラリのライセンスはそれぞれ以下を参照してください。\n\n* Asio (Boost Software License): http://think-async.com/Asio/\n* CLI11 (BSD 3-Clause): https://github.com/CLIUtils/CLI11\n* Crow (BSD 3-Clause): https://github.com/CrowCpp/Crow\n* curl: https://curl.se/docs/copyright.html\n* fmt (MIT): https://github.com/fmtlib/fmt\n* libvips (LGPL-2.1): https://github.com/libvips/libvips\n* msgpack-cxx (Boost Software License): https://github.com/msgpack/msgpack-c\n* spdlog (MIT): https://github.com/gabime/spdlog\n* UTF8-CPP (BSD 1.0): https://github.com/nemtrif/utfcpp\n* FTXUI (MIT): https://github.com/ArthurSonzogni/FTXUI\n* tiny-process-library (MIT): https://gitlab.com/eidheim/tiny-process-library\n* toml++ (MIT): https://github.com/marzer/tomlplusplus\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fna-trium-144%2Fwebcface","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fna-trium-144%2Fwebcface","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fna-trium-144%2Fwebcface/lists"}