Простите за оживление мертвой темы, но вкратце да, это возможно! Кажется, я понял наконец, как использоватьxrandr
.
Я использовалumc
-универсальный модельный калькулятор для вычисления линий мод, но того же можно добиться с помощью cvt
и gtf
. Это не должно иметь большого значения с ЖК-дисплеями.
Вот шаги, чтобы обрезать верхние 100 пикселей дисплея. Измените разрешение в соответствии с вашими настройками.
umc 1920 980 60
Выход:
# 1920x980x60.00 @ 61.080kHz
Modeline "1920x980x60.00" 156.364800 1920 2032 2240 2560 980 984 988 1018 -HSync +VSync
xrandr --newmode SMOL 156.364800 1920 2032 2240 2560 980 984 988 1018 -HSync +VSync
xrandr --addmode eDP-1 SMOL
xrandr --output eDP-1 --fb 1920x980 --panning 1920x980 --mode SMOL
xrandr --fb 1920x980 --output eDP-1 --mode 1920x1080 --transform 1,0,0,0,1,-100,0,0,1 --panning 1920x980 --fb 1920x980
Обратите внимание, что я использовал --fb
до и после вывода. Странно, только потом переместил "вьюпорт" в низ экрана.
Если вы действительно можете использовать HTTP/0.9, то это вам подойдет
printf '%s\r\n\r\n' 'GET my_file' | openssl s_client -connect <my_ip:my_port>
openssl s_client
не является особенно хорошим инструментом для этого, но это можно сделать. Давайте разобьем это на две части. Во-первых, сделать HTTP-запрос, а во-вторых, извлечь контент из ответа.
Самое сложное здесь то, что s_client
закрывает соединение, когда его стандартный ввод закрывается. Поэтому вам нужно держать стандартный ввод открытым, пока соединение не будет закрыто. Основываясь на этом ответе ServerFault , вы можете сделать что-то вроде:
(printf "GET $PATH HTTP/1.0\r\nHost: $HOST\r\n\r\n"; sleep 10) | \
openssl s_client -connect $HOST:443 -quiet) > /tmp/output.tmp
Здесь есть несколько больших ограничений. Во-первых, вам нужно установить достаточное время для sleep
, чтобы передача могла завершиться. Но не так долго, чтобы ждать вечно. Во-вторых, отсутствует обработка перенаправления, поэтому вам нужен URL-адрес, который будет обслуживать данные непосредственно по запрашиваемому вами URL-адресу, а не 302
перенаправлять вас куда-то еще.
Теперь у вас есть /tmp/output.tmp
ответ HTTP, который включает ваши данные и некоторые заголовки. Удалить заголовки сложнее, чем кажется, потому что у вас может быть смесь символов новой строки \r\n
и \n
и вы можете передавать двоичные данные.
Если ваш файл представляет собой текст в стиле Unix (, например, сценарий оболочки ), вы можете избавиться от всех символов \r
и удалить все до первой пустой строки включительно:
tr -d '\r' < /tmp/output.tmp | sed '1,/^$/d' > /tmp/output
Если ваш файл двоичный (, например, исполняемый файл ), вы не можете просто удалить символы \r
. Предполагая, что первые несколько байтов вашего файла довольно уникальны (, скажем, \xF7ELF
в этом примере ), и предполагая, что у вас есть GNU grep, вы можете сделать что-то вроде этого:
SKIP=$(grep -aboF "$(printf "\xf7ELF")" output | head -1 | awk -F: '{print $1}')
dd ibs=1 if=/tmp/output.tmp of=/tmp/output skip=$SKIP