FvwmPagerのラベル名

Fvwm3になってFvwmPagerのラベル名が *FvwmPager: Label 0 ラベル名 の様に設定できなくなった。DesktopName 0 デスクトップ名(旧ラベル名)で設定するようになった。StartFunctionのあたりに記述した。

要するにラベル名が指定できなくなって、デスクトップ名が表示される。デスクトップ名はDesktopName コマンドで設定する。

https://github.com/fvwmorg/fvwm3/issues/342

Fvwm3をgdm3でセッションファイルから起動する

/usr/share/xsessions に fvwm3.desktop名で以下のファイルを作る

[Desktop Entry]
Name=Fvwm3
Comment=fvwm3
Exec=/usr/local/bin/fvwm3 -v
#Exec=/usr/local/bin/fvwm3 -v -debug >> ${HOME}/fvwm.log 2>&1
TryExec=/usr/local/bin/fvwm3
Type=Application

/usr/share/xsessions/fvwm3.desktop

この方法だと、-debug >> ${HOME}/fvwm.log 2>&1 のオプションが使えない。どうやったらできるだろう。

-v オプションについて
このオプションで/.fvwm/fvwm3-output.log by default.にログを付け加える。

-v | –verbose

Enables debug logging. Writes in append mode to fvwm log file, which is ~/.fvwm/fvwm3-output.log by default. See ENVIRONMENT section on how to override this location on fvwm3 startup using $FVWM_USERDIR or $FVWM3_LOGFILE .

Logging can also be dynamically toggled on and off using signals:

Ubuntu21.10にSwapファイルでのHibernateを設定する

インストール後、swapファイルは2047M使用してファイルでのswapを行うようになっている。メモリー5536Mあり、ハイバネートするにはメモリー半分以下なので、余裕を持たせてswapファイルを拡大する。

sudo swapoff /swapfile
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo swapon /swapfile
sudo swapon -s

swapファイルができたら、/etc/default/grubの編集を行う。GRUB_CMDLINE_LINUX_DEFAULTにresume=UUID= resume_offset= の値を付けて追記する。UUIDの方はblkidでswapファイルのあるパーティションのUUIDを、resume_offsetは

sudo filefrag -v /swapfile

を行って表示される0:の行のphysical_offsetの開始の数値である。..が付いてる方で、..は開始を意味するもので、offsetの数値ではない。

sudo filefrag -v /swapfile |grep " 0:"| awk '{print $4}'|sed -e 's/\..//'

上記のコマンドで表示される数値である。

sudo update-grub

で、再起動を行う。

sudo systemctl hibernate

これでハイバネートできる。

https://codepre.com/how-to-enable-hibernation-on-ubuntu-when-using-swap-file.html

FVWMをカスタマイズするにあたり、LinuxのWindowManagerの要件とは。

WindowManagerに必要な要件を考える。Linuxのディスクトップ環境を作る為にどうあるのか、何が必要なのかを確認する。Fvwmでは高い自由度でカスタマイズできるからである。

まずはランチャーの役目は欠かせない。マウスで起動させるか、キーボードでターミナルか、ショートカットで起動させるか。また、常用するアプリか、インストールされたアプリか。コマンドからだと、分からないものは、GUIでアイコンで起動させるか。

次にウィンドウの操作がある。どこに配置するか、大きさは、重なり方は。アイコンに収納できるか。自動の部分と、手動の部分があり、マウスで行うか、キーボードで行うか。

次に、情報を表示する部分。アイコン、メモリー、時間、ロードなど。タスクバーの部分とFVWMならボタンの部分、ページャーの部分がある。

つづく

ResizeHintOverrideの罠

ターミナルのソフトを最大表示させると、下部のフレームがズレて隙間ができてしまう。これを解決するのが、ResizeHintOverrideである。文字のリサイズステップサイズを無視するようにするのだ。

ResizeHintOverride instructs fvwm to ignore the program supplied minimum and maximum size as well as the resize step size (the character size in many applications). This can be handy for broken applications that refuse to be resized. Do not use it if you do not need it. The default (opposite) style is NoResizeOverride.

しかし、最大サイズのリサイズはうまくいくが、フレームの端を動かすリサイズはうまく動かない。Style * ResizeOpaqueをデフォルトで使っているのだが。これか?と思いResizeOutlineを使用するとうまく動いた。

Style   *    ResizeOpaque
Style   "Gnome-terminal"        ResizeOutline
Style   "xfce4-terminal"        ResizeOutline
Style   "Gnome-terminal"        ResizeHintOverride
Style   "xfce4-terminal"        ResizeHintOverride

XDGMenuとReadとAddToMenuの関係

メニューにXDGMenuを表示させるには、Readコマンドで.XDGMenuを読み込ませる。

+ I     Read $[FVWM_USERDIR]/.XDGMenu

この.XDGMenuには、第一段階目のXDGMenuという名前のメニューが設定されている。それを変更するために。追加になるんだが。

AddToMenu XDGMenu "XDGMenu_kai" Title
+       "OOOOOOOO" Nop

XDGMenuにタイトルとテストのメニュー名を追加するとする。これをFvwmの設定ファイルにReadコマンドの後に記載すると。これが動作しないのである。困ったものである。どうしたものかと考えて、Readで読ませた設定にはReadで対抗できるのではないかと、推定した。

.XDGMenu_Addというファイルを作り

#DestroyMenu "XDGMenu"
AddToMenu XDGMenu "XDGMenu_kai" Title
+       "OOOOOOOO" Nop

の内容で書き込み。

+ I     Read $[FVWM_USERDIR]/.XDGMenu
+ I     Read $[FVWM_USERDIR]/.XDGMenu_Add

としたら、思ったように動作して、.XDGMenu_Addの内容がメニューに表示された。DestroyMenu “XDGMenu”を記載すると、.XDGMenuの内容は、消され.XDGMenu_Addの内容のみが表示された。このダブルReadテクニックによって、いろいろできそう。

例えば

#DestroyMenu "XDGMenu"
AddToMenu XDGMenu "XDGMenu_kai" Title
+       "OOOOOOOO" Nop
DestroyMenuStyle menu_xdg
MenuStyle menu_xdg  MenuColorset 14
MenuStyle menu_xdg  Font "xft:NotoSerifCJK-Light:size=12"
ChangeMenuStyle menu_xdg XDGMenu

XDGMenuのMenuStyleを変えられる。でもこれXDGMenuの一段目だけなんだよね。二段目以降はメニュー名が日本語だし、たくさんあるし、どうするの?

DestroyMenuStyle * 
MenuStyle * Mwm
MenuStyle * MenuColorset 1
MenuStyle * Font "xft:NotoSerifCJK-Light:size=18"

.XDGMenu_Addにアスタリスクのメニュスタイルを設定すると、XDGMenuでない他のメニューのスタイルも変わってしまう。そりゃそうだけど。アスタリスクに関しては、全部影響するという訳だった。じゃどうする?宿題だな。

FVWM3 メニュー keyバインディング

PopupとMenuの違いは何だろう?同じように動作するのだが。

key F11         A       M       Popup XDGMenu
key F12         A       M       Menu XDGMenu
      Types of Menus
           In fvwm there are four slightly different types of menus:

           Popup menus can appear everywhere on the screen on their own or attached to a part of a window.The Popup command opens popup menus. If the popup menu was invoked with a mouse button held down, it is closed when the button is released. The item under the pointer is then activated and the associated action is executed.

           Menu is a very similar command, but the menus it opens are slightly less transient. When invoked by clicking a mouse button, it stays open and can be navigated with no button held. But if it is invoked by a button press followed by mouse motion, it behaves exactly like a popup menu.

XDGMenuの場合は違いが分からなかった。AddToMenuで作られたMenuをマウスクリックで呼ぶ場合は、Popupの時は、右側にMenuが開く。Menuの時は、クリックなりリターンなりでアクションがあったらMenuが単独で開く、そんなところでした。

では、なんでXDGMenuだと違ったの? これ宿題

それでは、マウスでメニューを開くとする。以下をAddToMenuに記載し、メニューを開くとPopupの方は、右横にXDGMenuの中身が開いて表示される。Menuの方はクリックすると開く。その違いであった。

+ "XDG Menus" Popup XDGMenu
+ "XDG Menus" Menu XDGMenu

が、しかし一番上に記載した、キーで呼ぶ場合には、同じ挙動なんですな。これは不思議。つまりキーでメニューを呼びだす時は、PopupもMenuも同じ動作をする。これは1段目のメニューだからそうなるのであろう。2段目は違うぞ? これ宿題

小さなコマンド

.bashrc に追加する。メモリーを解放するよ。

alias memfree='VAR=`mem`&&sudo sh -c "echo 3 >/proc/sys/vm/drop_caches"&&VAR2=`mem`&&echo freememory $VAR  to $VAR2'

日本語に対応したフォント一覧

fc-list :lang=ja file

どんなアプリがインストールされているか知ることができるランチャーである。検索、ブックマーク、履歴、アクセサリー、インターネット、オフィス、グラフィック、ゲーム、システム、マルチメディア、設定のカテゴリーが左枠に出現させられる。XDGMenuより多機能で見やすい。FVWMにはこれだね、メニューとショートカットに入れるべき。ポップアップでコマンドも表示されるので、気に入ったコマンドは、FVWMのメニューに追加できるので、xfce4-appfinderをイチオシ。

sudo apt install xfce4-appfinder

fvwm3のインストール

「FVWM version 3 — the successor to fvwm2」が公開されているが、現在UbuntuにはFvwm3のパッケージは存在しない。https://packages.ubuntu.com/

待っていても、パッケージでは提供されないのだろうか。と言う訳でコンパイルしインストールを行う。

https://github.com/fvwmorg/fvwm3/blob/master/dev-docs/INSTALL.md ここを参考に、Core dependenciesとOptional dependenciesをインストールしておく。
librsvg-devがなくてlibrsvg2-devがあったので、これをインストールしてみた。大丈夫?

#!/bin/bash
while read line
do
echo -e "\e[32;1m$line\e[m"
sudo apt install $line -y
done << EOF
libevent-dev
libx11-dev
libxrandr-dev
libxrender-dev
libxt-dev
asciidoctor
libfontconfig-dev
libfreetype6-dev
libfribidi-dev
libncurses5-dev
libpng-dev
libreadline-dev
librsvg2-dev
libsm-dev
libxcursor-dev
libxext-dev
libxft-dev
libxi-dev
libxpm-dev
sharutils
EOF

準備ができたらgitからダウロード

git clone https://github.com/fvwmorg/fvwm3.git

あとはInstalling From Gitの手順で

./autogen.sh
./configure --enable-mandoc 
make

configureでWith Golang support? noになったが、まぁいいか。

じゃないわ! FvwmPrompt — a new module written in golang: ./configure --enable-golang needed at compile time だとさ。
で、以下のconfigureでyesになった。

./configure --enable-mandoc --enable-golang

つまりこういう事である。

/autogen.sh && ./configure --enable-mandoc --enable-golang && make -j4

さらに改良。Makefileに、CPPFLAGS = -march=amdfam10 追加。k10なのよ。
でmake clean && make -j4

sudo make install

インストールできたら、 .xinitrcのfvwm2の部分をfvwm3に書き換えて。startxする。
何が変わったのかはここを読むといい。https://github.com/fvwmorg/fvwm3/releases

fvwm3では、Strokeコマンドがなくなった。libstroke support has been removed.だと。
あまり使わないので、まぁ影響はないけど。キーとマウスクリックで対応できるでしょうから。Strokeは設定ファイルからコメントアウト。あとEdgeResistance 30 30でエラー、引数は1つのみが正解。何か2つ目の引数って効果あるの?ってずっと思ってた。EdgeResistance 30が正しいと、-vオプションのエラーログで分かった。

logを取るには.xinitrcで起動時に fvwm3 -v と -vのオプションを付けると、$HOME/.fvwm/fvwm3-output.log が作られる。起動中では pkill -USR2 fvwm3 ができる。

Fvwm3のモジュールは以下のとおり

FvwmAnimate
FvwmAuto
FvwmBacker
FvwmButtons
FvwmCommandS
FvwmConsole
FvwmConsoleC
FvwmEvent
FvwmForm
FvwmIconMan
FvwmIdent
FvwmMFL
FvwmPager
FvwmPerl
FvwmRearrange
FvwmScript
FvwmTalk

fvwm2.6.8のモジュールは以下の通り。○は存続、×は消滅したもの。

FvwmAnimate ○
FvwmAuto ○
FvwmBacker ○
FvwmBanner ×
FvwmButtons ○
FvwmCascade ×
FvwmCommandS ○
FvwmConsole ○
FvwmConsoleC ○
FvwmConsoleC.pl ×
FvwmCpp ×
FvwmEvent(FvwmAudio) ○
FvwmForm ○
FvwmIconMan ○
FvwmIdent ○
FvwmM4 ×
FvwmPager ○
FvwmPerl ○
FvwmProxy ×
FvwmRearrange ○
FvwmScript ○
FvwmTalk ○
FvwmTile ×

fvwm2.6.8はfvwm2.6の最終安定版ですね。
こちらでも絶版があるわけですが。FvwmTaskBarが無くなったのが大きかったかな。

  - Some fvwm modules have been removed:
      - FvwmDragWell   (no replacement)
      - FvwmGTK        (no replacement)
      - FvwmSave       (no replacement)
      - FvwmSaveDesk   (no replacement)
      - FvwmScroll     (no replacement)
      - FvwmTabs       (no replacement, never worked anyway)
      - FvwmTaskBar    (use FvwmButtons)
      - FvwmTheme      (in core of fvwm as colorsets)
      - FvwmWharf      (use FvwmButtons)
      - FvwmWinList    (use WindowList command)
      - FvwmWindowMenu (use WindowList command)
      - FvwmIconBox    (use the IconBox style instead)