我有一个下面列出的小应用程序,它只是在其中创建了一个 x 窗口和一个小窗口。我稍后计划制作一个实验性 IDE,其中所有的工具栏和菜单都是子窗口,并且可以选择想要管理它们的任何窗口管理器。
我想做的是启动一个 xmonad 实例,并使它不是从根窗口重新设置和控制窗口,而是在我的应用程序窗口内重新设置和控制窗口。
这可能吗?
PS这是应用程序。
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 ()