トップ «前の日記 最新 次の日記»

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 をコピーでキャプチャしてたので参照に変更した。 更に、それだとローカル変数を参照で参照してしまうので、 メンバに移動させた。

こんな感じで動いたと思う。

https://github.com/masm11/wayfire/blob/a04e7237ea8ef2266cb4f8059bac384bbb3d3373/plugins/single_plugins/screenlock.cpp

まぁこんなもんやろ。

wf::wl_timer に interval timer 機能が欲しいな。

C++ って、lambda 関数なんかよく機能追加できたよね…

_ Z/X Code Reunion #1 の typo

「オリエンテーリングがあるらしいよ」

どこの山道歩くねん。

オリエンテーションだろ…

_ 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 でなんとかするか。


編集 パスワード変更