デフォルトでは廃止予定のXmonad:今後の設定は何ですか?

デフォルトでは廃止予定のXmonad:今後の設定は何ですか?

Haskellプログラミングに関する多くの質問があるので、これはおそらくSO間の境界線です。しかし、最終的にこれは構成の問題です。

背景と研究

0.12以降、Xmonadはxmonad.errorsでこの警告(複数回)を発生させます。

xmonad.hs:15:14: warning: [-Wdeprecations]
    In the use of ‘defaultConfig’
    (imported from XMonad, but defined in XMonad.Config):
    Deprecated: "Use def (from Data.Default, and re-exported by XMonad and XMonad.Config) instead."

動作します。ただ警告です。しかし、警告の原因が何であるかを知りたいです。 (理解XMonad.Configしようとしましたが、数時間失敗しました)コードを見るDefaultData.DefaultXMonad.Config最初にインポートが表示されます。

import XMonad.Core as XMonad hiding
    (workspaces,manageHook,keys,logHook,startupHook,borderWidth,mouseBindings
    ,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor,focusFollowsMouse
    ,handleEventHook,clickJustFocuses,rootMask,clientMask)
import qualified XMonad.Core as XMonad
    (workspaces,manageHook,keys,logHook,startupHook,borderWidth,mouseBindings
    ,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor,focusFollowsMouse
    ,handleEventHook,clickJustFocuses,rootMask,clientMask)

import XMonad.Layout
import XMonad.Operations
import XMonad.ManageHook
import qualified XMonad.StackSet as W
import Data.Bits ((.|.))
import Data.Default
import Data.Monoid
import qualified Data.Map as M
import System.Exit
import Graphics.X11.Xlib
import Graphics.X11.Xlib.Extras

そしてData.Defaultそれは確かに存在します。その後defaultConfig、(まだXmonad.Config)は次のように定義されます。

instance (a ~ Choose Tall (Choose (Mirror Tall) Full)) => Default (XConfig a) where
  def = XConfig
    { XMonad.borderWidth        = borderWidth
    ... ... ... ... ... ...
    , XMonad.rootMask           = rootMask
    , XMonad.handleExtraArgs = \ xs theConf -> case xs of
                [] -> return theConf
                _ -> fail ("unrecognized flags:" ++ show xs)
    }

-- | The default set of configuration values itself
{-# DEPRECATED defaultConfig "Use def (from Data.Default, and re-exported by XMonad and XMonad.Config) instead." #-}
defaultConfig :: XConfig (Choose Tall (Choose (Mirror Tall) Full))
defaultConfig = def

それで、defaultConfigそれを使うべきで、Data.Defaultおそらく私が間違ったことをしている人でしょう。


試してみるソリューション

xmonad.hs警告を発行する必要がある最小構成()は次のとおりです。

import XMonad

main = xmonad defaultConfig { terminal = "urxvt" }

(私の完全なxmonad設定はかなり大きいです。上記は警告を複製するための最小限の設定です。)

私は試した:

import Data.Default
import XMonad

main = xmonad defaultConfig { terminal = "urxvt" }

しかし、警告は残ります。各設定オプションを使用して列挙できますが、これにより、私の設定オプションのmain = xmonad XConfig {}90%がコピーされます。XMonad.Configxmonad.hs


質問

私は何が間違っていましたか?強制的に使用するにはどうすればよいですかData.Default?最初にサポート停止の警告を正しく理解しましたか?

ベストアンサー1

インポートする必要はありません。import Data.Default

これはXMonad自体から取得されます。

変更は1つだけ必要です。

import XMonad
main = xmonad defaultConfig { terminal = "urxvt" }

到着

import XMonad
main = xmonad def { terminal = "urxvt" }

おすすめ記事