- 1. 概要
- 2. インストール
- 3. SDDM カスタマイズ
- 4. 初期化ファイルの作成
- 5. ログインマネージャ起動
1. 概要
下記のデスクトップ環境を構築する手順を記述します。
| 種 別 | リソース・設定 | 備考 |
| ホスト | Windows11 Version 24H2 | |
| VitualBox | Version 7.1.8 | |
| ゲスト | FreeBSD 13.5 RELEASE | |
| ログインマネージャ | SDDM | |
| 仮想システムタイプ | BSD | |
| 仮想サブシステムタイプ | FreeBSD | |
| 仮想システムバージョン | FreeBSD (64bit) | |
| ハードディスク | 160 GB | |
| メモリ | 4 GB | |
| CPU | 2コア | |
| グラフィックスコントローラ | VBoxSVGA 256MB 3D Disable | |
ここまでの時点で、システムインストールと「VirtualBox Guest Additions」の設定は終わっているものとします。
ぞれぞれのインストール・設定に関しては
「FreeBSD - デスクトップ環境構築 - 共通事項 - システムインストール」
「FreeBSD - デスクトップ環境構築 - 共通事項 - VirtualBox Guest Additions」
をご参照ください。
2. インストール
pkg install -y xorg numlockx ja-font-migmix
pkg install -y sddm sddm-freebsd-black-theme cursor-neutral-white-theme
pkg install -y hs-xmonad hs-xmobar hs-cabal-install hs-stack pkgconf
バージョンの推移です。
・2020年 7月 9日 「FreeBSD 11.4 RELEASE」 「0.15_4」
・2020年11月19日 「FreeBSD 12.2 RELEASE」 「0.15_6」
・2027年 7月 7日 「FreeBSD 13.0 RELEASE」 「0.15_8」
・2022年 1月 7日 「FreeBSD 13.0 RELEASE」 「0.15_9」
・2023年 1月 6日 「FreeBSD 12.4 RELEASE」 「0.17.0_1」
・2023年 5月23日 「FreeBSD 13.2 RELEASE」 「0.17.1」
・2024年 1月31日 「FreeBSD 14.0 RELEASE」 「0.17.1」
・2024年 3月29日 「FreeBSD 13.3 RELEASE」 「0.17.1」
・2024年 6月19日 「FreeBSD 14.1 RELEASE」 「0.18.0」
・2024年10月23日 「FreeBSD 13.4 RELEASE」 「0.18.0」
・2024年12月23日 「FreeBSD 14.2 RELEASE」 「0.18.0」
2025年5月20日の時点で、下記のバージョンでした。
$ xmonad --version
xmonad 0.18.0
3. SDDM カスタマイズ
ログイン画面の解像度を「1366x768」とし、キーボードレイアウトを「jp.106」にします。
「root」ユーザ権限で。
sh
cat << 'EOF' >> /usr/local/share/sddm/scripts/Xsetup
xrandr --output VGA-0 --mode 1366x768 --rate 60
setxkbmap -layout jp
EOF
exit
ログイン画面のテーマとカーソルを変更します。
「root」ユーザのまま
sddm --example-config > /usr/local/etc/sddm.conf
vi /usr/local/etc/sddm.conf
[Theme]
# Current theme name
Current=breeze
# Cursor size used in the greeter
CursorSize=
# Cursor theme used in the greeter
CursorTheme=breeze_cursors
を下記へ変更します。
[Theme]
# Current theme name
Current=sddm-freebsd-black-theme
# Cursor size used in the greeter
CursorSize=
# Cursor theme used in the greeter
CursorTheme=Neutral++_White
4. 初期化ファイルの作成
「root」ユーザ権限で。
sh
cat << 'EOF' >> /etc/profile
export LC_ALL="ja_JP.UTF-8"
export LANGUAGE="ja_JP.UTF-8"
export LANG="ja_JP.UTF-8"
EOF
cat << 'EOF' >> /etc/csh.cshrc
setenv LC_ALL "ja_JP.UTF-8"
setenv LANGUAGE "ja_JP.UTF-8"
setenv LANG "ja_JP.UTF-8"
EOF
cat << 'EOF' >> /usr/share/skel/dot.xinitrc
#!/bin/sh
#
/usr/local/bin/VBoxClient-all
#
setxkbmap -layout jp
numlockx on
xsetroot -cursor_name left_ptr
export DESKTOP=xmonad
exec xmonad
EOF
chmod +x /usr/share/skel/dot.xinitrc
exit
「xsetroot -cursor_name left_ptr」は、カーソルの形状設定です。
既存のログインユーザで。
cp /usr/share/skel/dot.xinitrc ~/.xinitrc
最低限の「xmonad」の環境を作成。
ログインユーザで。
mkdir -pv ~/.xmonad
cp /usr/local/share/examples/xmonad/build ~/.xmonad/build
cp /usr/local/share/examples/xmonad/xmonad-config.cabal ~/.xmonad/xmonad-config.cabal
vi ~/.xmonad/xmonad-config.cabal
短いので、全行記述しますが(わはは、「cabal」というファイルタイプのシンタックスハイライトはできない)
name: xmonad-config
version: 0.0
synopsis: XMonad Config File
homepage: http://xmonad.org
license: BSD2
license-file: LICENSE
author: Peter Jones <pjones@devalot.com>
maintainer: Peter Jones <pjones@devalot.com>
copyright: Copyright (c) 2016,2017 Peter J. Jones
category: Graphics
build-type: Simple
cabal-version: >=1.8
executable xmonad-config
main-is: config.hs
build-depends: base, xmonad, xmonad-contrib
最終行だけ、変更します。
executable xmonad-config
main-is: config.hs
build-depends: base, xmonad, xmonad-contrib, containers
これ、一回こっきりしかチャンスないので間違えないように、ご注意ください。
以降の処理で「~/.xmonad/xmonad-config.cabal」は、変わってしまいます。
変更したいときは、ここまで戻って、「~/.xmonad/」配下を全部削除して、一から作り直さなければなりません。
vi ~/.xmonad/config.hs
これが、カスタマイズファイルになります。
import XMonad
import Data.Monoid
import System.Exit
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import XMonad.Hooks.ManageHelpers(doFullFloat, doCenterFloat, isFullscreen, isDialog)
import XMonad.ManageHook
import XMonad.Util.NamedScratchpad
myTerminal = "xterm"
-- Whether focus follows the mouse pointer.
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = True
-- Whether clicking on a window to focus also passes the click to the window
myClickJustFocuses :: Bool
myClickJustFocuses = False
myModMask = mod4Mask
myNormalBorderColor = "#dddddd" -- 通常のウィンドウ枠色
myFocusedBorderColor = "#008000" -- フォーカスウィンドウの枠色
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[
((modm , xK_Return), spawn $ XMonad.terminal conf) -- 端末を開く
, ((modm, xK_q ), kill) -- 閉じる
, ((modm , xK_m ), spawn $ "xfce4-appfinder") -- メニュー
, ((modm , xK_n ), windows W.focusDown) -- フォーカス切り替え
, ((modm , xK_j ), windows W.swapMaster) -- フォーカスを最前面
, ((modm .|. shiftMask, xK_r), spawn $ "xmonad --recompile; xmonad --restart") -- 再設定
, ((0, xK_Print ), spawn $ "xfce4-screenshooter -c -f") -- 画面キャプチャ
, ((controlMask, xK_Print ), spawn $ "xfce4-screenshooter -c -w")
, ((modm .|. shiftMask, xK_q), io (exitWith ExitSuccess)) -- ログアウト
, ((modm , xK_b ), spawn "sudo reboot") -- 再起動
, ((modm , xK_s ), spawn "sudo poweroff") -- シャットダウン
]
myXfce4Float = customFloating $ W.RationalRect (40/1366) (40/786) (400/1366) (500/786)
myFcitxFloat = customFloating $ W.RationalRect (50/1366) (50/786) (700/1366) (500/786)
myManageHook = composeAll
[
className =? "MPlayer" --> doFloat
, className =? "Alacritty" --> doFloat
, className =? "Atril" --> doFloat
, className =? "Brasero" --> doFloat
, className =? "Chromium-browser" --> doFloat
, className =? "Clamtk" --> doFloat
, className =? "Claws-mail" --> doFloat
, className =? "Code - OSS" --> doFloat
, className =? "Conky" --> doFloat
, className =? "Eclipse" --> doFloat
, className =? "Epdfview" --> doFloat
, className =? "Gimp" --> doFloat
, className =? "Gimp-2.10" --> doFloat
, className =? "Lxappearance" --> doFloat
, className =? "Midori" --> doFloat
, className =? "Nautilus" --> doFloat
, className =? "Nitrogen" --> doFloat
, className =? "Pamac-manager" --> doFloat
, className =? "Pcmanfm" --> doFloat
, className =? "Roxterm" --> doFloat
, className =? "Synaptic" --> doFloat
, className =? "Termite" --> doFloat
, className =? "Thunar" --> doFloat
, className =? "Thunderbird" --> doFloat
, className =? "Tilix" --> doFloat
, className =? "URxvt" --> doFloat
, className =? "UXTerm" --> doFloat
, className =? "Vivaldi-stable" --> doFloat
, className =? "XTerm" --> doFloat
, className =? "Xfce4-terminal" --> doFloat
, className =? "firefox" --> doFloat
, className =? "libreoffice-startcenter" --> doFloat
, className =? "mpv" --> doFloat
, className =? "octopkg" --> doFloat
, className =? "qpdfview" --> doFloat
, className =? "smplayer" --> doFloat
, className =? "Xfce4-appfinder" --> myXfce4Float
, className =? "Fcitx-config-gtk" --> myFcitxFloat
, className =? "Fcitx-config-gtk3" --> myFcitxFloat
, resource =? "desktop_window" --> doIgnore
, resource =? "kdesktop" --> doIgnore
]
myStartupHook = do
spawn "$HOME/.xmonad/scripts/autostart.sh"
main = xmonad defaults
defaults = def {
terminal = myTerminal
,focusFollowsMouse = myFocusFollowsMouse
,clickJustFocuses = myClickJustFocuses
,modMask = myModMask
-- 枠の色
,normalBorderColor = myNormalBorderColor
,focusedBorderColor = myFocusedBorderColor
,keys = myKeys
,manageHook = myManageHook
,startupHook = myStartupHook
}
「--」以降以外は、スペースはきちんとスペースをいれます。
タブで飛ばすと、山ほど、ワーニングが出力されます。
上記のファイルを作成後。
cabal new-update
~/.xmonad/build
xmonad --recompile
この一連の手順で
~/.xmonad/xmonad-x86_64-freebsd
というカスタマイズされた実行ファイルができます。
カスタマイズしていない場合は、端末を開くのが Alt+Shift+Enter で、ログアウトが Alt+Shift+q になります。
カスタマイズしていない状態は、下記のファイルを読んでください。
/usr/local/share/examples/xmonad/xmonad.hs
自動起動のファイルを作成します。
mkdir -pv ~/.xmonad/scripts
sh
cat << 'EOF' >> ~/.xmonad/scripts/autostart.sh
#!/bin/sh
run()
{
if ! pgrep $1 ;
then
$@&
fi
}
run "/usr/local/bin/VBoxClient-all"
run "xmobar"
EOF
exit
chmod +x ~/.xmonad/scripts/autostart.sh
5. ログインマネージャ起動
前項までインストール・設定したものを有効にします。
「root」ユーザ権限で。
sysrc dbus_enable=YES
sysrc sddm_enable=YES
起動します。
service dbus start
service sddm start
うまく設定できていれば、ログイン画面が表示されます。
ユーザ名・パスワードを入力してログインします。
「sddm-freebsd-black-theme」を設定したはずなのに、違うログイン画面でびっくりします。
どうも「284986 – deskutils/plasma6-sddm-kcm: SDDM themes are no longer effective」を読むと。
「sddm-freebsd-black-theme」は、「/usr/local/bin/sddm-greeter」を必要とするのですが。
「/usr/local/bin/sddm-greeter」は、なくなって「/usr/local/bin/sddm-greeter-qt6」になっており、「/usr/local/bin/sddm-greeter-qt6」は、「sddm-freebsd-black-theme」を解釈できないようなのです。
なので、「pkg」が対応するまでは、このログイン画面で我慢するしかなさそうです。
|