xmonad - 共通事項 - フローティングウィンドウ

 クラウディア
1. 概要
2. 準備
3. 設定
4. 位置やサイズを指定する
5. 表示
6. 操作

1. 概要

 基本的には、新規プログラムを起動すると、最初は前画面、以降は等分割と、まぁ、タイル型特有の表示をしますが、設定を行うことで、フローティング表示ができます。  本項は、「xmonad で狙った位置にフロートウィンドウを表示する - あじーん-0.0.2-SNAPSHOT」あたりを参考にさせていただきました。

2. 準備


~/.xmonad/xmonad.hs
 に最低限

import XMonad.Hooks.ManageHelpers(doFullFloat, doCenterFloat, isFullscreen, isDialog)
 あたりは、記述しておきます。

3. 設定

 「gimp」を例題としましょう。  「FreeBSD」では、このあたり

-- To match on the WM_NAME, you can use 'title' in the same way that
-- 'className' and 'resource' are used below.
--
myManageHook = composeAll
    [ className =? "MPlayer"        --> doFloat
    , className =? "Gimp"           --> doFloat
    , resource  =? "desktop_window" --> doIgnore
    , resource  =? "kdesktop"       --> doIgnore ]
 「gimp」は、既に定義されちゃっています。  「ArcoLinux」では、このあたり

-- window manipulations
myManageHook = composeAll . concat $
    [ [isDialog --> doCenterFloat]
    , [className =? c --> doCenterFloat | c <- myCFloats]
    , [title =? t --> doFloat | t <- myTFloats]
    , [resource =? r --> doFloat | r <- myRFloats]
    , [resource =? i --> doIgnore | i <- myIgnores]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61612" | x <- my1Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61899" | x <- my2Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61947" | x <- my3Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61635" | x <- my4Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61502" | x <- my5Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61501" | x <- my6Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61705" | x <- my7Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61564" | x <- my8Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\62150" | x <- my9Shifts]
    -- , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "\61872" | x <- my10Shifts]
    ]
    where
    -- doShiftAndGo = doF . liftM2 (.) W.greedyView W.shift
    myCFloats = ["Arandr", "Arcolinux-tweak-tool.py", "Arcolinux-welcome-app.py", "Galculator", "feh", "mpv", "Xfce4-terminal"]
    myTFloats = ["Downloads", "Save As..."]
    myRFloats = []
    myIgnores = ["desktop_window"]
    -- my1Shifts = ["Chromium", "Vivaldi-stable", "Firefox"]
    -- my2Shifts = []
    -- my3Shifts = ["Inkscape"]
    -- my4Shifts = []
    -- my5Shifts = ["Gimp", "feh"]
    -- my6Shifts = ["vlc", "mpv"]
    -- my7Shifts = ["Virtualbox"]
    -- my8Shifts = ["Thunar"]
    -- my9Shifts = []
    -- my10Shifts = ["discord"]
 「FreeBSD」と同様の書き方をするのであれば、85、86行の間に、下記のように記述します。

    , [className =? "Gimp" --> doFloat ]

4. 位置やサイズを指定する

 ここは、正に参考サイトを熟読して、やっとできたのですが・・・。  まず、必要なモジュールをインポート。

~/.xmonad/xmonad.hs
 参考サイトでは、以下の3行を追加せよと書いてあるのですが。

import XMonad.StackSet as W
import XMonad.ManageHook
import XMonad.Util.NamedScratchpad
 先頭の1行は、「ArcoLinux」も「FreeBSD」もコンパイルエラーが発生しますので、下の2行のみを追加します。  次に、例題として、「xfce4-appfinder」を使いますが、「myManageHook」を定義している行の前に

myXfce4Float = customFloating $ W.RationalRect (10/1366) (10/768) (400/1366) (500/768)
 てな行をいれます。

てけとうな名前 = customFloating $ W.RationalRect (x位置) (y位置) (幅) (高さ)
 という定義になります。  名前はともかく、位置や幅・高さは、画面サイズに対する比で記述するので、参考サイトでは、少しわかりにくかったです。  おそらく、参考サイトさんは、汎用的に記述することを心掛けているのかと思われますが、わたしの場合、使っている画面に合わせて決め打ち。  すなわち、「1366x768」なので、それを分母にとれば、分子は正にピクセル値で記述することができます。  「xfce4-appfinder」の記述は、「myManageHook」の記述欄に  「ArcoLinux」であれば

    , [ className =? "Xfce4-appfinder" --> myXfce4Float]
 「FreeBSD」であれば

    , className =? "Xfce4-appfinder"    --> myXfce4Float
 と書いてやれば思い通りになります。

5. 表示

 実際に、同表示されるかみてみます。  「ArcoLinux」
「AcroLinux 19.12.15 xmonad」-「xfce4-appfinder」「位置・サイズを指定して表示」

 「FreeBSD」

「xmonad FreeBSD 12.1」-「xfce4-appfinder」「位置・サイズを指定して表示」

 わはは、思い通りじゃ。

6. 操作

 補足になります。  フローティング表示しているウィンドウ上にフォーカスが当たっていて、mod+t で、タイル表示になります。  ウィンドウにフォーカスを当てている状態で、mod キーを押しておいて ・左ボタンを押しっぱなしにすれば、ウィンドウを移動 ・中ボタンを押せば、ウィンドウが最前面へ ・右ボタンを押しっぱなしにすれば、ウィンドウをリサイズ  という操作ができます。
TSUTAYA DISCAS
 
 
カウンタバックグラウンド