2011-12-30 1 views
6

Используя XMonad.Layout.PerWorkspace, вы можете настроить независимые макеты для каждой рабочей области и настроить их для своих приложений. Однако я бы хотел, чтобы некоторые рабочие области отслеживали мои настройки. Например. если я нажму Mod-h на Workspace 2, используя макет Tall, я хочу, чтобы в Tall layout на рабочей области 2 была небольшая мастер-панель при следующем запуске (или перезапустите X, если на то пошло).Вспомните макет рабочего места xmonad?

Это часто требуемая функция, но я не могу найти решение в любом месте.

В идеале, это мы сохранили бы на некоторых ~/.xmonad/persistentLayouts/workspace*/layout*.conf файлах, которые вы могли бы удалить или отредактировать вручную, если потребуется. Но это будет просто бонус.

Я мог бы жить с реализацией этого сам, если его не существует, но файл file-I/O haskell немного ласковый, поэтому, возможно, кто-то может предоставить некоторые указатели.

+0

Вы когда-нибудь собирались строить что-то подобное? – egasimus

+0

@egasimus: Извините, до сих пор так и не добрался. Если я когда-нибудь обойдусь, я отправлю его здесь. – bitmask

ответ

6

xmonad уже сохраняет свое состояние через исполняемые перезагрузки (например, mod + q и т.п.), так почему бы не украсть этот механизм? Я думаю, что он просто использует чтение и показ, поэтому вам не нужны особо сильные навыки ввода-вывода; readFile и writeFile должно быть достаточно. Вы можете украсть какой-то код из xmonad. Код сериализации - от restart, а код десериализации - от xmonad. Вам нужно будет немного изменить его - вы не хотите сохранять информацию о идентификаторе окна, так как это будет признано недействительным для нового сеанса X, но большая часть его, вероятно, может быть взята оптовой.