Intereting Posts
Невозможно изменить пароль linux Firewalld переадресация между неработающими зонами Ошибка при выполнении обновления в Debian 9 создание xar-архива с использованием утилиты tar в FreeBSD Не удается получить разрешения доступа к серверу Почасовой cronjob не работает Доккер прав для моего использования? Как правильно обрабатывать SIGINT для интерактивных и неинтерактивных скриптов Bash? Найдите процесс, который использует максимальное использование ЦП, если использование ЦП составляет более 60%? Как ограничить входящую и исходящую полосу пропускания на конкретный хост на CentOS и с него Почему эхо не называется как / bin / sh -c echo foo выводить что-нибудь? Linux обзор T фоновая работа Является ли упорный зомби-процесс признаком ошибки? Разрешен ли общий (POSIX) язык оболочки в скриптах / etc / sysconfig / *? Или есть ограничения? rsyslog использует разные шаблоны для хранения журналов

Можно ли получить доступ к фреймбуферу, чтобы поместить пиксель на экран из командной строки?

Я не уверен, что это единственный возможный способ, но я читал, что для того, чтобы поместить один пиксель на экран в выбранном вами месте, нужно что-то написать в место, называемое framebuffer. Поэтому мне стало любопытно, если можно войти в это место и написать что-нибудь в нем, чтобы отобразить один пиксель где-то на экране.

да, вне X-сервера, в tty, попробуйте выполнить команду:

cat /dev/urandom >/dev/fb0 

если colourfull pixels заполняет экран, то ваша настройка в порядке, и вы можете попробовать сыграть с этим маленьким скриптом:

 #!/usr/bin/env bash fbdev=/dev/fb0 ; width=1280 ; bpp=4 color="\x00\x00\xFF\x00" #red colored function pixel() { xx=$1 ; yy=$2 printf "$color" | dd bs=$bpp seek=$(($yy * $width + $xx)) \ of=$fbdev &>/dev/null } x=0 ; y=0 ; clear for i in {1..500}; do pixel $((x++)) $((y++)) done 

где функция «пиксель» должна быть ответом … пишите пиксель на экран, изменяя значения байтов (сине-зеленые-красные-альфа) на смещение xy устройства / dev / fbX, которое является буфером кадров для видеокарты.

или попробуйте рисовать один пиксель лайнера (желтый на x: y = 200: 100, если ширина равна 1024):

 printf "\x00\xFF\xFF\x00" | dd bs=4 seek=$((100 * 1024 + 200)) >/dev/fb0 

UPDATE: этот код работает даже внутри X-сервера, если мы просто настроим X для использования фреймового буфера . указав fb0 внутри /usr/share/X11/xorg.conf.d/99-fbdev.conf