тайтлы, терминал, скрин и маленькие радости.

Нарисовал таки себе precmd() и preexec() корректно работающие с эскейп последовательностями и и прочими спецсимволами.
Вроде пустячок, но уже два человека проявили интерес, поэтому посчу.
Read more... )

wm'овское

Все-же alt+tab иногда хороший инструмент.
Он прекрасно ложиться на паттерн “быстро свитчимся между двумя окнами”.
Возможно неплохо работал-бы и на большем количестве окон, но так как нету никакой возможности удобно поменять порядок переключения окон, больше чем для пары, приходиться много тыкать в кнопки. Это что-то сродни алгоритму маляра Шлемиэля.

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

Дальше всё сильно зависит от конкретной реализации. Кто-то поднимет поап, но не поднимет родителя, кто-то поднимет родителя (и соответственно попап), но отдаст фокус родителю. Вариантов много - большинство совсем бестолковые.

Хороший альттаб (фастсвитч?) не должен делать различия между попапом и его родительским окном, считая их за единое целое. И должен отдавать фокус попапу.


И ещё о переключении.
Недавно прикрутил себе вывод в заголовок терминала и скрина текущий хост, юзера, путь и команду - если что-то выполняется.
Сразу вылезли два бага:

Во первых не очень интересно наблюдать тайтлы вроде “kleptos@ep:~ fg”, ещё надо будет вкурить как на момент запуска preexec() узнать какой именно job вытягивается в foreground.

Во вторых - оказывается Инкрементальный поиск окон тоже может делать совсем не то, что от него ожидаешь.
Например дёргаем из консоли gliv. Получаем два окна, сам глив с заголовком “GLiv - 2007-11-20-222255_1024x768_scrot.png” и терминал с “kleptos@ep:~ gliv .”.
При глупом strstr() поиске есть хороший шанс неглядя написав gliv<enter> попасть в терминал, что совсем не то, чего хотелось.

Думаю хороший iswitch должен учитывать wm_class с приоритетом над (_net_)?wm_title.

Интересно, а выделение болдом совпавшей части и превьюхи нужны? нет?

хоткеи?

Таск - хочется получить доступ к любому из постоянно используемых приложений быстро - нажатием пары клавишь.

Проблема - клавиатурные комбинации run-or-raise не то что-бы очень маштабируются, штук 8-10 это наверное уже предел.
Read more... )

wm - фокус

Достаточно частые грабли - запускаю что-то долго грузящееся, по быстрому переключаю фокус на терминал/редактор что-бы сделать что-то одно-двух секундное.
В процессе этого что-то долго грузящийся процесс как раз доходит до кондиции и вылезает на передний план закрывая собой нужное окно и переводя на себя фокус. Аннонит.

Что делать пока так и не понял.
Вариантов в принципе вижу пока два.
Первый вариант работает если после реквеста на запуск сменили фокус - просто не рэйзим и не даём фокуса новому окну. Паттерн для меня типичный, но не всегда преобладающий - иногда хочется кнопки по нажимать в окно у которого фокус уже есть.

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

Как всегда преследует смутное чувство “что-то где-то не доглядел”.
Any ideas?

sawfish

Написал для sawfish свой run-or-raise, о котором подумывал уже достаточно долго.
Если кто не помнит - я хотел что-бы один и тот-же хоткей запускал программу если она ещё не запущена и поднимал её окно, если уже.

Штука действительно оказалась крайне удобной. Совершенно не надо помнить где окно и есть-ли оно вообще. Перестаёшь терять терминалы на десктопах, практически полностью отпадает необходимость тыркаться в альтаб.
Впрочем я не первый, кому пришла в голову подобная идея. Только для sawfish есть как минимум две реализации. И ещё несколько для fvwm.

Сначала я использовал Iswitch-window, но он не умеет выбирать окна по WM_CLASS. Потом попробовал Gimme, но тот как-то странно не срабатывал пока хоть раз не переключишь фокус.

Как ни крутись - надо было писать что-то своё. Хотя очень не хотелось. Так-как внутри sawfish свой мозговыносительный диалект лиспа.
А ещё у него есть интерактивный шелл, да. Но ошибки он показывать не умеет. Совсем. Если ничего не сказал - значит где-то косяк.
Документация одним html’ем - продукт info2html. Сам язык с кучей wtf.
Как обычно всё весело :D.

В общем с такими приколами на обычную переключалку (60 loc) ушло чистого времени где-то часов 12-16, растянутые недели на две-две с половиной.

Хотя, в некоторой степени, оно того стоит. Возможность изменить любой аспект поведения wm или реализовать всё что угодно - это кул, очень даже.

gobby

Потестил gobby (0.4.1).


Желание проверить что такое “многопользовательский текстовый редактор” настигло часа в два ночи и единственный язык который знали мы с партнёром оказался похапеньчик, но выбирать не приходилось )

Блокнот

Появилось ощущение, что понял чего хочу от блокнота.
Vim как редактор - потому-что скорость.
Гиперссылки - опять-же скорость и необходимость связывать документы.
Версионирование - бэкапы абсолютно всех версий, даже тех записей, что уже снесены.
Навигация - автоиндексы по категориям и/или тэгам (желательно как-нибуть кастомизируемо).
Поиск - по всем записками и по всем версиям, желательно с каким-либо адекватным ранжированием, хотя с этим сложно.
Ну и конечно надо заюзать vimdiff mode для просмотра правок.

Теперь вот думаю из чего это всё слепить.
Как система контроля версий - скорее всего rcs, спасибо [info]kolloid‘у за наводку.
Автоиндексы, тэги и гиперссылки так как мне надо вроде не умеет никто.
На поиск возможно покатит греп - но на этот раз я как-то в нём не уверен.

Хуже всего - у меня нет никакого желания писать что-либо на этом ужасном скриптовом языке вима. Хотя после питона он уже не кажеться настолько ужасным :D.
Правда привязывать Блокнот к тому-же питону совсем не хотелось-бы.

Хорошие фичи, как вино, должны выдерживаться.

Интересно, существует-ли хоть один графический браузер умеющий метки? Которые умеет даже самый захудалый консольный pager текстов уже последние лет 20.

Ну удивлюсь, если нет. Они наверное очень осторожны в добавлении нового.

информационная перегрузка говорите?

kleptos@localhost ~ $ ls .liferea_1.2/cache/feeds/ | wc -l
147

Мда, осталось померять сколько ентрисов в день сыпеться.

много вещей сразу.

Сложно это когда много вещей вокруг и сразу.
Если думать одновременно только о чём-то одном сразу станет легче, а качество результата значительно возрастёт.

Но чёрт возьми, как это сложно - отучиться думать сразу о множестве вещей.

Фильтрационное

Завёл в liferea тэг shit, если из одного фида за месяц туда попадёт 5 постов - накуй фид. Потому-что надо это всё как-то фильтровать, моск уже на справляетсо.

структурирование конфигов

Я всё чаще структурирую конфиги по аналогии с викистатьями.
Выделяю разделы и подразделы, пишу мало комментариев, но уделяю особое внимание структуре.

И чаще всего помогает, конфиг после такого рефакторинга воспринять легче.

А у вас?

Всё чётче ощущаю необходимость в каком-нить knowlege discovery и knowlege minig софте.
Собсно что-то такое мы наверное и хотим с [info]neithere в [info]ru_acme сделать, но тулз мне нужен уже сейчас, а там всё в planning.

И wiki, даже с модными semantic примочами в виде банальной фасетной классификации не спасают. Особенно для дискаверинга внешних ресурсов.

дела интерфейсные, vol2

Ниже - дамп мыслей, для фиксации и последующей доработки.
All suggestions welcome.

Я думаю, что начинаю понимать чего хочу.
Я не хочу задумываться над тем, на каком десктопе, что лежит.
Я не хочу думать о том, запущено нужное мне сейчас приложение или нет.
Я хочу моментально, без лишних действий, получать доступ к тому, что мне нужно.
Я хочу избежать дублирования запущеных приложений.

Пока в голову успела забрести достаточно специфическая идея.
Раскидка приложений по десктопам - попытка выделить различные ролевые блоки.
Здесь я сёрфю, здесь отлаживаю очередной говноскрипт, здесь чатюсь в jabber,

Наиболее простой способ такой организации - автоматическое размещение приложений на заранее заданных десктопах, что уже делают некоторые wm. А если ваш нет - попробуйте devil’s pie.

Уже хорошо, теперь труднее утонуть в мешанине окон, труднее её сделать.

Но я не хочу помнить, где тот десктоп, который мне сейчас нужен. У меня есть дела поважнее.

И тут, я надеюсь, мне поможет моя бредовая идея.
Перетащить концепцию ДокАйконов на хоткеи.
Когда я нажимаю хоткей я получаю приложение. Вне зависимости от того, запущено оно или нет.
Если запущено - оно рейзитсья и меня переносит на нужный десктоп, если не запущено, меня переносит на нужный десктоп и запускает таск.

Тут правда есть одна тонкость - часто удобно держать запущенными несколько экземпляров одной программы, терминалов например, для разных задач.
Мне кажеться нужно формализовать этот экспиренс. Вполне можно назначить хоткей для терминала с ролью ‘ssh’ или терминала с ролью ‘mutt’.

дела интерфейсные.

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

С другой стороны - айконбар windomaker’a не намного лучше. Он только жёстко задаёт размер отдельного элемента. но в замен просит много места. А при большом количестве окон всё только ухудшается. Мешанина иконок ничем не лучше мешанины в таскбаре. Но таскбар по сути одномерен, все элементы стоят в ряд. А айконбар с доком обычно разносятся по разным плоскостям.

Концепция переключения окон по alt+tab, ещё большее зло. Его не спасают даже превьюшки окон, рисуемые берилом. Жуткая вешь.

Совершенно непонятно куда копать и где искать.