river/contrib/tiled.py
Isaac Freund ba9df86472
command: s/master/main/g (breaking change)
main is a better term to use here for several reasons:

1. It is more accurate: "master" implies that the designated views have
some kind of control over the other views, which is not the case. "main"
better expresses that the difference between the "main" view and others
is one of importance/focus.

2. It is a shorter word. 2 whole characters saved!

3. It reduces the chance of future development time being lost to
good-intentioned people complaining about usage of the word master as
has recently happened with regards to the default git branch name.
2020-12-30 18:15:47 +01:00

69 lines
2.3 KiB
Python
Executable File

#!/bin/env python
from sys import argv
# This is an implementation of the default "tiled" layout of dwm
#
# With 4 views and one main view, the layout looks something like this:
#
# +-----------------------+------------+
# | | |
# | | |
# | | |
# | +------------+
# | | |
# | | |
# | | |
# | +------------+
# | | |
# | | |
# | | |
# +-----------------------+------------+
# Assign the arguments to variables. The order and meaning of the arguments
# is explained in the river-layouts(7) man page
num_views = int(argv[1])
main_count = int(argv[2])
main_factor = float(argv[3])
output_width = int(argv[4])
output_height = int(argv[5])
secondary_count = num_views - main_count
# handle the cases where there are no main or no secondary views
main_width = 0
secondary_width = 0
if main_count > 0 and secondary_count > 0:
main_width = int(main_factor * output_width)
secondary_width = output_width - main_width
elif main_count > 0:
main_width = output_width
elif secondary_count > 0:
secondary_width = output_width
# for each view, output the location/dimensions separated by spaces on a new line
for i in range(num_views):
if i < main_count:
# to make things pixel-perfect, we make the first main and first secondary
# view slightly larger if the height is not evenly divisible
main_height = output_height // main_count
main_height_rem = output_height % main_count
x = 0
y = i * main_height + (main_height_rem if i > 0 else 0)
width = main_width
height = main_height + (main_height_rem if i == 0 else 0)
print(x, y, width, height)
else:
secondary_height = output_height // secondary_count
secondary_height_rem = output_height % secondary_count
x = main_width
y = (i - main_count) * secondary_height + (secondary_height_rem if i > main_count else 0)
width = secondary_width
height = secondary_height + (secondary_height_rem if i == main_count else 0)
print(x, y, width, height)