Giter Site home page Giter Site logo

tolmeros / awmaker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from awmaker/awmaker

0.0 1.0 0.0 21.51 MB

Abstracting Window Maker

License: GNU General Public License v2.0

C 88.42% Python 0.03% Shell 2.93% Emacs Lisp 0.33% Ruby 0.15% Slash 0.18% C++ 0.12% Perl 3.20% HTML 0.05% Makefile 0.94% JavaScript 0.10% M4 2.77% Objective-C 0.69% Fancy 0.04% NewLisp 0.04%

awmaker's Introduction

                        awmaker - Abstracting Window Maker
                             A Window Maker Fork
                        Rodolfo García Peñas (kix) - 2014

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 20% 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

awmaker's People

Contributors

a3a3el avatar abierfert avatar amade avatar anomiex avatar crmafra avatar d-torrance avatar dev97 avatar dmaciejak avatar donamo avatar gryf avatar h-g-s avatar hellupline avatar jaqque avatar kekepower avatar klaasvakie avatar krytarowski avatar martelletto avatar martin-frydl avatar mbert avatar melak avatar nadvornik avatar padgettr avatar pierlala avatar raorn avatar rbgarga avatar snmishra avatar thekix avatar timaios avatar zbalaton avatar zprd avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.