пятница, 9 декабря 2016 г.

Блог переезжает..



    и это последняя запись на данной площадке. Гуглу "спасибо".

воскресенье, 27 ноября 2016 г.

К предыдущей заметке: sk1-wx

Пожалуй sk1 стоит реабилитировать: у автора есть 2е сборки- с Tk и с wxgtk2.8, в репозиториях  Leap - первая, а адекватная - вторая:


и в sk1-wx уже есть базовые настройки приложения, а интерфейс выглядит куда адекватнее и не глючит.

Пробуем нарисовать иконку ;)

Сразу скажу, что я не художник, не дизайнер и вообще рисовать не умею. Но мне понадобилось несколько довольно простых иконок, которые было бы несложно изобразить в векторе, а потом экспортировать в подходящий формат. Ну по крайней мере я так думал))

Первым делом попробовал обойтись без вектора, силами растрового редактора (не GIMP! его у меня просто нет). Через 40 минут мучений стало понятно, что метод тупиковый: либо попиксельное редактирование еще минимум столько же времени, либо все-таки вектор. Ну Ок, вектор- так вектор!

Inkscape. Не имеет вообще никаких настроек - а как же, настоящим художникам это не нужно! Что, скажете у обычной кисти и холста есть какие-нибудь опции? ;) Непривычно, но может быть так и нужно? Но не тут-то было: попытки задать параметры текста намертво забуксовали, после указания гарнитуры текст начинал набираться в том же самом поле (!), а клик обратно по холсту делал что-то совсем не то. Это наверно можно было бы счесть багом, но это не могло быть багом, поскольку Inkscape застрял на версии 0.91 еще с того момента, как я.. короче, проект несколько лет как уже прекратил всякое развитие.

Тогда на память пришла XaraLX. В принципе довольно неплохой, хотя тоже давно уже мертвый редактор. Не могу вспомнить, что же там оказалось не так, но тем не менее оказалось..

Кажется оставался только незнакомый мне sk1 на Питоне. На первый взгляд он выглядел самым адекватным из этой тройки, НО! опять.. сусевская сборка, точнее текст всех менюшек внезапно оказался размером в пикселов 5 - прочитать еще можно, но делать это уже никакого желания. И снова то же поведение со шрифтами: можно задать шрифт-размер-написание, но параметры становятся доступны только после активации режима ввода текста - только вот после всех крутилок с панели режим ввода снова неактивен, а клик обратно по холсту- тадам!- сбрасывает все установленное в дефолт (который настроить тоже нельзя, т. к. приложение никаких настроек не имеет, как и Inkscape). Нет, конечно если сначала набрать текст с этим не настраиваемым дефолтом, а уже после отредактировать свойства.. ну как езда на автомобиле задним ходом)) но я пожалуй воздержусь от этого.

В итоге просто были взяты слегка похожие иконки из какого-то иконпака. Кстати, справится с данной задачей можно было помощью рядового 2-D CAD, вообще не связываясь со всем этим "софтом для художников".  Морали сия басня не имеет, хотя если подумать..



среда, 23 ноября 2016 г.

ROX-filer, заметка вторая.

Возвращаясь к этому отличному ФМ, по сравнению с которым всякие наутилусы и thunar`ы выглядят громоздко и неповоротливо, хочется отметить, что особенности UI описывать довольно сложно, оно сделано так грамотно, что кажется будто его и нет. Лучше внимательно прочитать мануал - да-да, к нему идет немаленький такой мануальчег ;) Только сейчас сподобился на это, и нашел новые для себя фичи, например возможность сохранения/загрузки выделения.
  • {!}  Являясь главным элементом среды ROX, умеет отрисовывать рабочий стол и своеобразные панели ("Panels work just like the pinboard, except that they run along the edge of the screen").

Lazpaint 6.4.1 x64



Авторы не озаботились сборкой rpm-пакета, но это не проблема:
  1. идем сюда
  2. забираем lazpaint_6.4.1_linux64.deb
  3. распаковываем куда-нибудь в ~/bin/
  4. все! установка не требуется, только чуть подправить 1 строку в скрипте запуска

суббота, 19 ноября 2016 г.

Лабиринты

Поиск литературы по программированию на русском поневоле сделает философом любого :) И вот задумался на вопросом обучения в целом: что это? Ну вот например институт и что там происходит - и что должно происходить? Думаю, это можно сравнить с лабиринтом. Обойти его весь невозможно в принципе, он бесконечен, но можно пересечь, попав из точки А в точку Б. Естественно, зайти, ужаснуться и выйти не считается. Это путешествие из точки А в точку А. Можно долго и бесцельно блуждать по лабиринту, если у тебя нет проводника (учителя, преподавателя, гуру). Проводник может тебя провести, а если нужно- и протащить от входа до выхода, а твоя задача- за это время изучить маршрут и ориентиры на пути. Вот так и только так и должно происходить обучение в ВУЗах, только чего-то я этого там не наблюдал. Возможно потому, что конструкция совковой системы образования все-таки порочна в самой основе..

пятница, 18 ноября 2016 г.

Онлайн-мануалы

http://manpages.org - довольно симпатичная и удобно сделанная страничка с мануалами, в отличии от старых монстров типа linux.die.net и прочих. Встречаются в том числе и на русском языке, но таких мало.

воскресенье, 13 ноября 2016 г.

Dunnart- редактор блок-схем


Приложение с сомнительным названием, на убожеском Qt5, не имеющее никаких настроек, с неудобным интерфейсом- но зато работающее, а это уже немало.
Особенности:
  • собирал из исходников, никаких экзотически пакетов не потребовалось, но сборка шла чертовски долго,
  • добавлять надписи объектов можно только в диалоге Свойства, это очень неудобно, настроек для текста никаких нет, поэтому менять его размер можно только изменением масштаба всей блок-схемы,
  • только однострочный текст,
  • очень скудная библиотека готовых элементов,
  • тип соединительных линий можно задавать опять же только через диалог Свойства, и по умолчанию они не имеют стрелки,
  • теоретически все диалоги можно перетаскивать и закреплять в любом месте любой панели, но на практике делать это очень запарно и- снова!- неудобно ("прекрасный" тулкит Qt5 во всей красе),
  • есть расширенные возможности выравнивания объектов, но с этим не разбирался, т. к. мне это не нужно.
 В общем, из всех приложений, созданных на основе Qt5, я ни в одном не видел адекватного интерфейса, и тот же Yast2- наглядный тому пример. Но поскольку редактор блок-схем вещь довольно нужная, а выбирать на сегодня практически не из чего, то придется помучиться с этим.

суббота, 5 ноября 2016 г.

Firefox 49.0.2 жрет CPU !!!11


"Доступен корректирующий выпуск Firefox 49.0.2, в котором исправлена порция ошибок, внесены функциональные изменения и .."

и видимо добавлена новая порция, иначе сложно объяснить тот факт, что в режиме простоя браузер отжирает сколько-то там процентов CPU.
Ситуация совершенно ненормальная: открыто несколько вкладок (< 5), весь левый js прибит с помощью расширений, но на индикаторе в трее видна постоянная загрузка чуть ли не на 20% с периодическими пиками до 70%. htop показывает, что это именно firefox.
Вариантов решения проблемы несколько, первый долгий и в целом бессмысленный: открыть очередной багрепорт, услышать, что "это не мы а все ваши расширения" и "перезапустите в safe mode" (и зачем он мне нужен в безопасном режиме интересно?), в итоге дождаться выхода следующей версии, в которой возможно этих проблем не будет.. Второй вариант куда проще и приятнее: откатится на версию 48 и залочить апдейты в Ясте. Его-то я и выбрал- и пока что проблемы с загрузкой CPU не наблюдаю.
 
* На данный момент это не совсем второй вариант, т. к. в данном случае это не rpm-пакет, а просто архив с https://ftp.mozilla.org/pub/firefox/releases/ чтобы иметь возможность сравнить с версией 49.
** Можно попробовать использование renice
  • UPD В Firefox 50.0 все это пофиксили (и даже больше чем только это).

вторник, 25 октября 2016 г.

Как правильно готовить Emacs и не потеряться в (своем) коде

Частенько после правки конфигов новичок может столкнутся с ситуацией "все сломалось, АААА!!!" Да, это чертовски обидно и порой даже вызывает бешенство. Слабаки иногда не выдерживают и сбегают на саблайм, но какое нам до них дело. Поэтому я приведу несколько простых рекомендаций, следуя которым трудности будут минимальны.
  1. Модульный конфиг. Не нужно пытаться засунуть все в ~/.emacs - со временем объем своего кода неминуемо вырастет, поэтому лучше всего изначально разбивать его на отдельные независимые модули (файлы), а в ~/.emacs кроме самого необходимого добавить только одну строку вроде
    (dolist (file (directory-files "~/.emacs.d/modules/" 'absolute ".*\.el$")) 
     (load-file file))
  2. Поиск по собственному коду. Это тоже очень важно, для чего удобно написать отдельную функцию, которая очень пригодится при желании отрефакторить какую-нибудь вещь или просто вспомнить, как же черт побери оно работает?? ;)
    • UPD: Но на самом деле все уже давно написано, поэтому стоит воспользоваться правильным решением: файлы тегов
  3. Не надеяться на --debug-init. По крайней мере мне эта фича оказалась почти бесполезна, т. к. не видно ни номера строки ни человекочитаемого контекста ошибки.
  4. Версионность файлов конфигурации. Простейшим способом будет добавить автоматическое копирование-при-сохранении файла, в отдельную папку и с меткой времени. Впрочем, такое решение полезно еще во множестве случаях.
* К п.1 - т. е. теперь, в случае какой-нибудь ошибки достаточно отключить (закомментировть) автоматическую загрузку модулей и грузить их вручную, по одному. Как правило этого бывает достаточно чтобы увидеть и пофиксить свой косяк.
** Советы приведены без кода, но не потому, что у меня его нет, а потому, что во-первых он не идеален, а во-вторых такие вещи нужно делать только самому и только так, как тебе это удобно, ИМХО.

суббота, 22 октября 2016 г.

Emclip - менеджер буфера обмена на elisp

Устав от глюков Parcellite я его снес, и решил написать свой clipboard manager, с блекджеком ;) Единственный до сих пор не решенный вопрос - это автоматическая синхронизация с системным буфером CLIPBOARD, это можно легко сделать по таймеру, но такой вариант меня не устраивает, а других пока не нашел*. Поэтому на данный момент вручную, с помощью emacsclient (я просто добавил кнопочку "+" в windowmenu флюксбокса).

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

Код:
;; Emacs Clipboard manager
;; (and notification system also)
(defun find-frame-by-name (name)
  (let ((fl (frame-list)))
    (while (not (string= name
    (frame-parameter (car fl) 'name)))
      (setq fl (cdr fl)))
    (car fl)))
(defun emclip-autohide ()
  "Focus out hide emclip"
  (let ((name (frame-parameter (selected-frame) 'name)))
    (when (string= name "*emclip*")
      (modify-frame-parameters (find-frame-by-name "*emclip*")
          '((visibility . nil)))
      (remove-hook 'focus-out-hook 'emclip-autohide))))
(defun emclip-autohide-add ()
  "Timeout hide emclip"
  (run-at-time "5 sec" nil (lambda ()
        (add-hook 'focus-out-hook 'emclip-autohide))))
(defun emclip-initialize ()
  "Create emclip buffer"
  (get-buffer-create "*emclip*")
  (display-buffer-pop-up-frame "*emclip*" '((pop-up-frame-parameters (title . "*emclip*")
             (width . 30)
             (height . 30)
             (border-width . 0)
             (vertical-scroll-bars . right)
             (scroll-bar-width . 4)
             (unsplittable . t)
             (menu-bar-lines . 0)
             (tool-bar-lines . 0))))
  (with-current-buffer "*emclip*"
    (toggle-truncate-lines)
    (setq mode-line-format nil)
    (insert "\n\nПривет! Сегодня " (format-time-string "%d.%m.%y") "\n"))
  (emclip-autohide-add))
(defun emclip-show ()
  (interactive)
  (modify-frame-parameters (find-frame-by-name "*emclip*") '((visibility . t)))
  (select-frame-by-name  "*emclip*")
  (emclip-autohide-add))
(defun emclip-sync ()
  "Get system clipboard manual (emacsclient), sorry"
  (emclip-show)
  (let ((s (substring-no-properties (gui-get-selection 'CLIPBOARD 'TEXT))))
    (with-current-buffer "*emclip*"
      (when (not (string-match-p (concat "^" s)
     (buffer-substring 1 (point-max))))
       (goto-char 1)
 (insert "\n\n▶ " s)
 (goto-char 1)))))
(defun emclip-insert (text)
  "Function for various notifications, test"
  (with-current-buffer "*emclip*"
    (goto-char 1)
    (insert "\n▶ " text "\n"))
    (emclip-show))
;; Start
(run-at-time "5 sec" nil 'emclip-initialize)
;;; EOF

После потери фокуса окно Emclip будет скрыто, после вставки c emclip-sync снова показано, можно так же вызвать его с помощью emclip-show, чтобы посмотреть сохраненное. Еще можно использовать и для системных уведомлений с помощью emclip-insert вместо notify-send - последняя уведомления-то показывает, но только ничерта их не сохраняет, бывает неудобно.
Ну и конечно бесполезная картинко:



пятница, 21 октября 2016 г.

Новое в Emacs 25

Теперь Emacs ненавязчиво подсказывает вам по функциям: при наборе например строки
(run-at-time "10 sec" nil 
можно наблюдать интерактивную подсказку "чо дальше писать-то?":


По-моему очень круто! Именно чего-то подобного тут и не хватало.

среда, 19 октября 2016 г.

сmdExplorer- для тех, кто не любит терминал

Случайно набрел на прикольную программку: https://sites.google.com/site/jvinla/cmdexplorer


В принципе, мануалы можно читать где угодно- в терминале, в браузере (как?- читайте man man, какая зверская шутка!), или с помошью такой вот симпатичной морды, которая особенно удобна в случае, если ты не знаешь, что именно тебе нужно и где его искать.

У автора в архиве даже есть готовый бинарник но! собран он под 32-bit, а нам нужно под 64, поэтому придется пересобрать (см. файл readme там же, дел на несколько секунд). Понадобится установленный компилятор Vala.

Firefox: мой набор расширений

Список создан автоматически, с помощью одного экстеншена из этого списка ->
Набор вполне самодостаточен, причем с таким комплектом никакие жалкие Adblock`и мне даром не нужны! И Носкрипты кстати тоже.

Может показаться, что это "мноха!", но это не так: если убрать из списка всякие твики интерфейса Firefox, отключенные и редко используемые дополнения, то можно заметить, что по тяжелых дополнений там собственно и нет. Ваще нет ;)

понедельник, 10 октября 2016 г.

Первый выпуск Emacs без Столлмана и прочие баги

Emacs 25.1 теперь просто плюет на ваши настройки, например на шрифт по умолчанию, ХА-ХА-ХА. Разбираться в gnuтом  списке рассылки у меня лично нет ни малейшего желания, но вот например: https://lists.gnu.org/archive/html/bug-gnu-emacs/2016-09/msg00658.html

Gnome-keyring-daemon.. тут тоже достаточно геморроя, в основном за счет через жопу написанной документаци, основные источники которой - это как не странно и Арчвики и даже официальная Гномовики. Ну что, вперед:
  1. В папке ~/.gnome2 никаких файлов 'login keyring' давно уже нет, потому как они уже черт знает сколько времени лежат в ~/.local/share/keyrings/
  2. Не нужно никуда добавлять строки запуска gnome-keyring-daemon вроде такой
    gnome-keyring-daemon --start --components=pkcs11,secrets,gpg

    - за вас уже все добавлено дистрибутив, черт возьми! Для проверки каждый может смотреть /etc/pam.d/common-auth-pc,  /etc/xdg/autostart/, etc. == все давно уже сделано через PAM по дефолту!!
  3. И еще гора устаревшей чуши на первых страницах выдачи, которую я даже не буду комментировать. Естественно, речь идет только про Leap 42.1, как там в бубунте мне параллельно.

суббота, 1 октября 2016 г.

fbpanel и немного напильника ;)

В целом очень приятная панелька, написанная на Сях, и конфигурационный файл у нее тоже прост и понятен. Может также настраивается и через гуй (fbpanel --configure), но у меня чегот не вышло, поэтому воспользовался труЪ правкой конфига. Фичей конечно больше, чем у родной флюксбоксовой.

Кстати, у того же автора на Гитхабе еще несколько достойных утилит: xtrlock-pam и ndnd. Вот насчет последнего - небольшой косячек, главное окно с сообщениями открывается черт знает где, большей частью за нижним краем монитора :) Но на Fluxbox это фиксится парой строк в файле правил для окон ~/.fluxbox/apps. Нужно будет как-нибудь отрепортить пожалуй.

среда, 28 сентября 2016 г.

Фанатам nano

А мне этот ваш нано никогда не нравился. Зато вот например есть ne:


Но назвать его именно так было большой ошибкой))) В смысле, найти про него что-то в гугле будет весьма непросто. Впрочем, официальной документации вполне достаточно.

Что умеет помимо стандартных функций? Ну например:
  • клавиши и меню полностью настраиваются
  • автодополнение слов по шорткату
  • автоотступ, подсветка синтаксиса и парных скобок
  • аналог буферов Емакса - т. е. можно открыть сразу несколько документов и переключаться между ними
  • запуск команд оболочки прямо из редактора (!) 
В целом, все сделано адекватно и по человечески.

воскресенье, 25 сентября 2016 г.

bashrun2

Это лаунчер, конфигурационный файл которого (и большая часть самого bashrun2) написаны на bash. По сути, оно запускает полноценный терминал [xterm] в однострочном режиме, что дает пользователю целую кучу разных ништяков:
  • шорткаты в стиле Emacs или Vim,
  • возможность дописывать свои функции,
  • выполнять полноценные shell-команды прямо из лаунчера, и естественно с автокомплитом,
  • остальное описано в комментариях в bashrun2.rc
Для работы нужен xterm, подружить сабж с более "модными" эмуляторами терминала мне не удалось, но это скорее из разряда хотелок- xterm входит в состав Leap по умолчанию.

~/.config/bashrun2/bashrun2.rc
### Первым делом нужно скопировать
### cp /etc/xdg/bashrun2/bashrun2.rc ~/.config/bashrun2/
--------------------------------------------------------

# Terminal colors. Ignored if empty or not set. 
      --foreground 'grey90'
      --background 'grey10'
### См. доступные цвета для xterm-256color в /usr/share/X11/rgb.txt
...
# Additional command line options to the terminal:
      --options '-fa "Droid Sans Mono:size=16" -uc'
### Установить шрифт, размер шрифта и вид курсора, man xterm
...
+configure-emacs-mode () {
### В общем-то там же и описание, man readline
### т. е. '\e' = Esc, '\C' = Ctrl, '\M' = Alt
Happy hacking!


* Естественно, bashrun2 не обрабатывает desktop-файлы, юзеры бубунты и минта фпечали))
** Rpm-пакет есть в репозиториях Leap 42.1 

воскресенье, 11 сентября 2016 г.

И в завершение темы автомонтирования USB-девайсов: Udiskie

Остановлюсь на сабже. Это такая иконка в трее, которая может показывать оповещения (настраивается), автоматически монтировать (настраивается) внешние носители, в том числе запароленные, и открывать каталог для просмотра (по клику). Эдакая обертка к udisks на питоне. На первый взгляд все идеально. но не все))
  1. При записи всех опций в конфиг, да даже просто при создании конфигурационного файла начинает падать. Почему- не знаю, в питоне не разбираюсь вообще. Решение: записать основные опции в командную строку.
  2. Выдает путь к флешке в виде file:///home/user/ .. а Rox-filer например такого формата пути не понимает. Решение: однострочник, который отрезает лишнее в начале пути.
В общем, я наконец доволен ;)

Как собрать?
Забираем  на https://github.com/coldfix/udiskie, далее python setup.py bdist_rpm, все!

суббота, 3 сентября 2016 г.

Ротфусс/ Имя ветра

Короткое, но тем не менее впечатляющее интервью Патрика о том, как и почему у него ушло 15 лет чтобы написать "Имя ветра": link

Bricscad, #*$$$!

Установил напосмотреть. Как блин хомячки работают в ЭТОМ?? Дальше- только матюги:
  • удаление сегмента кривой сделано откровенно через жопу (в Компасе любой сегмент удаляется в 1 клик мышки)
  • где черт побери направляющие??? (в Компасе- в один клик по кнопке на панельке)
  • как черт побери настроить кнопки мыши?? Этот пункт есть в меню настройки (левая+Ctrl, левая+Shift, ..), но он не работает. В результате для вращения 3D-детали пользователю нужно 1. включить специальный режим "вращение"; 2. повернуть деталь; 3. выключить режим вращения :)) Это уже за гранью разумного...
  • работа с инструментом Подобие/Offset может быть описана только непечатными словами
  • да что там Подобие, когда глючит даже обычный Прямоугольник: при его создании неожиданно и совершенно рандомно пропадает фокус с динамического размера высота/ширина - и фсе, его больше не задать и не переключиться на другой даже Tab`ом
  • модулем Листовой металл пользоваться решительно невозможно
  • вишенкой на этом торте из говна является то, что после изменения дефолтных настроек на адекватные оно начинает падать в 3D-режиме
Как ни смешно, но этот "мегапродукт" сливает Компасу-3D абсолютно по всем параметрам и может быть рекомендован только autocadнутым на всю голову мазохистам :)) Если в Bricscad и есть какие-нибудь фичи и плюсы, то эта гипотетическая ложка меда банально тонет в бочке дерьма.

    *  У знающих пользователей непременно вызовет ухмылку мигание и долгая перерисовка интерфейса (1-2 сек.!) после добавления новой иконки на любую панель инструментов. Ну и вообще, в сабже перетаскивание панелей порой чревато непредсказуемыми эффектами, закрепить их кстати тоже нельзя ;)


UPD ради объективности:
  1. При использовании гребаного фирменного "квадро-меню" команды обрезки начинают вести себя адекватнее, но нигде не сказано, что между одной и той же командой на панели и в к.меню есть разница (одной и той же.. есть разница.. шизуха!)
  2. Удалять сегменты в один клик все-таки можно, но только на полилинии. При этом однако прямоугольник полилинией не считается (шизуха^2).

пятница, 2 сентября 2016 г.

Еще про [авто]монтирование USB-девайсов

Пожалуй самым простым и адекватным способом будет использовать pmount.
Пример:

#!/bin/sh
for i in /dev/sd[d-z]
# sda, sdb и sdc у меня являются жесткими дисками, исключаем их
do  pmount -u 000 --sync $i  && echo $i mounted
done

Опция --sync тут на случай выдергивания флешки без отмонтирования.
Ах да, чтобы не ругалось, нужно в /etc/pmount.conf дописать
    not_physically_logged_allow = yes

В случае отсутствия /media (как например в Leap 42.1) этот каталог должен быть создан вручную, иначе тоже работать не будет.

среда, 31 августа 2016 г.

Не затирайте /root/.bash_history!

Если ты не параноик,  то не удаляй историю рута - как минимум, это бывает забавно посмотреть по прошествии нескольких месяцев, а уж тем более года! ;) Особенно, если чего-то не помнишь..

UPD:   http://stackoverflow.com/questions/19454837/bash-histsize-vs-histfilesize

четверг, 4 августа 2016 г.

Что-то ржу.. :)

Хомячки и Вивальди, Vivaldi и хомячки.. Еще в самом начале они натянули джаваскриптный "скин" на Chrome (-ium), прошло больше года.. И вот у меня возникла надобность периодически (редко и не на долго) запускать типа-современный-продвинутый браузер, и поэтому- а ващет наугад- ткнул пальцем в Vivaldi. Ну и немного интересно было, да.

Итак, что же изменилось больше чем за год? Да ровным счетом нихрена! АХАХАХА! Ну может быть js-UI стал тормозить немного меньше, все! О боги, эта отколовшаяся от старой Оперы щеп.. ээ, команда - они ни на что не способны. Ну кроме пиара разве что. У меня невольно возникает вопрос: а есть ли вообще среди них хоть один программист?)) Не из этих, альтернативно ориентированных веб-разработчиков, а из настоящих, на чем-нибудь из семейства C*? И вот что странно: а ведь хомячье реально ведется на это! Ебать лохи я поражен этим обстоятельством! Морда на джаваскрипте- это просто треш и угар, но ладно уж, можно было бы и потерпеть, если бы.. что? Под капотом там точно такой же движок, что и в нынешней Опере или Google Chrome. Так простите получается что разница только в "морде" (которая вообще-то шлак и только имитирует старую Оперу) и боковой панельке, на которой так и не появилось ни удобного почтового клиента ни RSS-агрегатора??

среда, 3 августа 2016 г.

Неплохая темная тема для Emacs, от которой совершенно не устают глаза.

Эдакий "ночной режим": firebelly theme

 - весьма Ок. Все дело в контрасте, а не в темном или светлом фоне. Я предпочитаю темный, и не потому, что это "по-хакерски", нет :) А потому, что для устройства, излучающего свет (т. е. монитора) это логично. Но не логично для поверхности, отражающей свет (лист бумаги).

суббота, 30 июля 2016 г.

Еще про artist-mode, в качестве простого редактора блок-схем

Про artist-mode я уже упоминал, в нем вполне можно делать блок-схемки. А на их как известно нужны текстовые надписи))  И вот тут незадачливого рационализатора ожидает засада!  Стандартная функция "Вставить текст" вам за одно и услужливо отредненит его в ascii-арт, набрать с клавиатуры несложно, но придется гонять курсор стрелочками: все 3 кнопки мыши уже заранее забиндены!
  • Левая указывает начало новой фигуры (и начинает ее рисовать)
  • средняя показывает быстрое меню выбора инструментов рисования (кстати, очень удобно)
  • правая у нас как стирательная резинка.
С этим нужно что-то делать! Я решил перебиндить правую, чтобы просто-переставляла-курсор-куда-нужно. Пришлось погуглить, но вроде Ок:

;;; Artist mode
(defun artist-set-mouse (EVENT)

   (interactive "e")
   (mouse-set-point EVENT))
(add-hook 'artist-mode-hook (lambda () 
                              (define-key artist-mode-map [down-mouse-3] 'artist-set-mouse)
                              (define-key artist-mode-map [mouse-3] 'artist-set-mouse))) 

Теперь можно и порисовать диаграммки. Возможно, странно выглядит выбор самого Emacs для этих целей, но поскольку рисую-то для себя, то вполне Ок. Не ставить же ради этой довольно-таки простой задачи какой-нибудь прости б-же офес?? Единственное, чего пожалуй не хватает - это стрелок на концах линий..

пятница, 29 июля 2016 г.

Взломанные Небеса

С отзывами на художественные произведения всегда сложно: про крутое и достойное не знаешь как и начать, а писать про всякую ерунду в принципе не имеет смысла. Так вот, с одной стороны "Взломанные Небеса" Робертсона редкий нынче представитель сплава киберпанка и НФ, а с другой стороны все-таки до шедевра не дотягивает. Его можно прочитать не отрываясь за один раз, но перечитывать уже захочется вряд ли. Из несомненных плюсов то, что в начале книги автор не пытается ничего разжевывать "для дебилов" и избегает неуместных и занудных вводных, а сразу бросает читателя непосредственно в действие - подход, который я весьма уважаю. Если сразу ничего не понятно, но уже неинтересно и нет желания разбираться, то зачем тогда вообще читать книгу?

Техническая терминология в романе приемлема, но.. не идеальна, или же дело в посредственном переводе? Что же до метафор, аналогий и прочих выразительных средств именно киберпанка, то имхо в конце все все съезжает к какому-то излишне буквальному и натуралистичному сюру)) У Стросса например подобное хотя бы читается прикольно и местами с ухмылкой, а вот Робертсон немного не дотягивает. В остальном к сюжету почти нет претензий, за исключением "богов" и какого-то охренительно человекоподобного ИИ, но это уже было бы спойлером. Опять же у Бэнкса в "Культуре" все смотрится посерьезнее и куда основательнее что ли. Впрочем, в последнее время киберпанк/технопанк находится в глубокой заднице, так что сойдет и Эл Робертсон :)

UPD Так же не будет спойлером добавить, что автор знатно постебался над современными реалиями вроде "хомячков из соцсетей", за что отдельный респект! 

вторник, 19 июля 2016 г.

Раскидываем окна по рабочим столам одним движением мышки.

В Xfce пункт "Переместить на рабочий стол №" зарыт в меню окна, неудобен и не интуитивен. То ли дело перемещать движением мыши: мышка вправо- на рабочий стол справа, влево.. И это можно сделать! Добавить шорткат для вызова функции, движение мышки и.. Код конечно "грязен", но это первое, что пришло в голову:
#!/bin/sh
# Разбрасываем окна движением мышки!
location () {
    desktop=$(wmctrl -d | grep '*' | cut -d ' ' -f1)
    eval $(xdotool getmouselocation --shell | grep -o 'X=[0-9]*')
    p1=$X
    sleep 0.3
    eval $(xdotool getmouselocation --shell | grep -o 'X=[0-9]*')
    p2=$X
    if ((p2-p1 > 0))
      then m=1
      else m=-1
    fi
    let d=$desktop+$m
    echo ${d#-}
}
wmctrl -r :ACTIVE: -t $(location)
И в завершение добавить индикацию направления перемещения, например с помощью gtkdialog3 или aosd-cat, или даже notify-send, на выбор.

воскресенье, 17 июля 2016 г.

Парсинг веба на Emacs Lisp

Наверно достаточно было бы указать этот репо на Гитхабе: zweifisch/enlive - один крутой китаец практически все сделал за остальных. Поэтому приводить какой-то дополнительный быдлокод будет излишне, разве что некоторые заметки по ходу пьесы.

'enlive-text' позволяет получить собственно текст из сырых (raw) результатов, а 'enlive-attr' отдает атрибуты, например нам нужен только "a href" - URL ссылки:
  (enlive-attr (enlive-query el [a])
el - просто некий элемент HTML-документа, в данном случае первая попавшаяся ссылка в блоке.

Сжимать, сжимать, сжимать! В результате парсинга некоторых сайтов на выходе страшная каша с десятками пробелов и табуляций подряд. Требуется что-то такое:
  (replace-regexp "\t" " " nil 1 (point-max))
  (replace-regexp "\s+" " " nil 1 (point-max))
  (replace-regexp "\n\s" "" nil 1 (point-max))

А если что-то обновилось? Вот тут удобно считать хеш от блока - встроенная функция md5.

 Ну а как хранить результаты? Sqlite, или может быть mailbox (MH)? Но победила лень ;) В обычном файле *.org - и это оказалось чертовски удобно (собственно, для того оно и было придумано).

И главный вопрос: а нафига все это надо?? ;)
Ну, тут прямо скажем все просто. Некоторые нехорошие пи@@ы не делают лент RSS на своих сайтах - либо тупо не умеют, либо говноконтент в лентах новостей не протолкнуть. А я часто брезгую туда ходить и бесполезно тратить свое время. Зато у нас есть компьютеры, которые способны обрабатывать по нужным алгоритмам практически любую информацию. Тем более уж текстовую. Тем более какой-то рунет ;)

суббота, 16 июля 2016 г.

Подсветка в Edebug

https://github.com/ScottyB/edebug-x

Подсвечивает текущую строку и главное брекпойнты. И еще фичи, см. линк.

среда, 13 июля 2016 г.

Wanderlust- работа со списком сообщений.

После ответа через веб-интерфейс Gmail сообщение окажется во входящих Wanderlust. Для перемещения его в отправленные- шорткат "o" (wl-summary-refile) и дальше стрелками вверх-вниз перебираем список локальных ящиков или начинаем вводить его имя, например "+se.." Любое подобное действие является только пометкой, подтвердить/выполнить- "x".

Ответить- "a", после чего набранный текст будет сохранен в черновиках. Но и только, для отправки следует нажать "C-c c-c" и подтвердить "y".

Еще кое-что важное, т. к. через мануал порой сложно продраться:
по умолчанию черновик письма после отправки черновиком быть перестает :) и просто удаляется. Чтобы копии отправленных сообщений сохранялись локально, следует установить значение поля FCC (и второй параметр тоже не помешает):
(setq
    wl-fcc "+sent"
    wl-fcc-force-as-read t
)

среда, 29 июня 2016 г.

Ностальгическое: Opera 12 stuff

Парочка блокировщиков рекламы для Оперы_12, которые работают:
  • scriptweeder
  • NoAds Advanced 
и в сочетании со встроенным блокировщиком Оперы почти уделывают связку noscript+adblock.  Добавлять ссылки на них правда не вижу смысла.
У NoAds Advanced кстати в нижнем правом углу окна есть "невидимая" кнопочка. Также на просторах интернета еще находится двуязычный словарик проверки орфографии с незатейливым названием 'en-ru.zip' - и после этого уже вполне можно работать (исправив useragent на какой-нибудь модный конечно).

среда, 22 июня 2016 г.

tab-magic v. 0.2

Продолжаем попытки повесить на клавишу Tab в Emacs все действия сразу. Первое нажатие выравнивает строку согласно лексеру, второе- динамическое дополнение (dabbrev, если возможно), или переключение между окнами, если дополнение не было найдено. Также стоит запретить dabbrev искать по остальным открытым буферам - иначе не будет работать правильно.
(defun tab-magic ()
  "Разные контекстные действия для Tab"
  (interactive)
  (let ((len (- (line-end-position) (line-beginning-position))))
    (defvar dabbrev-state nil)
    (defun dabbrev-point ()
      (if (boundp 'dabbrev--last-expansion-location)
   (format "%s" dabbrev--last-expansion-location)
 nil))
    (defun work-w-code ()
      (setq dabbrev-state (dabbrev-point))
      (indent-for-tab-command)
      (if (= (- (line-end-position) (line-beginning-position)) len)
   (unwind-protect
       (call-interactively 'dabbrev-expand)
     (if (string= dabbrev-state (dabbrev-point))
  (other-window 1)
       (setq dabbrev-state (dabbrev-point))))))

    ;; Настройки отдельных режимов (пример)
    (cond ((minibufferp) (minibuffer-complete))
   ;; 1
   ((eq major-mode 'org-mode) (if (org-at-heading-p)
      (org-cycle)
           (other-window 1)))
   ;; 2
   ((eq major-mode 'emacs-lisp-mode) (work-w-code))
    
   ;; 3
   ((eq major-mode 'sh-mode) (work-w-code))
   ;; 4
   (t (other-window 1))
   )))

вторник, 14 июня 2016 г.

Gnome-keyring: инструменты командной строки и немного elisp`а

Собственно, и упомянутый ранее gkeyring не нужен. Да и синтаксис у него довольно прибабахнутый, все можно сделать проще и удобнее на elisp, с помощью secrets.el.

1. Посылаем запрос пароля:
bash_to_emacs () {
    echo -n $@ > ~/.bash_emacs && emacsclient -e '(read-bash-o)'
}
2. Принимаем:
(defvar bash-emacs nil)
(defun read-bash-o ()
  "Read Bash output; run in BASH script (emacsclient)"
  (let ((bp "~/.bash_emacs"))
    (with-temp-buffer
      (insert-file-contents bp)
      (setq bash-emacs (buffer-substring-no-properties (point-min) (point-max))))
    (with-temp-buffer
      (write-region (point-min) (point-max) bp))  ;; clear
    ))
3. Получаем сохраненный пароль:
pswd=$(emacsclient -e '(secrets-get-secret "keyring_name" bash-emacs)' | tr -d '"')
4.Profit! ;)

Конечно, вариант "общения" bash с Emacs вышел несколько упоротый, но мне опять же было лень лезть в дебри. 

Marker - _крутое_ автодополнение команд для bash

Признаюсь честно - мне нужно было дополнение длинных команд с кучей параметров (например, это опции архиватора dar) и было лениво разбираться со стандартным bash-completion. И в гугле нашлось вот это: https://github.com/pindexis/marker


Все подробности на гитхабе, только требуется Bash-4.3+, есть в репозитории shells 

пятница, 3 июня 2016 г.

Midori: и менеджер паролей.

Ну и то, чего не хватало- всего пара строк на bash:
#!/bin/sh
current="$(sqlite3 ~/.config/midori/history.db 'select uri from history ORDER BY date' | tail -1 | sed -e 's#/$##')"  #remove the appending slash
psw=$(gkeyring -k mozilla --output=secret --name "$current")
if ((${#psw} > 2))
then
    echo -n $psw | xsel -p -i
    notify-send -t 1500 -i midori "Midori-passwd" "Пароль отправлен в primary-буфер"
else notify-send -t 3500 -i dialog-warning  "Midori-passwd" "Для сайта \n${current:0:32} .. \nпароль не найден"
fi
exit 0
Используются пароли, уже сохраненные расширением Firefox "GNOME Keyring integration", т. к. использовать встроенную сохранялку паролей фокса как минимум неудобно.
Итак, все пароли уже в gnome-keyring, а gkeyring дает доступ к этой службе из консоли. Дальше- дело техники: вытаскиваем из истории Midory последнюю запись = URL последней (текущей) открытой страницы, кликаем иконку и получаем пароль в "мышиный" буфер (средний клик). Естественно, история посещений в Midori должна быть включена. И без всякого джаваскрипта! ;)

среда, 1 июня 2016 г.

Midori больше не падает! :)

Речь о devel-версии Midori-gtk3, и по сравнению с тем, что было раньше, это уже достижение. Собирал с дефолтными пакетами:

Midori 0.5.11 ((null)) Midori
GTK+ 3.16.7 (3.16.7)
Glib 2.44.1 (2.44.1)
WebKitGTK+ 2.4.10 (2.4.10)
libSoup 2.50.0
cairo 1.14.2 (1.14.2)
libnotify No
gcr 3.16.0
granite 0.3.1

В целом впечатления положительные, по сравнению с разжиревшим монструозным Firefox смотрится куда приятнее (а работает быстрее), возможность использования одноклавишных шорткатов для-чего-угодно просто супер. Набор расширений по умолчанию весьма неплох, там уже есть все то, что продвинутые пользователи первым делом и добавляют в браузер. И расширения в Midori это не какой-то убогий джаваскрипт, а обычные библиотеки .so.

Из минусов- крайне мееедленный процесс разработки, и впечатляющий список открытых багов :) Ну и необходимость ручного допила внешнего вида (gtk3.css), впрочем это можно считать и фичой. Также по старой "доброй" традиции в Webkit[GTK] аналог about:config отсутствует как класс, и вот незадача- до сих пор нет менеджера паролей (есть правда какой-то самописный у арчеводов, но я не смог его собрать).

Про шорткаты:
некоторые сайты, в т. ч. гугл, любят перехватывать ввод пользователя, и, следовательно, при не_заблокированных  js команды вида "клавиша без модификаторов" работать не будут -- лечится установкой userjs, который запрещает автофокус на поле ввода/поиска сайта.
Про ютуб:
в мой сборке не заработал, в причинах еще не разбирался, зато +5 к аскетизму и борьбе с прокрастинацией)))
Про кастомизацию внешнего вида:
gtk3.css получился примерно такой:
...
/* CUSTOM */
.notebook tab {
    padding: 6 6 6;
}
.notebook tab:active {
    background-color: #555;
    background-image: none;
}
.notebook tab:not(:active) {
    border-left: 1px solid #999;
    border-right: 1px solid #999;
}
.progressbar {
    background-color: #333;
    color: white;
    background-image: none;
    box-shadow: none;
    border-right: 1px solid #ADADAD;
    border-radius: 0px;
}
а для :hover ссылок (всплывающий URL ссылки) такой стиль:
a[href]:hover {
            text-decoration: none !important;
        }
        a[href]:hover:after {
            content: attr(href);
            position: fixed; left: 0px; top: 0px;
     margin: auto;
            padding: 4px 6px !important;
            max-width: 60%; overflow: hidden;
            white-space: nowrap; text-overflow: hidden;
            font:10pt sans-serif !important;
            background-color: #2D2D2D !important;
     border-top: 1px solid #F47E4E;
     /* border-radius: 0 0 6px 0; */
     color: white;
            opacity: 0.7;
            z-index: 9999;     
        }

воскресенье, 29 мая 2016 г.

End of term mode

Достаточно повозившись с классическим эмулятором терминала в Emacs, я понял что все, хватит с меня, и дальше буду использовать только старый добрый Xterm. А чтобы это было не менее удобно.. да вообще, чтобы просто было удобно добавил немного быдлокода:
(defvar emacs-xterm-pid nil)
(defun run-xterm ()
  "Launch Xterm"
  (async-shell-command
   (concat "xterm -geometry 70x40-0+0 -e \"cd " default-directory " && bash\""))
  (setq emacs-xterm-pid (shell-command-to-string "echo -n $(pgrep xterm | tail -1)")))  ;; убираем перевод(ы) строк

(defun xterm-window-manager ()
  "Manage Xterm window, replacement f*ing term mode."
  (interactive)
    (cond ((not emacs-xterm-pid) (run-xterm))
   ((string= (shell-command-to-string (concat "kill -0 " emacs-xterm-pid " 2>/dev/null || echo -n no"))  ;; процесс еще существует?
      "no")
    (run-xterm))
   (t (shell-command (concat "wmctrl -i -a $(wmctrl -lp | grep"
       " " emacs-xterm-pid " "
       "| tr -s '[:space:]' | cut -d ' ' -f1)")))))

суббота, 28 мая 2016 г.

Открыть Xterm в заданной папке

... и с нужными параметрами - смешно, но поначалу я с этим затупил.

xterm -geometry 70x40-0+0 -e "cd ~/Desktop && bash"
- запускает Xterm в правой половине экрана в папке Desktop.
(Конечно, так не грамотно: в правой половине экрана у нас окно эмулятора терминала,  а шелл запущен в заданной папке, и так впрочем тоже не грамотно :) но с точки зрения гуя все это один объект, поэтому..)

четверг, 26 мая 2016 г.

Wanderlust: конфигурационные файлы.

How-to мне писать все равно лень :) Поэтому вкратце основное.
  • Группа настроек elmo- отвечает за получение и кэширование почты. Важно: 'elmo-localdir-folder-path' указывает, где будет хранится почта (по дефолту это ~/Mail, что многим придется не по вкусу).
  • Группа настроек wl- это настройки самого почтовика, внешний вид, действия, шорткаты и пр. Важно: 'wl-folders-file' задает расположение файла folders (см. дальше)
  • Файл folders это и есть конфиг серверов, источников, фильтров, папок и вложенных папок - короче, всего того, что располагается в левой панели Thunderbird или скажем Claws Mail. И его можно (и нужно!) редактировать вручную. Можно воспользоваться и встроенным Folder Manager, но вручную проще и нагляднее.
Пример добавления ленты RSS:
добавить в folders строку вида
rss:http://www.some.domain/rss "псевдоним ленты"

Пример добавление аккаунта Gmail (с некоторыми изысками, например тут POP):
добавить в folders строку вида
&"recent:username@gmail.com"@pop.gmail.com:995!    "gmail"

И так далее >>>

среда, 25 мая 2016 г.

Wanderlust, лучший почтовик для Emacs.

И даже будь он худшим- остальные требуют наличие отдельного MTA и еще черт знает чего и по сути являются лишь системами индексации как-то полученной почты. Wanderlust не таков, и все делает сам, а так же в хороших традициях умеет ленты RSS и даже кажется NNTP. Но с ним есть одна трудность.. и даже не одна)) Первая и самая главная заключается в крайне хреново написанной документации: есть мануал - и это по сути все. Все прочие русскоязычные потуги написать how-to откровенно жалки и не заслуживают ни капли внимания. Ну почитать-то можно, но толку от этого не будет почти никакого. Писать очередные инструкции мне честно говоря лениво, тем более я еще и сам не до конца разобрался. Поэтому остановлюсь на паре проблемок, которые при всем желании фичами не назовешь:
  • Кодировки. Автодетекта нет, и если это не utf8, то для каждой папки нужно прописывать вручную. И все равно это работает мягко говоря странно.
  • RSS. В случае оооочень длинного URL (такое бывает, когда например это URL к поиску по параметрам и все они в адресе ленты) Wanderlust посылает подальше, т. к. для любого источника он создает папку, имя которой = URL.
  • Gmail. Тут тоже были некоторые неочевидные проблемы, но исключительно в случае выбора POP3.
  • Хранение пароля от аккаунта. Он конечно не в plain text, но "шифрование" там смешное, да и официально его не заявлено - нужно дорабатывать самому (но это как раз просто).
А в остальном- масса разнообразных настроек, ну просто дофига! ;) И это тоже по началу затрудняет жизнь. Так что Wanderlust будет выбором явно не для всех.

воскресенье, 22 мая 2016 г.

Вожусь вот с org-feed.el

Очень приятный RSS-агрегатор, НО! только вот по дефолту из русскоязычных  лент новостей он делает абракадабру, на которую enca ругается "double encoding", и перекодировать уже не желает никак.

Как так? Откуда она там? Путь к ответу на вопрос был долог и тернист, но наконец ответ найден: товарищи подсуетились, и в свое время запихнули туда один патчик, т. к. цитирую:

Feed entries may contain raw unicode characters that must be convertedto utf-8 before they can be properly inserted in the target buffer. 
(гениально, ослы!)

Патч всего-то из 2х строк:

(buffer-string)))))
(decode-coding-string
(buffer-string) (detect-coding-region (point-min) (point-max) t))))))

но он все и ломает. Откатил назад, в результате тоже получаются кракозябры, но однократное применение decode-coding-region все приводит в читаемый вид. Вот вопрос: отписать обратно эти "гениям" или заниматься велосипедостроением самому?

Если вернуть все обратно и в ~/.emacs в список автодетекта добавить кодировку:
(prefer-coding-system 'cp1251)
ситуация улучшается, но все ломают откуда-то берущиеся символы в внезапно! koi8-r. Пичаль.

понедельник, 9 мая 2016 г.

Заметка №..

  1. А еще в Emacs можно рисовать $) Мышкой!  >  artist-mode 
  2. Переключение между буферами уже избитая тема, но всплывающее меню буферов можно вызвать и просто зажав Ctrl и кликнув левой клавишей мыши.

суббота, 7 мая 2016 г.

Firefox 46: после релиза

Пост исключительно про жуткий вид вкладок вышедшего из беты Firefox 46 и как это исправить.

Так уж вышло, что я не особенно отличаюсь от пресловутого хомячка, и браузер- мой второй наиболее часто используемый инструмент после Emacs. Поэтому я желаю, чтобы он выглядел адекватно и соответствовал системной теме оформления (Numix), хотя бы так:


Для этого достаточно пары простых шагов:
  1. Установить тему-заливку Numix c addons.mozilla.org
  2. userChrome.css
    /* Панель закладок */
    #PlacesToolbar { max-width: 300px !important; }
    toolbar[mode="icons"] .toolbarbutton-text { display: none !important; }
    /* Ширина вкладок */
    .tabbrowser-tab:not([pinned]) { min-width: 150px !important; }
    /* 45b11 theme fix */
    #nav-bar { background-color: #555 !important; }
    /* Сраная кнопка со звездочкой:  */
    #bookmarks-menu-button .toolbarbutton-menubutton-button { width: 2px !important; margin: 0 !important; padding: 0 !important; }
    #searchbar .autocomplete-textbox-container { background-color: #2D2D2D; color: white; }
    

понедельник, 18 апреля 2016 г.

Лог выключений компьютера

Захотелось мне например узнать, когда я _точно_ был дома. А не на работе и не в баре)) Лог включений/выключений компа в моем случае будет довольно точным показателем, да и просто интересная статистика. Как ее получить? Способов наверно много, но мне понравился вариант с auditd, учитывая, что для того оно собственно и создавалось. Пример- лог выключений системы:
ausearch -m SYSTEM_SHUTDOWN

суббота, 16 апреля 2016 г.

Thunderbird 45 конкретно разочаровал..

Там все плохо. Как почтовик оно меня не особенно и интересовало - годных вариантов хватает и без (кое-что обозревалось в этом бложике), а как комбайн.. мрак:
  • по прежнему не умеет фильтры ко вложенным папкам
  • ленты RSS- тут вообще засада: половину из того, что молча показывает Firefox, сабж признает "некорректным" и добавлять тупо отказывается
  • опять про фильтры: запись вида условие1 AND (условие2 OR условие3) из гуя создать невозможно, только ручным редактированием файла фильтров и прочими танцами с бубном
Шел 2016 год.. а Thunderbird как был недоделкой, так и остался. Была мысль свзязаться с разработчиками, раз Мозилла дропнула этот проЭкт, но кроме того, что разрабатывается коммюнити больше никакой информации нет. Вердикт- ффтопку!

вторник, 5 апреля 2016 г.

Audacious копирует каждый проигрываемый файл (в домашнюю папку).

Как мне подсказали, "это не баг, это фича". Просто криворукие разработчики Audacious таким образом реализовали возможность записи проигрываемого аудио потока, в принудительном порядке. Чтобы пофиксить, нужно в меню Настройки > Аудио снять галку "Записать аудио поток используя модуль записи в файл".

Зато в результате данного косяка познакомился с прекрасным консольным плеером cmus (и фильтры и быстрый поиск в наличии, Gstreamer тоже не нужен).

четверг, 24 марта 2016 г.

Firefox 46 b4

Не понимаю ругани на интерфейс Australis Firefox, ведь простым перетаскиванием + одной строкой в userChrome.css можно получить такой, весьма удобный и компактный вид:


воскресенье, 20 марта 2016 г.

Очередной magictab.el

(defun tab-magic ()
  "Разные контекстные действия по Tab"
  (interactive)
  (let ((len nil))
    (defun line-length ()
      (- (line-end-position) (line-beginning-position)))
    (cond ((minibufferp) (minibuffer-complete))
          ;; 1
          ((eq major-mode 'org-mode) (if (org-at-heading-p)
                                         (org-cycle)
                                       (other-window 1)))
          ;; 2
          ((eq major-mode 'emacs-lisp-mode)
           (setq len (line-length))
           (indent-for-tab-command)
           (if (= (line-length) len)
               (call-interactively 'dabbrev-expand)))
          ;; 3
          ((eq major-mode 'term-mode) (if (not (term-dynamic-complete-filename))
                                          (other-window 1)))
          )))
 

"Вот так и пишутся кейбиндинги в Emacs, чуваки!" Шутко конечно, пишутся они так:
(global-set-key (kbd "<tab>") 'tab-magic)
А вот то, что программерам на других языках скорее всего поплохеет от вида подобного кода - скорее всего нет)) Но смысл этой заметки в том, чтобы показать: "искаропки" Emacs- это платформа и конструктор одновременно, и по дефолту Tab не будет умным, а скорее будет тупым, по сравнению с другими редакторами. Но.. GOTO 1 ;)

UPD май 2016
А можно dabbrev-expand завернуть в обработчик ошибок, и тогда, если дополнения к слову не найдено, то можно например использовать Tab по назначению: для перехода в соседний фрейм (или как там это называется в терминологии Emacs):
(unwind-protect 
        (call-interactively 'dabbrev-expand)
      (other-window 1))

суббота, 12 марта 2016 г.

Если сейчас коротко про OpenSUSE Leap (42.1)

то например вот: в безблагодатном Yast - Менеджер ПО список пакетов "красненьким" все растет и растет.. просто неудержимо. И все равно, даже со всеми левыми сторонними пакетами мои аппетиты остаются неудовлетворенными.

Взять хотя бы LazPaint, свежей 64-битной версии которого НЕТ. просто нет! А "рисовать" в нем гораздо быстрее и удобнее, чем в монструозном GIMP с его откровенно аццким интерфейсом. И тэ дэ. Порой у меня мелькают вопросы типа И зачем это я вообще обновился на эту сомнительную версию Суси 64bit-only?

вторник, 16 февраля 2016 г.

ROX-Filer

Пожалуй, я наконец нашел идеальный [графический] файловый менеджер.
Из минусов разве что кислотно-кдешные иконки по умолчанию)) Впрочем, об этом даже как-то стыдно упоминать - проблема решается ровно в 2 действия: клик + перетаскивание. Так же, как и вопрос с файловыми ассоциациями.
 Основная фича rox-filer`а в не то что минималистичном, а в минимальном интерфейсе (одна! панель, GTK) и активном использовании контекстного меню, даже меню Настройки по тому же правому клику, а так же использовании горячих клавиш для чего_угодно. Нужно ли говорить, что этот ФМ реально быстр, по сравнению со всякими монстрами? Какие там дефолные Thunar`ы хоспади б-же, к тому же тут кроме закладок есть еще и история последних открытых папок, чего мне очень часто не хватало.

Конечно, ROX-Filer не соединиться с удаленным хостом по FTP и не сохранит введенный пароль, не подмонтирует флешку автоматически, в нем нет никаких вкладок. И это просто отлично!

четверг, 11 февраля 2016 г.

Автомонтирование USB-флешек в Xfce, в случе, когда..

.. Thunar удален > thunar-volman тоже не работает (у меня не заработал с другим ФМ без запущенного Thunar`а).
  1. Autofs - "системный" автомонтировщик, минус однако в низкой интерактивности его монтирования и главное отмонтирования девайсов. Также, насколько я понял- нельзя использовать условный класс "съемные USB-диски", каждое конкретное устройство должно быть прописано по имени, ну хотя бы как /dev/sdc[1] .. нет! Это не удобно.
  2. MountTray (Alexander Drozdov - idea, programming) - маленькое Qt-приложение, висящее в трее и информирующее о подключение новых носителей, монтирует по клику, отмонтирует по другому.. просто отлично!
 UPD:  давно хотел написать апдейт, да все руки не доходили..
В GTK3, а конкретно в GTK3-file-chooser функция монтирования подключаемых дисков/флешек уже встроена по умолчанию! Т. е. достаточно даже банального zenity > меню выбора файла. Кстати, таким же образом монтируются и зашифрованные тома! Пароль будет запрошен и даже предложены варианты: забыть сразу или сохранить до выхода из сессии. Вот встройка таких фичей, насколько я понимаю на уровне библиотек GTK3, мне весьма симпатична. Но третьегном с его сраным джаваскриптом я от этого все равно не стану любить ни на процент больше :)

воскресенье, 24 января 2016 г.

Картинки, в чем смотреть картинки??

Более-менее адекватных просмотрщиков с возможность поворота и crop`а становиться все меньше. Посмотрим на последнюю версию гномерского Gthumb, который встает на Leap 42.1 даже не таща за собой шлейф разных зависимостей (он хочет конечно, но мы вежливо скажем ему: --nodeps):


  - панель инструментов справа ужата до минимального размера, гномерам плевать на эффективное использование пространства экрана - главное сохранить группировку своих дурацких кнопАчек,
  - горячие клавиши как ни странно есть, но диалога их настройки конечно же нет, они скорее всего захардкооожены,
  - остальные панели ведут себя так же, как и Инструменты: тупо "отжимают" место в окне приложения. Зачем?- а кто их знает, тут же подумать нужно..

Еще попробовал Nomacs (похоже на Emacs, о как), даже пару версий, включая 3.0. Почему пару? - а потому, что ни в одой не работает прокрутка мышкой по изображениям: меняется название файла в заголовке, а картинка- нет. То ли качество ПО в репо SUSE упало ниже плинтуса, то ли кодят теперь так.. разбираться мне было откровенно лень)) Снес.

Ristretto (дефолт), EOG и прочие тупо не умеют кадрировать. Из оставшихся некоторые умеют, но.. реализовано это поистине аццки неудобно (например без мышки!). Дополнительным ограничением в поиске является x86_64, некоторый софт можно только собирать самому (ага, привет, Lazarus!)

суббота, 2 января 2016 г.

Инструменты для точной настройки GTK2, GTK3 и Qt5 тем

GTK2, 3 - цвета
http://www.webupd8.org/2012/09/customize-gtk3-gtk2-theme-colors-using.html
- для ленивых, т. к. он правит вид (собственно, цвета) сразу обеих версий GTK, написан на Vala. Ну или сразу гитхаб автора.

Обновлено 08.2016.

 qt5ct
- замена бывшему qtconfig-qt4, есть в репозитариях.

И наконец, размер шрифта в GTK3-приложениях.
Лирическое отступление: как известно, у гномеров все не как у людей. В частности, микрошришфт по умолчанию, если гномоприложение запущенно не в гноме. Ну тут совсем просто, в файле ~/.config/gtk-3.0/gtk.css нужно дописать что-то вроде:
* {
    font-size: 15px;
}

А, и еще про упоротость гномеров:
dconf-editor: org -> gtk -> settings -> file-chooser : sort-directories-first
- по умолчанию там галки не стоит!! %)

пятница, 1 января 2016 г.

1.OpenSUSE Leap (64-bit) и 2. установка Wine

Однако, оказалось, что Leap- это откровенная халтурка, плавно переходящая в настоящее дерьмецо. Сюрприз! Даже на 13.2 такого себе не позволял никто, но тут у нас появляется Корпорация! Я пожалуй больше не порекомендую SUSE ни одному знакомому даже..

А ниже - скриншот попытки установить Wine на 64-битной Leap, тоже внезапно так:


(тут я был просто не осведомлен, что 64-битного вайа нет, и СКОЛЬКО он тянет зависимостей).

Следующие Предыдущие Главная страница

Blogger Template by Blogcrowds