summaryrefslogtreecommitdiff
path: root/openbox
AgeCommit message (Collapse)Author
2014-01-09Fix gcc warnings in screen.cRafael Ignacio Zurita
2014-01-09Added missing break statement (Bug 6043)Markus Roesch
2013-09-09Add a strict option to the ToggleShowDesktop actionDana Jansens
When the strict option is used, normal windows are not able to show themselves while showing the desktop.
2013-09-02Allow FillToEdge to grow when all its edges are blocked.Dana Jansens
This change points out how useless the return value from client_find_resize_directional() was, so it also removes that. When all edges are blocked, the FillToEdge action will try to grow all four edges agin without blocking any of them on their current edge. This more closely matches the behaviour of the GrowToEdge action.
2013-09-02Clean up the FillToEdge action implementationDana Jansens
This extend the client_find_resize_directional() method to support two growing modes, and return a bool for whether it was able to grow/shrink. The client_find_resize_directional() method now takes an enum instead of a bool, with two growing modes. The old mode which always tries to grow, the a new mode that will only grow if the client's edge is not already at a grow stopping point (ie against the edge of another window).
2013-09-02Created a 'GrowToFill' action. (Bug 3356)Lucas Augusto Deters
2013-09-02Use the BSEARCH() macro in overlap placementDana Jansens
Currently the code rolls its own binary search, but now that we have a well-tested binary search implementation in obt/ we can make use of that.
2013-09-01Fix nits for overlap placement center optionDana Jansens
2013-09-01Add the old <center> option for the placement policy. (Bug 5946)Ian Zimmerman
Original commit messages: . Reformat to move closer to house style . Add center on top of leat overlap place algo . Add sentinel value to edge arrays . Use a Size instead of a Rect for a centering field . Fix off by one bug . Need to declare dx and dy . Pass length of edge array instead of recomputing . Fix missing open-brace in config.c . Address the more trivial subset of danakj comments . Revert "Remove now-unused config_place_center option." This reverts commit 5e282dae08be3b900e0337efa0fae8f3ffa92cd7. . Remove reliance on sentinel value when scanning edge arrays . Avoid need to initialize Size structure by removing it :) . Clean up field expansion code somewhat . Compress code further by using a structure for common args . Fix search for next grid point . Squeeze it even more by not using Size at all
2013-09-01Fix gcc warningsIan Zimmerman
2013-09-01Fix a typo causing submenuShowDelay to be ignored (Bug 6019)Tom Sires
2013-08-19Add window type to If as wellMikael Magnusson
This one required some extra helpers so is separate commit
2013-08-19Allow matching class, name and role in If actionMikael Magnusson
2013-08-19Add ForEach action which is like If but runs on all clientsMikael Magnusson
Also adds a Stop action that lets you stop running, in case you only want to run actions on the first match.
2013-08-18Add queries to If actionsDana Jansens
This allows the If action to run queries against a client other than the target of the actions being run, for example to check state on the focused window while performing actions on another window during focus cycling. The syntax looks like <action name="If"> <query target="default"> <title>FooBar</title> <maximized>yes</maximized> </query> <query target="focus"> <desktop>3</desktop> </query> <then> <action name="NextDesktop"/> </then> </action> The above checks the client window that the actions will run on to verify that its title is "FooBar" and that it is maximized. If that is true, it also checks that the currently focused client window is on desktop 3. If that is true also, then it runs the NextDesktop action. The target="" option can be set to "default" which uses the client window that the actions will run on, or it can be "focus" which uses the client window that is currently focused. The <query> tag is optional, and the conditions inside the query can be placed directly inside the If <action> tag, as they were before this change. In that case, a default <query> tag is assumed with target="default" which matches the previous behaviour. Multiple <query> tags can be present, and they must all be true in order to run the actions in <then>. If any one is false, the actions in <else> will be run instead.
2013-08-11Maximized undecored windows have incorrect top border. (Bug 5996)Dana Jansens
If the window has no border since the theme has bwidth=0, or because the window is truly undecorated via MWM hints, then we should not allocate space for the frame of the window which will just be empty pixels.
2013-08-11Fix some compiler warningsDana Jansens
Void function should actually be declared void. Not-reached switch condition should still return something.
2013-08-11Change "plain" to "exact" for If's <title>Mikael Magnusson
2013-08-11Add matching which monitor the client is on in the If action (Bug 5426)Mikael Magnusson
2013-08-11Use enum value for monitor in MoveToCenterMikael Magnusson
2013-08-11Let the If action match window titles with GRegexMikael Magnusson
2013-08-11Use a helper function to make if.c a bit shorterMikael Magnusson
2013-08-11Add activedesktop to IfMikael Magnusson
2013-08-11Dock used showDelay for both hiding and showing (Bug 5811)Lefteris Chatzimparmpas
2013-08-11Allow specifying only one of width and height in per-app settings sizeMikael Magnusson
Fixes bug 5819.
2013-08-11Add some comments in MoveResizeTo codeMikael Magnusson
2013-08-10Change the message about no icons in menus.Dana Jansens
The message used to mention Imlib2, but now there are two libraries that can be used to support icons. So make the message more generic and show it only when both libraries are not present.
2013-08-10Add support for loading SVG icons using librsvg.Dana Jansens
This adds a configure option --disable-librsvg, but defaults to using the library if it is present during configure. When enabled, Openbox will attempt to load svg image files using the library, similar to how Imlib2 is used for other image formats. Since librsvg uses the libXml2 library, their errors end up in the same global namespace as Openbox config file parsing. To avoid this, we reset the libXml current error whenever we start loading a file, and save the last error that occurred when we are finished, by storing the error in the ObtXmlInst.
2013-08-11Fix a typo that prevented setting client size for the height only (???)Mikael Magnusson
2013-08-11Convert two // to /*Mikael Magnusson
2013-06-07Constrain the moveresize popup to the monitor which has the clientMikael Magnusson
2013-06-07Rename bounds to monitor in place_overlap and move a constMikael Magnusson
2013-04-23Fix least overlap to fall back to the chosen monitor, not (0,0).Mikael Magnusson
2013-04-23We forgot to count the dock in LeastOverlapMikael Magnusson
2013-04-17Remove some evil tabsMikael Magnusson
2012-10-06Refactor the per-app parsing code into a helper function and reduce nesting ↵Dana Jansens
by 2 levels
2012-10-06Make MoveResizeTo work on the dimensions of the frame, not the clientDana Jansens
2012-10-06Allow application rules to control window size (Fix bug 4661)Dana Jansens
Use the following in your per-app rules: <size> <width>A</width> <height>B</height> </size> A and B can be integer values to specify a size in pixels. They can also be percentages or fractions to be relative to the size of the monitor the window is placed on.
2012-10-06Remove now-unused config_place_center option.Dana Jansens
The new LeastOverlap placement doesn't use this option, and it kind of defeats the purpose of the algorithm.
2012-10-06When an undecorated window is maximized give it a 1px border at the top (Fix ↵Dana Jansens
bug 5506) We want to keep some way for a user to re-decorate the window with the default bindings. However with a large border width, the top border is much bigger than it needs to be! So make it fixed at 1px large in this case.
2012-10-06Allow non-interactive focus cycling.Dana Jansens
Adds an <interactive>bool</interactive> option to the NextWindow and PreviousWindow actions. When it is false, the action is not interactive and will immediately switch focus to whatever the next focus target is. Removing the "interactive" flag from the focus_cycle() method, as it was unused previously, and the new code does not make use of it either. In order to be non-interactive it simply starts a focus_cycle then immediately ends it when the action ends. The "interactive" flag in focus_cycle() forced a linear cycling order which may not be what you want, so the new method is preferrable anyhow.
2012-10-06Add a $pointer execute variable substitution and make $wip and $pid ↵Dana Jansens
consistent (Fix bug 5758) $wip and $pid would output values for the current target window if there was one, but output nothing at all if there wasn't making the output difficult to parse. Changed to make these always output a 0 if there is no target. Added a $pointer variable that is replaced with the x and y coordiates of the pointer, separated by a space. Inspired by the work of Denis Kaganovich <mahatma@eu.by>.
2012-10-06Remove unused variableDana Jansens
2012-10-06Fix duplicate const warningDana Jansens
2012-10-06When a window is the focus target and it is removed from the focus order, ↵Dana Jansens
reset the focus cycling (Fix bug 5410) We were only doing this if a dialog was showing. But if it's the target, then a dialog is not relevant, we should always recompute the focus cycling. This avoids a crash when not using a dialog and closing a window during cycling.
2012-10-06Fix negative ResizeRelative values with terminal windows (Fix bug 5228)Dana Jansens
Inspired by patches from Brian Mock <mock.brian@gmail.com>.
2012-10-06Get the window's title in the fake-managed case since we apply app rule ↵Dana Jansens
matching (Fix bug 5277)
2012-10-06Allow windows created by execute actions to steal focus if the user isn't ↵Dana Jansens
interacting with another window (Fix bug 5419). When the execute action was run, we would say that the user had used the focused at that time. Then when a new window popped up, we'd think the user was busy in the current window and prevent the new one from steal focus. Now the execute action does not update the "user interacted with the focused window" timestamp anymore. So, if they aren't currently typing in some window when they trigger an execute action, and the window appears, it will steal focus.
2012-10-06Allow window matching based on the group leader's name and class (Fix bug 5721)Dana Jansens
In Openbox 3.4 we used the group leader's WM_CLASS value when it was available. This prevents windows in the group from overriding with a specific value, however which is bad. More rationale can be found in http://icculus.org/pipermail/openbox/2010-September/006790.html Some applications (eg. Firefox) use command line flags to set the WM_CLASS property on the group leader but do not change the property on the mapped windows themselves. This makes matching these windows not possible in Openbox 3.5. We resolve this by exposing the group's WM_CLASS values alongside the individual window's values. We add _OB_APP_GROUP_NAME and _OB_APP_GROUP_CLASS properties along with "groupname" and "classname" attributes for the rc.xml application tag.
2012-10-06Allow loading of menu files outside of your XDG_CONFIG_HOME (Fix bug 5711)Dana Jansens
When the given file name can not be found in your XDG_CONFIG_HOME, ie in ~/.config/openbox, then try the file name directly. This means if you specify a menu file such as "/home/dana/helloworld.xml", openbox will try, in order: 1) ~/.config/openbox/home/dana/helloworld.xml 2) /home/dana/helloworld.xml And it will load the file you meant when it tries the second one.