From 202a8006e2b551ca909c7aa1b67720d699771df3 Mon Sep 17 00:00:00 2001 From: Jan Niklas Hasse Date: Wed, 13 Dec 2017 11:30:15 +0100 Subject: Use Markdown for formatting the README --- README | 441 ------------------------------------------------------------ README.md | 452 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 452 insertions(+), 441 deletions(-) delete mode 100644 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index a5a7b6c5..00000000 --- a/README +++ /dev/null @@ -1,441 +0,0 @@ -MATE Marco is a fork of GNOME Metacity. - -COMPILING MARCO -=== - -You need GTK+ 3.14. For startup notification to work you need -libstartup-notification at -http://www.freedesktop.org/software/startup-notification/. - -REPORTING BUGS AND SUBMITTING PATCHES -=== - -Report new bugs on https://github.com/mate-desktop/marco. -Please check for duplicates, *especially* if you are reporting a feature -request. - -Please do *not* add "me too!" or "yes I really want this!" comments to -feature requests in bugzilla. Please read -http://pobox.com/~hp/features.html prior to adding any kind of flame -about missing features or misfeatures. - -Feel free to send patches too; Marco is relatively small and -simple, so if you find a bug or want to add a feature it should be -pretty easy. Send me mail, or put the patch in bugzilla. - -See the HACKING file for some notes on hacking Marco. - -SHRINKING MARCO -=== - -Not that marco is huge, but a substantial amount of code is in -preferences handling, in static strings that aren't essential, and in -the theme engine. - -You can strip about 70K from the marco binary by compiling with -options such as: - - --disable-sm - --disable-verbose-mode - --disable-startup-notification - -However the result is no good for desktop use, all prefs have to be -hardcoded in the binary, for example. If you wanted to make a really -small marco, here's some additional stuff you might consider -implementing: - - - add --disable-themes, which would replace theme.c and theme-parser.c - with a hardcoded implementation of the interface in theme.h, - should save about 80K. This should be fairly easy. - - - add --disable-gtk, which would implement the interface in ui.h - without using GTK. This one is easier than you think because the - main part of the window manager doesn't use GTK directly, but is - still fairly hard to do. You would probably have to give up some - of the features, such as window menus, as menus are pretty complex - to implement well. So time may be better spent adding a GTK - configure script feature to build GTK with only a small core set of - functionality. - -MARCO FEATURES -=== - - - Boring window manager for the adult in you. Many window managers - are like Marshmallow Froot Loops; Marco is like Cheerios. - - - Uses GTK+ 3.0 for drawing window frames. This means colors, fonts, - etc. come from GTK+ theme. - - - Does not expose the concept of "window manager" to the user. Some - of the features in the MATE control panel and other parts of the - desktop happen to be implemented in marco, such as changing your - window border theme, or changing your window navigation shortcuts, - but the user doesn't need to know this. - - - Includes only the window manager; does not try to be a desktop - environment. The pager, configuration, etc. are all separate and - modular. The "libwnck" library (which I also wrote) is available - for writing marco extensions, pagers, and so on. (But libwnck - isn't marco specific, or MATE-dependent; it requires only GTK, - and should work with KWin, fvwm2, and other EWMH-compliant WMs.) - - - Has a simple theme system and a couple of extra themes come with it. - Change themes via gsettings: - gsettings set org.mate.Marco.general theme Crux - gsettings set org.mate.Marco.general theme Gorilla - gsettings set org.mate.Marco.general theme Atlanta - gsettings set org.mate.Marco.general theme Bright - - See theme-format.txt for docs on the theme format. Use - marco-theme-viewer to preview themes. - - - Change number of workspaces via gsettings: - gsettings set org.mate.Marco.general num-workspaces 5 - - Can also change workspaces from MATE 2 pager. - - - Change focus mode: - gsettings set org.mate.Marco.general focus-mode mouse - gsettings set org.mate.Marco.general focus-mode sloppy - gsettings set org.mate.Marco.general focus-mode click - - - Global keybinding defaults include: - - Alt-Tab forward cycle window focus - Alt-Shift-Tab backward cycle focus - Alt-Ctrl-Tab forward cycle focus among panels - Alt-Ctrl-Shift-Tab backward cycle focus among panels - Alt-Escape cycle window focus without a popup thingy - Ctrl-Alt-Left Arrow previous workspace - Ctrl-Alt-Right Arrow next workspace - Ctrl-Alt-D minimize/unminimize all, to show desktop - - Change keybindings for example: - - gsettings set org.mate.Marco.global-keybindings switch-to-workspace-1 'F1' - - Also try the MATE keyboard shortcuts control panel. - - See marco.schemas for all available bindings. - - - Window keybindings: - - Alt-space window menu - - Mnemonics work in the menu. That is, Alt-space then underlined - letter in the menu item works. - - Choose Move from menu, and arrow keys to move the window. - - While moving, hold down Control to move slower, and - Shift to snap to edges. - - Choose Resize from menu, and nothing happens yet, but - eventually I might implement something. - - Keybindings for things like maximize window, vertical maximize, - etc. can be bound, but may not all exist by default. See - marco.schemas. - - - Window mouse bindings: - - Clicking anywhere on frame with button 1 will raise/focus window - - If you click a window control, such as the close button, then the - control will activate on button release if you are still over it - on release (as with most GUI toolkits) - - If you click and drag borders with button 1 it resizes the window - - If you click and drag the titlebar with button 1 it moves the - window. - - If you click anywhere on the frame with button 2 it lowers the - window. - - If you click anywhere on the frame with button 3 it shows the - window menu. - - If you hold down Super (windows key) and click inside a window, it - will move the window (buttons 1 and 2) or show menu (button 3). - Or you can configure a different modifier for this. - - If you pick up a window with button 1 and then switch workspaces - the window will come with you to the new workspace, this is - a feature copied from Enlightenment. - - If you hold down Shift while moving a window, the window snaps - to edges of other windows and the screen. - - - Session management: - - Marco connects to the session manager and will set itself up to - be respawned. It theoretically restores sizes/positions/workspace - for session-aware applications. - - - Marco implements much of the EWMH window manager specification - from freedesktop.org, as well as the older ICCCM. Please refer to - the COMPLIANCE file for information on marco compliance with - these standards. - - - Uses Pango to render text, so has cool i18n capabilities. - Supports UTF-8 window titles and such. - - - There are simple animations for actions such as minimization, - to help users see what is happening. Should probably - have a few more of these and make them nicer. - - - if you have the proper X setup, set the GDK_USE_XFT=1 - environment variable to get antialiased window titles. - - - considers the panel when placing windows and maximizing - them. - - - handles the window manager selection from the ICCCM. Will exit if - another WM claims it, and can claim it from another WM if you pass - the --replace argument. So if you're running another - ICCCM-compliant WM, you can run "marco --replace" to replace it - with Marco. - - - does basic colormap handling - - - and much more! well, maybe not a lot more. - -HOW TO ADD EXTERNAL FEATURES -=== - -You can write a marco "plugin" such as a pager, window list, icon -box, task menu, or even things like "window matching" using the -Extended Window Manager Hints. See http://www.freedesktop.org for the -EWMH specification. An easy-to-use library called "libwnck" is -available that uses the EWMH and is specifically designed for writing -WM accessories. - -You might be interested in existing accessories such as "Devil's Pie" -by Ross Burton, which add features to Marco (or other -EWMH-compliant WMs). - -MARCO BUGS, NON-FEATURES, AND CAVEATS -=== - -See github: https://github.com/mate-desktop/marco/issues - -FAQ -=== - -Q: Will you add my feature? - -A: If it makes sense to turn on unconditionally, or is genuinely a - harmless preference that I would not be embarrassed to put in a - simple, uncluttered, user-friendly configuration dialog. - - If the only rationale for your feature is that other window - managers have it, or that you are personally used to it, or - something like that, then I will not be impressed. Marco is - firmly in the "choose good defaults" camp rather than the "offer 6 - equally broken ways to do it, and let the user pick one" camp. - - This is part of a "no crackrock" policy, despite some exceptions - I'm mildly embarrassed about. For example, multiple workspaces - probably constitute crackrock, they confuse most users and really - are not that useful if you have a decent tasklist and so on. But I - am too used to them to turn them off. Or alternatively - iconification/tasklist is crack, and workspaces/pager are good. But - having both is certainly a bit wrong. Sloppy focus is probably - crackrock too. - - But don't think unlimited crack is OK just because I slipped up a - little. No slippery slope here. - - Don't let this discourage patches and fixes - I love those. ;-) - Just be prepared to hear the above objections if your patch adds - some crack-ridden configuration option. - - http://pobox.com/~hp/free-software-ui.html - http://pobox.com/~hp/features.html - -Q: Why does Marco remember the workspace/position of some apps - but not others across logout/login? - -A: Marco only stores sizes/positions for apps that are session - managed. As far as I can determine, there is no way to attempt to - remember workspace/position for non-session-aware apps without - causing a lot of weird effects. - - The reason is that you don't know which non-SM-aware apps were - launched by the session. When you initially log in, Marco sees a - bunch of new windows appear. But it can't distinguish between - windows that were stored in your session, or windows you just - launched after logging in. If Marco tried to guess that a window - was from the session, it could e.g. end up maximizing a dialog, or - put a window you just launched on another desktop or in a weird - place. And in fact I see a lot of bugs like this in window managers - that try to handle non-session-aware apps. - - However, for session-aware apps, Marco can tell that the - application instance is from the session and thus restore it - reliably, assuming the app properly restores the windows it had - open on session save. - - So the correct way to fix the situation is to make apps - session-aware. libSM has come with X for years, it's very - standardized, it's shared by GNOME and KDE - even twm is - session-aware. So anyone who won't take a patch to add SM is more - archaic than twm - and you should flame them. ;-) - - Docs on session management: - http://www.fifi.org/doc/xspecs/xsmp.txt.gz - http://www.fifi.org/doc/xspecs/SMlib.txt.gz - - See also the ICCCM section on SM. For MATE apps, use the - MateClient object. For a simple example of using libSM directly, - twm/session.c in the twm source code is pretty easy to understand. - -Q: How about adding viewports in addition to workspaces? - -A: I could conceivably be convinced to use viewports _instead_ of - workspaces, though currently I'm not thinking that. But I don't - think it makes any sense to have both; it's just confusing. They - are functionally equivalent. - - You may think this means that you won't have certain keybindings, - or something like that. This is a misconception. The only - _fundamental_ difference between viewports and workspaces is that - with viewports, windows can "overlap" and appear partially on - one and partially on another. All other differences that - traditionally exist in other window managers are accidental - - the features commonly associated with viewports can be implemented - for workspaces, and vice versa. - - So I don't want to have two kinds of - workspace/desktop/viewport/whatever, but I'm willing to add - features traditionally associated with either kind if those - features make sense. - -Q: Why is the panel always on top? - -A: Because it's a better user interface, and until we made this not - configurable a bunch of apps were not getting fixed (the app - authors were just saying "put your panel on the bottom" instead of - properly supporting fullscreen mode, and such). - - rationales.txt has the bugzilla URL for some flamefesting on this, - if you want to go back and relive the glory. - Read these and the bugzilla stuff before asking/commenting: - http://pobox.com/~hp/free-software-ui.html - http://pobox.com/~hp/features.html - -Q: Why is there no edge flipping? - -A: This one is also in rationales.txt. Because "ouija board" UI, where - you just move the mouse around and the computer guesses what you - mean, has a lot of issues. This includes mouse focus, shade-hover - mode, edge flipping, autoraise, etc. Marco has mouse focus and - autoraise as a compromise, but these features are all confusing for - many users, and cause problems with accessibility, fitt's law, and - so on. - - Read these and the bugzilla stuff before asking/commenting: - http://pobox.com/~hp/free-software-ui.html - http://pobox.com/~hp/features.html - -Q: Why does wireframe move/resize suck? - -A: You can turn it on with the reduced_resources setting. - - But: it has low usability, and is a pain - to implement, and there's no reason opaque move/resize should be a - problem on any setup that can run a modern desktop worth a darn to - begin with. - - Read these and the bugzilla stuff before asking/commenting: - http://pobox.com/~hp/free-software-ui.html - http://pobox.com/~hp/features.html - - The reason we had to add wireframe anyway was broken - proprietary apps that can't handle lots of resize events. - -Q: Why no XYZ? - -A: You are probably getting the idea by now - check rationales.txt, - query/search bugzilla, and read http://pobox.com/~hp/features.html - and http://pobox.com/~hp/free-software-ui.html - - Then sit down and answer the question for yourself. Is the feature - good? What's the rationale for it? Answer "why" not just "why not." - Justify in terms of users as a whole, not just users like - yourself. How else can you solve the same problem? etc. If that - leads you to a strong opinion, then please, post the rationale for - discussion to an appropriate bugzilla bug, or to - usability@gnome.org. - - Please don't just "me too!" on bugzilla bugs, please don't think - flames will get you anywhere, and please don't repeat rationale - that's already been offered. - -Q: Your dumb web pages you made me read talk about solving problems in - fundamental ways instead of adding preferences or workarounds. - What are some examples where marco has done this? - -A: There are quite a few, though many opportunities remain. Sometimes - the real fix involves application changes. The marco approach is - that it's OK to require apps to change, though there are also - plenty of workarounds in marco for battles considered too hard - to fight. - - Here are some examples: - - - fullscreen mode was introduced to allow position constraints, - panel-on-top, and other such things to apply to normal windows - while still allowing video players etc. to "just work" - - - "whether to include minimized windows in Alt+Tab" was solved - by putting minimized windows at the *end* of the tab order. - - - Whether to pop up a feedback display during Alt+Tab was solved by - having both Alt+Tab and Alt+Esc - - - Whether to have a "kill" feature was solved by automatically - detecting and offering to kill stuck apps. Better, marco - actually does "kill -9" on the process, it doesn't just - disconnect the process from the X server. You'll appreciate this - if you ever did a "kill" on Netscape 4, and watched it keep - eating 100% CPU even though the X server had booted it. - - - The workspaces vs. viewports mess was avoided by adding - directional navigation and such to workspaces, see discussion - earlier in this file. - - - Instead of configurable placement algorithms, there's just one - that works fairly well most of the time. - - - To avoid excess CPU use during opaque move/resize, we rate limit - the updates to the application window's size. - - - Instead of configurable "show size of window while resizing," - it's only shown for windows where it matters, such as terminals. - (Only use-case given for all windows is for web designers - choosing their web browser size, but there are web sites and - desktop backgrounds that do this for you.) - - - Using startup notification, applications open on the workspace - where you launched them, not the active workspace when their - window is opened. - - - and much more. - -Q: I think marco sucks. - -A: Feel free to use any WM you like. The reason marco follows the - ICCCM and EWMH specifications is that it makes marco a modular, - interchangeable part in the desktop. libwnck-based apps such as the - MATE window list will work just fine with any EWMH-compliant WM. - -Q: Did you spend a lot of time on this? - -A: Originally the answer was no. Sadly the answer is now yes. - -Q: How can you claim that you are anti-crack, while still - writing a window manager? - -A: I have no comment on that. diff --git a/README.md b/README.md new file mode 100644 index 00000000..cc3d2d79 --- /dev/null +++ b/README.md @@ -0,0 +1,452 @@ +MATE Marco is a fork of GNOME Metacity. + +COMPILING MARCO +=== + +You need GTK+ 3.14. For startup notification to work you need +libstartup-notification at +http://www.freedesktop.org/software/startup-notification/. + +REPORTING BUGS AND SUBMITTING PATCHES +=== + +Report new bugs on https://github.com/mate-desktop/marco. +Please check for duplicates, *especially* if you are reporting a feature +request. + +Please do *not* add "me too!" or "yes I really want this!" comments to +feature requests on GitHub. Please read +http://pobox.com/~hp/features.html prior to adding any kind of flame +about missing features or misfeatures. + +Feel free to send patches too; Marco is relatively small and +simple, so if you find a bug or want to add a feature it should be +pretty easy. Send me mail, or put the patch in bugzilla. + +See the HACKING file for some notes on hacking Marco. + +SHRINKING MARCO +=== + +Not that marco is huge, but a substantial amount of code is in +preferences handling, in static strings that aren't essential, and in +the theme engine. + +You can strip about 70K from the marco binary by compiling with +options such as: + + ``` + --disable-sm + --disable-verbose-mode + --disable-startup-notification + ``` + +However the result is no good for desktop use, all prefs have to be +hardcoded in the binary, for example. If you wanted to make a really +small marco, here's some additional stuff you might consider +implementing: + + - add `--disable-themes`, which would replace theme.c and theme-parser.c + with a hardcoded implementation of the interface in theme.h, + should save about 80K. This should be fairly easy. + + - add `--disable-gtk`, which would implement the interface in ui.h + without using GTK. This one is easier than you think because the + main part of the window manager doesn't use GTK directly, but is + still fairly hard to do. You would probably have to give up some + of the features, such as window menus, as menus are pretty complex + to implement well. So time may be better spent adding a GTK + configure script feature to build GTK with only a small core set of + functionality. + +MARCO FEATURES +=== + + - Boring window manager for the adult in you. Many window managers + are like Marshmallow Froot Loops; Marco is like Cheerios. + + - Uses GTK+ 3.0 for drawing window frames. This means colors, fonts, + etc. come from GTK+ theme. + + - Does not expose the concept of "window manager" to the user. Some + of the features in the MATE control panel and other parts of the + desktop happen to be implemented in marco, such as changing your + window border theme, or changing your window navigation shortcuts, + but the user doesn't need to know this. + + - Includes only the window manager; does not try to be a desktop + environment. The pager, configuration, etc. are all separate and + modular. The "libwnck" library (which I also wrote) is available + for writing marco extensions, pagers, and so on. (But libwnck + isn't marco specific, or MATE-dependent; it requires only GTK, + and should work with KWin, fvwm2, and other EWMH-compliant WMs.) + + - Has a simple theme system and a couple of extra themes come with it. + Change themes via gsettings: + ``` + gsettings set org.mate.Marco.general theme Menta + gsettings set org.mate.Marco.general theme BlackMATE + gsettings set org.mate.Marco.general theme TraditionalOk + ``` + + See theme-format.txt for docs on the theme format. Use + marco-theme-viewer to preview themes. + + - Change number of workspaces via gsettings: + ``` + gsettings set org.mate.Marco.general num-workspaces 5 + ``` + + Can also change workspaces from MATE 2 pager. + + - Change focus mode: + ``` + gsettings set org.mate.Marco.general focus-mode mouse + gsettings set org.mate.Marco.general focus-mode sloppy + gsettings set org.mate.Marco.general focus-mode click + ``` + + - Global keybinding defaults include: + + | | | + |------------------------------------------------------|-----------------------------------------| + | Alt-Tab |forward cycle window focus | + | Alt-Shift-Tab |backward cycle focus | + | Alt-Ctrl-Tab |forward cycle focus among panels | + | Alt-Ctrl-Shift-Tab|backward cycle focus among panels| + | Alt-Escape |cycle window focus without a popup thingy| + | Ctrl-Alt-Left Arrow |previous workspace | + | Ctrl-Alt-Right Arrow|next workspace | + | Ctrl-Alt-D |minimize/unminimize all, to show desktop | + + Change keybindings for example: + + ``` + gsettings set org.mate.Marco.global-keybindings switch-to-workspace-1 'F1' + ``` + + Also try the MATE keyboard shortcuts control panel. + + See marco.schemas for all available bindings. + + - Window keybindings: + + Alt-space window menu + + Mnemonics work in the menu. That is, Alt-space then underlined + letter in the menu item works. + + Choose Move from menu, and arrow keys to move the window. + + While moving, hold down Control to move slower, and + Shift to snap to edges. + + Choose Resize from menu, and nothing happens yet, but + eventually I might implement something. + + Keybindings for things like maximize window, vertical maximize, + etc. can be bound, but may not all exist by default. See + marco.schemas. + + - Window mouse bindings: + + Clicking anywhere on frame with button 1 will raise/focus window + + If you click a window control, such as the close button, then the + control will activate on button release if you are still over it + on release (as with most GUI toolkits) + + If you click and drag borders with button 1 it resizes the window + + If you click and drag the titlebar with button 1 it moves the + window. + + If you click anywhere on the frame with button 2 it lowers the + window. + + If you click anywhere on the frame with button 3 it shows the + window menu. + + If you hold down Super (windows key) and click inside a window, it + will move the window (buttons 1 and 2) or show menu (button 3). + Or you can configure a different modifier for this. + + If you pick up a window with button 1 and then switch workspaces + the window will come with you to the new workspace, this is + a feature copied from Enlightenment. + + If you hold down Shift while moving a window, the window snaps + to edges of other windows and the screen. + + - Session management: + + Marco connects to the session manager and will set itself up to + be respawned. It theoretically restores sizes/positions/workspace + for session-aware applications. + + - Marco implements much of the EWMH window manager specification + from freedesktop.org, as well as the older ICCCM. Please refer to + the COMPLIANCE file for information on marco compliance with + these standards. + + - Uses Pango to render text, so has cool i18n capabilities. + Supports UTF-8 window titles and such. + + - There are simple animations for actions such as minimization, + to help users see what is happening. Should probably + have a few more of these and make them nicer. + + - if you have the proper X setup, set the GDK_USE_XFT=1 + environment variable to get antialiased window titles. + + - considers the panel when placing windows and maximizing + them. + + - handles the window manager selection from the ICCCM. Will exit if + another WM claims it, and can claim it from another WM if you pass + the --replace argument. So if you're running another + ICCCM-compliant WM, you can run "marco --replace" to replace it + with Marco. + + - does basic colormap handling + + - and much more! well, maybe not a lot more. + +HOW TO ADD EXTERNAL FEATURES +=== + +You can write a marco "plugin" such as a pager, window list, icon +box, task menu, or even things like "window matching" using the +Extended Window Manager Hints. See http://www.freedesktop.org for the +EWMH specification. An easy-to-use library called "libwnck" is +available that uses the EWMH and is specifically designed for writing +WM accessories. + +You might be interested in existing accessories such as "Devil's Pie" +by Ross Burton, which add features to Marco (or other +EWMH-compliant WMs). + +MARCO BUGS, NON-FEATURES, AND CAVEATS +=== + +See github: https://github.com/mate-desktop/marco/issues + +FAQ +=== + +Q: Will you add my feature? + +A: If it makes sense to turn on unconditionally, or is genuinely a + harmless preference that I would not be embarrassed to put in a + simple, uncluttered, user-friendly configuration dialog. + + If the only rationale for your feature is that other window + managers have it, or that you are personally used to it, or + something like that, then I will not be impressed. Marco is + firmly in the "choose good defaults" camp rather than the "offer 6 + equally broken ways to do it, and let the user pick one" camp. + + This is part of a "no crackrock" policy, despite some exceptions + I'm mildly embarrassed about. For example, multiple workspaces + probably constitute crackrock, they confuse most users and really + are not that useful if you have a decent tasklist and so on. But I + am too used to them to turn them off. Or alternatively + iconification/tasklist is crack, and workspaces/pager are good. But + having both is certainly a bit wrong. Sloppy focus is probably + crackrock too. + + But don't think unlimited crack is OK just because I slipped up a + little. No slippery slope here. + + Don't let this discourage patches and fixes - I love those. ;-) + Just be prepared to hear the above objections if your patch adds + some crack-ridden configuration option. + + http://pobox.com/~hp/free-software-ui.html + http://pobox.com/~hp/features.html + +Q: Why does Marco remember the workspace/position of some apps + but not others across logout/login? + +A: Marco only stores sizes/positions for apps that are session + managed. As far as I can determine, there is no way to attempt to + remember workspace/position for non-session-aware apps without + causing a lot of weird effects. + + The reason is that you don't know which non-SM-aware apps were + launched by the session. When you initially log in, Marco sees a + bunch of new windows appear. But it can't distinguish between + windows that were stored in your session, or windows you just + launched after logging in. If Marco tried to guess that a window + was from the session, it could e.g. end up maximizing a dialog, or + put a window you just launched on another desktop or in a weird + place. And in fact I see a lot of bugs like this in window managers + that try to handle non-session-aware apps. + + However, for session-aware apps, Marco can tell that the + application instance is from the session and thus restore it + reliably, assuming the app properly restores the windows it had + open on session save. + + So the correct way to fix the situation is to make apps + session-aware. libSM has come with X for years, it's very + standardized, it's shared by GNOME and KDE - even twm is + session-aware. So anyone who won't take a patch to add SM is more + archaic than twm - and you should flame them. ;-) + + Docs on session management: + http://www.fifi.org/doc/xspecs/xsmp.txt.gz + http://www.fifi.org/doc/xspecs/SMlib.txt.gz + + See also the ICCCM section on SM. For MATE apps, use the + MateClient object. For a simple example of using libSM directly, + twm/session.c in the twm source code is pretty easy to understand. + +Q: How about adding viewports in addition to workspaces? + +A: I could conceivably be convinced to use viewports _instead_ of + workspaces, though currently I'm not thinking that. But I don't + think it makes any sense to have both; it's just confusing. They + are functionally equivalent. + + You may think this means that you won't have certain keybindings, + or something like that. This is a misconception. The only + _fundamental_ difference between viewports and workspaces is that + with viewports, windows can "overlap" and appear partially on + one and partially on another. All other differences that + traditionally exist in other window managers are accidental - + the features commonly associated with viewports can be implemented + for workspaces, and vice versa. + + So I don't want to have two kinds of + workspace/desktop/viewport/whatever, but I'm willing to add + features traditionally associated with either kind if those + features make sense. + +Q: Why is the panel always on top? + +A: Because it's a better user interface, and until we made this not + configurable a bunch of apps were not getting fixed (the app + authors were just saying "put your panel on the bottom" instead of + properly supporting fullscreen mode, and such). + + rationales.txt has the bugzilla URL for some flamefesting on this, + if you want to go back and relive the glory. + Read these and the bugzilla stuff before asking/commenting: + http://pobox.com/~hp/free-software-ui.html + http://pobox.com/~hp/features.html + +Q: Why is there no edge flipping? + +A: This one is also in rationales.txt. Because "ouija board" UI, where + you just move the mouse around and the computer guesses what you + mean, has a lot of issues. This includes mouse focus, shade-hover + mode, edge flipping, autoraise, etc. Marco has mouse focus and + autoraise as a compromise, but these features are all confusing for + many users, and cause problems with accessibility, fitt's law, and + so on. + + Read these and the bugzilla stuff before asking/commenting: + http://pobox.com/~hp/free-software-ui.html + http://pobox.com/~hp/features.html + +Q: Why does wireframe move/resize suck? + +A: You can turn it on with the reduced_resources setting. + + But: it has low usability, and is a pain + to implement, and there's no reason opaque move/resize should be a + problem on any setup that can run a modern desktop worth a darn to + begin with. + + Read these and the bugzilla stuff before asking/commenting: + http://pobox.com/~hp/free-software-ui.html + http://pobox.com/~hp/features.html + + The reason we had to add wireframe anyway was broken + proprietary apps that can't handle lots of resize events. + +Q: Why no XYZ? + +A: You are probably getting the idea by now - check rationales.txt, + query/search bugzilla, and read http://pobox.com/~hp/features.html + and http://pobox.com/~hp/free-software-ui.html + + Then sit down and answer the question for yourself. Is the feature + good? What's the rationale for it? Answer "why" not just "why not." + Justify in terms of users as a whole, not just users like + yourself. How else can you solve the same problem? etc. If that + leads you to a strong opinion, then please, post the rationale for + discussion to an appropriate bugzilla bug, or to + usability@gnome.org. + + Please don't just "me too!" on bugzilla bugs, please don't think + flames will get you anywhere, and please don't repeat rationale + that's already been offered. + +Q: Your dumb web pages you made me read talk about solving problems in + fundamental ways instead of adding preferences or workarounds. + What are some examples where marco has done this? + +A: There are quite a few, though many opportunities remain. Sometimes + the real fix involves application changes. The marco approach is + that it's OK to require apps to change, though there are also + plenty of workarounds in marco for battles considered too hard + to fight. + + Here are some examples: + + - fullscreen mode was introduced to allow position constraints, + panel-on-top, and other such things to apply to normal windows + while still allowing video players etc. to "just work" + + - "whether to include minimized windows in Alt+Tab" was solved + by putting minimized windows at the *end* of the tab order. + + - Whether to pop up a feedback display during Alt+Tab was solved by + having both Alt+Tab and Alt+Esc + + - Whether to have a "kill" feature was solved by automatically + detecting and offering to kill stuck apps. Better, marco + actually does "kill -9" on the process, it doesn't just + disconnect the process from the X server. You'll appreciate this + if you ever did a "kill" on Netscape 4, and watched it keep + eating 100% CPU even though the X server had booted it. + + - The workspaces vs. viewports mess was avoided by adding + directional navigation and such to workspaces, see discussion + earlier in this file. + + - Instead of configurable placement algorithms, there's just one + that works fairly well most of the time. + + - To avoid excess CPU use during opaque move/resize, we rate limit + the updates to the application window's size. + + - Instead of configurable "show size of window while resizing," + it's only shown for windows where it matters, such as terminals. + (Only use-case given for all windows is for web designers + choosing their web browser size, but there are web sites and + desktop backgrounds that do this for you.) + + - Using startup notification, applications open on the workspace + where you launched them, not the active workspace when their + window is opened. + + - and much more. + +Q: I think marco sucks. + +A: Feel free to use any WM you like. The reason marco follows the + ICCCM and EWMH specifications is that it makes marco a modular, + interchangeable part in the desktop. libwnck-based apps such as the + MATE window list will work just fine with any EWMH-compliant WM. + +Q: Did you spend a lot of time on this? + +A: Originally the answer was no. Sadly the answer is now yes. + +Q: How can you claim that you are anti-crack, while still + writing a window manager? + +A: I have no comment on that. -- cgit v1.2.1