Commit graph

101 commits

Author SHA1 Message Date
Mathias Gumz
fff0abad76 Improve I18n support
Among the first steps to produce better i18n support is to test the created
translations adhoc without running "make install". To achieve this, fluxbox
now honors several environment variables:

- NLSPATH: fluxbox won't create the absolute path to the catalog and thus
  catopen() is free to use NLSPATH as described in the manpage. Example
  given: "/tmp/%N" will pick "/tmp/fluxbox.cat". %N refers to FLUXBOX_CATFILE.

- FLUXBOX_CATFILE: By setting FLUXBOX_CATFILE the users can make fluxbox to
  use a different name for the catalog file.  Default: "fluxbox.cat"

- FLUXBOX_CATDIR: Per default fluxbox tries to find FLUXBOX_CATFILE at several
  places. Setting this environment variable allows to point fluxbox to a
  different search path for the catalog files.

Then, fluxbox tries catopen() first without changing the deduced catalog file
name. After that it applies some heuristics to get a good catalog file name.
2015-01-31 21:37:44 +01:00
Mathias Gumz
0a87632032 Clean up FbTk::I18n API
Move private stuff into FbTk/I18n.cc.
2015-01-31 12:04:30 +01:00
Mathias Gumz
772ec14595 Fix uninitialized variables; cosmetics
Note: I expect only modern compilers will hit the source of fluxbox. It
seems futile to guard stdlib headers while demanding <algorithm> etc. This
should trim down the noise in the source quite a bit.
2015-01-16 10:52:00 +01:00
Mathias Gumz
376ed523cb Update release version 2015-01-03 14:07:34 +01:00
Mathias Gumz
e105de7d46 merge Sami Kerola's new build-system 2014-04-11 17:42:40 +02:00
Mathias Gumz
43bdf499d5 Fix race condition on shutdown
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*
2014-02-18 19:34:35 +01:00
Mathias Gumz
3696562aa8 update of copyright info 2014-02-17 20:14:49 +01:00
Mathias Gumz
f464f24eb3 fix detection of $HOME folder
usually $HOME is set when fluxbox runs. in some rare scenarios (eg., fuzzying
binaries to detect bugs) one could launch fluxbox by using 'env -i' and thus
eliminating $HOME from the environment. to prevent crashes fluxbox uses now
'getpwuid()' when $HOME is not set to detect the home folder.
2013-06-29 08:39:02 +02:00
Sami Kerola
47b9786533 build-sys: use AC_USE_SYSTEM_EXTENSIONS
The earlier _GNU_SOURCE definitions possibly did not take effect
everywhere where it was intended.
2013-05-26 10:38:10 +01:00
Sami Kerola
73b7958770 build-sys: include config.h to all files using automake
Do not try to be too smart which compilations need config.h, as most of
them will simply because of the config.h has information about system
capabilities.
2013-05-26 10:38:10 +01:00
Mathias Gumz
ac27c8cb42 Updates copyright date information in some binaries 2013-02-14 19:45:17 +01:00
Mathias Gumz
06655f6d7f Optional removal of SystemTray tool
Added the option to remove the SystemTray tool completely from
fluxbox.
2013-01-10 12:11:24 +01:00
Mathias Gumz
4191cbf2d2 Fix build regression: enable XRANDR support by default
The changes made in b178bed60b 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'
2012-12-12 10:18:20 +01:00
Mathias Gumz
b178bed60b Simplified 'configure' / build system
* reduced duplicated auto-code
* renamed '--enable-newwmspec' to '--enable-ewmh'
* don't compile 'Slit'-code when '--disable-slit'
* use AS_IF() in configure.in
* use AS_HELP_STRING() instead of obsolete AC_HELP_STRING in configure.in
* removed redundant calls to 'imlib2-config' to fill in $IMLIB2_CFLAGS
  and $IMLIB2_LIBS, AC_PATH_GENERIC() does that out of the box already
2012-12-05 16:00:55 +01:00
Ryan Pavlik
f859e78cb2 Exceptions should be caught by reference.
Found using cppcheck.
2012-01-04 07:51:35 +01:00
Ryan Pavlik
25d04827b5 main.cc,FbTk/StringUtil.cc: On windows, use USERPROFILE instead of HOME 2011-10-31 10:54:32 -05:00
Ryan Pavlik
f922d2d803 main.cc: Add a wrapper for two-argument mkdir on Windows 2011-10-31 10:54:09 -05:00
Ryan Pavlik
5bf23bb05d Merge branches 'fix-out-of-range-memory', 'obey-configure' and 'other-improvements' into windows-mingw 2011-10-31 10:53:05 -05:00
Ryan Pavlik
d5b58a8033 main.cc: Use expandFilename for default paths 2011-10-31 10:51:45 -05:00
Ryan Pavlik
fa63fcdc66 main.cc: Check getenv output better.
Windows returns pointers to empty strings for non-existent env vars.
2011-10-31 10:51:38 -05:00
Ryan Pavlik
4bad431c90 main.cc: Only sync() if we can. 2011-10-31 10:42:06 -05:00
Mathias Gumz
a2558a2b14 removed obsolete handler for the gnome-window manager hints
nowadays every app should use the extended window manager hints exclusively.
2011-10-17 17:07:00 +02:00
Mathias Gumz
f9df3ffeda sync the copied config files to disk before continuing
otherwise a race condition might appear between copying the default
config files to .fluxbox/ and executing 'fluxbox-update_configs'. under
macosx this lead to 'fluxbox hangs'.
2011-09-10 20:17:57 +02:00
Mathias Gumz
504fd5c4fa updated year and copyright info 2011-02-23 21:42:51 +01:00
Mathias Gumz
1797d6895c almost 10 years of fluxbox 2011-02-23 17:19:27 +01:00
Mathias Gumz
e2d52a3948 bugfix: std::string() does not like NULL on construction
not having DISPLAY set (eg: on a headless system) caused fluxbox to crash.
2010-10-13 15:48:29 +02:00
Mathias Gumz
650b6f842b use 'system()' to run 'fluxbox-update_configs'
by using FbCommands::ExecureCmd() we run 'fluxbox-update_configs' in
the bacground while booting a new fluxbox instance already. 'system()'
waits until 'fluxbox-update_configs' is done and then gives the control
back to fluxbox.
2010-09-21 00:08:16 +02:00
Mathias Gumz
0ef76292c5 changed the way we create the '~/.fluxbox' directory to avoid race conditions
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-18 17:51:30 +02:00
Mathias Gumz
c9c741c88d cosmetic 2010-09-18 17:27:28 +02:00
Mathias Gumz
87b45bd0d1 bugfix: avoid naive use of 'putenv' by providing 'FbTk::App::setenv()'
to quote from 'man putenv':

   The string pointed to by string becomes part of the environment,
   so altering the string changes the environment.

so, using putenv like

   {
      std::string foo("FOO=bar");
      putenv(foo.c_str());
   }

is wrong and leads to a potentially corrupted environment. valgrind
complaint correctly.

FbTk::App seems to be the appropriate place to hold '::seten()'
because it alters the environment of the application.
2010-09-17 23:43:24 +02:00
Mathias Gumz
f3ad09c4ce missing initializations
'valgrind' reported a lot of code branches based upon uninitialized
variables. some are not identified yet.
2010-09-17 23:34:03 +02:00
Mathias Gumz
d3eabeb805 moved commandline parsing to its own function 2010-09-17 15:51:16 +02:00
Mathias Gumz
60c92b96f2 added info about 'BIDI' support to 'fluxbox -info' 2010-09-05 08:49:13 +02:00
Slava Semushin
efea05e85c Renamed function svnversion() to gitrevision() because now we uses GIT.
No functional change.

Signed-off-by: Slava Semushin <php-coder@altlinux.ru>
2009-03-04 21:41:39 +01:00
Mark Tiefenbruck
aee9889a27 recognize --option in addition to -option for most things 2008-10-04 14:32:20 -07:00
Mark Tiefenbruck
f1ff5ff3b2 add -sync command line option for debugging X issues 2008-08-22 06:12:01 -07:00
skiidoo
be3ac3723d updated the copyright where it's easily visible: fluxbox -v and COPYRIGHT.
nls/translators: typo, plus Translation.m.desc never existed. Never.
more consistent keys file comments in fluxbox-update_config.
2008-06-11 07:47:02 +02:00
Mark Tiefenbruck
ad6a7e48f4 add new command line option -list-commands 2008-06-03 01:07:14 -07:00
Mathias Gumz
65df54d635 std::string.c_str() is never NULL 2008-01-25 08:21:35 +01:00
Mark Tiefenbruck
9c105111d2 remove old svn $Id$ tags 2008-01-03 17:34:12 -08:00
Mark Tiefenbruck
35d1017959 removed KDE configure option 2007-12-24 22:49:46 -08:00
Mark Tiefenbruck
b90a7e21a9 replace svn stuff with git 2007-12-19 16:51:15 -08:00
Mark Tiefenbruck
90f4f1ecc1 fix compile issue with gcc 4.3 2007-12-14 14:21:39 -08:00
fluxgen
66c537e1dc Changed to Fluxbox Team 2007-08-11 18:21:36 +00:00
markt
8da54ca0eb add some decorations to torn menus, and fix restart without an argument 2007-07-31 23:16:05 +00:00
markt
363764db5b fix ToggleDecor for fullscreen and decorationless windows, plus some other cleanup 2007-07-24 12:12:45 +00:00
mathias
5eb658a51f fixed a bug in parsing cli, thanks to steven kah hien wong <steven at zensaki dot com> 2007-04-24 19:38:40 +00:00
mathias
6ac57655d9 basicly cosmetic changes, patch by slava semushin 2007-04-17 07:52:40 +00:00
mathias
9ee2ee0ff4 small update for the copyright date 2007-03-22 20:20:26 +00:00
mathias
10082d821d cosmetic patch from slava semushin, removes whitespaces and
uses only those things from "namespace std" what we really need.
2006-10-27 06:57:43 +00:00