Work/DIWAN
macOS · Media Centre

DIWAN

A Media Centre for the Whole Screen

大画面のためのメディアセンター

DIWAN icon
01

Overview

概要

Films, music and games in one grid, driven by a controller, no keyboard needed. Diwan (دیوان) is both the hall where people gather and a collected body of works.

映画・音楽・ゲームを一つのグリッドに。コントローラーだけで操作でき、キーボードは不要です。Diwan(دیوان)は「人が集う広間」と「作品集」の両方を意味します。

Built for the sofa: on first launch the library is empty by design, and Diwan only indexes the folders you point it at.

ソファで使うために作りました。初回起動時のライブラリはあえて空にしてあり、指定したフォルダだけを読み込みます。

02

How it was built

開発

Films go through mpv as a child process: Diwan launches it borderless at the screen's exact size and drives it over its JSON IPC socket, while drawing its own on-screen controls through a transparent window on top. That gives 10-bit HEVC, HDR and real audio and subtitle track switching. Music plays in-app through Web Audio so the visualisers can read the actual waveform.

映画はmpvを子プロセスとして起動し、画面と同じサイズの枠なしウィンドウで再生。JSON IPCソケット経由で制御しながら、透明なウィンドウを重ねて独自の操作画面を描画します。これにより10bit HEVC、HDR、音声・字幕トラックの切り替えに対応。音楽はWeb Audioでアプリ内再生し、ビジュアライザーが実際の波形を読み取れるようにしています。

03

What it does

機能
01
Controller first
コントローラー操作

Navigate everything from a gamepad; Start opens Settings.

すべてゲームパッドで操作。Startボタンで設定を開きます。

02
Real track switching
トラック切り替え

Audio and subtitles side by side, with language codes resolved and sidecar .srt/.ass picked up.

音声と字幕を並べて選択。言語コードを名前に変換し、外部の.srt/.assも自動で読み込み。

03
Resume anywhere
続きから再生

Position is remembered per file, with a gold line on the tile showing how far in you are.

ファイルごとに再生位置を記憶し、タイルの金色の線で進み具合を表示。

04
Music with visualisers
ビジュアライザー付きの音楽

Local libraries with tags and art read by the Rust lofty crate.

Rustのloftyでタグとアートワークを読み込むローカル音楽ライブラリ。

04

Stack

技術構成

Tauri 2 and Rust with a React 19 interface; video through mpv, music through Web Audio.

Tauri 2とRust、React 19のUI。映像はmpv、音楽はWeb Audioで再生。

A living-room app should never ask you to find the keyboard.

リビングのアプリは、キーボードを探させてはいけない。

Next case study 次の実績
AUDIOCHECK
A Tiny Pill That Tells You Where Your Sound Is About to Go
→