2019-10-14 (Mo) [長年日記]
_ wayfire の snap とは
wayfire に enable_snap
という設定項目があって、デフォルトは 1。つまり ON。
でも snap してくれないなー、どうしてだろうなー、と思いつつぐぐってみたところ…
ウィンドウを掴んで画面端に持っていったら、そっちの端でウィンドウが広がる機能。 あれ、aero snap って呼ぶのね。GNOME にもあったな。 あれを有効にするかどうかの設定だった。
い…… いらねーーー…
enable_snap = 0
にしとこ。
GNOME に aero snap が搭載された時は、 snap したら snap する前のサイズを忘れてしまってて、元に戻せなかったので、 ゴミでしかなかったけど、 いつの間にか戻せるようにはなってたな。でも要らない。
私が欲しかった snap は、ウィンドウを移動する際に、他のウィンドウの端や画面の端で 少し止まってくれる機能。enable_snap があれなら、これはないみたいか。
_ wayfire で suspend 時に screenlock
次。サスペンドから復帰した時に画面をロックしたい。
https://wiki.archlinux.jp/index.php/%E9%9B%BB%E6%BA%90%E7%AE%A1%E7%90%86
「サスペンド/レジューム サービスファイルの統合」にある wicd-sleep.service を 参考に、ExecStop で swaylock を起動するようにしてみた。
が、
- ExecStop から background で swaylock しても、swaylock が終了させられてしまう
- ExecStop からそのまま swaylock すると、ロックしたまま再度サスペンドしようとしてもできない
なかなかに面倒。
方針転換。wayfire に plugin を作って、suspend を検出して swaylock を起動する方向で。
しかしどうやって検出しよう… systemd の api でもあれば、と思ったけど、 どうやって systemd とやりとりするのかな。
何か特定のファイルを作って、inotify で監視しようか。
しかし plugin ごときが直接監視はできない。
むーーー。
ファイルサイズが変わったら、にする? それには、頻繁に plugin を呼んでもらう必要があるが…
wf::wl_timer
ってクラスが用意されてたので、これを使うことに。
しかし lambda 関数を呼んでもらうと、その先で落ちる…
C++ の lambda 関数、ほとんど知らない。というか全然知らない。 見様見真似で書いてる。 何か落とし穴があるのかも。
と思ってぐぐってみると、キャプチャが云々。[=]
はコピーでキャプチャして、
[&]
だと参照でキャプチャするらしい。
相変わらず面倒な仕様だ…
std::string
をコピーでキャプチャしてたので参照に変更した。
更に、それだとローカル変数を参照で参照してしまうので、
メンバに移動させた。
こんな感じで動いたと思う。
まぁこんなもんやろ。
wf::wl_timer
に interval timer 機能が欲しいな。
C++ って、lambda 関数なんかよく機能追加できたよね…
_ Wayfire が Wireshark で落ちる問題のその後
wireshark が wayland で動いてくれるみたい。
sudo pacman -S qt5-wayland
で wayland 用モジュールのインストールが必要で、これをやっておけば、
QT_QPA_PLATFORM=wayland wireshark
で wireshark が wayfire と wayland でつながった。
そしてこれだと、wireshark を何度終了させても落ちない。
わーい ^^ ~/.zshenv
に書いとこ。
(根本解決ではないけど…)
あしまった。~/.zshenv
に書いたら virtualbox が起動しないんだ。
emacs が gtk を使いながら x も使ってるのと同様、
たぶん virtualbox も qt を使いながら x も使ってるのだと思う。
ここは alias でなんとかするか。