Часть рисунков и иллюстраций выполнены мной на заказ для журналов и газет. Большинство из картинок нарисованы на графическом планшете. Также есть несколько натюрмортов и этюдов маслом и гуашью. Кроме того, в галерею я выкладываю и рисунки, сделанные просто для себя. Кликайте превью - увидите картинку целиком. По всем вопросам пишите на e-mail.
12 июня 2010 12:21
Viewnior - быстрый вьюер изображений под Linux. "Быстрый" - это не эпитет с авторского сайта, а мое личное заключение, так как пробовал я гляделок выше крыши и, так или иначе, но что-нибудь в них мне не нравилось. С Viewnior тоже не все гладко (иначе не было бы этой статьи). Но, по-моему, пока он - лучшее, что есть из графических вьюеров под GNOME.
Что же меня не устраивало и как я это исправил?
Во-первых, горячие клавиши не настраиваются. Годы жизни под Windows, где основным моим просмотрщиком был могучий ACDSee, безвозвратно приучили меня переключать масштаб между "1:1" и "Подогнать к окну" близко расположенными клавишами "/" и "*". Но у Viewnior управление масштабом мало того, что не полное, так еще и разбросано по всей клавиатуре. Естественно, никто не заставляет вас устанавливать именно те клавиши, что нравится мне (и другим "жертвам" ACDSee). Я всего лишь показываю вам где и как вы можете их настроить. А уж конкретный выбор вы сделаете сами.
Итак, скачиваем исходники с сайта производителя. :) (Примечание: все дальнейшие действия подразумевают модификацию последней на данный момент версии 1.0. Как эти изменения скажутся на более поздних версиях, и нужны ли она там вообще, я знать не могу.) Распаковываем архив и открываем для редактирования файл /src/vnr-window.c. Находим строку
{ "ViewZoomNormal", GTK_STOCK_ZOOM_100, N_("_Normal Size"), "<control>0",
и вместо "<control>0" вписываем "KP_Multiply", что означает символ "*" на цифровой клавиатуре. А для строки
{ "ViewZoomFit", GTK_STOCK_ZOOM_FIT, N_("Best _Fit"), NULL,
которая расположена чуть ниже, вместо NULL вводим "KP_Divide" - это символ "/".
С этим всё. Теперь упростим перемещение к первому и последнему изображению. Сейчас они управляются через Alt+Home и Alt+End. Согласитесь, гораздо проще нажимать одну клавишу, чем две. Для этого в строкaх
{ "GoFirst", GTK_STOCK_GOTO_FIRST, N_("_First Image"), "<Alt>Home",
и
{ "GoLast", GTK_STOCK_GOTO_LAST, N_("_Last Image"), "<Alt>End",
удаляем <Alt>.
Ну вот, и это тоже сделали. Раз уж занялись горячими клавишами, так, может быть, ускорим и закрытие программы? Лично я для закрытия некоторых приложений предпочитаю клавишу Escape - ткнул и все. Для этого находим следующий кусок кода:
case GDK_Escape:
if(window->mode != VNR_WINDOW_MODE_NORMAL)
vnr_window_unfullscreen(window);
else
gtk_main_quit();
break;
и заменяем его на:
case GDK_Escape:
gtk_main_quit();
break;
С хоткеями на этом, пожалуй, закончим. Но, если у вас есть желание, вы можете продолжить модификации. Просто подставляйте удобные для вас значения.
Второе, что меня немного раздражало - это циклический просмотр изображений. То есть после последнего изображения, Viewnior автоматически перескакивает к первому и просмотр начинается сначала. Если в папке много однотипных изображений, то вы не сразу понимаете, что смотрите те же самые файлы по второму разу. Обычно, в просмотрщиках эта функция вынесена в настройки. Почему это не сделал автор Viewnior, я не понимаю. Подправим. Всё в том же файле /src/vnr-window.c заменяем кусочек кода
if(next == NULL)
{
next = g_list_first(window->file_list);
}
на
if(next == NULL)
{
return FALSE;
}
Это остановит порочный круг при достижении последнего файла. И точно также меняем код, относящийся к первому файлу (если мы будем просматривать изображения в обратном порядке):
if(prev == NULL)
{
prev = g_list_last(window->file_list);
}
Заменяем на:
if(prev == NULL)
{
return FALSE;
}
Третий минус этой гляделки - она не умеет автоматически подгонять размеры окна под размер изображения. Чтобы это сделать, пользователю приходиться выбирать соответствующий пункт в верхнем меню. Крайне не удобно. Возможное решение - установить хоткей для автоподгонки размера окна (сейчас для этой функции стоит NULL, т.е. ни одна из клавиш не выбрана), но мы сделаем удобнее: научим программу саму устанавливать оптимальный размер. Для этого находим тип vnr_window_open, где внутри его описания видим условие if(fit_to_screen). Удаляем его, но не его тело, то есть удаляем строку if(fit_to_screen) и открывающую и закрывающую скобки, а все, что внутри этих скобок, не трогаем.
Четвертым изменением будет автоматическое центрирование окна. Для этого вам надо найти вторую строку, которая выглядит как указано ниже. Повторяю, это вторая строка, а не первая:
gtk_window_resize (GTK_WINDOW (window), img_w, img_h + window->menus->allocation.height);
И после нее ввести вот такой код:
GdkScreen ∗ screen = gtk_window_get_screen(GTK_WINDOW(window));
int screen_width = gdk_screen_get_width(screen);
int screen_height = gdk_screen_get_height(screen);
int a_x = (screen_width - img_w) / 2;
int a_y = (screen_height - (img_h + window->menus->allocation.height)) / 2;
gtk_window_move (GTK_WINDOW (window), a_x, a_y);
В-пятых, при полноэкранном режиме, если подвести мышку к верхней границе окна, выползает довольно-таки бесполезная штука - панель навигации. Зачем она нужна, если в руке у нас мышь, не очень понятно. Разве что запустить слайд-шоу. Но лично я его никогда не запускаю, а вот если случайно отвести мышь наверх экрана, то опять появится эта бесполезная панель. Причем будет висеть там продолжительное время. Исправим. Для начала сократим дистанцию, на которой наш курсор будет в безопасности. :) (Я решил полностью не избавляться от этой панели - пусть живет, но такой назойливой она уже не будет). Итак, в строке
if (ev->y < 20 && !GTK_WIDGET_VISIBLE (window->toolbar))
вместо "20" введем "1". Этого достаточно. Только не забудем изменить время, в течении которого панель будет висеть у нас над душой. В строке
#define FULLSCREEN_TIMEOUT 3000
поменяем "3000" на "100". Вот теперь все будет быстро и ненавязчиво.
Шестой неприятный момент - это низкий коэффициент изменения масштаба изображения. По умолчанию он равен 1/10. Чтобы увеличить изображение в два раза, вам придется восемь раз нажать на клавишу "+". Слишком долго. Ускорим процесс и добавим еще 10%. Разумеется, вы вольны выбрать любое удобное для вас значение. Открываем файл /src/uni-zoom.h и меняем
#define UNI_ZOOM_STEP 1.1
на
#define UNI_ZOOM_STEP 1.2
Седьмое. Для переключения между оконным и полноэкранным режимом используется двойной клик мышкой. Мне же больше нравится middle click, то есть переключение по нажатию на колесо мыши. Если вкусы у нас с вами совпадают, то открывайте файл /src/uni-image-view.c, находите в нем строку
if(ev->type == GDK_2BUTTON_PRESS && ev->button == 1 && vnr_win->prefs->behavior_click == VNR_PREFS_CLICK_FULLSCREEN)
и меняйте ее на
if(ev->type == GDK_BUTTON_PRESS && ev->button == 2 && vnr_win->prefs->behavior_click == VNR_PREFS_CLICK_FULLSCREEN)
И напоследок, если вы также как и я не любите смотреть фотографии и рисунки на черном фоне, в следующей части кода можете выбрать какой-нибудь другой цвет, заменив "black" на "white", например.
gdk_color_parse ("black", &color);
Теперь осталось только откомпилировать программу:
./configure --enable-wallpaper && make && sudo makeinstall
Впрочем, вместо последней команды лучше использовать утилиту checkinstall. Она создаст и установит пакет, а не будет разбрасывать по системе множество файлов. Для Ubuntu ее следует запускать так:
sudo checkinstall -D
28 марта 2010 9:20
Я в полном восторге. :) Это тот редкий случай, когда мне не было скучно ни одной минуты за весь сеанс. И это при том, что от Dreamworks я уже давно ничего не жду. Все их "хохмо-муви" - фильмы одноразового использования. Но "Как приручить дракона" - исключение абсолютное, просто из ряда вон. По психологическому воздействию он уже ближе к диснеевской классике, если бы из неё можно было откачать всю слащавость, нежели к своим развлекательным однодневкам, вроде "Лесной братвы".
Дракон Беззубик - совершенно очаровательное существо. :) По моей таблице "симпатишных персонажей" он уже где-то в топе. :) Даже не знаю, как авторам пришло в голову срисовывать поведение дракона (дракона!) с домашней кошки. Сидит, значит, художник весь в депрессии, ничего на ум не приходит, скоро дедлайн. А тут об ногу кошак тереться начинает. Смотрит на него художник так отрешённо, а потом - бац! - хватает перо и... :)
Просто молодцы. Ещё раз что ли сходить? :)
Смотрел в 3D-кинотеатре. То ли они мой блог прочитали, то ли сами с головой, но влажные салфетки к очкам теперь прилагались. ;)
Кстати, Беззубик мне очень напомнил Стича из "Лило и Стич" - плоская голова, разрез глаз, рот до ушей... И, как потом оказалось, у них общие папы - и того и другого создали Крис Сандерс и Дин Деблуа.
20 марта 2010 19:08
Мой планшет от Wacom прекрасно работает в Ubuntu Linux, однако, чтобы задействовать кнопки, расположенные непосредственно на планшете, требуется произвести ряд операций.
Итак, установим пакет консольных утилит wacom-tools:
sudo apt-get install wacom-tools
Для дальнейших действий нам понадобится точное название нашего планшета. Узнать его можно так:
xinput -list
Среди прочей информации, я, например, вижу: Wacom Graphire4 4x5. Основное мы сделали. Теперь можно назначить программные действиям клавишам нашего планшета. Многим известно такое сочетание клавиш, как Ctrl + [Z]. Обычно, оно означает отмену последнего действия. В процессе рисования отвлекаться на поиск нужного сочетания клавиш совсем не хочется. Поэтому назначим их действие одной - например, левой кнопке планшета:
xsetwacom set 'Wacom Graphire4 4x5 pad' Button1 "core key ctrl z"
Только не забудьте поменять название планшета на то, что вы узнали по команде xinput.
Точно также вы можете установить абсолютно любое сочетание клавиш. К примеру, для второй кнопки (Button2) я включаю функцию сохранения, которая в большинстве программ активируется сочетанием клавиш Ctrl + [S].
Точно таким же образом можно задействовать и колесо, если оно есть на вашем планшете:
xsetwacom set 'Wacom Graphire4 4x5 pad' RelWDn "key core +"
В данном случае прокрутка колеса будет менять масштаб изображения. Для GIMP это клавиша [+].
Подробнее об утилите xsetwacom можно узнать здесь.
Поскольку настройки xsetwacom теряются после перезагрузки, то нам осталось только создать скрипт и добавить его на выполнение при запуске Ubuntu. Вот скрипт с командами, которые мы только что выполнили:
#!/bin/bash
xsetwacom set 'Wacom Graphire4 4x5 pad' Button1 "core key ctrl z" && xsetwacom set 'Wacom Graphire4 4x5 pad' Button2 "core key ctrl s" && xsetwacom set 'Wacom Graphire4 4x5 pad' RelWDn "key core +" && xsetwacom set 'Wacom Graphire4 4x5 pad' RelWUp "key core -"
К сожалению, не все так гладко. Во всяком случае, у меня. Дело в том, что после хотя бы одного нажатия на клавишу планшета, когда ей уже назначена какая-либо функция, в GNOME перестает работать стандартный индикатор клавиатурных раскладок. Точнее говоря, раскладки поменять можно, но изображения флагов (или других изображений, которые у вас назначены для раскладок) не меняются. Как это исправить, я так и не додумался. И в интернете ответа тоже не нашел. Поэтому стандартный апплет я убрал с панели, и поставил вместо него аналогичную утилиту fbxkb. С ней планшет не конфликтует.
20 марта 2010 16:59
Часы в Linux могут спешить или отставать на несколько секунд каждый час. И это не связано с часовым поясом или с UTC (всемирным координированным временем). Дело в том, что Linux использует во время работы не часы из BIOS (Real Time Clock), а так называемые системные часы (или kernel clock).
Простой путь выполнить синхронизацию часов - установить утилиту adjtimex. Для Ubuntu Linux она есть в официальном репозитории (думаю, и для других дистрибутивов тоже).
В терминале от имени суперпользователя вводим:
sudo aptitude install adjtimex
У меня программа сразу после установки выполнила синхронизацию системных и RTC часов, которая заняла 70 секунд. Если же у вас этого не произошло, то запустите программу самостоятельно:
sudo adjtimex -c
После этого я бы рекомендовал выполнить синхронизацию с сервером точного времени. Делается это также от имени суперпользователя. Лично я подключаюсь к серверу NTP, который предоставляет мой провайдер, а вы можете использовать любой публичный. Например:
sudo ntpdate ntp.mobatime.ru
8 марта 2010 07:10
mtPaint, GIMP, планшет
7 марта 2010 12:13
...или минус на минус даёт плюс.
Многие годы заедающий при извлечении резак был починен безжалостным ударом нижней части кулака, когда в очередной раз консольная утилита,
неподдающаяся дрессуре, запорола болванку.
Судя по царапинам, болванка слетела со шпинделя и в предсмертной агонии зацепила какие-то механизмы, вернувшие лоток в исходное положение.
Экстремальная мануальная терапия.
P.S. Через gui диски записываются без проблем. А в консоле никак не
могу заставить записывать на минимальной скорости...
6 марта 2010 19:37
Во всяком случае, эта версия не отдаёт "Матрицей", как та, что с Кэтти Бейтс в главной роли.
Смотрел в 3D. Но это меня не спасло. Было скучновато... Нерушимая кооперация Бёртона с женой и Джонни Депом, а также кучи умных компьютеров себя, по-моему, не оправдала. Картинки сочные, но сюжет пресный и водянистый, как актриса, игравшая Алису...
...А ещё мне 3D-очки грязные дали! :) Влажные салфетки что ли в кино теперь брать...