- 1. 概要
- 2. インストール
- 3. SDDM カスタマイズ
- 4. 初期化ファイルの作成
- 5. ログインマネージャ起動
1. 概要
下記のデスクトップ環境を構築する手順を記述します。
種別 | リソース・設定 | 備考 |
ホスト | Windows11 23H2 | |
仮想環境 | VirtualBox 7.0.14 | |
ゲスト | FreeBSD 13.3 RELEASE | |
ログインマネージャ | SDDM | |
仮想システムタイプ | BSD | |
仮想システムバージョン | FreeBSD (64bit) | |
ハードディスク | 180 GB | |
メモリ | 4 GB | |
CPU | 2コア | |
グラフィックスコントローラ | VBoxSVGA 128MB 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日の時点で、下記のバージョンでした。
$ xmonad --version
xmonad 0.17.1
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
うまく設定できていれば、ログイン画面が表示されます。
ユーザ名・パスワードを入力してログインします。
|