Платформа: alt-education 10.2 - обновленный до Sisyphus Пакет: Шаги: 1. Открыть xfce4-terminal. 2. Вставить команду: cat > test.txt << EOF test EOF 3. В открывшемся уведомлении о потенциально небезопасной вставке выбрать пункт с отключением этого диалогового окна на любой срок и нажать "Вставить" 4. Повторно попытаться вставить приведённую выше команду в терминал. Результат: Окно с предупреждением откроется снова, игнорируя факт, что мы выбрали пункт предотвращающий это действие. Ожидаемый результат: Команда вставится без окна с уведомлением о небезопасной вставке.
Проверка актуальности: ошибка актуальна в xfce4-terminal 1.2.0 и в upstream master. Причина в terminal/terminal-screen.c, функция terminal_screen_paste_unsafe_text(): выпадающий список диалога заполняется переведёнными строками (_(disable_unsafe_past_dialog_texts[i].string)), а выбранный пункт сравнивается с непереведёнными оригиналами: if (g_strcmp0 (combo_text, disable_unsafe_past_dialog_texts[i].string) == 0) В русской локали («Отключить на 5 минут» и т.д.) ни один пункт не совпадает, цикл доходит до DISABLE_PASTE_DIALOG_N, и ни один из вариантов отключения не применяется. В английской локали работает, поэтому upstream этого не замечает. Исправление в одну строку: --- a/terminal/terminal-screen.c +++ b/terminal/terminal-screen.c @@ -2035,7 +2035,7 @@ terminal_screen_paste_unsafe_text (TerminalScreen *screen, combo_text = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (combo)); for (i = DISABLE_PASTE_DIALOG_NOT; i < DISABLE_PASTE_DIALOG_N; i++) { - if (g_strcmp0 (combo_text, disable_unsafe_past_dialog_texts[i].string) == 0) + if (g_strcmp0 (combo_text, _(disable_unsafe_past_dialog_texts[i].string)) == 0) break; } g_free (combo_text); (Ещё надёжнее брать индекс через gtk_combo_box_get_active(), значения enum идут по порядку.) terminal-screen.c с патчем компилируется в контейнере Sisyphus; в GUI не проверял. Имеет смысл отправить в upstream: https://gitlab.xfce.org/apps/xfce4-terminal/-/issues