Eww:美しく柔軟な次世代ウィジェット

eww

Eww(Elkowar's Wacky Widgets)についての概要と詳細

Ewwとは

Eww(Elkowar's Wacky Widgets)は、Linuxのデスクトップ環境で使える超軽量で高機能なウィジェットツールです。Rustで書かれており、X11やWayland環境で動作し、時計、システム情報、音量、バッテリー、天気、カレンダーなど様々な情報をウィジェットとして表示できます。主にi3xmonadhyprlandなどのタイル型ウィンドウマネージャとの組み合わせで人気があります。

主な用途

  • 時計やカレンダーの表示
  • CPUやメモリ、ディスク、ネットワーク情報のリアルタイム表示
  • 音量や輝度のコントロールウィジェット
  • 通知センターやランチャーメニューの構築
  • 天気、RSS、タスク管理、Bluetooth/バッテリー監視など

主な特徴

  • 超軽量:Rust製で非常に高速かつリソース消費が少ない
  • 柔軟なUI設計:YAMLライクな構文でレイアウト・テーマを簡単定義
  • CSS風スタイル指定:柔軟に見た目をカスタマイズ可能
  • シェルスクリプトやPythonとの連携:バックエンドでデータ取得・更新が可能
  • X11・Wayland両対応:近代的な環境でも問題なく動作

インストール方法

  • Arch Linux系: sudo pacman -S eww
  • その他ディストリビューション(手動ビルド): git clone https://github.com/elkowar/eww cd eww cargo build --release sudo cp target/release/eww /usr/local/bin/ cargo(Rustビルドツール)が必要です。

構成ディレクトリ例

~/.config/eww/
├── eww.yuck       ← UI構成(ウィジェット定義)
├── eww.scss       ← スタイル設定(色や配置など)
├── scripts/       ← シェル/Pythonなどで動的データを取得するスクリプト群
└── assets/        ← 画像・アイコンなど

基本的な使い方

eww daemon &        # バックグラウンドでデーモン起動
eww open example    # exampleという名前のウィジェットを表示
eww close example   # exampleを閉じる

サンプル:時計ウィジェット

eww.yuck

(defwidget clock []
  (box :orientation "vertical"
       :class "clock-box"
    (label :text (run "date '+%H:%M:%S'") :class "clock-time")
    (label :text (run "date '+%Y-%m-%d'") :class "clock-date")
  )
)

eww.scss

.clock-box {
  background-color: rgba(0, 0, 0, 0.5);
  border-radius: 12px;
  padding: 10px;
}
.clock-time {
  font-size: 36px;
  color: #00ffff;
}
.clock-date {
  font-size: 16px;
  color: #ffffff;
}

スクリプト連携の例(Pythonやsh)

(label :text (run "python3 ~/.config/eww/scripts/battery_status.py"))

定期的に実行して情報を更新したい場合、watch機能や--intervalオプションを使って更新を自動化します。

主な用途別ウィジェット例

  • system_status.yuck: CPU/メモリ/温度表示
  • network.yuck: Wi-Fi名やIP、通信速度
  • weather.yuck: 外部API連携による天気表示
  • launcher.yuck: アプリケーション起動ランチャー

起動時に自動表示させるには

# xinitrcやautostartに記述
eww daemon &
sleep 1
eww open bar

まとめ

Ewwは、Linuxデスクトップに美しく、直感的で、軽量なインターフェースを追加するための強力なツールです。ウィンドウマネージャ環境にステータスバーや通知領域、インジケータを作成したいユーザーにとって、シンプルながら強力な選択肢となります。Rustベースで軽快に動作し、カスタマイズの自由度も極めて高いため、デスクトップ環境の統一感と利便性を高めるのに非常におすすめです。