GNOME OSK extension IdeaList

この記事を作った動機 単に日本語入力環境の改善を考えていたら他にも欲しい機能が出てきたので記録するだけ。 前回の記事 GNOME OSK 日本語入力 一時的な解決策 Idea List コマンドキー Gnome OSK では、ミニマリスティック過ぎて、Ctrl+S でセーブとかキーボードショートカットが困難である。そこで基本的なキー操作はコマンドとして定義し、汎用性のために、Alt と Ctrl キーも追加するみたいな方向性にしたい。 以下は追加したい理想のキーについて列挙したものである。 Ctrl+S -> セーブ キー Ctrl+C -> コピー キー Ctrl+V -> 貼り付け キー Ctrl+Z -> 元に戻す キー Ctrl+Y -> やり直す キー Ctrl Alt キーサイズ調整 Gnome OSK のキーサイズは Windows の OSK に比べて小さいように思う。正直かなり押しづらいので、もうちょいキーサイズを好みに合わせて、大きくしたり小さくしたりできるようにしたいと思った。 サイズ設定のインターフェイスについては、OSK 側には設定用のボタンを追加するか、ブラウザから設定画面にアクセスしてもらうようにするか、OSK に埋め込まれている設定画面があるならそこに項目を追加してみてもいいかなと思ったりしている。 アプリケーションのサイズ、位置の最適化 Windows では、スクリーンキーボードを使うと、自動的にウィンドウが変形されたり、テキストの位置に合わせて移動したりする。しかし GNOME ではそういう機能は基本現状ないっぽくて、なんかターミナル使ったら OSK の下に出力と入力部分が隠れてしまったりする。なのでこれを多少マシにしたい。 カーソルの画面上の位置を認識して、ウィンドウの表示位置を調整する Wayland をネイティブにサポートしているアプリでは、ウィンドウサイズやコンテンツの全体についての可視性についても考慮したい。 フローティングモード キーボードが画面を全体的に覆う感じじゃなくて、Windows みたいに、ウィンドウモードみたいなことができるようにしたい。アプリケーション側の最適化が困難な、XWayland 上で動いているアプリとかでも、OSK をまともに動かせるようにしたい。 OSK 自動隠し機能の無効化 OSK を固定するキーみたいなものを実装し、スクリーンキーボードが自動で隠れると鬱陶しいときに明示的に操作できるようにする。 ...

August 22, 2025

GNOME OSK 日本語入力 一時的な解決策

この記事を作った動機 なんか ChatGPT に色々要望を投げたら、とりあえず動くものが自分で理解してなにか作れる前にできたので、まずはそっちに集中しようかなと思いまとめを作ろうとしてみた。 結局まともに動かせるようにするために、 ChatGPT とのやり取りで出てきた着想を元に、色々調べて自分で組み合わせたり、コードを書いたりすることになった。 前回の記事 GNOME OSK 周りの調査 機能の概要 Gnome 拡張機能として、トップバーに全角半角切り替えキーを表示し、押したら、入力モードがアルファベットを直接入力するモードと、日本語をローマ字で入力するモードに切り替えられるようにする。 主にタッチパネル環境を使って日本語入力するときに、Gnome OSK が US配列しか日本語レイアウトを指定しても表示しないために、補助として作った。 想定された利用する状況としては、以下のようなものがある。 GNOME 47 以降 タッチパネル運用 GNOME OSK を利用する Wayland 環境 ちなみに X11 環境である場合は、onboardなどすでにある OSK とかを使ったほうがいいかもしれない。 リポジトリ 基本的な動作 pyhton のキーイベントを送る常駐サーバがある。 (セキュリティの都合により汎用性はなく “`” の日本語キーボードで言う全角半角キー相当のキーイベントしか送らない) ボタンが押されたら、localhost 経由で Gnome 拡張機能からリクエストを送る python サーバ 必要なパッケージ python python-uinput python-websockets yay -S python python-uinput python-websockets 最新版 最初は、ChatGPT に書いてもらったコードを動かしていたが、次第に HTTP 通信だと限界があることがわかり、 WebSocket へ移行した過程で、結局自分でネットで python のsockets の公式ライブラリなり、色んなサイトを漁ってコードを書くことになった。ChatGPT が書いたコードについては、uinput 以外は、結局いろんなサイトからの試しながら切り貼りといった感じである。 ...

August 21, 2025

動画壁紙 GNOME

このページは、まだ未完成です。。。 nicotalk&キャラ素材配布所 http://www.nicotalk.com/charasozai_kt.html (2024年5月16日) このツールを作りたい理由 wallpaper engine みたいなことを、Linux 環境の GNOME、wayland 上でやりたいと思った。githubにコードやコンパイル済みのバイナリは上げておいて、いろんなlinuxディストリビューションで無料で使えるものがあるといいなと思った。 どう実装したいか? GJS を使って、GNOME 拡張機能として実装したい。そもそもできるのか、具体的にどうするのかは現時点ではまだ見通しが立っていない。 参考にしたサイトとか 現時点では特になし。

August 13, 2025

VLC 動画を再生できないことがある

この記事を作った動機 なんか最近 VLC をただパッケージマネージャでインストールするだけでは、デコードやら何やら色々必要なプラグインが欠けた状態になるらしく、まともに動画を再生できないということがあったので記録するだけ。 うまく動画が再生できないことがわかったあと、pacman を使うことで、plugin として存在していて、まだインストールしていないパッケージがあることを理解した。それで欠けていそうなパッケージをインストールしてみると問題が解決したので、そのことを忘れないうちに残しておきたい。 pacman -Qi vlc # Name : vlc # Version : 3.0.21-27 # Description : Free and open source cross-platform multimedia player and framework # Architecture : x86_64 # URL : https://www.videolan.org/vlc/ # Licenses : GPL-2.0-or-later LGPL-2.1-or-later # Groups : None # Provides : None # Depends On : bash hicolor-icon-theme vlc-gui-qt=3.0.21 # Optional Deps : vlc-gui-ncurses: for ncurses TUI # vlc-gui-skins2: for Skins2 GUI # vlc-plugins-all: for all plugins # vlc-plugins-extra: for extra plugins # vlc-plugins-visualization: for visualization plugins # vlc-plugin-aalib: for ASCII art video output support # vlc-plugin-aom: for AOM AV1 codec support # vlc-plugin-aribb24: for ARIB STD-24 codec and demux support # vlc-plugin-aribb25: for ARIB STD-25 stream filter support # vlc-plugin-ass: for SSA/ASS subtitle codec support # vlc-plugin-avahi: for mDNS/DNS-SD services discovery support # vlc-plugin-bluray: for Blu-ray access support # vlc-plugin-caca: for color ASCII art video output support # vlc-plugin-cddb: for CDDB access support # vlc-plugin-chromecast: for Chromecast stream out support # vlc-plugin-dca: for DTS Coherent Acoustics codec support # vlc-plugin-dvb: for DVB access, mux and demux support # vlc-plugin-dvd: for DVD access support # vlc-plugin-ffmpeg: for FFMPEG based access, codec, demux, packetizer, VDPAU, video chroma and video filter support # vlc-plugin-firewire: for FireWire device access support # vlc-plugin-fluidsynth: for FluidSynth codec support # vlc-plugin-freetype: for subtitle and on screen display text rendering support # vlc-plugin-gme: for Game Music Emulation demux support # vlc-plugin-gstreamer: for GStreamer codec support # vlc-plugin-jack: for JACK access and audio output support # vlc-plugin-kate: for kate karaoke codec support # vlc-plugin-kwallet: for kwallet keystore support # vlc-plugin-libsecret: for libsecret keystore support # vlc-plugin-lirc: for infrared remote control support # vlc-plugin-live555: for RTP/RTSP stream access support # vlc-plugin-mad: for MPEG Audio Decoder audio filter support # vlc-plugin-matroska: for Matroska demux support # vlc-plugin-mdns: for mDNS services discovery support # vlc-plugin-modplug: for MOD demux support # vlc-plugin-mpeg2: for MPEG2 codec support # vlc-plugin-mtp: for MTP device access and discovery support # vlc-plugin-musepack: for MusePack demux support # vlc-plugin-nfs: for NFS access support # vlc-plugin-notify: for notification support # vlc-plugin-quicksync: for Intel QuickSync H264/H262 codec support # vlc-plugin-samplerate: for samplerate audio filter support # vlc-plugin-sdl: for SDL codec support # vlc-plugin-sftp: for SFTP access support # vlc-plugin-smb: for SMB access support # vlc-plugin-soxr: for SoX Resampler audio filter support # vlc-plugin-srt: for SRT subtitle file support # vlc-plugin-svg: for SVG codec and text renderer support # vlc-plugin-udev: for ALSA services discovery support using udev # vlc-plugin-upnp: for UPnP services discovery support # vlc-plugin-x264: for H264/AVC encoding support # vlc-plugin-x265: for H265/HEVC encoding support # vlc-plugin-zvbi: for VBI access (also over V4L2) and codec support # Required By : None # Optional For : None # Conflicts With : vlc-plugin # Replaces : vlc-plugin # Installed Size : 40.06 MiB # Packager : David Runge <dvzrv@archlinux.org> # Build Date : Thu Jul 24 05:35:16 2025 # Install Date : Tue Aug 12 20:18:56 2025 # Install Reason : Explicitly installed # Install Script : No # Validated By : Signature このようにプラグインなどとして各種機能がVLCにおいて分割されるようになったのが、最近なのかは知らないが、linux ファームウェアも色々なんか分割してたりするので、VLC も肥大化かメンテナンスのために、なんかあったのかなと思ったり、元からだけど、今までは問題が出なかっただけなのかなと思ったり。 ...

August 12, 2025

GNOME OSK 周りの調査

このページは、まだ未完成です。。。 nicotalk&キャラ素材配布所 http://www.nicotalk.com/charasozai_kt.html (2024年5月16日) この記事を作った動機 GNOME には、スクリーンキーボードがデフォルトで実装されているが、日本語レイアウトが存在しないようで、全角半角切り替えキーさえ出てこないという非常に不便な挙動をしているということがあった。そこで、自分で何かしらしてどうにか全角半角キーを追加したいと思った次第。 考えていること 拡張機能として実装する Gnome-shell 自体を変更してしまう OSK自体にボタンを埋め込まずに、Fcitx5のIME の横にパネルメニューボタンとして、切り替えボタンを表示する わかったこと data/osk-layouts/配下に日本語レイアウトが存在しない us.json としてアメリカ配列などについては存在するが、jp.json や ja.json みたいなのは存在していない。 ja.json を us.json などからコピーして作るとき 全角半角切り替えキーは、action として記述できる模様。ただ、GJS側でどうやってアクションを処理すればいいのか不明。 us.json の action 例 ... { "action": "emoji", "iconName": "osk-emoji-picker-symbolic" }, { "action": "languageMenu", "iconName": "osk-layout-symbolic" }, { "action": "hide", "iconName": "osk-hide-symbolic" } ... jp.json のイメージ ... { "action": "zenkakuHankaku", "iconName": "osk-zenkakuHankaku-symbolic" }, ... GJS のアクションの実装方法が不明 調査が必要なことがわかる。fcitx5 を私は使っているがそれについても GJS からどうできるのか調べる必要がありそうである。DBusあたりが重要なのかな?とはなんとなく思っているところである。 data/gnome-shell-osk-layouts.gresource.xml のイメージ ただキーボードレイアウトとactionの実装をするだけでなく、リソースとして以下のように登録してレイアウトを認識させる必要がありそう。 ...

August 10, 2025

GRUB で Windows も起動する

この記事を作った動機 単に今までめんどくさくて放置していた、Windows と Linux の デュアルブート環境において、GRUB を利用しているとき、Windows OS の選択肢が出てこないということについて、対応した時にわかったことを記録したいというだけ。 ちなみに今回の作業をするまでは単に BIOS 側で、.efi ファイルを指定することで、Linuxを起動するエントリと、Windowsを起動するエントリを作って、BIOSのブートメニューで選択していた。 なお今回の記事では前提として、GRUB が入っており、以下に示すコマンドはすでに使えることを想定している。 grub-install grub-mkconfig 環境 System Details Report(GNOME settings からのコピペ) Report details Date generated: 2025-08-04 14:45:58 Hardware Information: Hardware Model: Dell Inc. XPS 15 9575 Memory: 16.0 GiB Processor: Intel® Core™ i7-8705G × 8 Graphics: Intel® HD Graphics 630 (KBL GT2) Disk Capacity: (null) Software Information: Firmware Version: 1.20.0 OS Name: Arch Linux OS Build: rolling OS Type: 64-bit GNOME Version: 48 Windowing System: Wayland Kernel Version: Linux 6.15.7-arch1-1 パティーション構成 どんなパーティション構成で、デュアルブートを構成しているかも示す。Windows も Linux もどちら側も UEFI で動作しており、それぞれ個別に起動用の EFI パーティションを持っているという構成である。 ...

August 4, 2025

libvirtd のファイヤウォール設定

この記事を作った動機 libvirtを使った仮想環境で、ファイヤウォールの設定をしないと、仮想マシンがネットにつながらないので、その記録をするだけ。 やり方 仮想マシンとのインタフェースを確認する ip a # ... # 8: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP group default qlen 1000 # link/ether 52:54:00:2d:fb:f7 brd ff:ff:ff:ff:ff:ff # inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 # valid_lft forever preferred_lft forever # ... ファイヤウォールを設定する インタフェース名が、virbr0 であることを想定する。 sudo firewall-cmd --permanent --direct --passthrough ipv4 -I FORWARD -i virbr0 -j ACCEPT sudo firewall-cmd --permanent --direct --passthrough ipv4 -I FORWARD -o virbr0 -j ACCEPT # sudo firewall-cmd --permanent --direct --passthrough ipv4 -I FORWARD -i [ネットワークインタフェース名] -j ACCEPT # sudo firewall-cmd --permanent --direct --passthrough ipv4 -I FORWARD -o [ネットワークインタフェース名] -j ACCEPT sudo systemctl restart firewalld 参考にしたサイトとか Firewall blocks internet on bridge in KVM virtual machine - English / Network/Internet - openSUSE Forums https://forums.opensuse.org/t/firewall-blocks-internet-on-bridge-in-kvm-virtual-machine/138737 (2025年8月2日)

August 2, 2025

cron が動かない

この記事を作った動機 cron を使ってみようと思って重い腰を持ち上げてみたら、意図したとおりにうまく動かせずにつまずいたのでその記録をとるだけ。うまくわかった気がしないし、間違いがあるかもしれないが、ご了承ください。 cron の構造 # 分 時 日(一か月単位) 月 日(一週間単位) * * * * * /path/to/script.sh 確認事項 cron はインストールされているか? yay -Qs cron # pacman -Qs cron # local/cronie 1.7.2-1 # Daemon that runs specified programs at scheduled times and related tools エディターを設定したか? デフォルトだと vi が利用されるようになっており、不便なことがあると思うので設定した方がいいかも。 # neovim -> "nvim" に設定 # visual studio code -> "code" に設定 export EDITOR=nvim echo $EDITOR # nvim cron サービスが実行されているか? 確認 systemctl status cronie # systemctl status crond # ● cronie.service - Command Scheduler # Loaded: loaded (/usr/lib/systemd/system/cronie.service; enabled; preset: disabled) # Active: active (running) since Mon 2025-07-28 21:53:50 JST; 1h 7min ago # Invocation: 748b761f9921445f8a759eb430f3507f # Main PID: 354161 (crond) # Tasks: 2 (limit: 629145) # Memory: 1.3M (peak: 4.5M) # CPU: 1.667s # CGroup: /system.slice/cronie.service # ├─354161 /usr/sbin/crond -n # └─355485 /usr/sbin/anacron -s # # 7月 28 22:58:00 hostName CROND[361012]: (username) CMDEND (/path/to/script.sh) # 7月 28 22:58:00 hostName CROND[361012]: pam_unix(crond:session): session closed for user username # 7月 28 22:59:00 hostName crond[361097]: pam_unix(crond:session): session opened for user username(uid=1000) by username(uid=0) # ... 有効化 systemctl enable --now cronie # systemctl enable --now crond 例(crontab -l の内容) 毎分実行 * * * * * /path/to/script.sh 各時間 5 分目に実行 0時 5分に実行 1時 5分に実行 2時 5分に実行 … ...

July 28, 2025

電力プロファイル設定をできるようにする

この記事を作った動機 Arch linux や Gnome をただ導入しただけでは有効になっていないどころか、インストールすらされていない機能を有効にする方法について、一応ノートとして記録を残すだけ。 デーモンのインストール yay -Sy power-profiles-daemon # sudo pacman -S power-profiles-daemon デーモンの有効化 sudo systemctl enable --now power-profiles-daemon 電力管理が有効になった様子 参考にしたサイトとか Re-enable the GNOME Power Profile service - Ask Ubuntu https://askubuntu.com/questions/1526049/re-enable-the-gnome-power-profile-service (2025年7月25日) Arch Linux - power-profiles-daemon 0.30-1 (x86_64) https://archlinux.org/packages/extra/x86_64/power-profiles-daemon/ (2025年7月25日)

July 25, 2025

VPN越しにHTTPやSSH通信だけ通らなかった話とMTU設定

この記事を作った動機 なんか、キャリアネットワークをデザリングを経由して使って、さらにVPN接続を介した通信のうち、HTTPとSSHだけが繋がらないということがあった。 それで対策としてMTUを小さく設定することをしたのでそのことを記録するだけ。 ちなみになぜMTUが大きすぎるとだめなのかわかっていないが、多分大きすぎるサイズのパケットはなんとなくどこかで落とされている気がする。 VPNや多段NAT構成だとルーティングされているうちに、ヘッダが積み重なって、ネットワークのパケットのサイズが大きくなりすぎたりするのかもしれない。 ネットワークの構成 サーバーやLAN内のルータ マンションのNAT キャリアネットワーク スマホ(デザリング) PCとか 状況 A -> キャリアネットワークのときで、直接マンションのNATを超えたとき B -> キャリアネットワークのときで、VPSなどの固定IPを持ったサーバーを経由したとき C -> 光回線などの固定回線で、直接マンションのNATを超えたときと、VPSなどの固定IPを持ったサーバーを経由したときの両方について含まれる 状況別の表 A B C Ping ✅ OK ✅ OK ✅ OK SMB(ファイル共有) ✅ OK 確かめていない ✅ OK DNS ✅ OK ✅ OK ✅ OK SSH ❌ Failed ✅ OK ✅ OK HTTP(HTTPS) ❌ Failed ❌ Failed ✅ OK MTU設定方法(要管理者権限) デフォルトで設定されているMTUのサイズ 1500 今回うまくいったMTUのサイズ 1000 一時的な設定(とりあえずすぐ設定したいとき) ip コマンドを使う sudo ip link set dev [ネットワークアダプタ名] mtu [設定したいMTUサイズ] ip コマンドを使う例 # 例 # ip a # ... # 4: vpn_vpnhome: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000 # link/ether 5e:76:29:d3:1b:85 brd ff:ff:ff:ff:ff:ff # inet 192.168.1.203/24 scope global vpn_vpnhome # valid_lft forever preferred_lft forever # sudo ip link set dev vpn_vpnhome mtu 1000 # ip a # ... # 4: vpn_vpnhome: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1000 qdisc fq_codel state UNKNOWN group default qlen 1000 # link/ether 5e:76:29:d3:1b:85 brd ff:ff:ff:ff:ff:ff # inet 192.168.1.203/24 scope global vpn_vpnhome # valid_lft forever preferred_lft forever 永続化設定(networkmanagerを使っているとき) sudo nmcli connection modify [ネットワークアダプタ名] 802-3-ethernet.mtu [設定したいMTUサイズ] # vpn_vpnhome の MTU サイズを 1000 に変更 # sudo nmcli connection modify vpn_vpnhome 802-3-ethernet.mtu 1000 追記 2025年8月1日 なんか何となくブックマークをあさっていたら、TU,MSS の計算と最適化の便利な手段をまとめるというサイトにたどり着いた。それで、さらにリンクをたどって、Visual packet size calculator — Daniil Baturinというところに行くと、こんな記述が目に止まった。 ...

July 21, 2025