aboutsummaryrefslogtreecommitdiff
path: root/src/fluxbox.hh
AgeCommit message (Collapse)AuthorFilesLines
2022-04-18Initial implementation of shortcut to windowsRichard Tamin1-0/+3
[PURPOSE] In editors such as vi and emacs, a user can mark a line in a file with a shortcut key and afterwards jump back to that line using the shortcut. The idea is extended to opened windows. A user can assign a keyboard shortcut to an opened window. Afterwards, the shortcut can be used to switch focus back to the marked window. Such shortcuts save the user from pressing "alt+tab" multiple times to cycle through windows until the desired one is found. [EXAMPLE USAGE] The following binding is added to file "~/.fluxbox/keys": Mod1 m ARG :MarkWindow Mod1 g ARG :GotoMarkedWindow User enters "alt+m x" to mark the currently focused window with shortcut key 'x' User enters "alt+g x" to switch focus to the marked window [IMPLEMENTATION SUMMARY] - Two new commands were added :MarkWindow and :GotoMarkedWindow - Keys.cc was modified: - addBinding() method supports parsing an argument placeholder where the user can pass in a shortcut key - doAction() method forwards the shortcut key to the command to execute - Class Keys::t_key was modified to recognize a placeholder key - New class ShortcutManager was added to maintain mapping of shortcut keys to marked windows
2016-08-28fix compiler warning about std::auto_ptrMathias Gumz1-2/+2
fluxbox uses std::unique_ptr<> where it previously used std::auto_ptr<>. C++0X was approved in 2011. among other things, it deprecates std::auto_ptr. 5 years is long enough for compilers to catch up the standard.
2016-07-30reconfigTheme's on loading a new styleThomas Lübking1-0/+1
Also reconfigure menus (recursively) on style load The most critical call is the shape update - the menus often become cut-off, preventing mouse interaction with lower items, but also colors are not applied correctly to menus w/o updating them. BUG 1022 is most likely this and only a misinterpretation (for the mentioned items are those with lacking color updates on style updates) BUG: 1146 BUG: 1017 CCBUG: 1022
2015-02-05Feature: different MenuSearch modesMathias Gumz1-0/+2
Fluxbox now supports three MenuSearch modes: * NoWhere - essentially "disabling" the menu search. * Somewhere - the search string matches somewhere. * ItemStart - the search string matches at the start of a menu item. The default value is "ItemStart", just in the good old times. As long as this feature is not configurable via the menu it would irritate users with distinct muscle memory who type without thinking OR checking the visual feedback: they would trigger items they did not intent to trigger after years of the old behavior. Once this feature get's an entry in the config menu the default value might change.
2015-01-22Add -no-slit and -no-toolbar flagsMathias Gumz1-90/+100
Sometimes fluxbox is used as a component of a desktop environment ( e.g., the "Lumina Desktop"). It's easier and more stable for this kind of "users" to disable the toolbar or the slit alltogether. Why not configure these features out? Because then they would need 2 installations of fluxbox: One without the slit and the toolbar (and perhaps other components) and one with them. This implements feature request #314, at least partially. This commit also looks bigger than it actually is: I refactored and cleaned up classes Fluxbox and BScreen.
2014-04-09fix excessive loading of keys file caused by xmodmapMathias Gumz1-0/+1
xmodmap (and other tools) trigger MappingNotify events. a single xmodmap expression such as "keycode comma = comma semicolon" might trigger 4 or 5 MappingNotify events. loading the keys file on each of them is quite unefficient. fluxbox now uses a (250ms) timer which is reset upon further events.
2014-02-18Fix race condition on shutdownMathias Gumz1-9/+6
This commit fixes primarily a race condition that occurs when xinit(1) shuts down: by not acting properly fluxbox gets caught in an infinite loop. It caused bug #1100. xinit(1) sends a SIGHUP signal to all processes. fluxbox tries to shutdown itself properly by shutting down workspaces and screens. While doing that, the Xserver might be gone already. Additionally, fluxbox used to restart() itself on SIGHUP, which is clearly not the right thing to do when xinit(1) is about to end the session. So, fluxbox does this: * handling SIGHUP now shuts down fluxbox without clearing workspaces and screens. * A 2 second alarm() is triggered in Fluxbox::shutdown() as a last resort * XSetIOErrorHandler() is used to recognize the disconnect from the xserver. * SIGUSR1 is for restarting fluxbox, SIGUSR2 for reloading the config * FbTk/SignalHandler.cc/hh is gone; this unused abstraction served currently no real purpose. Signal handling is now done in main.cc * Unrelated to the issue itself src/main.cc was trimmed down quite a bit and the code (responsible for handling the command line interface) was moved to src/cli*
2012-12-12Minor cleaning of 'class Fluxbox'Mathias Gumz1-1/+0
2012-12-12Fix build regression: enable XRANDR support by defaultMathias Gumz1-10/+3
The changes made in b178bed60b5bd8b2c9ed0cbc67fd729ff3820589 used the wrong variable to set the default state of '--enable-randr' in configure.in, that is fixed now. I also removed '--enable-randr12': If support for the Xrandr-extension is available at compile time we set HAVE_RANDR; if there is also support for Xrandr-1.2 (or higher), we also set HAVE_RANDR1_2 automatically. Other changes: * cleaned out public interface of 'class Fluxbox' * added 'RANDR' to output of 'fluxbox -info'
2011-05-10Convert FluxboxWindow::layerSig to FbTk::SignalPavel Labath1-3/+2
2011-05-10Convert FluxboxWindow::stateSig to FbTk::SignalPavel Labath1-0/+2
2011-05-10Convert FluxboxWindow::workspaceSig to FbTk::SignalPavel Labath1-0/+2
2011-05-10Convert Focusable::dieSig to FbTk::SignalPavel Labath1-0/+4
2010-09-18changed the way we create the '~/.fluxbox' directory to avoid race conditionsMathias Gumz1-5/+7
before bringing up the first instance of Fluxbox we prepare the directory and the files it needs. if the config version of exiting files is lower than what we expect, we upgrade the config files. after that we bring up Fluxbox. the old way was problematic because setupConfigFiles() calls 'fluxbox-update_configs' which does its job in the background while fluxbox continues to boot. 'fluxbox-update_configs' sends a USR2 signal to the booting fluxbox (it might even be finished, no one knows) which triggers 'load_rc()' which triggered 'setupConfigFiles()' again which might trigger 'fluxbox-update_configs' again (on my machine 'fluxbox-update_configs' was called 3 times and left a pretty crippled 'keys' file when it was done). bootstrapping before bringing up fluxbox resolves the issue. as a bonus: no need to send USR2 to fluxbox to reload the config file because fluxbox has not even tried to read it yet.
2010-09-13code simplificationMathias Gumz1-2/+2
we do not need a std::map just to store an attribute on an AtomHandler, it makes housekeeping just more annoying.
2008-09-28Changed workspace area signal to use the new signal systemHenrik Kinnunen1-0/+3
2008-09-28Change focused signal to use the new signal systemHenrik Kinnunen1-0/+4
2008-09-21Changed client list signal in BScreen to use the new signal systemHenrik Kinnunen1-0/+2
2008-09-21Changed workspace names signal in BScreen to use the new signal systemHenrik Kinnunen1-0/+2
2008-09-21Changed current workspace signal in BScreen to use the new signal systemHenrik Kinnunen1-0/+2
2008-09-18Changed workspace count signal in BScreen to use the new signal system.Henrik Kinnunen1-1/+7
2008-08-22add -sync command line option for debugging X issuesMark Tiefenbruck1-1/+1
2008-08-16revert focus when closing dialogsMark Tiefenbruck1-1/+3
2008-06-20move default window menu to ~/.fluxbox/windowmenuMark Tiefenbruck1-1/+1
2008-05-12only reload the keys file if the contents have changedMark Tiefenbruck1-0/+1
2008-05-12refactor menu reloading, added FbTk::AutoReloadHelperMark Tiefenbruck1-15/+0
2008-05-11remove some more useless codeMark Tiefenbruck1-4/+2
2008-01-12move some stuff from Fluxbox to BScreenMark Tiefenbruck1-4/+0
2008-01-04remove old svn $Id$ tagsMark Tiefenbruck1-2/+0
2008-01-01fix some flickering on focus changeMark Tiefenbruck1-3/+2
2007-12-30removed some unneeded headersMathias Gumz1-6/+5
2007-12-11only allow one open menu at a timemarkt1-2/+0
2007-11-12allow arbitrary window patterns in iconbarmarkt1-6/+0
2007-10-22replaced ModKey with new key commands StartMoving and StartResizingmarkt1-4/+0
2007-10-13merged changes from pre-develmarkt1-2/+2
2007-07-24fix ToggleDecor for fullscreen and decorationless windows, plus some other ↵markt1-1/+1
cleanup
2007-07-07fixes for --program-prefix and --program-suffix, plus fixed overwriting init ↵markt1-2/+1
file on reconfigure
2007-03-04moved some code around (regarding event handling) in preparation for ↵markt1-8/+0
upcoming features
2007-03-03removed session.numLayers resource, as it was useless and caused segfaultsmarkt1-6/+1
2007-01-05only grab keybindings on screens managed by fluxboxmarkt1-1/+3
2007-01-01don't run [startup] items if fluxbox fails to loadmarkt1-1/+1
2006-07-25don't revert focus away from command dialogsmarkt1-0/+2
2006-07-23use a timer to make sure focus always reverts if possiblemarkt1-1/+4
2006-07-22dead resourcemarkt1-1/+1
2006-07-04some dead resources and the functions that go with themmarkt1-5/+1
2006-07-01more dead functionsmarkt1-0/+2
2006-07-01more dead functionsmarkt1-3/+0
2006-06-30more dead functionsmarkt1-2/+0
2006-06-30another dead functionmarkt1-1/+0
2006-06-22Added patch from Jim Ramsay (i dot am at jimramsay dot com) to freelymathias1-4/+7
define the used modkey. Added new action SetModKey too