Gnome Xmonad, поврежденный, после того, как обновлено до 14,10

После того, как обновлено до 14,10, гном-демон настроек не может быть загружен правильно/usr/share/gnome-session/sessions/xmonad.session. есть ли, у кого-либо есть та же проблема?

3
задан 25 October 2014 в 12:25

5 ответов

Вот более подробное решение на основе ответа Jianingy. Это фиксирует несколько проблем, которые я имел после обновления до Ubuntu 14.10. Проблемы, которые это устраняет, включают:

  • Мультимедийные ключи, не работающие
  • настройки Display в центре управления Gnome, не работающем

, необходимо добавить DesktopName=Unity к /usr/share/gnome-session/sessions/xmonad.session.

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

кроме того, относительно dbus-send изменения в Ubuntu 14.10, необходимо использовать --print-reply=literal вместо --print-reply=string. Я добавил, что к моему xmonad.hs и определяю основной как 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]
5
ответ дан 17 November 2019 в 19:32

Хорошо, я нашел решение.

, В первую очередь, Запускающийся от 14,10. Многие единица и конфигурации приложения гнома (те *.desktop в/usr/share/applications и/etc/xdg/autostart) начинают включать "OnlyShowIn=Unity". Поэтому мы должны добавить desktopname=unity к/usr/share/gnome-session/sessions/xmonad.session для разрешения тем запущенным приложениям.

112-секундный, cmd 'dbus-отправляют - print-reply=string', теперь должны быть, 'dbus-отправляют - print-reply=literal'. поэтому, старый xmonad gnomeConfig не может зарегистрировать xmonad как wm., мы должны изменить dbus-отправить команду от =string до =literal.

1
ответ дан 17 November 2019 в 19:32

Я упомянул его кратко в сути, но я нашел в документах XMonad, что рычаг запуска выполняется автоматически данный, эта конфигурация:

, startupHook = execScriptHook "startup"

Это заставляет сценарий оболочки быть выполненным автоматически, который я нашел легче, чем monkeypatching рычаг haskell.

http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-Script.html

<час>

XMonad. Рычаги. Сценарий

Интерфейс Рычага сценария

Обеспечивает простой интерфейс для выполнения ~/.xmonad/hooks сценарий с названием рычага.

Использование Резюме

Этот модуль позволяет Вам выполнять расположенный в центре сценарий с текстовым названием рычага. Сценарий, как предполагается, расположен в ~/.xmonad/hooks.

, Например, если Вы хотели выполнить запуск рычага в своем сценарии каждый раз, когда Ваш рычаг запуска работал, Вы могли изменить свою конфигурацию xmonad как таковую:

main = xmonad $ defaultConfig { ... startupHook = execScriptHook "startup" ... } Теперь, каждый раз выполнения рычага запуска, команда ~/.xmonad/hooks startup будет также.

<час>
0
ответ дан 17 November 2019 в 19:32

--print-reply=string синтаксис вызывает ошибку. Название приложения, которое должно быть "зарегистрировано", не xmonad, но xmonad.desktop. Я волновал создание ~/.xmonad/hooks файл со следующей командой в нем:

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

я также нашел предыдущую фиксацию, установка DesktopName=Unity заставляет gnome-control-center использоваться правильно.

1
ответ дан 17 November 2019 в 19:32

Вот очень простой путь к обходному решению "xmonad, не удается зарегистрировать" проблему (обращенный в других ответах при помощи рычагов xmonad или записи gnomeRegister2): в xmonad.desktop файл, замените Exec=xmonad Exec=sh -c "xmonad &". Это приводит к очень быстрому запуску - я получил идею здесь - но она могла бы повредить другие вещи.

DesktopName=Unity часть все еще важна.

ОБНОВЛЕНИЕ (16 ноября 2015)

я регулярно борюсь с XMonad + Gnome, когда я обновляю Ubuntu. Мои файлы конфигурации доступны на GitHub, в случае, если любой хотел бы видеть, как я последний раз заставил XMonad и Gnome играть по правилам вместе.

С 16 ноября 2015, важные файлы

Для Ubuntu 15.04 и 15.10, самое важное, и самый твердый обнаружить изменение должно было добавить export XDG_CURRENT_DESKTOP=Unity к моему ~/.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

кроме того, для надевания графических уведомлений, например, нажатий кнопки громкости и корректировки яркости экрана я должен был установить notify-osd пакет.

0
ответ дан 17 November 2019 в 19:32

Другие вопросы по тегам:

Похожие вопросы: