.png)
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=Unity
a /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-send
los cambios en Ubuntu 14.10, debes usar --print-reply=literal
en lugar de --print-reply=string
. Lo agregué a mi xmonad.hs
y 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
- https://gist.github.com/bewest/46b849da04684f0ce401
- http://blog.ezyang.com/2014/12/ubuntu-utopic-upgrade-xmonad/comment-page-1/
La --print-reply=string
sintaxis provoca un error. El nombre de la aplicación que debe "registrarse" no es xmonad
, sino xmonad.desktop
. Terminé creando un ~/.xmonad/hooks
archivo 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=Unity
hace que se gnome-control-center
use 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.desktop
archivo, reemplácelo Exec=xmonad
con 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=Unity
pieza 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
~/.xsession
:https://github.com/ntc2/conf/blob/master/dot.xsession- Archivos de gnomo
*.desktop
:https://github.com/ntc2/conf/tree/master/dot.local/share/applications(Mantengo mi configuración de XMonad + Gnome en mi directorio de inicio, sin tener que editar ningún*.desktop
archivo del sistema; consulte miscript de instalación de configuracióndónde van estos archivos). - Archivo gnomo
*.session
:https://github.com/ntc2/conf/blob/master/dot.config/gnome-session/sessions/local-xmonad-session.session
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=Unity
a 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-osd
paquete.