ba9df86472
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.
69 lines
2.3 KiB
Python
Executable File
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)
|