Interfaces
Posted:
| Tags:
ddcutil,
desktop,
interface,
linux,
midi
目的
KORG nanoKONTROL2 のような USB MIDI controller を、Linux desktop の物理操作盤として使いたいのでGolangで作った。
midi-switch
MIDI event を ALSA sequencer で読み、ddcutil でディスプレイの入力ソース、明るさ、コントラストを操作し、必要なら pactl で音量も操作する。
構成は単純にする。
USB MIDI controller
-> ALSA sequencer event
-> small daemon
-> ddcutil / pactl
-> display input / brightness / contrast / volume
できた感想
リモートワークで窓際で作業してるのですが時間帯や天気によってディスプレーの明るさやコントラストを変えたくなるのですが
MIDIのスライドバーとかボリュームボタンで変えられて嬉しいです
あとラズパイの検証時、ディスプレー入力をちょいちょい変えたくなるので便利になった(稀に起動初期の画面がみたい事がある)
方針
初期実装では MIDI library へ直接つながず、aseqdump の stdout を読む方式で十分に価値がある。
理由:
aconnect -l と aseqdump の結果をそのまま調査ログとして使える- MIDI button、knob、slider の note / controller 番号を目視で確定しやすい
- ALSA sequencer port が見えていれば Go や shell からすぐ扱える
- 仕様が固まってから gomidi / RtMidi などへ移行できる
ddcutil 側も、まずは ddcutil detect、getvcp、setvcp を外部 command として呼ぶ。
daemon 内で DDC/CI protocol を直接実装しないことで、モニター差分の切り分けを ddcutil に寄せられる。
Read more...Posted:
| Tags:
interface,
kde,
keyboard,
labwc,
wayland
Wayland desktopでキーバインドをOS横断に寄せる設計メモ
目的
macOS、Windows、Linux で、アプリ起動、ウィンドウ移動、タイル配置、仮想デスクトップ移動の操作感を近づけたい。
ただし Linux Wayland では、X11 時代のように外部プロセスから任意ウィンドウを横断操作する前提にしていない。
Wayland では compositor が入力とウィンドウ管理の権限境界になる。
このため、キーボードの低レイヤ変換とウィンドウ操作を分ける。
一旦考えた基本方針
- CapsLock/Ctrl や layer 的なキー変換は
keyd に寄せる - アプリ起動、ウィンドウ移動、最大化、タイル配置は compositor / window manager 側に寄せる
- KDE Plasma Wayland では KWin global shortcut と
.desktop entry を使う - labwc では
~/.config/labwc/rc.xml の native action を使う - package install、service enable、設定配置は Ansible などの構成管理に寄せる
keyd は「キーを別のキーとして見せる」層に留める。
アプリ起動やウィンドウ制御まで keyd でやろうとすると、Wayland の compositor 境界を迂回する設計になりやすい。
責務分離
| 領域 | Linuxでの担当 | 理由 |
|---|
| CapsLockをCtrlにする | keyd | session / compositor 非依存にしたい |
| Hyper風の修飾キー | keyd または keyboard firmware | 入力層で完結させたい |
| アプリ起動 | .desktop entry / compositor shortcut | desktop environment の仕組みに乗せる |
| ウィンドウのhalf snap | KWin / labwc native action | Wayland では compositor が正規の管理者 |
| 物理ディスプレイ間移動 | KWin / labwc native action | monitor layout を compositor が持つ |
| 同一アプリ内のwindow cycle | compositor native action | 外部プロセスで window list を触らない |
KDE Plasma Wayland
KDE Plasma Wayland では、KWin の global shortcut と .desktop entry を中心にする。
Read more...Posted:
| Categories:
input-method
| Tags:
fcitx,
ibus,
kde,
mozc,
ubuntu-studio
現行方針
Ubuntu Studio(KDE)環境の日本語入力は、現状 fcitx ではなく ibus + ibus-mozc へ寄せる。
fish から起動するプロセスでは、~/ghq/github.com/tin-machine/fishConfig/config.fish 側で次の方針にする。
set -x XMODIFIERS "@im=ibus"
set -e QT_IM_MODULE
set -e GTK_IM_MODULE
set -e DefaultIMModule
2026-05-15 の確認では、プロセスは ibus-ui-gtk3、ibus-daemon --xim --panel disable、ibus-x11、ibus-portal、ibus-engine-mozc、mozc_server が動いており、fcitx は常駐していない。
im-config のログ上も次の形になっている。
GTK_IM_MODULE='' QT_IM_MODULE='' CLUTTER_IM_MODULE='' SDL_IM_MODULE='' XMODIFIERS='@im=ibus'
このため、旧 fcitx 前提の起動直後不調は現行設定の通常確認対象から外す。ただし ibus-ui-gtk3 の warning / coredump はログに残ることがあるため、実際に日本語入力が効かない場合だけ再調査する。
旧事象の要約
- Ubuntu Studio(KDE)環境で、ログイン直後は日本語入力ができない。
pkill fcitx && sleep 1 && fcitx & の再起動を2回行うと使えるようになる。- 一度使えるようになると、その後は安定して動作する。
- この事象は fcitx 前提の古い状態として扱う。
旧 fcitx 状態で確認していた設定/ログ
設定
~/.config/fcitx/config- 入力切替キー:
CTRL_SPACE と ZENKAKUHANKAKU
~/.config/fcitx/profile- 現在のIM:
mozc - 有効なIM:
fcitx-keyboard-us と mozc
ログ
~/.config/fcitx/log/crash.logfcitx: BadWindow (invalid Window parameter) が記録されている。
~/.xsession-errorsfcitx が autostart され、各アドオン設定がロードされているログを確認。QXcbConnection: XCB error: 3 (BadWindow) が大量に記録されているが、fcitx由来かは断定できない。
~/.local/share/sddm/xorg-session.logjournalctl はこの環境でログが見つからない (No journal files were found.)。
ibusへ寄せる場合のfish設定
ibus を使う場合は、QT_IM_MODULE と GTK_IM_MODULE を明示的に設定しない。
ibus 側のエラーで「QT_IM_MODULE と GTK_IM_MODULE の環境変数を未定義にしてください。そして ‘ibus-daemon –panel disable’ は ibus-ui-gtk3 コンポーネントの子プロセスとして起動されるべきです。」と出る場合、シェル設定やデスクトップセッションの環境に古いIM設定が残っていないか確認する。
Read more...Posted:
| Categories:
device
| Tags:
MR,
Quest,
Quest 3,
VR
40代後半以降の方にはわかる老眼のつらさ・・
HMDの場合、老眼の影響を受けにくいらしい(メガネ屋さんのサイトで、他にも興味深いエントリがある)
自宅環境は複数ディスプレイで画面の広さ自体には問題がないのだけれど、
普段は仕事に使っていて、プライベートPCの画面は貧弱なので、その点は悩ましい問題だった。
という訳でプライベートの環境をMeta Quest 3でできないか検証を始めた。
ヨドバシで購入した 2023/10/28
店舗であった方が良い追加デバイスの相談してから購入しようと店舗で相談してたら目の前で売り切れていた。
出かける前は店舗在庫が17個ある事は確認していたのだが…
錦糸町店に在庫があるというので移動して購入。結構、売れてる模様
初期セットアップ
IPD(黒目の間の距離)の調整
Meta Quest 3(メタクエスト 3)着弾!メガネ屋的視点からのファーストインプレッション
瞳孔間距離は眼鏡購入時の紙にある。 手元に以前、J!NSでメガネを作ったレシートがあったので確認した。
眼鏡に関するご質問
■P.D
瞳孔間距離(黒目と黒目の間の距離)のこと。保証書には÷2した数字が記載される(例:PD65の場合、32.5/32.5)
私は32.5だったので、Meta Quest 3上では、65に設定した。
試してる事
ガーディアン設定(壁などに近づくと現れるバーチャルな境界)のオフは開発者モードにするとできる
【Oculus Quest2】ガーディアン設定をオフにするには? – 株式会社スペースリー
- [クイック設定]->[境界線]を静止モードに
- [設定]->[開発者]->[ガーディアン設定]をオフ
スクリーンショットを撮る
Take a screenshot with Meta Quest headsets | Meta Store
右手のメニューボタンを長押ししてから、右トリガーを押す
ヘッドセットは13歳から使用できる
Meta Quest Safety Center: VR Safety Guidelines | Meta | Meta Store
Meta Questヘッドセットの対象年齢は13歳以上です。
参考
Posted:
| Categories:
device
| Tags:
MR,
Quest,
Quest 3,
VR
Meta Quest 3だけでsshできるようにしたい。
ディスプレーの代わりに使うで試しているimmersedも便利だが、別途PCを立ち上げるのが手間ではある。
私の作業はターミナルとブラウザが多いのでMeta Quest 3だけでスタンドアローンで使えないか検証中。
構成
Mobile VR Station経由でアプリを追加してみる
F-Droidのダウンロード
Questのストアで「mobile vr station」で検索、インストール
Questのストアで「Mobile VR Station」を検索してインストールする
参考
Read more...Posted:
| Categories:
device
| Tags:
MR,
Quest,
Quest 3,
Ubuntu,
VR
現状は4つのリアルなマルチディスプレー環境で作業領域自体はある程度確保できている。
ただHMDであれば、より大きな視野で作業できるし、老眼の影響を受けにくいらしい。
あと事故で寝たきりになってもPCを使い続ける事ができるので、少し備えておきたい。
椅子で天井を見上げたようなリラックスした状態で作業したい。
いくつかの候補があり、向き不向きがありそう。
- Immersed
- Win, macOS, Linuxのエージェントが存在する
- Linuxエージェントも動作した
- MRモードも存在し、周囲の映像の上にデスクトップのオーバーレイ表示が可能
- Virtual Desktop
- Metaのサイト
- デスクトップが1つしか使えない点を考えるとゲーム向けかもしれない
- 「このアプリに没入したい」という場合に向いていそう
現在の環境
Immersed
Ubuntu
な環境で問題なく使えている。
良かった点
- 表示が凄く綺麗。物理のディスプレイより文字が読みやすい
- 手軽にディスプレイの大きさを変えられるのが便利
- キーボードは慣れたものをそのまま使うので差異は無い
悪かった点
- MRの部分の表示はそれほど良くない
- 重い(HMD初体験の感想)
すごい事に特に不具合なくLinuxデスクトップが使えている。
Linuxデスクトップにありがちな「導入するまでの苦労」みたいなものが無い(すでに3世代目だから、というのが大きい)
強いていうとLinuxの母艦側のディスプレーも電気が入っている(ミラーリングのように機能する)
物理ディスプレーの電気代が無駄なようにも思う。
自動ログインとダミーHDMIプラグを併用してHDMIディスプレイ無しで運用できると嬉しい、というのはある。
ImmersedをUbuntuで使う
Ubuntu Studio(KDE plasma)環境で使った。
- Immersed のサイト下部にある Linux 向けバイナリをダウンロード
- ダウンロードしたファイルは実行可能なバイナリなので、実行属性をつける
- ./Immersed-x86_64.AppImage を実行、ログイン
- Meta Quest 3のコントローラを持ち、手首を見るように傾けるとメニューが現れる。
- 手首を向けていない側のコントローラーでメニューを選択
- Mixed Reality を選択
- Settingで Lower Latency Mode を選択
- 複数デスクトップの位置を調整
Immersedの各種設定
https://immersed.com/account
ガーディアン設定(壁などに近づくと現れるバーチャルな境界)のオフは開発者モードにするとできる
私のPC環境が部屋の壁に非常に近い所にあってQuestのガーディアン設定がずっと出てしまう。
私は座って使うので危険性はあまりないのでオフにする。 だいたい20分程度で設定できた。
【Oculus Quest2】ガーディアン設定をオフにするには? – 株式会社スペースリー
Read more...Posted:
| Categories:
keyboard
| Tags:
keyboard
Happy Hacking Keyboard (HHKB) を2台使って仕事をしていたのですが、自宅の机が狭いので自作キーボード Corne Cherry V3を導入。
42キーしかないので、101キー比較で40%程度。
キー数が少なくなるので組み合わせて入力することになるのですが意外となんとかなるものだった。
指の移動量がかなり減った。
HHKBの時はAutoHotKeyやHammerspoonでキーカスタマイズしていたが不要になった。
ただHHKのシリンドリカルステップスカルプチャ構造の再現はできておらず、この点は改善点。
キーボードレイアウト変更
- ChromeでREMAPにアクセス(2023/08時点、Firefoxは不可。Chromeの実装している機能に依存しているので)
- 下のボタンから上にドラッグアンドドロップ
- flush
- キーボードレイアウトをプリントアウト
私のレイアウト
QMKのバージョンが古い場合のアクセスするURL
ページ下部にリンクがあるが https://qmk018.remap-keys.app/ からキーリマップできる
Corne Cherry V3
下記の記事を参考に作成した。 作成には8時間程度かかったと思う。
Corne Cherry V3
Corne Cherry V3 を作ってみた | Blogicoffee
Corne Cherry v3ビルドログ【自作キーボード】|scop00
分割キーボードのCorne Cherry v3を組み立て、その使用感。 | no theme.
[自分史上ベスト3に入るキーボード] Corne Cherry v3を作った - プログラマのはしくれダイアリー
crkbd/corne-cherry/doc/v3/buildguide_jp.md at 381b68f7eb114318631a9a6c19645f3478516fb8 · foostan/crkbd
欲しいキーボード
Keyball39 – Shirogane Lab
【委託】Keyball39
Keyball39を使いこなすために必要なセッティング │ wonwon eater
Read more...Posted:
| Categories:
keyboard
| Tags:
keyboard
できればmacOS, Linux, Windowsでショートカットを揃えたい。
昨今のキーボードはWindowsキー(macだとcommand)はある、という前提で良い気がする。
WindowsはAutoHotKey、macOSはHammerspoon、LinuxはAutoKeyで行う。
Window操作
Windows(command)キーと組み合わせ
H | 左半分 | 左ディスプレーへ |
L | 右半分 | 右ディスプレーへ |
K | 上半分 | 上ディスプレーへ |
J | 下半分 | 下ディスプレーへ |
セミコロンとエンターを入れ替える
デスクトップの特定スペースへの移動
- デスクトップのスペースの移動はmacデフォルト機能に移動した
- [システム環境設定]->[キーボード]->[ショートカット]->[Mission Control]
アプリの起動
ファイラー
Windowsキー + e
- Windowsは標準
- macはファインダー
- UbuntuはDolphin
WezTerm
Windowsキー + n
Obsidian にフォーカス
Windowsキー + ,
Firefox にフォーカス
Windowsキー + m
Slack にフォーカス
Windowsキー + g
ToDo
Read more...Posted:
| Categories:
cli
| Tags:
cli,
neovim,
tmux,
wezterm
背景
CLI関連のツール、tmux, w3m, weztermのキーバインドを揃えたい。ひとまずリストを出す。 ローカルのマシン(macOSなりLinuxなどのデスクトップ環境)ではWezTermとtmuxを用いている。
(以前はgnome-terminal, mltermを用いていたが、sixel対応と設定がluaで書ける点からWezTermを始めた)
将来的に下記の条件が成立したらgnome-terminal, mltermに戻るかも
- tmuxのsixel対応が安定動作する
- macOS, Linuxの設定ファイルを共通にしたい(WezTermだとOSによってif文で設定を変えられる)
- tmuxもif-shellで振る舞いを分岐できるようになった
関連ページ
現在のキーバインド
prefix
| WezTerm(tmux1) | tmux2(ローカルで用いる) | tmux3(リモートで用いる) |
|---|
| ctrl + y | ctrl + t | ctrl + b |
リモートサーバ上でtmuxを用いる場合はtmux3のprefixを使う。
ショートカット
| wezterm | tmux | neovim | w3m |
|---|
| 新しいウィンドウ(タブ)を作る | c | c | tabnew | Ctrl + T |
| 現在のウィンドウ(タブ)を閉じる | Ctrl + d でexit | Ctrl + d でexit | :wq | Ctrl + Q |
| ウィンドウ(タブ)を右に移動 | n | n | gt | } |
| ウィンドウ(タブ)を左に移動 | p | p | gT | { |
| ウィンドウ(タブ)のリスト | | | | Esc + t |
設定が被らないように既存の設定を確認する
| 環境 | 表示方法 | 設定ファイル |
|---|
| bash | bind -P | ~/.inputrc |
| fish | bind あるいは fish_key_reader | ~/.config/fish/functions/fish_user_key_bindings.fish |
| tmux | prefix -> :list-keys | ~/.config/tmux/tmux.conf |
| w3m | 起動中にHを押す | ~/.w3m/keymap |
| wezterm | | |
Read more...Posted:
| Categories:
gui
| Tags:
Firefox,
tridactyl
設定のサンプル
一時的に機能をオフにしたい
:set mode ignore とすると一時的にオフにできる。 :set mode normal で元に戻せる。
キーボードショートカットでは Shift + Insert に割り当てられている。
自動的にオフにする場合は設定ファイルでは下記の設定
autocmd DocStart https://example.com* mode ignore
ただ、オフにならないサイトもあった。esa.ioがそれで、Chromeで見るようにした。
Read more...Posted:
| Categories:
gui
| Tags:
gui,
kde,
mac
背景
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...