Barrierで装飾キーがロックされるのを解除する

Barrierというマルチプラットホームのキーボードマウス共有ソフトを常用しています.1台の端末のキーボードマウスで複数のマシンを操れます.Synergyのフォークです.
最近1台の端末をDebian Bullseye + i3wm にしてみたのですが,どうもキーボードがおかしくなります.CtrlやSuperが押しっぱなしになります.
以前から別のマシンでこの症状は出ていましたが今回は頻度がとても多くまともに動くことのほうが少ないです.これまでXorgを再起動して解決していましたが面倒すぎます.

ISSUEを探すと出てきました.未解決のようです(◞‸◟)
でもワークアラウンドがあったので試してみました.

Nextcloudでurl共有したpdfをwebに埋め込みたい

スライドやドキュメントを共有するのにSpeakerDeckやedockrを使っています.(SlideShareは無料アカウントで再アップロードができなくなってしまってから使わなくなりました.)
SpeakerDeckの無料での制限で100アップロードまででそろそろいっぱい,edockrはしばらくしたら消えてしまうということを最近知りました.

pdfファイルを共有するだけならNextcloudでのURL共有を使えばいいのですが,webに埋め込むことが出来ません.Nextcloudの機能やアプリにそういったものがあるといいのですが,セキュリティの問題から実装されていません.

とりあえず雑な方法ですが,こんな感じで実現してみました.

Nextcloud URL共有リンクからpdfファイルを出力する

Nextcloudの公開URLの内容をpdfとして出力します.実行権を付けてcgiとして設定します.

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use IO::Handle;
STDOUT->autoflush(1);

$ARGV[0] = "" unless defined $ARGV[0];
my $url = $ARGV[0];
if( $url !~ /\/download$/ ){
  $url = $url . "/download";
}
print "Content-Type: application/pdf\n\n";
getprint($url);

とりあえずこんな感じでcgiの後ろにNextcloud公開URLを付けてアクセスするとブラウザでpdfを見ることができるようになりました.

embedタグでwebに埋め込む

上で作ったcgiをobjectタグで埋め込んでみるととりあえず埋め込みが出来ました.このとき height% を指定してもサイズが変わらないようでした.(Debian sid amd64 の chromium 88.0.4324.146-1, firefox 86.0.1-1 で確認)

<embed src="http://cgi.example.com/pdf.cgi?http://nextcloud.example.com/index.php/s/XXXXXXXXXXXXXXX" type="application/pdf" width="640px" height="480px">

とりあえずそれっぽいことは出来ましたが,この方法ではpdfを読まなくてもページ読み込み時にpdfを全部読み込んでしまうようなのであまりよろしくない感じです.このあたりはSpeakerdeckなどはちゃんとしてていいですね.

とりあえずはリンクで共有かな?

v4l2loopbackモジュールで作られるビデオデバイスへの名前の付け方

v4l2loopback moduleを利用して仮想カメラなどを利用しています.

このモジュールを呼び出すときにオプションを指定して複数のデバイスにしたり,それぞれにデバイスに名前をつけたり出来ます.

If you need several independent loopback devices, you can pass the “devices” option, when loading the module; e.g.

# modprobe v4l2loopback devices=4
Will give you 4 loopback devices (e.g. /dev/video1 …​ /dev/video5)

You can also specify the device IDs manually; e.g.

# modprobe v4l2loopback video_nr=3,4,7
Will create 3 devices (/dev/video3, /dev/video4 & /dev/video7)

# modprobe v4l2loopback video_nr=3,4,7 card_label=”device number 3″,”the number four”,”the last one”
Will create 3 devices with the card names passed as the second parameter:

/dev/video3 → device number 3
/dev/video4 → the number four
/dev/video7 → the last one

お手本通りモジュールを呼び出すと,

$ sudo modprobe v4l2loopback video_nr=3,4,7 card_label="device number 3","the number four","the last
one"

想定通りに設定されました.(最後のIntegrated Cameraは内蔵カメラでこのモジュールとは無関係)

$ v4l2-ctl --list-devices
device number 3" (platform:v4l2loopback-000):
        /dev/video3

"the number four" (platform:v4l2loopback-001):
        /dev/video4

"the last one (platform:v4l2loopback-002):
        /dev/video7

Integrated Camera: Integrated C (usb-0000:00:1a.0-1.6):
        /dev/video0
        /dev/video1
        /dev/media0

しかしこの設定を永続化しようと,
/etc/modprobe.d/v4l2loopback.conf
というファイルを用意してこの設定を書いて呼び出すとおかしなことになります.

$ sudo rmmod v4l2loopback (1)
$ echo 'options v4l2loopback video_nr=3,4,7 card_label="device number 3","the number four","the last one"' | sudo tee /etc/modprobe.d/v4l2loopback.conf (2)
options v4l2loopback video_nr=3,4,7 card_label="device number 3","the number four","the last one"
$ sudo modprobe -v v4l2loopback (3)
insmod /lib/modules/5.10.0-1-amd64/updates/dkms/v4l2loopback.ko video_nr=3,4,7 card_label="device number 3","the number four","the last one"
$ v4l2-ctl --list-devices | grep v4l2loopback -A1 (4)
device number 3" (platform:v4l2loopback-000):
        /dev/video3
--
"the number four" (platform:v4l2loopback-001):
        /dev/video4
--
"the last one (platform:v4l2loopback-002):
        /dev/video7
  1. モジュールのアンロード
  2. 設定ファイルへ書き込み
  3. モジュールの再読込
  4. デバイス名の確認

ダブルクオーテーションの扱いが変わってしまうようです.更に名前自体にダブルクオーテーションが含まれてしまいます.

とりあえず全体を1セットのダブルクオーテーションで囲むと大丈夫なようです.

$ echo 'options v4l2loopback video_nr=3,4,7 card_label="device number 3,the number four,the last one"' | sudo tee /etc/modprobe.d/v4l2loopback.conf
options v4l2loopback video_nr=3,4,7 card_label="device number 3,the number four,the last one"
$ sudo modprobe -v v4l2loopback
insmod /lib/modules/5.10.0-1-amd64/updates/dkms/v4l2loopback.ko video_nr=3,4,7 card_label="device number 3,the number four,the last one"
$ v4l2-ctl --list-devices | grep v4l2loopback -A1
device number 3 (platform:v4l2loopback-000):
        /dev/video3
--
the number four (platform:v4l2loopback-001):
        /dev/video4
--
the last one (platform:v4l2loopback-002):
        /dev/video7

ちなみにダブルクオーテーションなしだとこうなりました.

$ sudo modprobe -v v4l2loopback
insmod /lib/modules/5.10.0-1-amd64/updates/dkms/v4l2loopback.ko video_nr=3,4,7 card_label=device number 3,the number four,the last one
$ v4l2-ctl --list-devices | grep v4l2loopback -A1
device (platform:v4l2loopback-000):
        /dev/video3
--
Dummy video device (0x0001) (platform:v4l2loopback-001):
        /dev/video4
--
Dummy video device (0x0002) (platform:v4l2loopback-002):
        /dev/video7

最近リリースされた OBS Studio 26.1でLinux版, macOS版にも仮想カメラ機能が入りました.
これも v4l2loopback を利用しているのですが,ダブルクオーテーションが含まれる場合うまく動かないようです.

環境
$ dpkg-query -W v4l2loopback-* v4l-utils
v4l-utils       1.20.0-2
v4l2loopback-dkms       0.12.5-1
v4l2loopback-modules
v4l2loopback-utils      0.12.5-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -mv
#1 SMP Debian 5.10.4-1 (2020-12-31) x86_64

Byobu tmuxでファンクションキーを無効にする

アドホックに切り替える

Ctrl+b shift + F12 でトルグ

設定ファイルに設定する

~/.byobu/keybindings.tmux の1行目に
source /usr/share/byobu/keybindings/f-keys.tmux.disable を追記.

Byobu tmuxを起動し直すか,Ctrl+b : :source-file ~/.byobu/keybindings.tmux で反映する.

Byobu GNU screenの場合はこちら

環境
$ dpkg-query -W byobu tmux
byobu   5.133-1
tmux    3.1b-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

SteamのOSごとのアプリケーション数を確認してみる

あるPodcastでSteamのLinuxアプリは1割位ではという話があったのですが,そんなに少なくないだろうでもどのくらいだろう?と実際のところ知らなかったので確認してみました.

確認にはSteam検索の検索結果を使いました.
https://store.steampowered.com/search/

こんな感じのscriptを用意して,

steamcount.bash
#!/bin/bash

# Steam検索
# https://store.steampowered.com/search/
# ignore_preferences=1 個人設定に基づいたタイトルの除外の無効化
# https://store.steampowered.com/search/?ignore_preferences=1
# Windowsの検索
# https://store.steampowered.com/search/?ignore_preferences=1&os=win
# Mac OS Xの検索
# https://store.steampowered.com/search/?ignore_preferences=1&os=mac
# SteamOS + Linuxの検索
# https://store.steampowered.com/search/?ignore_preferences=1&os=linux

SERCH="https://store.steampowered.com/search/?ignore_preferences=1&os="
OSTYPE=("all" "win" "mac" "linux")
MATCH="results match your search."
declare -A COUNT

for OS in "${OSTYPE[@]}"
do
  COUNT[$OS]=$(LC_ALL=en_US.UTF-8 w3m -dump "$SERCH$OS" | grep "$MATCH" | cut -f1 -d' ' | tr -d ,)
  echo $OS,${COUNT[$OS]},$(awk "BEGIN { print ${COUNT[$OS]}/${COUNT[all]}*100 }")%
done

実行します.

$ bash ~/src/steamcount.bash
all,79831,100%
win,79654,99.7783%
mac,25443,31.8711%
linux,15673,19.6327%

Linuxの検索結果は15673本で,全体の19.6%でした.もっと多いと思いましたが案外少ないですね.
恐らく検索する範囲を近年にしたり,Windows用のアプリケーションをLinux環境で動かすProtonに対応したアプリケーションも入れるともっと多くなるのではないかと思うのですが,Steam検索ではその検索方法がわかりませんでした.

ちなみに以下は2015年3月の記事ですが,この記事によると2013年には50本,2014年に500本,(恐らく)2015年3月には1004本.このときに比べると現在の15673本というのはすごく増えている感じです.

SteamがこのLinuxベースのゲームOSをローンチしたのは2013年で、そのときはわずか50のゲームがあり、1年後には500タイトルに達した。今現在、ゲーム数は1004で、DLCなどのダウンロードするコンテンツや拡張パックも含めると1835になる。

新しいゲームならLinux対応が多いと思いリリースが新しい順にソートしてみるとWindowsのみ対応のアプリが多いですね.今見ると最新から14本はWindowsのみ対応.15本目にやっとWindows/Mac/Linuxに対応したゲームがでてきました.

Windows専用アプリケーションでもLinux版SteamのProtonで動かせたり,Protonで動かないのもでも別途Wine経由で動かせるものもあります(Lutrisを使うと便利).

関連記事

Speaker Deckのスライドが全て非公開になって困る

Speaker Deckというスライド共有サービスがあります.日本ではSlideShareの次くらいによく使われていそうなサービスです.ここでトラブルがあったので健忘録としてメモしておきます.

このサービスにスライドを登録しようとアップロードしたところ変換に失敗してしまいます.スライドのデータが悪いのかな?と他のものも試すとやはり駄目です.
よく見ると5月以降に登録したスライドはアクセスが0です.なにかおかしい.

ログアウトした状態で見るとスライドが1つも見えなくなってしまっています.

speakerdeck 20200625 07:06:04 766282.resized

既存のスライドを公開(publish)し直しても公開されません.

全てのスライドが非公開になっている,ログインしたら見えるけど公開できない,新しいスライドの登録は失敗する……という状態です.

DMCAとか著作権違反とかが報告されてロックされていそうな感じがします(心当たりはないけど他のサービスもそれでBANされた前科あり).メールを探しますが特にそれらしいものは見当たりません.

ちょっと自分ではどうしようもなさそうだとSpeaker Deckの「Feedback」リンクからメールで問い合わせてみました.しかし反応がありません.
ダメ元でTwitterのSpeaker Deckアカウントである@speakerdeckにmentionを投げてみると数時間で復旧していました.

スライドはちゃんと公開され,新しいスライドのアップロードも出来ました.ということでよくわかりませんがシステムの不具合だったのかな?

やっぱり人任せにするのは怖いですね.自分でコントロールできるところでもまとめておこうと思います.

Lutrisを使ってLinuxでもEpic Gamesで遊ぶ

Epic Games というゲームプラットホームがあります.定期的にゲームを無料配布してくれるのでたまに貰っています.

しかしこのプラットホームは Stream や itch などと違い PC/Mac のみの対応で Linux には対応していません.

Epic Games Storeはどのプラットフォームに対応していますか?
Epic Games Storeは、現在PCとMacに対応しています。各タイトルのプラットフォームとの互換性については、製品ページの「ゲームについて」で確認することができます。

無料で貰っても遊ばないと意味がないです.
そういえば Lutris 経由で動かないかな?と思いつきました.Lutris はLinux 環境で各種プラットホームのゲーム環境を管理できて,複数のWine 環境を簡単に導入設定できたりして便利です.ここで貰ったゲームが出てきたらお手軽に遊べそうです.

Lutris についての詳細は以下のスライドもどうぞ.

ゲームの前に Lutris で Epic Games で検索すると Epic Games が出てきました.「Install」ボタンを押してウィザードに従うだけで簡単に導入できました.

lutris epic 20200606 03:06:59 18609

後は Epic Games でゲームをインストールしてみると起動しました :)

lutris epic 20200606 08:06:45 150593

lutris epic 20200606 08:06:24 148344
lutris epic 20200606 08:06:15 147780

思ったより手軽に遊べそうです.
しかし暖かくなって排熱が追いつかない感じでちょっと辛い今日この頃です.

//

環境
$ apt show lutris
Package: lutris
Version: 0.5.6
Priority: optional
Section: games
Maintainer: Mathieu Comandon <strider@strycore.com>
Installed-Size: 4,035 kB
Depends: python3-evdev, python3-gi, python3-requests, python3-yaml, python3:any, python3-pil, python3-setproctitle, python3-distro, gir1.2-gtk-3.0, gir1.2-gnomedesktop-3.0, gir1
.2-webkit2-4.0, gir1.2-notify-0.7, psmisc, cabextract, unzip, p7zip, curl, fluid-soundfont-gs, x11-xserver-utils, mesa-utils
Recommends: gvfs-backends, libwine-development, winetricks, libc6-i386, lib32gcc1
Suggests: gamemode
Homepage: https://lutris.net
Download-Size: 1,690 kB
APT-Manual-Installed: yes
APT-Sources: http://download.opensuse.org/repositories/home:/strycore/Debian_Unstable  Packages
Description: open source gaming platform
 Lutris goal is to make gaming on Linux as easy as possible by taking care of
 installing and setting up the game for the user. The only thing you have to do
 is play the game. It aims to support every game that is playable on Linux.

$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64