Как я могу изменить окно xmonad reparents from? - PullRequest
1 голос
/ 15 февраля 2012

У меня есть небольшое приложение, перечисленное ниже, которое просто создает окно x и небольшое окно внутри него. Позже я планирую создать экспериментальную среду IDE, в которой все панели инструментов и меню будут субокнами, и можно будет выбрать любой оконный менеджер, которым они захотят управлять.

Я хотел бы запустить экземпляр xmonad и сделать так, чтобы он не переопределял и управлял окнами из корневого окна, а переопределял и управлял окнами внутри окна моего приложения.

Возможно ли это?

P.S. Вот приложение.

module Main where
import Graphics.X11.Xlib

y f = w where w = f w

main = do
 display <- openDisplay ""

 let screen = defaultScreen display

 root <- rootWindow display screen
 mainWindow <- createSimpleWindow
 display 
 root 
 0 0 100 100
 1
 (blackPixel display screen)
 (whitePixel display screen)
 setTextProperty display mainWindow "Subwindows" wM_NAME

 subWindow <- createSimpleWindow
  display 
  mainWindow
  0 0 100 100
  1
  (whitePixel display screen)
  (blackPixel display screen)
  mapWindow display subWindow

  mapWindow display mainWindow

  y $ \loop -> allocaXEvent $ \eventPointer -> do
   nextEvent display eventPointer
   event <- get_EventType eventPointer
   case () of
   _ | event == expose -> loop
     | otherwise -> return ()

1 Ответ

1 голос
/ 17 февраля 2012

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

Вы можете запустить весь свой собственный X-сервер и сделать вид, что ваше окно является корневым окном - как Xephyr или Xnest.,Это, безусловно, намного сложнее, чем добавление функции xmonad для использования некорневого окна, но у него есть преимущество в том, что он будет работать с любым оконным менеджером.

Другой подход может состоять в том, чтобы просто извлечь код из xmonad и вставитьэто в ваше приложение ...

...