Установка разрешения на мониторе через терминал на Ubuntu 18+

Привет. Я тут запилил простой скрипт для установки кастомного разрешения экрана на Ubuntu.

Однажды, я столкнулся с такой проблемой. Есть два 100% одинаковых монитора. Оба работают в максимальном разрешениии 1600×900. Оба подключены к родным видео-выходам на материнке. Однако один монитор подключен к D-Sub напрямую, а второй — через переходник HDMI <-> D-Sub. И картинка на втором по умолчанию всегда в 1920×1080, которое монитор героически сжимает в свои 1600×900 (и которое внезапно отсутствует в настройках). В результате на экране мелкое невнятное мыло, но судя по всему, картинка выдаётся в настоящем FullHD.

Ниже — получившийся скрипт. На самом деле, я уже не один год использовал его упрощённую версию для себя. Просто я причесал его, чтобы выложил в паблик. Всё работает хорошо. Тебе остаётся только выставить положения мониторов в настройках ОС (и там, кстати, появится новый недостающий режим). Скрипт можно использовать также и с одним монитором.

Опубликовано
В рубрике blog Отмечено ,

Обработка аргументов в bash-скриптах без getopt и getopts

Привет. Я в свободное время для рабочих целей пишу один проект, который состоит из кучи bash-скриптов. Есть одна точка входа, которая из cli принимает аргументы. Этот скрипт подключает остальные куски функционала через source. В этих кусках описаны функции, которые должны обрабатывать разные аргументы, нужные только для чего-то конкретного.

В первой версии проекта я просто явно передавал $1, $2, $N сверху вниз, в другие функции. Это было топорным решением, и оно работало, потому что возможные аргументы и их порядок был известен и прост. Но эстетически это было отвратительно. Чтобы мне было приятно смотреть на код, нужно было сильно усложнить вообще всё, чтобы всё стало намного проще.

Итак, я должен принимать от пользователя разные аргументы в разные функции, при этом я хочу дать пользователю возможность передать на вход:

  • длинные аргументы без значений:
    ./script.sh --foo --bar
  • длинные аргументы со значениями:
    ./script.sh --foo=bar
  • короткие аргументы без значений:
    ./script.sh -a -b -c
  • короткие аргументы со значениями:
    ./script.sh -a avalue -b bvalue
  • комбинировать короткие любые короткие аргументы в одно слово:
    ./script.sh -abc bvalue
  • всё перечисленное выше — одновременно!
  • порядок аргументов не должен иметь значения
  • иметь доступ к любому из них откуда угодно в любой момент времени.
Опубликовано
В рубрике blog Отмечено

Прошивка Irbis TZ722

Прошивка

TZ722

Попал ко мне в руки этот бюджетный планшет. Случилась с ним окказия: выключается сразу после загрузки. Заряжается исправно. А куплен был несколько недель как.

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

Поэтому решил начать с прошивки. Но вот незадача — нигде её нет. Вообще. Нигде. Нет ни инфы как прошивать, ни прошивки. Под словом нигде следует понимать, в первую очередь, 4pda и официальный сайт. Там есть TZ721 и TZ723, а TZ722 нет ни в каталоге, ни в разделе поддержки (там его и по серийнику не найти).

Опубликовано
В рубрике blog Отмечено

Instagram API без бюрократии, токенов и вот этого всего

Не знаю много ли статей на эту тему и насколько это широко известно. Просто сохраняю полезную заметку для себя и тебя.

Наверное, ты будешь удивлён, но для работы с апи инсты не надо вообще ничего оформлять, иметь аккаунт разработчика и прочее. Надо отправить один лишь обычный GET-запрос, только в конце адреса подставить ?__a=1. Смотри на моём примере.

Чтобы получить инфу о профиле, используй такой линк:

Опубликовано
В рубрике blog Отмечено ,

Не работает микрофон гарнитуры на Ubuntu

Суть проблемы: при подключении гарнитуры с TRRS-коннектором звук в наушниках был, но звук с гарнитуры система не получала, т.к. гарнитура вовсе не определялась как устройство ввода, поэтому приходилось зависать во всяких скайпах с телефона через ту же гарнитуру.

Решение оказалось элементарным.

Опубликовано
В рубрике blog Отмечено