Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
i3-layouts
is a small program that enforces dynamic layout on i3 workspace.
i3-layouts
comes with 6 configurable layouts:
vstack
: one main windows with a vertical stack of windows.hstack
: one main windows with an horizontal stack of windows.spiral
: each new windows split the previous one, split direction alternates between
horizontal and vertical.2columns
: two vertical stacks of equally sized windows.3columns
: one main windows with two vertical stacks of windows.companion
: each columns is made of one main window and one smaller window.autosplit
: automatically choose between vsplit/hsplit depending on the focused windows
(inspired by autotiling).Parameters for each one of these layouts is detailed in the Layout section.
Before installing i3-layouts
be sure to have the following installed on your system:
To install, simply use pip
$ pip install --user i3-layouts
To update, again use pip
$ pip install --user i3-layouts -U
i3-layouts
can be started from a terminal
or better yet, launched from the i3 config file:
exec i3-layouts
Configuration is done directly in the i3 config file (usually $HOME/.config/i3/config
).
i3-layouts
reads the entire config file, filter all $i3l
variables and
keeps the associated values as configuration. Note that user defined variables can be used
within $i3l
variables, as they will be replaced by their own value.
To assign a layout to a workspace, use the name of the layout as value for the $i3l
variable,
followed by its parameters and then the targeted workspace name.
Note that parameters are optional. However, if given, they must respect the order described in the Layouts section.
Syntax:
set $i3l [vstack|hstack|spiral|3columns|2columns|companion|autosplit] <param> ... to workspace [workspace name]
Standard layouts from i3 can also be used:
set $i3l [tabbed|splitv|splith|stacking] to workspace [workspace name]
Examples:
set $ws1 1
...
set $i3l vstack to workspace $ws1
set $i3l hstack 0.6 up to workspace $ws2
set $i3l spiral 0.6 to workspace $ws3
set $i3l 3columns 0.66 0.5 2 left to workspace $ws4
set $i3l 2columns right to workspace $ws5
set $i3l companion 0.3 0.4 up to workspace $ws6
set $i3l autosplit to workspace $ws7
It's also possible to dynamically switch the current workspace layout
via the provided i3l
command with the layout name and its parameters as argument.
none
is i3l
first argument, i3-layouts
will stop managing the current workspace layout.Syntax:
i3l [vstack|hstack|spiral|3columns|2columns|companion|autosplit|none] <param> ...
Examples:
i3l vstack 0.6
i3l none
Layout can also be switched with a key binding via i3l
, for example:
bindsym $mod+s exec i3l vstack 0.6
Use notify-send
after the previous command to receive a quick notification of the current layout:
bindsym $mod+s exec i3l vstack 0.6 && notify-send 'Layout vstack'
By default, when moving windows, chances are their position will not match the selected layout.
To keep windows within the layout possible positions, i3-layouts
must manage all move
command.
So instead of configuring i3 with something like:
bindsym $mod+j move left
bindsym $mod+k move down
bindsym $mod+l move up
bindsym $mod+semicolon move right
move
commands can be forwarded to i3-layouts
via i3l
:
bindsym $mod+j exec i3l move left
bindsym $mod+k exec i3l move down
bindsym $mod+l exec i3l move up
bindsym $mod+semicolon exec i3l move right
With this configuration, if a move
command is executed on a workspace managed by i3-layouts
,
the moved window will stay within the layout. If the workspace is not managed by i3-layout
,
i3-layout
will forward the move
command to i3
Because i3-layout
uses marks to keep track of container position, it must know about all
swap commands occurring within a layout.
Like move
commands, swap
commands can be forwarded to i3-layouts
via i3l
:
bindsym $mod+s exec i3l swap container with mark <arg>
Note that currently, only the swap command with mark
is implemented
(so swap container with id <arg>
or swap container with con_id <arg>
will not work).
To swap the focused container with the previously focused one, a custom command is also provided:
bindsym $mod+p exec i3l swap container with previous
Each layout accept some specific parameters. These parameters must be given is the order described below.
One main windows with a vertical stack of windows.
0
and 1
, default 0.5
): ratio of screen width used
by the main windowright
or left
, default right
): vertical stack position
relative to the main windowOne main windows with an horizontal stack of windows.
0
and 1
, default 0.5
): ratio of screen height used
by the window stackup
or down
, default down
): horizontal stack position
relative to the main windowEach new windows split the previous one, split direction alternates between horizontal and vertical.
0
and 1
, default 0.5
):
ratio of width or height used by the previous container at each split,
the remaining is used by the new container.inside
or outside
, default inside
):
whether new container should be added towards the inside of the screen or the outside.Two vertical stacks of equally sized windows. New window position alternates between the first and second stack.
right
or left
, default left
): first stack position
relative to the second stack.One main windows with two vertical stacks of windows.
0
and 1
, default 0.5
):
ratio of screen width used by the main window when only two columns are present0
and 1
, default 0.5
):
ratio of screen width used by the main window when three columns are present. Width left
is distributed equally between the second and third columns0
):
the third columns is created only when the second column reach this number of container.
If 0
is given new container position alternate between the second and third columns.right
or left
, default right
): second column position
relative to the main window. Note that the third column will have the opposite position
(if the second columns is on the left of the main window, the third one will be on the right of
the main window)Each columns is made of one main window and one smaller window (called companion container below).
0
and 1
, default 0.3
):
ratio of screen height used by the companion container for odd column index0
and 1
, default 0.3
):
ratio of screen height used by the companion container for even column indexup
, down
, alt-up
, alt-down
, default up
):
position of the companion container relative to the main window. alt-up
and alt-down
alternate this position for each column, starting respectively at up
and down
for
the first column.Windows are automatically split either vertically or horizontally depending on the focused window dimension.
This layout has no parameters.
i3-layouts
needs to reposition
some if not all containers of a given workspace. i3-layouts
use xdotool
to simulate the recreation of these containers.i3-layouts
use i3wm marks.
More precisely, i3-layouts
marks the first and last container of each workspace.FAQs
Dynamics layouts for i3wm
We found that i3-layouts demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.