consolehelper идущий в дистрибутиве AltLinux имеет следующие Usability баги: 1. Невозможно ввести пароль более одного раза, что при ошибке заставляет выбирать запускаемый пункт меню повторно. Необходимо иметь возможность вводить пароль суперпользователя без перезапуска, хотя бы, 3 раза. 2. Сам consolehelper создан с нарушением всех норм не только к usability, но и внешнего вида и создает впечатление "неряшливости": * Абсолютно неинформативный и некорректный заголовок: "Чтобы выполнить [такое-то приложение]" необходима дополнительная информация. Более осмысленным в данном случае будет выглядеть фраза подобная этой: "Введите ваш пароль для выполнения административных задач" или "Для выполнения данной операции требуются привилегии суперпользователя (root). Введите пароль суперпользователя:". * Фраза "пароль системного администратора (root)" так же некорректна, т.к root - это суперпользователь, но не системный администратор. Ее следует заменить на просто: "Пароль: " (с учетом предыдущего пункта). 3. Поле ввода пароля, должно быть выровнено по правому краю правой кнопки с правой стороны и ограничено фразой "Пароль: " с левой, которая, в свою очередь, выровнена по левому краю. Выравнивание по левому краю следует производить по верхнему тексту. 4. Иконка "ключи" должна находится в верхнем левом углу формы и отстоять от верхнего и левого края на 10 пикселей с каждой стороны. Второе окно: 1. Должно иметь размеры первого. 2. Должно появляться только после ввода 3-го неправильного пароля, до этого, ошибка должна выдаваться в первом окне (например, как это сделано в Ubuntu). 3. Пункт 4 для первого окна, применим и ко второму. 4. Заголовок окна consolehelper должен быть заменен на что-то более осмысленное. Например, "Неверный пароль". 5. Абсолютно некорректная фраза "Аутентификация завершилась неудачно" должна быть заменена на что-то более осмысленное. Например, "Невозможно выполнить приложение [такое-то] с правами суперпользователя. Неверный пароль". Фразы на всех кнопках, в соответствии с требованиями usability должны быть заменены на глаголы в форме инфинитива. Например, "Выполнить" и "Отменить" для первого окна и "Закрыть" для второго. Описал все словами. Если потребуется, могу представить скриншоты или нарисовать схему.
Баг установлен более 3-х месяцев назад и по нему не видно никаких изменений. Будет ли доработан consolehelper? На самом деле вопрос не праздный, если пользователю владеющему слепым методом печати и знающему терминологию данный баг не критичен, людям с низкой квалификацией в области работы за компьютером и набирающим "одним" пальцем, это высоко критично.
Принимаю ошибку на себя и постараюсь исправить.
*** Bug 17477 has been marked as a duplicate of this bug. ***
(В ответ на комментарий №0) > Описал все словами. Если потребуется, могу представить скриншоты или нарисовать > схему. Схему не надо, а вот скриншоты было бы хорошо.
Согласен с предложением. Хотелось бы более внятной работы consolehelper, особенно 3-крайной возможности ввода пароля.
Created attachment 3348 [details] Макет consolehelper на Java
Создал примерный макет, как по моему мнению должен выглядеть и работать consolehelper.Макет написан на Java и не несет никакой полезной нагрузки кроме демонстрации работы, - на нажатие кнопки "Выполнить" всегда отвечает ошибкой ввода (3 раза).
Created attachment 3349 [details] Актуальная версия макета consolehelper Запускать так: java -jar ./consolehelper.jar
Просьба игнорировать первое вложение как не актуальное.
Created attachment 3350 [details] Переделанный интерфейс Переделал интерфейс, но в диалогах на GTK+ сложно сделать обновление интерфейса на время проверки. Скажите ваше мнение.
Касательно переделанного интерфейса, есть пара предложений: 1. Если есть возможность, лучше сделать без окно либо без декораций, либо диалогом (без возможности изменения размеров). 2. Учитывая, что дизайн должен "читаться" (как текст) поле "Password:" следует поместить ниже сообщения об ошибке "Bad password. Try again" (т.е сначала сообщается информация что пароль плохой, потом - говорится что его нужно еще раз ввести). Если диалоги GTK+ не позволяют сделать обновление дизайна "на лету", можно пойти на такой трюк: сделать "трясущуюся" картинку (дергающуюся по диагонали на пару пикселей вверх вниз) несколько раз, в это время меняя диалоги (скорость должна быть быстрее, чем пользователь может разглядеть это) и, в итоге, вывести нужный диалог на том же самом месте, что и изначальный. Если это тоже по каким-либо причинам нереализуемо, то, хотя бы сделать все общение с пользователем в рамках сеанса ввода пароля модальным. Дабы не прерывать причинно-следственную связь. В остальном - все отлично.
(В ответ на комментарий №11) > Если это тоже по каким-либо причинам нереализуемо, то, хотя бы сделать все > общение с пользователем в рамках сеанса ввода пароля модальным. Дабы не > прерывать причинно-следственную связь. Он и так модальный (чтобы нельзя было перехватить пароль). Попробуйте сменить фокус ввода ;) Я склоняюсь к мысли, что делать нужно не диалогом, а обычным окном. Дело в том, что принажатии на кнопку диалог закрывается на момент проверки и пользователь теряется. Кроме того, обработка событий диалога идёт не в рамках основого GTKшного event loop, что приводит к невозможности штатного обновления интерфейса. Буду работать дальше. ;)
> Он и так модальный (чтобы нельзя было перехватить пароль). Попробуйте сменить фокус ввода ;) Посмотрел эффекты KWin - эффект "Владелец окна" как раз то, чего не хватает consolehelper. Можно подобное организовать?
> Буду работать дальше. ;) Есть продвижения? Очень уж хочется видеть новый consolehelper в 5.0.
Прошло еще 2 месяца... Могу попробовать написать сию функцию на Python, но не знаю как отлавливать системные вызовы... Может кто библиотеку сделает, а к ней "морду" на Python'е или Java (SWT) напишем?
На правильный компонент. Возможно, стоит рассмотреть возможность перехода на ConsoleKit и PolicyKit.
(В ответ на комментарий №16) > На правильный компонент. Возможно, стоит рассмотреть возможность перехода на > ConsoleKit и PolicyKit. Уже рассматривали. PolicyKit не заменяет consolehelper, он обслуживает только программы специально созданные для dbus ;)
Андрей, а можно хотя бы загрузить новый GUI для consolehelper? Хоть что-то к релизу успеем.
(В ответ на комментарий №18) > Андрей, а можно хотя бы загрузить новый GUI для consolehelper? > Хоть что-то к релизу успеем. А он у кого-то есть? У меня только mockup, не натягиваемая на живой код. Если кто-то сделает получше, то пусть даст ссылку на git.
> А он у кого-то есть? У меня только mockup, не натягиваемая на живой код Понятно. /me пошел рассматривать на замену gksu.
У меня появился готовый вариант consolehelper (позволяет 3 попытки ввода пароля). Кому интересно, лежит у меня в git (dkoryavov).
Еще можно написать с использованием pinentry. Тогда UI не придется программировать вообще.
(В ответ на комментарий №22) > Еще можно написать с использованием pinentry. Тогда UI не придется > программировать вообще. Лучше переходить на ConsoleKit и избавляться от велосипедов.
(В ответ на комментарий №23) > Лучше переходить на ConsoleKit и избавляться от велосипедов. https://bugzilla.altlinux.org/show_bug.cgi?id=16698#c17
В 0.2.12-alt3-6-g27ef2e7 геометрия обоих диалогов улучшена, а диалог об ошибке по умолчанию ведёт обратно в диалог аутентификации.
consolehelper-0.3.0-alt1 -> sisyphus: * Tue Jul 20 2010 Dmitry V. Levin <ldv@altlinux> 0.3.0-alt1 - consolehelper.8: described /etc/security/console.apps/ (closes: #10181). - Changed error notification dialog to return back to authentication dialog by default (closes: #16698). - Changed internal dialog layout to make dialogs look better.