ACTUALIZACIÓN (16 de noviembre de 2015)

ACTUALIZACIÓN (16 de noviembre de 2015)

Después de actualizar a 14.10, gnome-settings-daemon no se puede cargar correctamente /usr/share/gnome-session/sessions/xmonad.session. ¿Hay alguien que tenga el mismo problema?

Respuesta1

Aquí hay una solución más detallada basada en la respuesta de Jianingy. Soluciona algunos problemas que tuve después de actualizar a Ubuntu 14.10. Los problemas que está solucionando incluyen:

  • Las teclas multimedia no funcionan
  • La configuración de pantalla en Gnome-control-center no funciona

Necesitas agregar DesktopName=Unitya /usr/share/gnome-session/sessions/xmonad.session.

[GNOME Session]
Name=Xmonad/GNOME
RequiredComponents=gnome-settings-daemon;gnome-panel;xmonad
DesktopName=Unity

Además, respecto a dbus-sendlos cambios en Ubuntu 14.10, debes usar --print-reply=literalen lugar de --print-reply=string. Lo agregué a mi xmonad.hsy defino main como main = xmonad $ gnomeConfig2.

import XMonad.Config.Desktop
import XMonad.Util.Run (safeSpawn)

import qualified Data.Map as M

import System.Environment (getEnvironment)

data RescreenToggleState = RescreenToggleState Bool deriving Typeable
instance ExtensionClass RescreenToggleState where
  initialValue = RescreenToggleState True

gnomeConfig2 = desktopConfig
    { terminal = "gnome-terminal"
    , keys     = gnomeKeys <+> keys desktopConfig
    , startupHook = gnomeRegister2 >> startupHook desktopConfig }

gnomeKeys (XConfig {modMask = modm}) = M.fromList $
    [ ((modm, xK_p), gnomeRun)
    , ((modm .|. shiftMask, xK_q), spawn "gnome-session-save --kill") ]

-- | Register xmonad with gnome. 'dbus-send' must be in the $PATH with which
-- xmonad is started.
--
-- This action reduces a delay on startup only only if you have configured
-- gnome-session>=2.26: to start xmonad with a command as such:
--
-- > gconftool-2 -s /desktop/gnome/session/required_components/windowmanager xmonad --type string
gnomeRegister2 :: MonadIO m => m ()
gnomeRegister2 = io $ do
    x <- lookup "DESKTOP_AUTOSTART_ID" `fmap` getEnvironment
    whenJust x $ \sessionId -> safeSpawn "dbus-send"
            ["--session"
            ,"--print-reply=literal"
            ,"--dest=org.gnome.SessionManager"
            ,"/org/gnome/SessionManager"
            ,"org.gnome.SessionManager.RegisterClient"
            ,"string:xmonad"
            ,"string:"++sessionId]

Respuesta2

Bien, encontré una solución.

En primer lugar, a partir del 14.10. Muchas configuraciones de aplicaciones de Unity y gnome (esas *.desktop en /usr/share/applications y /etc/xdg/autostart ) comienzan a incluir "OnlyShowIn=Unity". Por lo tanto, tenemos que agregar un nombre de escritorio = unidad a /usr/share/gnome-session/sessions/xmonad.session para permitir que esas aplicaciones se ejecuten.

En segundo lugar, cmd 'dbus-send --print-reply=string' ahora tiene que ser 'dbus-send --print-reply=literal'. por lo tanto, el antiguo xmonad gnomeConfig no puede registrar xmonad como wm. Tenemos que cambiar el comando dbus-send de =cadena a =literal.

Respuesta3

La --print-reply=stringsintaxis provoca un error. El nombre de la aplicación que debe "registrarse" no es xmonad, sino xmonad.desktop. Terminé creando un ~/.xmonad/hooksarchivo con el siguiente comando:

dbus-send --session --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RegisterClient string:xmonad.desktop string:$DESKTOP_AUTO_START_ID

También encontré la solución anterior, la configuración DesktopName=Unityhace que se gnome-control-centeruse correctamente.

Respuesta4

Aquí hay una forma muy sencilla de solucionar el problema "xmonad no se registra" (abordado en otras respuestas usando enlaces de xmonad o escribiendo gnomeRegister2): en el xmonad.desktoparchivo, reemplácelo Exec=xmonadcon Exec=sh -c "xmonad &". Esto da como resultado un inicio muy rápido. Entendí la idea.aquí- pero podría romper otras cosas.

La DesktopName=Unitypieza sigue siendo esencial.

ACTUALIZACIÓN (16 de noviembre de 2015)

Regularmente lucho contra XMonad + Gnome cuando actualizo Ubuntu. Mis archivos de configuración sondisponible en GitHub, en caso de que alguien quiera ver cómo logré recientemente que XMonad y Gnome funcionen bien juntos.

A 16 de noviembre de 2015, los archivos importantes están

Para Ubuntu 15.04 y 15.10, el cambio más importante y más difícil de descubrir fue agregar export XDG_CURRENT_DESKTOP=Unitya mi ~/.xsession:

# Without setting this explicitly, it gets te value "Gnome", which
# makes `unity-settings-daemon` fail to start and we get
# `gnome-settings-daemon` instead. Not sure what this variable does,
# but I got the hint here:
# https://bugzilla.gnome.org/show_bug.cgi?id=729575.
#
# Setting to values other than "Unity" -- e.g. "default", which `env`
# tells me is the value of related variables, or "GNOME-Flashback",
# which is the `DesktopName` I might suspect here -- I get weird
# behavior, e.g. none of the dock items appear in the Gnome panel.
export XDG_CURRENT_DESKTOP=Unity

Además, para recibir notificaciones gráficas, por ejemplo, al presionar las teclas de volumen y ajustar el brillo de la pantalla, necesitaba instalar el notify-osdpaquete.

información relacionada