Используя bash
замена процесса, можно сделать следующее:
make_some_output | tee >(tail -n 2) >(head -n 2; cat >/dev/null) >/dev/null
Обратите внимание, что строки, как гарантируют, не будут в порядке, хотя для файлов дольше, чем приблизительно 8 КБ, они очень вероятно будут. Это сокращение 8 КБ является типичным размером буфера чтения и связано с причиной | {head; tail;}
не работает на маленькие файлы.
cat >/dev/null
необходимо для хранения head
живой конвейер. Иначе tee
выйдет рано, и в то время как Вы будете произведены от tail
, это будет от где-нибудь посреди входа, а не конца.
Наконец, почему >/dev/null
вместо, скажем, перемещения tail
другому |
? В следующем случае:
make_some_output | tee >(head -n 2; cat >/dev/null) | tail -n 2 # doesn't work
head
stdout питается в канал к tail
вместо консоли, которая не является тем, что мы хотим вообще.
Сегодня это довольно легко. Предполагая, что у вас есть следующие макеты, определенные в вашемrc.lua
:
awful.layout.layouts = {
awful.layout.suit.tile,
awful.layout.suit.tile.bottom,
}
С помощью awful.screen.connect_for_each_screen(func)
вы можете вызвать функцию для каждого существующего и созданного -в -будущем экране -. Очень вероятно, что у вас в rc.lua
уже есть такой вызов (например для установки обоев или создания тегов ). В зависимости от вашей конфигурации вам нужно что-то вроде этого:
awful.screen.connect_for_each_screen(function(s)
if s.geometry.width >= s.geometry.height then
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" }, s, awful.layout.layouts[1])
else
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" }, s, awful.layout.layouts[2])
end
end)