awmaker - Acute Window Maker A Window Maker Fork Rodolfo García Peñas (kix) - 2014-2021 This is a small project to break the Window Maker dependency with the screen. WHY? ==== Window Maker is a nice window manager, but is screen dependent. We cannot run Window Maker without a screen, and this is a problem. Probably you think that I am crazy, because Window Maker is a window manager, so it needs a screen. Probably I am crazy, yes, I will try to show the idea. When Window Maker creates an icon, a window, the Dock,... is not only setting some variables, images,... is setting and *painting* them on the screen. All items created in Window Maker are bind to the current screen. Now, if we connect other screen to the computer, Window Maker is unable to unbind them from the screen and paint the items to the new screen. Window Maker needs to be restarted to start again with the new screen. All items in Window Maker are created and mapped to the current screen. You cannot see the items because they are hidden, and Window Maker only show and hide them. AND? ==== awmaker includes different steps. When an item is created, is not mapped in the screen. Is only created. When the user needs the item, then is mapped to the current screen. When the user finish with the item, the item is unmapped (not destroyed, only unmapped). For example. With Window Maker, menus are created (yes, the menu, buttons, framewin, background,...) when Window Maker starts. When the user needs a menu, Window Maker paint the menu on the screen. With awmaker, the menu is created when Window Maker starts (awmaker is a fork of Window Maker ;-)) the items are created but they don't know nothing about the user screen. When the user needs the menu, then awmaker set the screen options and paint the menu. When the user finish, awmaker destroy all the screen related stuff. If we attach a new screen, awmaker can paint the menu again in the new screen, because the screen related stuff is created on live. WINDOW MAKER AND awmaker ======================== awmaker is not Window Maker, is a fork. awmaker code comes from Window Maker and many functions are the same. Low level functions, like X11 code, file management,... are/will be the same, but in the future many code will be different. Patches for Window Maker probably could be included in awmaker without changes, but other patches could need some tweaks. Don't work twice, if your patch is common for Window Maker and awmaker, sent it to Window Maker, we will include it in awmaker. On the other hand, some bugs or problems could be solved in awmaker. Feel free to include them in Window Maker. awmaker is a different project created to include abstraction. Probably in the future this ideas could be integrated in Window Maker. Window Maker is a mature window manager and include this new ideas could break their stability, for this reason, hold different projects is good for Window Maker. Window Maker and awmaker share some things, like the libraries (WINGs, WUtil and wraster) and the WPrefs application. awmaker should not include in the future this libraries in their code, and use the libraries included in the Window Maker development tree. WPrefs shouldn't be a problem, because the look&feel should be the same between Window Maker and awmaker. Please, read the README.WMAKER file for more info about Window Maker. SOME THINGS =========== 1. awmaker is unstable. Don't use awmaker in production environments. 2. awmaker is under development. Is not a final product. Probably only a 50% of awmaker is done. Is a long way. We are playing. NEXT STEPS ========== The next steps are: 1. There are six main blocks (windows, icons, framewin, workspaces, main icons [Dock, Clip, Drawer] and menus). Include create, map and unmap functions for all of them. There are functions created for wcore, framewin and menus, this code could be improved, but is a way to understand the main idea for other blocks. 2. Break the icon screen dependency. When the icon is created, is created for the current screen. Probably the better way is read the file name and create the icon in the "_map" function. 3. Change the start up steps. The start up should create the workspaces and include the Clip, Dock, Drawers in the workspaces. Then load the screen and map the workspace in the screen/s. 4. Include shutdown steps. The shutdown step should unmap all the items (workspaces,...) without destroy the items. 5. Join steps 3 and 4. We can change the screen without restart awmaker. CAN I PLAY? =========== Yes! You are very welcome to help in the project. Fork it. We are in https://github.com/awmaker/awmaker