From fb85d8d8a6ecd941073292cffa122904c7759650 Mon Sep 17 00:00:00 2001
From: Orestis Floros
Date: Mon, 6 May 2024 08:22:32 +0200
Subject: [PATCH] Sync docs with i3 upstream (#133)
---
_docs/hacking-howto | 6 +-
_docs/i3bar-workspace-protocol | 12 +--
_docs/testsuite | 140 ++++++++++++++---------------
_docs/userguide | 32 ++-----
docs/hacking-howto.html | 6 +-
docs/i3bar-workspace-protocol.html | 12 +--
docs/testsuite.html | 138 ++++++++++++++--------------
docs/userguide.html | 70 ++++++---------
8 files changed, 190 insertions(+), 226 deletions(-)
diff --git a/_docs/hacking-howto b/_docs/hacking-howto
index ae48c44..d8c95ca 100644
--- a/_docs/hacking-howto
+++ b/_docs/hacking-howto
@@ -28,9 +28,9 @@ https://mesonbuild.com/[The Meson Build system]; see
https://mesonbuild.com/Quick-guide.html#compiling-a-meson-project[Quickstart
Guide → Compiling a Meson project]. In case you’re unfamiliar:
- $ mkdir -p build && cd build
- $ meson ..
- $ ninja
+ mkdir -p build
+ meson setup build
+ meson compile -C build
=== Build system features
diff --git a/_docs/i3bar-workspace-protocol b/_docs/i3bar-workspace-protocol
index 016fc96..009b2a1 100644
--- a/_docs/i3bar-workspace-protocol
+++ b/_docs/i3bar-workspace-protocol
@@ -86,7 +86,7 @@ name (string)::
the +name+ as you wish, effectively renaming the buttons of i3bar.
visible (boolean)::
Defaults to +false+ if not included. +focused+ takes precedence over it,
- however +visible+ is important for more than one monitors.
+ however +visible+ is important for more than one monitor.
focused (boolean)::
Defaults to +false+ if not included. Generally, exactly one of the
workspaces should be +focused+. If not, no button will have the
@@ -129,7 +129,7 @@ i3-msg -t subscribe -m '["workspace", "output"]' | {
# avoids having an empty bar when starting up.
i3-msg -t get_workspaces;
# Then, while we receive events, update the workspace information.
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
}
------------------------------
@@ -139,7 +139,7 @@ i3-msg -t subscribe -m '["workspace", "output"]' | {
#!/bin/sh
i3-msg -t subscribe -m '["workspace", "output"]' | {
i3-msg -t get_workspaces;
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
} | jq --unbuffered -c '[ .[] | select(.name != "foo" or .focused) ]'
------------------------------
@@ -153,7 +153,7 @@ might mean that you are getting an empty bar until enough events are written.
#!/bin/sh
i3-msg -t subscribe -m '["workspace", "output"]' | {
i3-msg -t get_workspaces;
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
} | jq --unbuffered -c '
def fake_ws(name): {
name: name,
@@ -169,7 +169,7 @@ i3-msg -t subscribe -m '["workspace", "output"]' | {
#!/bin/sh
i3-msg -t subscribe -m '["workspace", "output"]' | {
i3-msg -t get_workspaces;
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
} | jq --unbuffered -c 'sort_by(.name) | reverse'
------------------------------
@@ -179,6 +179,6 @@ i3-msg -t subscribe -m '["workspace", "output"]' | {
#!/bin/sh
i3-msg -t subscribe -m '["workspace", "output"]' | {
i3-msg -t get_workspaces;
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
} | jq --unbuffered -c '[ .[] | .name |= . + " foo" ]'
------------------------------
diff --git a/_docs/testsuite b/_docs/testsuite
index ea70664..22e96ab 100644
--- a/_docs/testsuite
+++ b/_docs/testsuite
@@ -76,30 +76,20 @@ used to install the testsuite. Many users prefer to use the more modern
The tests additionally require +Xephyr(1)+ to run a nested X server. Install
+xserver-xephyr+ on Debian or +xorg-server-xephyr+ on Arch Linux.
-.Installing testsuite dependencies using cpanminus (preferred)
+.Installing testsuite dependencies using cpanminus
--------------------------------------------------------------------------------
-$ cd ~/i3/testcases
-$ sudo apt-get install cpanminus
-$ sudo cpanm .
+# Install testsuite system-level dependencies. Xvfb is optional but recommended.
+$ sudo apt-get install xcb-proto cpanminus xvfb xserver-xephyr
+# Install dependencies in ~/perl5 local library
+$ cpanm --local-lib=~/perl5 local::lib App::cpanminus Module::Install
+# Activate the local library
+$ eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
+$ cd ~/i3/testcases/
+$ cpanm .
$ cd ~/i3/AnyEvent-I3
-$ sudo cpanm Module::Install
-$ sudo cpanm .
+$ cpanm .
--------------------------------------------------------------------------------
-If you don’t want to use cpanminus for some reason, the same works with cpan:
-
-.Installing testsuite dependencies using cpan
---------------------------------------------------------------------------------
-$ cd ~/i3/testcases
-$ sudo cpan .
-$ cd ~/i3/AnyEvent-I3
-$ sudo cpan Module::Install
-$ sudo cpan .
---------------------------------------------------------------------------------
-
-In case you don’t have root permissions, you can also install into your home
-directory, see https://michael.stapelberg.de/cpan/
-
=== Mechanisms
==== Script: complete-run
@@ -119,48 +109,57 @@ tests are run under Xvfb.
---------------------------------------
$ cd ~/i3
-$ mkdir -p build && cd build
+$ mkdir -p build
-$ meson ..
+$ meson setup build
+$ cd build
-$ ninja
+$ meson compile
# output omitted because it is very long
-$ cd testcases
-
$ ./complete-run.pl
# output omitted because it is very long
All tests successful.
Files=78, Tests=734, 27 wallclock secs ( 0.38 usr 0.48 sys + 17.65 cusr 3.21 csys = 21.72 CPU)
Result: PASS
-$ ./complete-run.pl t/04-floating.t
-[:3] i3 startup: took 0.07s, status = 1
-[:3] Running t/04-floating.t with logfile testsuite-2011-09-24-16-06-04-4.0.2-226-g1eb011a/i3-log-for-04-floating.t
-[:3] t/04-floating.t finished
-[:3] killing i3
-output for t/04-floating.t:
-ok 1 - use X11::XCB::Window;
-ok 2 - The object isa X11::XCB::Window
-ok 3 - Window is mapped
-ok 4 - i3 raised the width to 75
-ok 5 - i3 raised the height to 50
-ok 6 - i3 did not map it to (0x0)
-ok 7 - The object isa X11::XCB::Window
-ok 8 - i3 let the width at 80
-ok 9 - i3 let the height at 90
-ok 10 - i3 mapped it to x=1
-ok 11 - i3 mapped it to y=18
-ok 12 - The object isa X11::XCB::Window
-ok 13 - i3 let the width at 80
-ok 14 - i3 let the height at 90
-1..14
+$ ./complete-run.pl t/005-floating.t
+Running tests under Xvfb display :99
+Starting 1 Xephyr instances, starting at :100...
+
+Rough time estimate for this run: 9.65 seconds
+
+Writing logfile to 'testsuite-2024-05-01-21-33-45-4.23-28-g5834b7e8/complete-run.log'...
+[:100] i3/testcases/t/005-floating.t: finished
+completed 0 of 1 tests
All tests successful.
-Files=1, Tests=14, 0 wallclock secs ( 0.01 usr 0.00 sys + 0.19 cusr 0.03 csys = 0.23 CPU)
+Files=1, Tests=13, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
Result: PASS
-$ less latest/i3-log-for-04-floating.t
+The slowest tests are:
+ i3/testcases/t/005-floating.t with 0.07 seconds
+
+Test output:
+[:100] i3/testcases/t/005-floating.t: starting
+[:100] i3/testcases/t/005-floating.t: finished
+output for i3/testcases/t/005-floating.t:
+ok 1 - An object of class 'X11::XCB::Window' isa 'X11::XCB::Window'
+ok 2 - Window is mapped
+ok 3 - i3 raised the width to 75
+ok 4 - i3 raised the height to 50
+ok 5 - i3 did not map it to (0x0)
+ok 6 - An object of class 'X11::XCB::Window' isa 'X11::XCB::Window'
+ok 7 - i3 let the width at 80
+ok 8 - i3 let the height at 90
+ok 9 - i3 mapped it to x=20
+ok 10 - i3 mapped it to y=20
+ok 11 - An object of class 'X11::XCB::Window' isa 'X11::XCB::Window'
+ok 12 - i3 let the width at 80
+ok 13 - i3 let the height at 90
+1..13
+
+$ less latest/i3-log-for-005-floating.t
----------------------------------------
If your attempt to run the tests with a bare call to ./complete-run.pl fails, try this:
@@ -172,37 +171,34 @@ $ ./complete-run.pl --parallel=1 --keep-xserver-output
This will show the output of Xephyr, which is the X server implementation we
use for testing.
-===== make command: +make check+
-Make check runs the i3 testsuite.
-You can still use ./testcases/complete-run.pl to get the interactive progress output.
+===== ninja command: +ninja test+
++ninja test+ runs the i3 testsuite.
+You can still use ./complete-run.pl to get the interactive progress output.
-.Example invocation of +make check+
+.Example invocation of +ninja test+
---------------------------------------
$ cd ~/i3
-$ mkdir -p build && cd build
+$ mkdir -p build
-$ meson ..
+$ meson setup build
+$ cd build
-$ ninja
-# output omitted because it is very long
+$ ninja test
+[1/102] Generating config.h with a custom command
+[1/2] Running all tests.
+1/1 complete-run OK 34.39s
-$ make check
-# output omitted because it is very long
-PASS: testcases/complete-run.pl
-============================================================================
-Testsuite summary for i3 4.13
-============================================================================
-# TOTAL: 1
-# PASS: 1
-# SKIP: 0
-# XFAIL: 0
-# FAIL: 0
-# XPASS: 0
-# ERROR: 0
-============================================================================
-
-$ less test-suite.log
+Ok: 1
+Expected Fail: 0
+Fail: 0
+Unexpected Pass: 0
+Skipped: 0
+Timeout: 0
+
+Full log written to i3/build/meson-logs/testlog.txt
+
+$ less latest/complete-run.log
----------------------------------------
==== Coverage testing
diff --git a/_docs/userguide b/_docs/userguide
index d211c1d..8bc5aa1 100644
--- a/_docs/userguide
+++ b/_docs/userguide
@@ -743,8 +743,11 @@ This option determines which border style *new* windows will have. The default
+normal+. Note that default_floating_border applies only to windows which are starting out as
floating windows, e.g., dialog windows, but not windows that are floated later on.
-Setting border style to +pixel+ eliminates title bars. The border style +normal+ allows you to
-adjust edge border width while keeping your title bar.
+Setting border style to +pixel+ eliminates title bars in split layouts. The border style
++normal+ allows you to adjust edge border width while keeping your title bar.
+
+The title bar is always visible in stacking and tabbed layouts, and this cannot be changed
+through configuration.
*Syntax*:
---------------------------------------------
@@ -789,35 +792,18 @@ The "smart_no_gaps" setting hides edge-specific borders of a container if the
container is the only container on its workspace and the gaps to the screen edge
are +0+.
-*Syntax*:
------------------------------------------------
-hide_edge_borders none|vertical|horizontal|both|smart|smart_no_gaps
------------------------------------------------
-
-*Example*:
-----------------------
-hide_edge_borders vertical
-----------------------
-
[[_smart_borders]]
-=== Smart borders
-
-Smart borders will draw borders on windows only if there is more than one window
-in a workspace. This feature can also be enabled only if the gap size between
-window and screen edge is +0+.
++hide_edge_borders+ has replaced the old +smart_borders+ syntax. Use the former
+instead of the latter.
*Syntax*:
-----------------------------------------------
-smart_borders on|off|no_gaps
+hide_edge_borders none|vertical|horizontal|both|smart|smart_no_gaps
-----------------------------------------------
*Example*:
----------------------
-# Activate smart borders (always)
-smart_borders on
-
-# Activate smart borders (only when there are effectively no gaps)
-smart_borders no_gaps
+hide_edge_borders vertical
----------------------
[[for_window]]
diff --git a/docs/hacking-howto.html b/docs/hacking-howto.html
index bd5f360..fecb511 100644
--- a/docs/hacking-howto.html
+++ b/docs/hacking-howto.html
@@ -66,9 +66,9 @@ 1. Building i3
Guide → Compiling a Meson project. In case you’re unfamiliar:
-
$ mkdir -p build && cd build
-$ meson ..
-$ ninja
+
mkdir -p build
+meson setup build
+meson compile -C build
1.1. Build system features
diff --git a/docs/i3bar-workspace-protocol.html b/docs/i3bar-workspace-protocol.html
index b99bb67..d6e47e2 100644
--- a/docs/i3bar-workspace-protocol.html
+++ b/docs/i3bar-workspace-protocol.html
@@ -138,7 +138,7 @@
1.1. Workspace objects in detail
Defaults to false if not included. focused takes precedence over it,
- however visible is important for more than one monitors.
+ however visible is important for more than one monitor.
@@ -211,7 +211,7 @@ 2.2. Re-create the default be
# avoids having an empty bar when starting up.
i3-msg -t get_workspaces;
# Then, while we receive events, update the workspace information.
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
}
@@ -222,7 +222,7 @@ 2.3. Hide works
#!/bin/sh
i3-msg -t subscribe -m '["workspace", "output"]' | {
i3-msg -t get_workspaces;
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
} | jq --unbuffered -c '[ .[] | select(.name != "foo" or .focused) ]'
Important! Make sure you use the --unbuffered flag with jq, otherwise you
@@ -236,7 +236,7 @@
2.5. Sort workspaces in
#!/bin/sh
i3-msg -t subscribe -m '["workspace", "output"]' | {
i3-msg -t get_workspaces;
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
} | jq --unbuffered -c 'sort_by(.name) | reverse'
@@ -264,7 +264,7 @@ 2.6. Append "foo" to the name
#!/bin/sh
i3-msg -t subscribe -m '["workspace", "output"]' | {
i3-msg -t get_workspaces;
- while read; do i3-msg -t get_workspaces; done;
+ while read EVENT; do i3-msg -t get_workspaces; done;
} | jq --unbuffered -c '[ .[] | .name |= . + " foo" ]'
diff --git a/docs/testsuite.html b/docs/testsuite.html
index d5a17ab..75edffd 100644
--- a/docs/testsuite.html
+++ b/docs/testsuite.html
@@ -145,27 +145,19 @@ 3.1. Installing the dependencies
The tests additionally require Xephyr(1) to run a nested X server. Install
xserver-xephyr on Debian or xorg-server-xephyr on Arch Linux.
-
Installing testsuite dependencies using cpanminus (preferred)
+
Installing testsuite dependencies using cpanminus
-
$ cd ~/i3/testcases
-$ sudo apt-get install cpanminus
-$ sudo cpanm .
+# Install testsuite system-level dependencies. Xvfb is optional but recommended.
+$ sudo apt-get install xcb-proto cpanminus xvfb xserver-xephyr
+# Install dependencies in ~/perl5 local library
+$ cpanm --local-lib=~/perl5 local::lib App::cpanminus Module::Install
+# Activate the local library
+$ eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
+$ cd ~/i3/testcases/
+$ cpanm .
$ cd ~/i3/AnyEvent-I3
-$ sudo cpanm Module::Install
-$ sudo cpanm .
+$ cpanm .
-If you don’t want to use cpanminus for some reason, the same works with cpan:
-
-
Installing testsuite dependencies using cpan
-
-
$ cd ~/i3/testcases
-$ sudo cpan .
-$ cd ~/i3/AnyEvent-I3
-$ sudo cpan Module::Install
-$ sudo cpan .
-
-
3.2. Mechanisms
@@ -185,48 +177,57 @@
3.2.1. Script: complete-run
$ cd ~/i3
-$ mkdir -p build && cd build
+$ mkdir -p build
-$ meson ..
+$ meson setup build
+$ cd build
-$ ninja
+$ meson compile
# output omitted because it is very long
-$ cd testcases
-
$ ./complete-run.pl
# output omitted because it is very long
All tests successful.
Files=78, Tests=734, 27 wallclock secs ( 0.38 usr 0.48 sys + 17.65 cusr 3.21 csys = 21.72 CPU)
Result: PASS
-$ ./complete-run.pl t/04-floating.t
-[:3] i3 startup: took 0.07s, status = 1
-[:3] Running t/04-floating.t with logfile testsuite-2011-09-24-16-06-04-4.0.2-226-g1eb011a/i3-log-for-04-floating.t
-[:3] t/04-floating.t finished
-[:3] killing i3
-output for t/04-floating.t:
-ok 1 - use X11::XCB::Window;
-ok 2 - The object isa X11::XCB::Window
-ok 3 - Window is mapped
-ok 4 - i3 raised the width to 75
-ok 5 - i3 raised the height to 50
-ok 6 - i3 did not map it to (0x0)
-ok 7 - The object isa X11::XCB::Window
-ok 8 - i3 let the width at 80
-ok 9 - i3 let the height at 90
-ok 10 - i3 mapped it to x=1
-ok 11 - i3 mapped it to y=18
-ok 12 - The object isa X11::XCB::Window
-ok 13 - i3 let the width at 80
-ok 14 - i3 let the height at 90
-1..14
+$ ./complete-run.pl t/005-floating.t
+Running tests under Xvfb display :99
+Starting 1 Xephyr instances, starting at :100...
+
+Rough time estimate for this run: 9.65 seconds
+
+Writing logfile to 'testsuite-2024-05-01-21-33-45-4.23-28-g5834b7e8/complete-run.log'...
+[:100] i3/testcases/t/005-floating.t: finished
+completed 0 of 1 tests
All tests successful.
-Files=1, Tests=14, 0 wallclock secs ( 0.01 usr 0.00 sys + 0.19 cusr 0.03 csys = 0.23 CPU)
+Files=1, Tests=13, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
Result: PASS
-$ less latest/i3-log-for-04-floating.t
+The slowest tests are:
+ i3/testcases/t/005-floating.t with 0.07 seconds
+
+Test output:
+[:100] i3/testcases/t/005-floating.t: starting
+[:100] i3/testcases/t/005-floating.t: finished
+output for i3/testcases/t/005-floating.t:
+ok 1 - An object of class 'X11::XCB::Window' isa 'X11::XCB::Window'
+ok 2 - Window is mapped
+ok 3 - i3 raised the width to 75
+ok 4 - i3 raised the height to 50
+ok 5 - i3 did not map it to (0x0)
+ok 6 - An object of class 'X11::XCB::Window' isa 'X11::XCB::Window'
+ok 7 - i3 let the width at 80
+ok 8 - i3 let the height at 90
+ok 9 - i3 mapped it to x=20
+ok 10 - i3 mapped it to y=20
+ok 11 - An object of class 'X11::XCB::Window' isa 'X11::XCB::Window'
+ok 12 - i3 let the width at 80
+ok 13 - i3 let the height at 90
+1..13
+
+$ less latest/i3-log-for-005-floating.t
If your attempt to run the tests with a bare call to ./complete-run.pl fails, try this:
@@ -236,37 +237,34 @@
3.2.1. Script: complete-run
This will show the output of Xephyr, which is the X server implementation we
use for testing.
-
make command: make check
-
Make check runs the i3 testsuite.
-You can still use ./testcases/complete-run.pl to get the interactive progress output.
+
ninja command: ninja test
+
ninja test runs the i3 testsuite.
+You can still use ./complete-run.pl to get the interactive progress output.
-
Example invocation of make check
+
Example invocation of ninja test
$ cd ~/i3
-$ mkdir -p build && cd build
+$ mkdir -p build
-$ meson ..
+$ meson setup build
+$ cd build
-$ ninja
-# output omitted because it is very long
+$ ninja test
+[1/102] Generating config.h with a custom command
+[1/2] Running all tests.
+1/1 complete-run OK 34.39s
-$ make check
-# output omitted because it is very long
-PASS: testcases/complete-run.pl
-============================================================================
-Testsuite summary for i3 4.13
-============================================================================
-# TOTAL: 1
-# PASS: 1
-# SKIP: 0
-# XFAIL: 0
-# FAIL: 0
-# XPASS: 0
-# ERROR: 0
-============================================================================
-
-$ less test-suite.log
+Ok: 1
+Expected Fail: 0
+Fail: 0
+Unexpected Pass: 0
+Skipped: 0
+Timeout: 0
+
+Full log written to i3/build/meson-logs/testlog.txt
+
+$ less latest/complete-run.log
diff --git a/docs/userguide.html b/docs/userguide.html
index f12071f..c3b4674 100644
--- a/docs/userguide.html
+++ b/docs/userguide.html
@@ -855,8 +855,10 @@ 4.12. Default border style for new windows
This option determines which border style new windows will have. The default is
normal. Note that default_floating_border applies only to windows which are starting out as
floating windows, e.g., dialog windows, but not windows that are floated later on.
-Setting border style to pixel eliminates title bars. The border style normal allows you to
-adjust edge border width while keeping your title bar.
+Setting border style to pixel eliminates title bars in split layouts. The border style
+normal allows you to adjust edge border width while keeping your title bar.
+The title bar is always visible in stacking and tabbed layouts, and this cannot be changed
+through configuration.
@@ -894,6 +896,8 @@
4.13. Hiding borders adjacent to the screen ed
The "smart_no_gaps" setting hides edge-specific borders of a container if the
container is the only container on its workspace and the gaps to the screen edge
are 0.
+hide_edge_borders has replaced the old smart_borders syntax. Use the former
+instead of the latter.
@@ -906,27 +910,7 @@
4.13. Hiding borders adjacent to the screen ed
-
4.14. Smart borders
-
Smart borders will draw borders on windows only if there is more than one window
-in a workspace. This feature can also be enabled only if the gap size between
-window and screen edge is 0.
-
-
-
-
smart_borders on|off|no_gaps
-
-
-
-
-
# Activate smart borders (always)
-smart_borders on
-
-# Activate smart borders (only when there are effectively no gaps)
-smart_borders no_gaps
-
-
-
-
4.15. Arbitrary commands for specific windows (for_window)
+
4.14. Arbitrary commands for specific windows (for_window)
With the for_window directive, you can let i3 execute any command when it
encounters a specific window. This can be used to set windows to floating or to
change their border style, for example.
@@ -953,7 +937,7 @@
4.15. Arbitrary commands for specific windows (for_window)
commands can be executed at runtime, not config directives, see [list_of_commands].
-
4.16. Don’t focus window upon opening
+
4.15. Don’t focus window upon opening
When a new window appears, it will be focused. The no_focus directive allows preventing
this from happening and must be used in combination with [command_criteria].
Note that this does not apply to all cases, e.g., when feeding data into a running application
@@ -974,7 +958,7 @@
4.16. Don’t focus window upon opening
-
4.17. Variables
+
4.16. Variables
As you learned in the section about keyboard bindings, you will have
to configure lots of bindings containing modifier keys. If you want to save
yourself some typing and be able to change the modifier you use later,
@@ -1000,7 +984,7 @@
4.17. Variables
loaded from the X resource database.
-
4.18. X resources
+
4.17. X resources
[variables] can also be created using a value configured in the X resource
database. This is useful, for example, to avoid configuring color values within
the i3 configuration. Instead, the values can be configured, once, in the X
@@ -1028,7 +1012,7 @@
4.18. X resources
-
4.19. Automatically putting clients on specific workspaces
+
4.18. Automatically putting clients on specific workspaces
To automatically make a specific window show up on a specific workspace, you
can use an assignment. You can match windows by using any criteria,
see [command_criteria]. The difference between assign and
@@ -1130,7 +1114,7 @@
4.19. Automatically putting clients on specific worksp
-
4.20. Automatically starting applications on i3 startup
+
4.19. Automatically starting applications on i3 startup
By using the exec keyword outside a keybinding, you can configure
which commands will be performed by i3 on initial startup. exec
commands will not run when restarting i3, if you need a command to run
@@ -1157,7 +1141,7 @@
4.20. Automatically
The flag --no-startup-id is explained in [exec].
-
4.21. Automatically putting workspaces on specific screens
+
4.20. Automatically putting workspaces on specific screens
If you assign clients to workspaces, it might be handy to put the
workspaces on specific screens. Also, the assignment of workspaces to screens
will determine which workspace i3 uses for a new screen when adding screens
@@ -1193,7 +1177,7 @@
4.21. Automatically putting workspaces on specific scr
-
4.22. Changing colors
+
4.21. Changing colors
You can change all colors which i3 uses to draw the window decorations.
@@ -1290,7 +1274,7 @@
4.22. Changing colors
from single windows outside of a split container.
-
4.23. Interprocess communication
+
4.22. Interprocess communication
i3 uses Unix sockets to provide an IPC interface. This allows third-party
programs to get information from i3, such as the current workspaces
(to display a workspace bar), and to control i3.
@@ -1313,7 +1297,7 @@
4.23. Interprocess communication
[list_of_commands].
-
4.24. Focus follows mouse
+
4.23. Focus follows mouse
By default, window focus follows your mouse movements as the mouse crosses
window borders. However, if you have a setup where your mouse usually is in your
way (like a touchpad on your laptop which you do not want to disable
@@ -1332,7 +1316,7 @@
4.24. Focus follows mouse
-
4.25. Mouse warping
+
4.24. Mouse warping
By default, when switching focus to a window on a different output (e.g.
focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on
LVDS-1), the mouse cursor is warped to the center of that window.
@@ -1351,7 +1335,7 @@
4.25. Mouse warping
-
+
When you are in fullscreen mode, some applications still open popup windows
(take Xpdf for example). This is because these applications might not be aware
that they are in fullscreen mode (they do not check the corresponding hint).
@@ -1388,7 +1372,7 @@
-
4.27. Focus wrapping
+
4.26. Focus wrapping
By default, when in a container with several windows or child containers, the
opposite window will be focused when trying to move the focus over the edge of
a container (and there are no other containers in that direction) — the focus
@@ -1425,7 +1409,7 @@
4.27. Focus wrapping
-
4.28. Forcing Xinerama
+
4.27. Forcing Xinerama
As explained in-depth in https://i3wm.org/docs/multi-monitor.html, some X11
video drivers (especially the nVidia binary driver) only provide support for
Xinerama instead of RandR. In such a situation, i3 must be told to use the
@@ -1448,7 +1432,7 @@
4.28. Forcing Xinerama
Xinerama, instead they are counted up, starting at 0:
xinerama-0,
xinerama-1, …
-
4.29. Automatic back-and-forth when switching to the current workspace
+
4.28. Automatic back-and-forth when switching to the current workspace
This configuration directive enables automatic workspace back_and_forth (see
[back_and_forth]) when switching to the workspace that is currently focused.
For instance: Assume you are on workspace "1: www" and switch to "2: IM" using
@@ -1466,7 +1450,7 @@
4.29. Automatic back-and-forth when switc
-
4.30. Delaying urgency hint reset on workspace change
+
4.29. Delaying urgency hint reset on workspace change
If an application on another workspace sets an urgency hint, switching to this
workspace might lead to immediate focus of the application, which also means the
window decoration color would be immediately reset to client.focused. This
@@ -1488,7 +1472,7 @@
4.30. Delaying urgency
-
4.31. Focus on window activation
+
4.30. Focus on window activation
If a window is activated, e.g., via google-chrome www.google.com, it may request
to take focus. Since this might not be preferable, different reactions can be configured.
Note that this might not affect windows that are being opened. To prevent new windows
@@ -1536,7 +1520,7 @@
4.31. Focus on window activation
-
4.32. Drawing marks on window decoration
+
4.31. Drawing marks on window decoration
If activated, marks (see [vim_like_marks]) on windows are drawn in their window
decoration. However, any mark starting with an underscore in its name (_) will
not be drawn even if this option is activated.
@@ -1553,7 +1537,7 @@
4.32. Drawing marks on window decoration
-
4.33. Line continuation
+
4.32. Line continuation
Config files support line continuation, meaning when you end a line in a
backslash character (\), the line-break will be ignored by the parser. This
feature can be used to create more readable configuration files.
@@ -1569,7 +1553,7 @@
4.33. Line continuation
-
4.34. Tiling drag
+
4.33. Tiling drag
You can configure how to initiate the tiling drag feature (see [tiling_drag]).
@@ -1592,7 +1576,7 @@
4.34. Tiling drag
-
4.35. Gaps
+
4.34. Gaps
Since i3 4.22, you can configure window gaps.
“Gaps” are added spacing between windows (or split containers) and to the screen edges: