惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threat Research - Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
Arctic Wolf
Security Latest
Security Latest
Simon Willison's Weblog
Simon Willison's Weblog
I
Intezer
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
Latest news
Latest news
Help Net Security
Help Net Security
S
Security Affairs
Webroot Blog
Webroot Blog
The Hacker News
The Hacker News
AI
AI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tor Project blog
Forbes - Security
Forbes - Security
Google DeepMind News
Google DeepMind News
AWS News Blog
AWS News Blog
Attack and Defense Labs
Attack and Defense Labs
P
Proofpoint News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
H
Help Net Security
L
Lohrmann on Cybersecurity
S
SegmentFault 最新的问题
Google Online Security Blog
Google Online Security Blog
MongoDB | Blog
MongoDB | Blog
Cyberwarzone
Cyberwarzone
The Last Watchdog
The Last Watchdog
S
Securelist
N
News and Events Feed by Topic
S
Secure Thoughts
F
Fortinet All Blogs
博客园_首页
C
Cybersecurity and Infrastructure Security Agency CISA
量子位
M
MIT News - Artificial intelligence
F
Full Disclosure
T
The Blog of Author Tim Ferriss
T
Tailwind CSS Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ
P
Privacy International News Feed
L
LangChain Blog
Know Your Adversary
Know Your Adversary
C
CERT Recently Published Vulnerability Notes

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как превратить Смарт ТВ в «почти» полноценную рабочую станцию на Linux
XenOnXe54 · 2026-06-26 · via Все публикации подряд на Хабре

Сложный

9 мин

0

Мотивация и размышления

В течение полугода после покупки я определился с тем, что мне нужно от телевизора. Из-за того, что он используется, как монитор для моего ПК, то никаких смарт-функций мне не нужно. От телевизора требуется отображать картинку достаточно хорошо на мой вкус.

Но! В телевизоре есть железо и оно работает, но зачем и почему — непонятно. Как его превратить в то, что будет работать для меня, но не в виде красивых картинок и видео, которые я могу открыть с ПК.

После многочисленных поисков я не нашёл ничего, кроме подключения миниПК всех размеров и форм-факторов (у меня уже так и есть), смены лаунчера (и это тоже есть) или просто удаления нескольких программ.

Нет, значит сделаем сами

Подготовительный этап

  1. Скачивание программ. Их не так много. Основные программы:

    • FLauncher;

    • Shizuku;

    • Termux;

    • Termux:x11;

    • adb (на ПК. Его не просто скачать, а установить!!!).

Всё скачиваем с официальных источников (чаще Git-платформы)! Если используете форки, клоны или аналоги, то степень риска возрастает.

  1. Оборудование.

    • ПК;

    • телевизор;

    • мышь;

    • клавиатура. Тут я отдельно указал периферию, так как она нужна для телевизора. Оборудование просто должно быть.

Тут первое действие, которое мы делаем. Сбрасываем телевизор до заводских настроек и проверяем, как он выглядит и что на нём есть. Может вам уже и так нравится и дальше не нужно? Если нужно, то получаем то, что больше нам ничего не помешает в виде недостатка памяти, как физической, так и оперативной, багов и лагов из-за программ, и идём дальше

Этап подключения

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

Здесь важно понять, как подключиться, что делать и какие этапы. Может потребоваться подключиться к ПК не 1 и не 10 раз по adb и вы должны знать, как это делается.

Нам нужно:

  1. Включить на стороне ТВ отладку по USB.

  2. Подключиться к ТВ по adb.

    • adb connect <IP_АДРЕС_ТВ_ПО_КАБЕЛЮ>:5555

    Тут важно понимать, что ТВ, скорее всего, спросит разрешение. Нужно разрешить и не забыть поставить галку «Всегда разрешать»

  3. Запускаем установку программ с ПК на ТВ.

    • adb install <название_файла.apk>

    Тут ждём заветную строчку Success для каждого файла.

  4. Запустить Shizuku.

    • adb shell /data/app/~~OUkzf_...много символов...-jv/arm/libshizuku.so

    * Эту команду берём из самого Shizuku, который установлен на ТВ. Там есть отдельный пункт для отладки по USB. Тут ждём несколько строчек вывода:

     info: starter begin
     info: killing old process...
     info: apk path is /data/app/~~OUkzf_...много символов...-jv/==/base.apk
     info: starting server...
     info: shizuku_server pid is 17058
     info: shizuku_starter exit with 0 
    

Этап работы с новой системой

На этом этапе мы делаем все необходимые настройки, чтобы система, которую мы будем использовать, работала стабильно и запускалась сама.

  1. Устанавливаем нужные пакеты в Termux

    • pkg install x11-repo root-repo -y

    • pkg update && pkg upgrade -y

    • pkg termux-x11-nightly openbox micro st fastfetch openssh -y

  2. Тестируем запуск системы, которая у нас получилась

    • termux-x11 :1 &

    • export DISPLAY=:1

    • openbox-session &

    Тут отдельно отмечу, что при вводе 1 и 3 команды я нажимал Ctrl+C, чтоб ввести следующую команду. Есть предупреждения, но я на них не обращаю внимание.

  3. Открываем Termux:x11 и видим чёрный экран. Если нажимаем на правую кнопку мыши, то видим контекстное меню. Это лаунчер Openbox.

  4. После того как получили «рабочий стол», можно немного настроить. Идём обратно в Termux.

    • mkdir -p ~/.config/openbox

    • cp /data/data/com.termux/files/usr/etc/xdg/openbox/* ~/.config/openbox/

    • micro ~/.config/openbox/menu.xml

    Тут перед нами конфиг, в который мы добавляем вот это:

    <item label="Terminal">
      <action name="Execute">
        <command>st</command>
      </action>
    </item>
    

    Сохраняем через Ctrl+S и выходим — Ctrl+Q

    • openbox --reconfigure

  5. Запустим ssh-службу для доступа к машине извне (при следующей перезагрузке ТВ или отключении от сети).

    • micro ~/.config/openbox/autostart

    Начало не трогаем, а в самый конец на новой строке пишем sshd &

    Сохраняем через Ctrl+S и выходим — Ctrl+Q

    Далее задаём пароль. Любой. Важно! При вводе пароля вы не видите символов

    • passwd

    После задания пароля запускаем сервис здесь и сейчас без ожидания выключения

    • sshd

  6. Настроим автозапуск нашей системы при включении ТВ с нуля (когда от сети отключаете, а не с пульта выключаете)

    • mkdir -p ~/.termux/boot

    • micro ~/.termux/boot/start-x11.sh

    Это пока пустой файл, в который вы вставляете следующее:

    #!/data/data/com.termux/files/usr/bin/sh
    #Разрешаем просыпаться и чистим старые сессии, если они есть, а потом запускаем новую.
    termux-wake-lock
    rm -f /tmp/.X11-unix/X1
    pkill -f termux.x11
    termux-x11 :1 &
    sleep 3
    #Запускаем графику
    export DISPLAY=:1
    openbox-session &
    sleep 2
    #Делаем вывод автоматически на передний план, чтобы сразу пользоваться.
    am start -n com.termux.x11/com.termux.x11.MainActivity
    

    Сохраняем через Ctrl+S и выходим — Ctrl+Q

    • chmod +x ~/.termux/boot/start-x11.sh

  7. Теперь добавляем чуть-чуть магии в работу всей системы автоматическим запуском того, что запускаться автоматически не должно.

    • pkg install android-tools -y

    • micro ~/.config/openbox/autostart

    Спускаемся на 2 строки ниже последней нашей записи и пишем следующее

    adb connect 127.0.0.1:5555
    adb -s 127.0.0.1:5555 shell /data/app/~~OUkzf_...много символов...-jv/arm/libshizuku.so
    

    * Эту команду берём из самого Shizuku, который установлен на ТВ. Там есть отдельный пункт для отладки по USB.

Теперь у нас есть рабочая система, которая автоматически запускается, поднимает отладку и даёт нам возможность спокойно работать с Android без боязни его уничтожить. И мы не боимся, что пропадёт что-то важное из программ, так как все важные программы мы помним (4 штуки из первого раздела).

Тут стоит отдельно остановиться и отметить, что на данный момент все изменения, которые мы сделали, легко обратимы. Это была самая простая часть.

Перед уходом в следующую часть выключаем телевизор из розетки на 5-10 секунд. Потом включаем и ждём. Примерно через минуту перед вами должен быть чёрный экран с курсором. Нажимаете на правую кнопку мыши и появляется контекстное меню. Нажимаете на ST и открывается окно терминала.

Если что-то работает не так. Возвращаемся к первому пункту всей статьи и проверяем.

Отправляем старую систему отдыхать.

Теперь нам нужно определиться, что лишнее в нашем телевизоре, а что должно остаться. Эти программы удаляемые, но мы их ни в коем случае не удаляем:

  • FLauncher

  • Shizuku

  • Termux

  • Termux:x11

Самый простой способ для начала пройтись в разделе «Настройки» → «Приложения»:

  1. Выбрать конкретные приложения

  2. Открыть информацию нажатием

  3. Нажать на «Disable» или «Отключить» (если есть)

  4. А после этого «очистить данные»

  5. Ниже отключить уведомления

Важно! Идём с начала списка по 4-5 приложений после которых выключаем телевизор, обязательно отключаем от розетки на 5-10 секунд и включаем заново.

Есть небольшой риск не включиться или получить полный сброс.

Очевидно ненужные приложения в самой системе отключили. Но остались приложения, которые отключить или удалить невозможно, но они не нужны, или же приложения, которые непонятны.

И тут нам нужно приложение Canta.

  1. Открываем приложение.

  2. Справа вверху есть символ воронки → нажимаем.

  3. Снимаем галку, которая стоит на системных.

  4. Теперь идём по списку сверху вниз и выбираем то, что не нужно или отключено.

  • Отключено: просто отмечаем и нажимаем на пункт → читаем, что отключили. Больше оптимизация всегда хорошо. Если отключили что-то важное, то запоминаем название и тут же идём включать в настройки.

  • Не нужно: сначала читаем, думаем нужно ли оно нам. Если точно нет, то читаем, думаем ещё раз и потом отмечаем.

  1. После выбора нужных приложений нажимаем на корзину справа снизу.

Важно! Идём с начала списка по 2-3 приложения, после которых выключаем телевизор, обязательно отключаем от розетки на 5-10 секунд и включаем заново.

Есть большой риск не включиться.

Обратите внимание на одну важную деталь: При удалении приложений вы будете выключать телевизор из розетки для проверки целостности системы. Смотрите за запуском графики Termux. Он должен запускаться автоматически без вашей помощи.

Ещё важное уточнение: Когда отключите графику (лаунчер) телевизора, он может ненадолго отключиться и потом включиться. Это нормально. В этом случае вместо стандартного лаунчера вы увидите FLauncher.

Наслаждаемся рабочим Linux и далее всё настраиваем в Openbox по стандартным мануалам из интернета.

Суровая реальность или как это прошло у меня

Если с установкой программ никаких проблем нет, так как это просто этап ввода команд, то вот с Shizuku возникли проблемы, так как я не совсем понимал, как это работает. Я пытался найти пути, где он установлен. Это заняло немало времени и абсолютно ни к чему не привело. После использования команды из самого приложения всё сразу же завелось и больше я проблем не испытывал.

В самом приложении рекомендуется способ с самого устройства по беспроводной отладке, но проблема с ним в том, что, например, на моём телевизоре такого пункта вообще нет и он не появляется даже при подключении к Wi-Fi. И ещё особенность телевизора в том, что он видит сигнал Wi-Fi и даже показывает, что идёт процесс подключения, но больше ничего. В конце он просто вам выдаст ошибку, что не может найти сеть. Как только вы отключите проводной интернет от ТВ, он сразу же подключится к Wi-Fi, если вы ранее пароль задали. Такая странная техника.

Из систем сначала я пытался установить Nix-On-Droid, что вроде бы логично в моём случае, ведь я использую NixOS на основном ПК. И тут оказалось, что на мой ТВ он не встаёт, так как не совместим.

Потом я попробовал proot-distro с Alpine, но он меня обрадовал ошибкой «terminated with signal 11». Я не стал разбираться, так как списков дистрибутивов я не нашёл, да и немного дистрибутивов легковестных для моего случая.

Поэтому я ушёл в сторону использования Termux, как системы.

С самой системой проблем не возникло, так как это «стандартная» Linux-система.

Но проблемы возникла на этапе выбора программ… Сначала я выбрал Alacritty, как эмулятор терминала, но при его запуске в системе быстро заканчивалась память и забито было всё, в том числе и своп. И он часто просто не стартовал. Поэтому был выбран st в стандартном виде. Чем меньше потребление, тем лучше.

Кто-то может возразить, что я не выбрал в качестве оконного менеджера, например, i3, ведь он удобнее для клавиатуры и легче. Тут я спорить не стану и лишь предложу пройти моим путём с заменой openbox.

После того, как система благополучно стабилизировалась, насколько это можно назвать стабильным поведением, началась борьба за память, за любую память. Чем меньше её у ТВ, тем больше она нужна нам.

Для решения вопроса нужно чистить Android, в котором и стоит Termux. И тут самый интересный момент. Не зря я в инструкции указываю на этом моменте сноски, что это делать небезопасно. Это работает как 2 зависимых друг от друга параметра: безопасность действий, количество отключенных/удалённых программ. Чем больше приложений вы уже удалили, тем более небезопасным становится дальнейше удаление. А показателем успеха считается точка, когда вы оставляете только то, что вам действительно нужно.

Мне не нужно было ничего. Я хотел сократить сторону Android максимально, но с возможностью базовых функций устройства, как телевизора. И несмотря на начало статьи, надо признать, что кроме просто включения, мне важно, чтобы я мог, например, переключаться между входами HDMI. И неудача пришла в первые 10 минут, когда я понял, что вижу интерфейс Android и всё работает, но при нажатии на пульте на кнопку «Вход» ничего не происходит, а при открытии настройки через интерфейс телевизора и выборе любого входа пишет «Не удалось открыть источник». И при этом самого Android в списке источников нет. Это нормальное поведение при действиях почти вслепую. А действовал я так, потому что в Canta есть описания многих компонентов Android, которые встречаются в смартфонах, но компоненты ТВ практически не описаны, по крайней мере, у меня система собрана из большинства неизвестных компонентов. А далее было 4 часа плотных раздумий, как выйти из интерфейса Android, т.к. выше в инструкции я описываю, как подготовиться к такому «сюрпризу» с отладкой самого себя через localhost, но у меня не было статьи и не было такого трюка. Трюк появился именно из-за этого.

После того как я нашёл способ вернуть всё обратно, я выяснил, что одна специфичная программа содержит в себе всю логику железа, при очень безобидном названии «LiveTV». Смотря изначально на неё, у меня была только одна мысль, как её удалить и зачем мне в Android TV эта программа, если сам ТВ имеет в базовой функциональности тюнер, антенну и т. д. Эти грабли я успешно использовал по назначению — я на них попрыгал.

После небольшого отката и чистки очевидных приложений, пришло время тяжёлого выбора. Из-за алфавитного порядка выбор сразу встретил меня сверху. Нужно чистить Google сервисы, в том числе и Android TV. И вот тут сильно помогает, что я заранее подумал о его замене и выбрал Flauncher. Меньше него для ТВ я найти не смог, скорее даже минималистичнее. Тут важным моментом было максимальное отсутствие каких-либо настроек, кастомизаций. Мне нужен был только вариант запуска приложения, если я когда-нибудь открою лаунчер. Почему тут это важно, ведь кажется, что мы просто меняем одно на другое? Да, фактически мы меняем, но практически я бы сказал, что просто ставим заглушку в виде Flauncher, чтобы система не сошла с ума и не стала перезагружаться бесконечно (bootloop), так как не видит лаунчер. И тут я бы предложил сразу поставить его, как дефолт, но я этого делать не стал в инструкции, так как для меня это был сильный сигнал того, что мы перешли линию, где всё очень опасно. С этим чувством опасности я дошёл до конца списка и в Canta нашёл 58 отключенных/удалённых компонентов.

Немного цифр и статистики

  1. Доступно всего ОЗУ 1.75ГиБ: До чистки свободно 200 МиБ, после чистки 900 МиБ.

  2. Доступно всего Своп 500МиБ: До чистки свободно 0, После чистки 500МиБ (Да, доступен полностью).

  3. В моей системе «установлено» на момент стабилизации 209 пакетов.

  4. Время исследования и планирования: ~6 месяцев.

  5. Время активных действий: 18 часов с перерывами.

Вывод

Мне было интересно посмотреть на работу с ОС с другой стороны, когда ты не боишься, что что-то сломается. Интересно посмотреть в действии на инструменты, которые ты редко встречал в статьях или на форумах, но никогда это не использовал. Есть ли какой-то в этом смысл? Для меня только развлечение. Я даже не знаю, для чего теперь эту систему использовать. Она просто есть. Я сделал её, потому что могу, а не потому что надо.

Блок вопросов сообществу

  1. Для чего можно использовать эту систему?

  2. Какие ещё инструменты существуют для подобных действий?

  3. Что бы вы заменили в моём списке программ и на что?