WPP
Android の Firefox で小さすぎる文字を拡大する

Android の Firefox でネットを見ているとたまにとても文字が小さいサイトがあって拡大できないことがあると思う。そんな時 Tampermonkey とそこで動くスクリプトを書くと問題を解決できることがある。

Tampermonkey は、ブラウザの機能拡張で任意の Javascript を動かせるようになる。書くのが面倒ではあるがこれを使うとブラウザ画面上の表示や操作を改変することができる。スマホブラウザでこれができるのは知る限りAndroid + Firefox の組み合わせだけ、PC なら chrome 系ブラウザでも同様のことができる。

また、Tampermonkey は変遷があって過去には Violetmonkey とかいろいろ xxx monkey に主流がうつっているが最近は Tampermonkey で落ち着いている模様。

自分は正直、ブラウザで動く Javascript を書くのは得意でもないし好きでもない。ただただ面倒なので Claude か Bing Copilot に書いてもらった。

最初に文字を10 % 大きくするスクリプトを生成し、後から大/小ボタンを追加するコードを生成してもらった。

それらをそれぞれ動作確認して、くっつけたのが以下。

@match の行を適当に対象サイトに絞り込むように設定するとそのマッチするサイトでだけスクリプトが動くようになる。

// ==UserScript==
// @name         文字サイズを調整する
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  サイト全体の文字を10%大きくし、文字サイズを調整するボタンを追加します
// @author       You
// @match        *://*/*
// @grant        none
// ==/UserScript==

// http://*/*
(function() {
    'use strict';

    // 全ての要素を取得
    var all = document.getElementsByTagName("*");

    // 各要素のフォントサイズを10%大きくする
    for (var i=0, max=all.length; i < max; i++) {
        var style = window.getComputedStyle(all[i], null).getPropertyValue('font-size');
        var fontSize = parseFloat(style);
        all[i].style.fontSize = (fontSize * 1.1) + 'px';
    }

    // ボタンを作成する関数
    function createButton(value, scale) {
        var button = document.createElement("button");
        button.innerHTML = value;
        button.style.margin = '4px';

        button.onclick = function() {
            for (var i=0, max=all.length; i < max; i++) {
                var style = window.getComputedStyle(all[i], null).getPropertyValue('font-size');
                var fontSize = parseFloat(style);
                all[i].style.fontSize = (fontSize * scale) + 'px';
            }
        };
        //document.body.appendChild(button);
        document.body.insertBefore(button, document.body.firstChild)
    }

    // ボタンを作成
    createButton("文字を小さく", 0.95);
    createButton("文字を大きく", 1.05);
})();

参考

以下に、いろいろなユーザスクリプトがあるのでダウンロードして使うのもいい。

OpenUserJS アクセス制限が厳しく 10 秒に一回くらいしかリクエストできないので注意

Greasy Fork – safe and useful user scripts

Github の TOTP に別の端末を追加する

Github の 2FA で TOTP アプリの認証を複数端末に追加するとき、少しハマったのでメモします。

複数のスマフォだったり、別のブラウザのTOTPプラグインで認証しようとする時に Github の場合は QR コードをスキャンした直後に VERIFY をしないとその QR コードはアクティブにならないようだ。

手順

Github にログインし、 settings に入る。

Password and authentication に進み、Authenticator app で Edit をクリックする。

TOTP アプリやプラグインで QR コードをスキャンする。

TOTP アプリやプラグイン表示されたコードを [Verify the code from the app] に入力して [save] をクリックする。

これで、認証する端末を追加できた。

アマゾンやマイクロソフトアカウントと異なり、Github は端末ごとに別の認証コードを生成ようです。

Linux Mint 21.3 Cinnamon でデスクトップのメニューバーが表示しなくなったのを修復した話

タイトルにある通り Linux Mint + Cinnamon を使っているのですが、普段はノート PC に外部ディスプレイをつなぎ2画面で使用しています。

その際、デスクトップのメニューバー(仮)、Windows でいう所の タスクバーの位置をいじっているうちに PC 側の画面には表示しなくなってしまったトラブルに遭遇しました。

メニューバー(仮)は正式には panels という名称のようです、恐らく以前の cinnamon バージョンでは launcher と呼んでいたようですが、それは廃止されるもののようです。

dconf-editor で /org/cinnamon/panales-enabled というキーがパネルの位置を示す設定値のようで [‘1:1:bottom’] となっていました。これが意味するところは パネル1: モニタ1:下 を示すらしい。

dconf-editor の説明によるとモニタは 0 から始まる数値といっており、外部ディスプレイがない状態では、0になるということのようです。

そこでモニタを 0 に変えて [‘1:0:bottom’] とするとどっかにいっていたメニューがデスクトップ下部に帰ってきました。

この設定を手動でいじった記憶はないのでこれバグだと思う。同様の事象に出会った人の助けになればうれしく思う。(恐らくそれは未来の自分になるだろう。)

English

If you meet Cinnamon Panels gone to extend display on Linux Mint 21.3, You can fix location of panels by dconf-editor.

Key: /org/cinnamon/panels-enabled

value [‘1:0:bottom’] – bottom can replace to top (maybe left or right too).

I hope your help.

Linux Mint 21.3 で Wine9 を公式リポジトリからインストールする

Linux Mint のリポジトリに含まれる Wine は 6.1 と古いので公式からインストールできるように設定し直します。

自分の知識不足が原因だと思うが、リポジトリのソース URL を探すのはちょっと面倒なことが多い。 Linux Mint 21.3 の場合は Ubuntu のコードネーム jammy に相当するのでその URL を探してくる必要がある。

; Wine をインストールしたことがあれば不要かもしれない
$ sudo dpkg --add-architecture i386

$ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key

$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources

$ sudo apt update
$ sudo apt install --install-recommends winehq-stable

$ wine --version
wine-9.0

Ubuntu コードネームは /etc/os-release で確認できる。

$  cat /etc/os-release 
NAME="Linux Mint"
VERSION="21.3 (Virginia)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 21.3"
VERSION_ID="21.3"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=virginia
UBUNTU_CODENAME=jammy

参考

Linux Mint 21にWine 8をインストールする方法

Linux Mint で Kensington トラックボールにキーボードショートカットを割り当てる(その2)

追記: Bluetooth(再)接続時に設定を反映させるように変更した。

その1」で、ボタンの配置を変更したので、「その2」ではショートカットキーの割当てていきます。

ツールを少し整理していきます。

xbindkeys:
ここでは、マウスボタンが押されたときに、どのキーが押されたかをエミュレートするのに使います。
.xbindkeysrc ファイル:
xbindkeys の設定をここに書きます。(マウスボタンとキーの対応づけをします。)
xte、xvkbd:
.xbindkeysrc の中で指定します。これらのプログラムが実際のキーコードを送り出す処理をしているようです。

xdottool:
今回は使っていないが xte、xvkbd と同じように使うことができる xdottool というものがあるらしい。

最終的な割当状態

今回は残っている、上段:右ボタンにショートカットキーを割り当てます。

上段戻るタブを閉じる(Cntrol + W)
下段左クリック右クリック

結果からいうと xte を使いました。xvkbd だと何故か firefox はタブを閉じずに、ウィンドウそのものを閉じる現象が発生したのですが、xte なら目的の動作を実現できました。

ショートカットを割り当て

どうやら、.xbindkeysrc ファイルを書いて xbindkeys コマンドを実行すれば目的の動作は達成するようです。早速やってみます。

$ cd ~
$ vi .xbindkeysrc

"xvkbd -text "\[Control]W""
  b:10
:wq

$ xbindkeys

これで動いているはずですが、Firefox だと何故かタブではなくウィンドウ全体が閉じてしまいます。「がとらぼ」さんによると xte なら動作するケースむあるようなので xte に変更してみる

$ cd ~
$ vi .xbindkeysrc

# "xvkbd -text "\[Control]W"" # コメントアウト
"xte 'keydown Control_L' && xte 'key w' && xte 'keyup Control_L'"
  b:10

:wq

$ xbindkeys

動作しているか怪しいときは -n オプションでデバッグできる

$ killall xbindkeys; xbindkeys -n

ただ今回のコマンドは、タブを閉じちゃうのでターミナルでなかなか試しづらいかもしないです。

前回と同じように、.profile に設定を追加します。

その1」にも追記しましたが、/etc/udev/rules.d にルールファイルを追加しました。なのでルールファイルで指定したスクリプトにキーボードショートカットのマッピングを追加します。

$ cd 
$ touch slimblede.sh ; chmow 755 slimblade.sh
$ vi slimblade.sh
mouse_id='SlimBlade Pro'
xinput set-button-map "$mouse_id" 1 8 3 4 5 6 7 10 9

xinput
:wq

これでようやくできました。

参考

Linuxでマウス/トラックボールのボタン割当て変更 – がとらぼ

全てのマウスボタンを動作させる – ArchWiki

Xbindkeys – ArchWiki

xbindkeys/xteで任意のマウスボタン(キー)で任意のキーストロークが動くようにした(Keisingtonトラックボールのボタンをカスタムした) – Lambdaカクテル

Linux Mint で Kensington トラックボールにキーボードショートカットを割り当てる(その1)

追記: Bluetooth(再)接続時に設定を反映させるように変更した。

タイトルで説明しきれていないが、実はやりたいことが 2 つありまして

  • 1つ目は、ボタンの配置を変更したい。
  • 2つ目は、ボタンの一つにブラウザのタブを閉じるショートカットを割り当てる。

ちょっと長くなるので前半の「その1」でボタンの配置変更、「その2」でショートカットキーの割当てを記事にしていきます。

使うツールがいつくかあるので少し整理していきます。

xinput:
ここでは、マウスボタン再割当て、無効化をします。
xev:
マウスボタンが xinput のどの番号にアサインされているか確認します。

最終的な割当状態

今回設定する Kensignton Slimblade トラックボール には、4つの物理ボタンがあります。

ほぼすべてのトラックボール製品でボール部分のクリックはできないので便宜上別のボタンにマウスでいう中央クリックの役割をもたせています。でも中央クリックって使わなくないですか?少なくとも自分は使いません。

なのでそれを以下のように設定していきます。

上段戻るタブを閉じる(Cntrol + W)
下段左クリック右クリック


Mac や Windows で Kensington のトラックボールを使用する際はメーカー製の GUI ソフトでよしなにできるのですが、それに近い結果を目指します。

ボタン配置の変更

配置の変更にかかる前に現状を把握していきます。

$ xinput -list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer        	id=4	[slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad      	id=12	[slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech TrackPoint    	id=13	[slave  pointer  (2)]
⎜   ↳ SlimBlade Pro                           	id=15	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard     	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	    id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	   id=9	[slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C         	id=10	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=11	[slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                  	id=14	[slave  keyboard (3)]

; SlimBlade Pro id=15 が見つかったので、そのボタンの割当状況を確認します。
$ xinput get-button-map 15
1 2 3 4 5 6 7 8 9

でここで出てきた 1 – 9 はこんなボタンがあるって意味らしい

1: 左クリック
2: 中央クリック
3: 右クリック
4: ホイール前
5: ホイール後
6: ホイール左右のどちらか
7: ホイール左右のどちらか
8: 戻る
9: 進む
10以上: Fn1、Fn2って続くらしい。。(ここ と StackOverFow でそんな書き込みを見た、出典知っている人がいたら教えてほしい)

でこの番号がどのボタンに割り当てられているか確認する必要がある。(動かした時の挙動でおおよそわかるはずだが確認しておく。)

xev を起動すると小さなウィンドウが表示される。ここにカーソルを持っていき、ボタンをクリックすると下のような感じでログメッセージが流れる。

$ xev -event button
Outer window is 0x5800001, inner window is 0x5800002

ButtonPress event, serial 25, synthetic NO, window 0x5800001,
    root 0x6ca, subw 0x0, time 66502224, (113,56), root:(2007,2320),
    state 0x0, button 1, same_screen YES

ButtonRelease event, serial 25, synthetic NO, window 0x5800001,
    root 0x6ca, subw 0x0, time 66502252, (113,56), root:(2007,2320),
    state 0x100, button 1, same_screen YES

クリックしたボタンによって、button1 の部分がそれぞれ異なるものが出てくる。

まとめるとこんな感じに割り当てられていることがわかった。

2 | 8 上段は、2: 中央クリック、8 戻る
——-
1 | 3 下段は、1:左クリック、3: 右クリック

上段左に「戻る」、右に「fn1」 を割り当てる

$ xinput set-button-map 15 1 8 3 4 5 6 7 10  9

このあと、上段右の 10 は他のキーコードを割り当ててしまうので本当はなんでもいいかもしれない。

これを再起動時にも反映させるために ~/.profile に以下の行を追加した。

有線の場合は、起動時に必ずアクティブなので .profile や .xprofile でいいようだが Bluetooth 接続の場合はサスペンドから復帰した時や、省電力モードに入って接続が切れると元に戻ってしまうようだ。

$ cd ~
$ vi .profile

; 以下を追加

;  自分のマウスにより変更してください
mouse_id='SlimaBlade Pro'
xinput set-button-map "$mouse_id" 1 8 3 4 5 6 7 10 9

:wq

Arch のページを参考に /etc/udev/rules.d/90-slimblade-wakeup.rule を作成した。 lsusb でPC 側のBluetoothデバイスの Vendoer:Product が 8087:0029 だと確認できたのでルールは以下のようにした。

$ cd /etc/udev/rules.d
$ vi 90-slimblade-wakeup.rule
SUBSYSTEM="usb",ATTRS{iVendor}=="80807",ATTRS{iProduct}=="0029" RUN=+"/home/[ユーザー名]/slimblade.sh"
:wq

以前 .profile に追加した設定部分を slimblade.sh に切り出す

$ cd 
$ touch slimblede.sh ; chmow 755 slimblade.sh
$ vi slimblade.sh
mouse_id='SlimBlade Pro'
xinput set-button-map "$mouse_id" 1 8 3 4 5 6 7 10 9

参考

Bluetooth – ArchWiki

Linuxでマウス/トラックボールのボタン割当て変更 – がとらぼ

Linuxでマウスのクリックボタンを変更| xinput set-button-map – shangtian’s blog

LinuxでKensington Expert Mouseのボタン配置を変更する | fukata.dev

Ubuntu Studio 24.04 にあとから日本語入力を追加

自宅のタワーを Linux Mint から Ubuntu 24.04 に入れ替えることにした。Mint も Ubuntu も同じ debian 派生なのでほぼ同じではあるのだが、Docker とかインストールする際に微妙に面倒なことになるので Ubuntu があたらしくなったこのタイミングで入れ替えることにした。

どのフレーバーでもいいのですが、これから動画関係を扱うことが多くなりそうなので Studio をいれることにした。そうすれば、ほぼ何も入れなくても作業にすぐかかれるからだ。

インストールに際して、ホームディレクトリの各フォルダを英語表記にしたいので英語モードのまま進めました。日本語を選択すれば、この手順は必要ないと思われます。

ホームディレクトリのフォルダ名の問題だけなら LANG=C Xdg-user-dirs-update コマンドでよかったのではと思うがまあ、あとの祭りですね。

結果からいうと公式の手順で OK でした。はじめ参照リンクの 「KDE neon 6 で fcitx5-mozc による日本語入力環境をセットアップする」をやってみたのですが、im-config を削除する必要はなかったようです。

環境

  • Ubuntu Studio 24.04
  • X11 (wayland ではないです)
  • 英語モードでインストール

手順

$ sudo apt install fcitx5-mozc kde-config-fctix5

これで OK でした。

参照

Install Fcitx 5 – Fcitx (公式)

KDE neon 6 で fcitx5-mozc による日本語入力環境をセットアップする / KDE 日本語フォーラム 🥷🍣 – KDE Discuss

Arch + KDE 6 (Wayland) で日本語入力環境を少しでもまともにする #archLinux – Qiita

Linux Mint fstab を止めて別パーティションでもごみ箱を使えるようにする

追記: 自動マウントできるように設定追加

今日は Linux Mint 21.3 Cinnamon の話です。

最近メイン環境を Linux Mint に変えているが、別パーティションのファイルはごみ箱が無効で困っていた。いろいろやってみるとどうやらマウント方法がまずかったらしい。

fstab のマウント設定を削除し、Mint の Disks で [User Session Defaults] にチェックを入れるとごみ箱が有効になりました。 試行錯誤するうちにパーティションを ext4 に再フォーマットしましたが不要だったかもしれない。(元に / は btrfs だがごみ箱は機能しています。)

手順

まず、 /etc/fstab から該当行を削除します。

次にDisks に行き、該当パーティションを選択します。

ギヤボタンをクリックし、Edit Mount options… を開きます。

[User Session Defaults] にチェックを入れます。

そうすると普通は /mnt/[UUID] という場所にマウントされるようです。ここまででごみ箱は使えるはずです。

個人的な好みですが、作業ファイルなどを /opt に置くようにしているのでいくつか追加の設定をします。

Disks のギヤボタンで Edit Filesystem.. を開き UUIDの代わりになるラベルを設定します。(ここでは opt と入れた)


これをすると /media/[ユーザー名]/ラベル にマウントされるようになるみたいです。このマウントポイントを/opt でアクセスできるように設定します。

$ sudo ln -s /media/[ユーザー名]/opt /opt

Xorg やデスクトップ環境周辺の設定は膨大な関連項目があってなかなか体系的に理解するのが辛い。てかほぼいきあたりばったりです。どこかにわかりやすく(詳細過ぎずに)まとまっているところがあるといいのですが、そう都合よくは行きませんね。

追記:

ここまでの設定では、起動時に自動マウントできないようなので以下を追加した。

Mint の Startup Applications にスクリプトを追加して起動時にマウントするようにする。

まずはスクリプトを書く。ここではファイル名を mnt-opt.sh とするが好きな名前でどこかに作る。

予め Disks で対象のパーティションの UUID をコピーしておく

$ vi ./mnt-opt.sh
#!/bin/bash
gio mount -d 16e67ee6-955c-4d6f-8f91-ef96f83e728f
:wq

$ chmod 755 ./mnt-opt.sh

Mint の Startup Applications でさっき作成したスクリプトを追加する。

これでログイン時に自動マウントするようになる。異なるユーザーでログインするときは Startup Applications の設定をそのユーザーでやり直す必要があると思う。