Tag: Gui

k3s上でxpra + OpenboxのGUI Podを動かす設計

k3s上でxpra + OpenboxのGUI Podを動かす設計

k3s 上で一時的な GUI desktop を動かしたい場合、xpra start-desktop と Openbox の組み合わせは小さく始めやすい。

目的は「Kubernetes 上に恒久的な VDI を作る」ではなく、検証用の軽量 desktop を 1 Pod で起動し、browser から操作できるようにすることである。

最小構成

flowchart LR
  Browser["Browser"]
  Ingress["Ingress or port-forward"]
  Service["Service :10000"]
  Pod["Pod"]
  Xpra["xpra server + HTML5 client"]
  Openbox["Openbox session"]
  Tmp["emptyDir runtime dirs"]

  Browser --> Ingress --> Service --> Pod
  Pod --> Xpra --> Openbox
  Pod --> Tmp

最初の PoC は次の範囲に絞る。

  • 1 namespace
  • 1 Deployment
  • 1 ClusterIP Service
  • HTML5 client
  • Openbox session
  • /tmp/var/tmp/run/user/<uid>emptyDir
  • audio / GPU / IME は後回し

この範囲なら、resource と security の切り分けがしやすい。

Read more...

GUIツールのショートカットを統一していきたい

背景

macOSとLinuxのキーバインドを近づけていきたい。 macOSはHammerspoonで LinuxはKDEで設定していく.

Firefox、アクティブになっていなかったらをフロントに出したい

Linux

wmctrlをインストールした上で下記スクリプトを用意

#!/bin/bash

proc="Firefox" # プロセス名
cmd="firefox"  # 起動するコマンド名

# 現在のアクティブなワークスペースを取得
current_workspace=$(wmctrl -d | grep '*' | awk '{print $1}')

# 現在のワークスペースにあるウィンドウIDを取得
window_ids=$(wmctrl -l | grep ${proc} | awk '{print $1}')

found_in_workspace=false

# 現在のワークスペースにあるFirefoxのウィンドウをアクティブにする
for id in $window_ids; do
    window_workspace=$(wmctrl -lG | grep $id | awk '{print $2}')
    if [ "$window_workspace" == "$current_workspace" ]; then
        # ウィンドウをアクティブにする
        wmctrl -i -a $id
 # ウィンドウを最大化
        wmctrl -ir $id -b add,maximized_vert,maximized_horz
 found_in_workspace=true
        break
    fi
done

# 現在のワークスペースにウィンドウがない場合、新しいウィンドウを開く
if ! $found_in_workspace; then
    $cmd &
    echo "新しい${proc}ウィンドウを開きました。"
fi

KDEのシステム設定 -> ショートカット -> カスタムショートカット に追加。 私は「自分で設定」というショートカットのフォルダを作った上で、その中にショートカットを追加している。 フォルダの上で「New」「グローバルショートカット」「コマンド/URL」で指定する。

Read more...