.png)
Após a atualização para 14.10, o gnome-settings-daemon não pode ser carregado corretamente /usr/share/gnome-session/sessions/xmonad.session. existe alguém com o mesmo problema?
Responder1
Aqui está uma solução mais detalhada baseada na resposta de Jianingy. Ele corrige alguns problemas que tive após atualizar para o Ubuntu 14.10. Os problemas que está corrigindo incluem:
- As teclas multimídia não funcionam
- As configurações de exibição no Gnome-control-center não funcionam
Você precisa DesktopName=Unity
adicionar /usr/share/gnome-session/sessions/xmonad.session
.
[GNOME Session]
Name=Xmonad/GNOME
RequiredComponents=gnome-settings-daemon;gnome-panel;xmonad
DesktopName=Unity
Além disso, em relação dbus-send
às mudanças no Ubuntu 14.10, você deve usar --print-reply=literal
em vez de --print-reply=string
. Eu adicionei isso ao meu xmonad.hs
e 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]
Responder2
OK, encontrei uma solução.
Em primeiro lugar, a partir de 14.10. Muitas configurações de aplicativos unitários e gnome (aqueles *.desktop em /usr/share/applications e /etc/xdg/autostart ) começam a incluir um "OnlyShowIn=Unity". Portanto, temos que adicionar desktopname=unity a /usr/share/gnome-session/sessions/xmonad.session para permitir que esses aplicativos sejam executados.
Segundo, cmd 'dbus-send --print-reply=string' agora deve ser 'dbus-send --print-reply=literal'. portanto, o antigo xmonad gnomeConfig não pode registrar o xmonad como um wm. temos que mudar o comando dbus-send de =string para =literal.
Responder3
- https://gist.github.com/bewest/46b849da04684f0ce401
- http://blog.ezyang.com/2014/12/ubuntu-utopic-upgrade-xmonad/comment-page-1/
A --print-reply=string
sintaxe causa um erro. O nome da aplicação que precisa ser “cadastrada” não é xmonad
, mas xmonad.desktop
. Acabei criando um ~/.xmonad/hooks
arquivo com o seguinte 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
Também encontrei a correção anterior, a configuração DesktopName=Unity
faz com que gnome-control-center
seja usado corretamente.
Responder4
Aqui está uma maneira muito simples de solucionar o problema "xmonad falha ao registrar" (abordado em outras respostas usando ganchos xmonad ou escrevendo gnomeRegister2
): no xmonad.desktop
arquivo, substitua Exec=xmonad
por Exec=sh -c "xmonad &"
. Isso resulta em uma inicialização muito rápida - tive a ideiaaqui- mas pode quebrar outras coisas.
A DesktopName=Unity
parte ainda é essencial.
ATUALIZAÇÃO (16 de novembro de 2015)
Eu luto regularmente contra o XMonad + Gnome quando atualizo o Ubuntu. Meus arquivos de configuração sãodisponível no GitHub, caso alguém queira ver como recentemente consegui que o XMonad e o Gnome funcionassem bem juntos.
A partir de 16 de novembro de 2015, os arquivos importantes são
~/.xsession
:https://github.com/ntc2/conf/blob/master/dot.xsession- Arquivos do gnomo
*.desktop
:https://github.com/ntc2/conf/tree/master/dot.local/share/applications(Eu mantenho minha configuração do XMonad + Gnome em meu diretório inicial, sem precisar editar nenhum*.desktop
arquivo de sistema; veja meuconf script de instalaçãopara onde esses arquivos vão). - Arquivo gnomo
*.session
:https://github.com/ntc2/conf/blob/master/dot.config/gnome-session/sessions/local-xmonad-session.session
Para o Ubuntu 15.04 e 15.10, a mudança mais importante e mais difícil de descobrir foi adicionar export XDG_CURRENT_DESKTOP=Unity
ao meu ~/.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
Além disso, para obter notificações gráficas, por exemplo, pressionamentos de teclas de volume e ajuste de brilho da tela, precisei instalar o notify-osd
pacote.