기본적으로 더 이상 사용되지 않는 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.Configfrom의 정의가 사용되지 않는다고 추측할 수 있지만 실제로는 그렇지 않습니다. 코드 보기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 자체에서 가져옵니다.

변경 사항은 하나만 필요합니다.

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

도착하다

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

관련 정보