Как определить, какая сущность изменяет настройки Xorg DPI?

Команда exitне только завершает сценарий, но также устанавливает exit code, который по соглашению равен нулю для успешного выхода, и какое-то другое целое число для ошибки, поэтому в вашем сценарии ее цель — указать вызывающему (либо другой скрипт/программа, либо пользователю ), что программа завершилась с ошибкой. В bashи подобных оболочках можно просмотреть или запросить код выхода, проверив переменную оболочки $?.

Кстати, у вас проблема с отступами. Предложение elseдолжно быть отсутствующим -вдавленным до того же уровня, что и исходное утверждение if...

0
19.03.2020, 09:37
1 ответ

Благодаря комментариям @mosvy я обнаружил, что виновником является xfsettingsd. В частности, егоxfce_displays_helper_normalize_crtcфункция содержит этот произвольный жестко закодированный -выбор 96 точек на дюйм :

.
    /* The 'physical size' of an X screen is meaningless if that screen
     * can consist of many monitors. So just pick a size that make the
     * dpi 96.
     *
     * Firefox and Evince apparently believe what X tells them.
     */
    helper->mm_width = (helper->width / 96.0) * 25.4 + 0.5;
    helper->mm_height = (helper->height / 96.0) * 25.4 + 0.5;

После того, как я заглушил эту функцию в двоичном файле, заменив ее первый байт инструкцией0xC3(x86/x86 _64 RET), мне больше не навязывали 96 DPI.

Тем не менее, это не полностью долгосрочное -решение, поскольку обновление может перезаписать этот файл, поэтому я должен либо удерживать xfce4-settingsпакет (до apt-mark hold xfce4-settings), либо делать что-то еще, чтобы избежать этого неправильного поведения..

0
28.04.2021, 23:20

Теги

Похожие вопросы