The lookup order stated in the i3 manpage was is contratiction to the
actual lookup order, which was introduced with commit
bfa12a5819.
Since that commit (6.5 years ago) the "traditional" paths took precedence
over XDG_CONFIG paths.
Rather than just toggling the fullscreen modes, allow to set them
directly with:
fullscreen enable|toggle [global]
fullscreen disable
For compatibility, retain the previous command and its toggling behavior:
fullscreen [global]
fixes#1120
Harald mentioned he was surprised about the locales we recommend in the
.xsession example, so I’ve re-investigated.
Here is the test program I have used:
#include <stdio.h>
#include <locale.h>
int main() {
/* SUSv2 setlocale(3) says:
* Internationalised programs must call setlocale() to initiate
* a specific language operation. This can be done by calling
* setlocale() as follows: */
setlocale(LC_ALL, "");
printf("LC_NUMERIC is %s\n", setlocale(LC_NUMERIC, NULL));
}
Then, I have unset LANG and LC_*:
midna /tmp $ env | grep LANG
midna /tmp $ env | grep LC
midna /tmp $
Now, observe that LC_ALL overwrites all specific LC variables:
midna /tmp $ LC_ALL=de_DE.UTF-8 LC_NUMERIC=en_DK.UTF-8 ./localetest
LC_NUMERIC is de_DE.UTF-8
However, LANG does not:
midna /tmp $ LANG=de_DE.UTF-8 ./localetest
LC_NUMERIC is de_DE.UTF-8
midna /tmp $ LANG=de_DE.UTF-8 LC_NUMERIC=en_DK.UTF-8 ./localetest
LC_NUMERIC is en_DK.UTF-8
This is consistent with what perldoc perllocale says:
http://perldoc.perl.org/perllocale.html#ENVIRONMENT
With this commit, i3 will now use either $XDG_RUNTIME_DIR/i3 (XDG_RUNTIME_DIR
is only writable by the user, so this is not a problem) or a secure temporary
location in /tmp, following the pattern /tmp/i3-<user>.XXXXXX
Also update documentation (manpage, userguide).
To make the code easier to read/write when checking if a client is
floating, introduce client_is_floating().