Bug 16698

Summary: consolehelper требует серьезной доработки
Product: Sisyphus Reporter: Денис Корявов <dkoryavov>
Component: consolehelperAssignee: Nobody's working on this, feel free to take it <nobody>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: cas, evg, kostya.hm, ldv, sem, zerg
Version: unstableKeywords: usability
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Макет consolehelper на Java
none
Актуальная версия макета consolehelper
none
Переделанный интерфейс none

Description Денис Корявов 2008-08-15 12:21:42 MSD
consolehelper идущий в дистрибутиве AltLinux имеет следующие Usability баги:

1. Невозможно ввести пароль более одного раза, что при ошибке заставляет выбирать запускаемый пункт меню повторно. Необходимо иметь возможность вводить пароль суперпользователя без перезапуска, хотя бы, 3 раза. 
2. Сам consolehelper создан с нарушением всех норм не только к usability, но и внешнего вида и создает впечатление "неряшливости": 
 * Абсолютно неинформативный и некорректный заголовок: "Чтобы выполнить [такое-то приложение]" необходима дополнительная информация. Более осмысленным в данном случае будет выглядеть фраза подобная этой: "Введите ваш пароль для выполнения административных задач" или "Для выполнения данной операции требуются привилегии суперпользователя (root). Введите пароль суперпользователя:".
* Фраза "пароль системного администратора (root)" так же некорректна, т.к root - это суперпользователь, но не системный администратор. Ее следует заменить на просто: "Пароль: " (с учетом предыдущего пункта).

3. Поле ввода пароля, должно быть выровнено по правому краю правой кнопки с правой стороны и ограничено фразой "Пароль: " с левой, которая, в свою очередь, выровнена по левому краю. Выравнивание по левому краю следует производить по верхнему тексту. 
4. Иконка "ключи" должна находится в верхнем левом углу формы и отстоять от верхнего и левого края на 10 пикселей с каждой стороны.

Второе окно:
1. Должно иметь размеры первого. 
2. Должно появляться только после ввода 3-го неправильного пароля, до этого, ошибка должна выдаваться в первом окне (например, как это сделано в Ubuntu). 
3. Пункт 4 для первого окна, применим и ко второму.
4. Заголовок окна consolehelper должен быть заменен на что-то более осмысленное.
Например, "Неверный пароль".
5. Абсолютно некорректная фраза "Аутентификация завершилась неудачно" должна быть заменена на что-то более осмысленное. Например, "Невозможно выполнить приложение [такое-то] с правами суперпользователя. Неверный пароль".

Фразы на всех кнопках, в соответствии с требованиями usability должны быть заменены на глаголы в форме инфинитива. Например, "Выполнить" и "Отменить" для первого окна и "Закрыть" для второго. 

Описал все словами. Если потребуется, могу представить скриншоты или нарисовать схему.
Comment 1 Денис Корявов 2008-11-17 15:11:36 MSK
Баг установлен более 3-х месяцев назад и по нему не видно никаких изменений. Будет ли доработан consolehelper? На самом деле вопрос не праздный, если  пользователю владеющему слепым методом печати и знающему терминологию данный баг не критичен, людям с низкой квалификацией в области работы за компьютером и набирающим "одним" пальцем, это высоко критично. 

Comment 2 Andrey Cherepanov 2009-01-23 20:15:42 MSK
Принимаю ошибку на себя и постараюсь исправить.
Comment 3 Andrey Cherepanov 2009-01-23 20:36:44 MSK
*** Bug 17477 has been marked as a duplicate of this bug. ***
Comment 4 Andrey Cherepanov 2009-01-23 20:38:16 MSK
(В ответ на комментарий №0)
> Описал все словами. Если потребуется, могу представить скриншоты или нарисовать
> схему.
Схему не надо, а вот скриншоты было бы хорошо.
Comment 5 Motsyo Gennadi 2009-03-01 23:41:47 MSK
Согласен с предложением. Хотелось бы более внятной работы consolehelper, особенно 3-крайной возможности ввода пароля.
Comment 6 Денис Корявов 2009-03-04 12:23:32 MSK
Created attachment 3348 [details]
Макет consolehelper на Java
Comment 7 Денис Корявов 2009-03-04 12:25:21 MSK
Создал примерный макет, как по моему мнению должен выглядеть и работать consolehelper.Макет написан на Java и не несет никакой полезной нагрузки кроме демонстрации работы, - на нажатие кнопки "Выполнить" всегда отвечает ошибкой ввода (3 раза).
Comment 8 Денис Корявов 2009-03-04 12:32:14 MSK
Created attachment 3349 [details]
Актуальная версия макета consolehelper

Запускать так: java -jar ./consolehelper.jar
Comment 9 Денис Корявов 2009-03-04 12:32:52 MSK
Просьба игнорировать первое вложение как не актуальное.
Comment 10 Andrey Cherepanov 2009-03-04 13:16:05 MSK
Created attachment 3350 [details]
Переделанный интерфейс

Переделал интерфейс, но в диалогах на GTK+ сложно сделать обновление интерфейса на время проверки. Скажите ваше мнение.
Comment 11 Денис Корявов 2009-03-04 14:08:59 MSK
Касательно переделанного интерфейса, есть пара предложений: 

1. Если есть возможность, лучше сделать без окно либо без декораций, либо  диалогом (без возможности изменения размеров). 

2. Учитывая, что дизайн должен "читаться" (как текст) поле "Password:" следует поместить ниже сообщения об ошибке "Bad password. Try again" (т.е сначала сообщается информация что пароль плохой, потом - говорится что его нужно еще раз ввести). 

Если диалоги GTK+ не позволяют сделать обновление дизайна "на лету", можно пойти на такой трюк: сделать "трясущуюся" картинку (дергающуюся по диагонали на пару пикселей вверх вниз) несколько раз, в это время меняя диалоги (скорость должна быть быстрее, чем пользователь может разглядеть это) и, в итоге, вывести нужный диалог на том же самом месте, что и изначальный. 

Если это тоже по каким-либо причинам нереализуемо, то, хотя бы сделать все общение с пользователем в рамках сеанса ввода пароля модальным. Дабы не прерывать причинно-следственную связь. 

В остальном - все отлично.
Comment 12 Andrey Cherepanov 2009-03-05 11:54:09 MSK
(В ответ на комментарий №11)
> Если это тоже по каким-либо причинам нереализуемо, то, хотя бы сделать все
> общение с пользователем в рамках сеанса ввода пароля модальным. Дабы не
> прерывать причинно-следственную связь. 
Он и так модальный (чтобы нельзя было перехватить пароль). Попробуйте сменить фокус ввода ;)

Я склоняюсь к мысли, что делать нужно не диалогом, а обычным окном. Дело в том, что принажатии на кнопку диалог закрывается на момент проверки и пользователь теряется. Кроме того, обработка событий диалога идёт не в рамках основого GTKшного event loop, что приводит к невозможности штатного обновления интерфейса.

Буду работать дальше. ;)
Comment 13 Денис Корявов 2009-03-23 12:05:20 MSK
> Он и так модальный (чтобы нельзя было перехватить пароль). Попробуйте сменить
фокус ввода ;)


Посмотрел эффекты KWin - эффект "Владелец окна" как раз то, чего не хватает consolehelper. Можно подобное организовать?
Comment 14 Денис Корявов 2009-05-05 18:09:19 MSD
> Буду работать дальше. ;)

Есть продвижения? Очень уж хочется видеть новый consolehelper в 5.0.
Comment 15 Денис Корявов 2009-08-20 14:26:45 MSD
Прошло еще 2 месяца... Могу попробовать написать сию функцию на Python, но не знаю как отлавливать системные вызовы... Может кто библиотеку сделает, а к ней "морду" на Python'е или Java (SWT) напишем?
Comment 16 Andrey Cherepanov 2009-08-20 17:56:38 MSD
На правильный компонент. Возможно, стоит рассмотреть возможность перехода на ConsoleKit и PolicyKit.
Comment 17 inger@altlinux.org 2009-08-21 10:53:20 MSD
(В ответ на комментарий №16)
> На правильный компонент. Возможно, стоит рассмотреть возможность перехода на
> ConsoleKit и PolicyKit.
Уже рассматривали. PolicyKit не заменяет consolehelper, он обслуживает только программы специально созданные для dbus ;)
Comment 18 Денис Корявов 2009-09-09 14:38:57 MSD
Андрей, а можно хотя бы загрузить новый GUI для consolehelper? 
Хоть что-то к релизу успеем.
Comment 19 Andrey Cherepanov 2009-09-09 15:19:05 MSD
(В ответ на комментарий №18)
> Андрей, а можно хотя бы загрузить новый GUI для consolehelper? 
> Хоть что-то к релизу успеем.
А он у кого-то есть? У меня только mockup, не натягиваемая на живой код. Если кто-то сделает получше, то пусть даст ссылку на git.
Comment 20 Денис Корявов 2009-09-09 18:23:08 MSD
> А он у кого-то есть? У меня только mockup, не натягиваемая на живой код

Понятно. 

/me пошел рассматривать на замену gksu.
Comment 21 Денис Корявов 2010-05-28 14:32:37 MSD
У меня появился готовый вариант consolehelper (позволяет 3 попытки ввода пароля).  Кому интересно, лежит у меня в git (dkoryavov).
Comment 22 Sergey V Turchin 2010-06-17 09:55:29 MSD
Еще можно написать с использованием pinentry. Тогда UI не придется программировать вообще.
Comment 23 Andrey Cherepanov 2010-06-17 14:15:29 MSD
(В ответ на комментарий №22)
> Еще можно написать с использованием pinentry. Тогда UI не придется
> программировать вообще.
Лучше переходить на ConsoleKit и избавляться от велосипедов.
Comment 24 Andrey Rahmatullin 2010-06-17 14:17:28 MSD
(В ответ на комментарий №23)
> Лучше переходить на ConsoleKit и избавляться от велосипедов.

https://bugzilla.altlinux.org/show_bug.cgi?id=16698#c17
Comment 25 Dmitry V. Levin 2010-07-20 14:41:29 MSD
В 0.2.12-alt3-6-g27ef2e7 геометрия обоих диалогов улучшена, а диалог об ошибке по умолчанию ведёт обратно в диалог аутентификации.
Comment 26 Repository Robot 2010-07-20 15:33:54 MSD
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.