четверг, 26 ноября 2009 г.

Как удалить однотонный фон с картинки с помощью ImageMagick

Есть картинца с однотонным фоном.

Надо Этот тон удалить и заменить белым.

Нет ничего проще, если под рукой есть imagemagick.

convert with-background.png -transparent "#FFFFCC" \
   -background white -layers flatten white-background.png

Здесь "#FFFFCC" означает цвет фона моей картинки.

Конструкция -transparent $COLOR делает прозрачным всё, что обладает заданным цветом. А -background white совместно с -layers flatten делает фон белым. Хотите другой? Меняйте white на всё, что пожелаете, и всё.

Вы спросите, почему именно -layers flatten? Не знаю :) Работает, главное. Также работает -layers merge и -layers mosaic. Но поскольку здесь изображение одно, то разницы между ними, вроде как нет.

P.S. Мне это понадобилось, потому что не оказалось под рукой нужного графика. Исходных данных нет, всё что было, так это рисунок внутри PDF файла, который я оттуда успешно стянул :)
Читать далее…

суббота, 17 октября 2009 г.

Отображение текущих разделов в содержании презентации beamer.

И снова про презентации в beamer. Иногда полезно по ходу презентации акцентировать внимание на том, что именно вы планируете рассказать в данный конкретный момент по ходу презентации. Это особенно важно, если зрители во время докладов на конференции засыпают, а не хочется, чтобы они спали на вашем докладе. В настоящее время визуальный фактор стал играть основополагающую роль в презентации, а именно, на докладчика почти никогда зрители не смотрят (в большинстве своём), а некоторые не особо-то и слушают, поскольку целиком сфокусировали свой взгляд и внимание на изображении от проектора в полутёмном конференц-зале с мягкими креслами. А монотонная речь докладчика только помогает слушателям отдохнуть и набраться сил после вчерашнего фуршета по поводу успешного окончания третьего или четвертого дня конференции, вздремнув на вашем докладе.

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

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

Чтобы при появлении нового раздела (section) на экране отображалась часть содержания доклада, необходимо в преамбуле (до \begin{document}) написать следующее:

\AtBeginSection[]{
   \begin{frame}<beamer> \frametitle{Содержание}
     \tableofcontents[currentsection]
   \end{frame}
}

Если же хочется, чтобы при появлении каждого подраздела (subsection) происходило то же самое, то «AtBeginSection» надо заменить на «AtBeginSubsection».

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

\subsection{Очень важный подраздел}
\begin{frame}<beamer> \frametitle{Содержание}
  \tableofcontents[currentsection, currentsubsection]
\end{frame}

\begin{frame} \frametitle{Очень важный слайд}
  Очень важная информация!  Пора проснуться!
\end{frame}

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

В заключение прикладываю пример в исходном тексте и итоговый результат.

\documentclass[pdf,hyperref={unicode}]{beamer}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}

% Тема презентации
\usetheme{Warsaw}

\AtBeginSection[]{
   \begin{frame}<beamer> \frametitle{Содержание}
     \tableofcontents[currentsection, currentsubsection]
   \end{frame}
}

\begin{document}

\section{Введение}
\label{sec:introducion}

\subsection{Подраздел введения}
\begin{frame} \frametitle{Первый слайд}
  Докладчик занял место на трибуне, а зрители уже
  расположились поудобнее в мягких креслах.
\end{frame}

\subsection{Второй подраздел}

\begin{frame} \frametitle{Ещё один слайд}
  Внимание!  Начинается второй подраздел, ещё рано спать! \\
  \vspace{0.5cm}
  Если хотите разбудить слушателей в начале подраздела, то в преамбуле
  следует <<AtBeginSection>> заменить на <<AtBeginSubsection>>.
\end{frame}

\section{Вы ещё не спите?}

\begin{frame}[containsverbatim]
  \frametitle{Бодрящий слайд}

\begin{verbatim}
Проснись и пой,
Проснись и пой.
Попробуй в жизни хоть раз
Не выпускать улыбку из открытых глаз.
Пускай, капризен успех,
Он выбирает из тех,
Кто может первым посмеяться над собой.
Пой засыпая,
Пой во сне,
Проснись и пой.
\end{verbatim}

\end{frame}

\subsection{Очень важный подраздел}
\begin{frame}<beamer> \frametitle{Содержание}
  \tableofcontents[currentsection, currentsubsection]
\end{frame}

\begin{frame} \frametitle{Очень важный слайд}
  \alert{Очень важная информация!}  \\
  \vspace{0.5cm}
  Пора проснуться!
\end{frame}

\end{document}

Читать далее…

пятница, 18 сентября 2009 г.

utf8gost или как подружить русскую библиографию в BibTeX с ГОСТом и юникодом

Недавно при прочтении моего сообщения про бибтех в емаксе у комментатора появился вопрос можно ли оформить по ГОСТу библиографию с помощью BibTeX. Значит это кому-нибудь нужно… Я пользовался для этого бибтеховским стилем gost. По сути, в бибтеховском файле надо было просто прописать в добавление ко всему что было поле language = "russian", например вот так:

@Book{Aleksandrov_Perovskites04,
  author =       {Александров, К. С. and Безносиков, Б. В.},
  title =        {Перовскиты. Настоящее и будущее. (Многообразие
                  прафаз, фазовые превращения, возможности синтеза
                  новых соединений)},
  address =      {Новосибирск},
  publisher =    {Издательство СО РАН},
  year =         2004,
  pages =        231,
  language =     "russian"
}
а в латеховском исходнике указать:
\bibliographystyle{gost71u}               % выбор стиля оформления библиографии
\bibliography{../../bibliography/biblio}  % относительный путь до бибтеховской базы (без расширения bib)
В данном случае используем стиль gost71u. U означает аналог unsrt - ссылки будут нумероваться в порядке упоминания в тексте. Для стиля gost71s ссылки будут нумероваться по алфавиту.

В пакете gost есть ещё стили gost780u и gost780s. Они соответствуют ГОСТу 7.80-00 от 2000 года, в то время как gost71 - ГОСТу 7.1-84 от 1984 года. Хотя чисто визуально «стандартным» везде в моём кругу считают стиль, как оказалось, 84 года. Вообще с нашими ГОСТами сам чёрт ногу сломит. Недавно вот наши чиновники придумали в очередной раз новый стандарт. В любом случае нам за этими глупыми обновлениями не угнаться, поэтому пока пользуемся тем что есть.

А как же юникод?

Всё бы ничего, но стиль корректно функционирует только для однобайтовых кодировок, то есть никак не для юникода. Как-то видел сообщение на ЛОРе, что нашёлся умелец, который как-то стиль пропатчил, но с некоторыми ограничениями в функциональности. Там же на ЛОРе обнаружил сообщение, о том, что теперь есть те гостовские стили, адаптированные под юникод! Архив со стилем можно скачать тут. В архиве помимо необходимых для функционирования стиля файлов есть pdf-файлы с примерами того, как это будет выглядеть на печати.

Установка стиля

Перейдите в директорию, где лежат бибтеховские стили (в моём случае, на Debian Lenny это /usr/share/texmf-texlive/bibtex/bst):

$ cd /usr/share/texmf-texlive/bibtex/bst
Распакуйте архив:
$ sudo unzip /path/to/utf8gost.zip

После этого от нормального рута, а не через sudo скомандуйте:

# texhash

Запускаем

Теперь можно копировать базу, на всякий случай, и конвертировать её в юникод, если до этого было что-то другое. И наконец, исправляем в латеховском исходнике используемый стиль на один из utf8gost7*. Например, на ГОСТ 84 года в порядке упоминания в тексте:

\bibliographystyle{utf8gost71u}

По мере короткого использования никаких багов не заметил. Ждём новый стиль под «самый новый ГОСТ». Только боюсь, он уже будет неактуален, потому что появится «вообще самый-самый новый»… :)


Читать далее…

пятница, 4 сентября 2009 г.

Перемещение курсора в X-терминале при русской раскладке

Известно, что оболочка bash (да и прочие shell'ы) имеют емаксо-подобные клавиатурные сокращения для перемещения курсора и прочей работы с текстом.

C-f и C-b перемещают курсор на символ вперёд и назад соответственно.

M-f и M-b перемещяют курсор на слово вперёд и назад соответственно.

C-a и C-e перемещают курсор в начало и конец строки соответственно.

C-w и M-Backspace удаляют слово перед курсором (немного разное поведение в bash).

M-d удаляет слово после курсором.

C-u вставляет текст из буфера обмена, а M-u перебирает различные варианты из буфера.

C-t переставляет местами буквы - до и после точки (до курсора и курсор).

M-t переставляет местами слова - до и после точки.

M-u переводит всё слово после курсора в верхний регистр.

M-l - в нижний регистр.

M-c - первую букву слова в верхний, а остальное в нижний.

Здесь C- означает нажать и удерживать Ctrl, а M- - нажать и удерживать Alt или нажать и отпустить Esc, а потом нажать следующую клавишу.

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

Но есть неприятный момент

Не все эти комбинации не работают у меня в иксах, в исковых терминалах (xterm, rxvt-unicode) если раскладка клавиатуры кириллическая. При этом в чистой консоли (tty) работает всё независимо от раскладки! В иксах у меня не работают все комбинации с участием клавиши Alt - вместо этого рисуются символы из расширенной ASCII-таблицы, а все Ctrl-сочетания работают независимо от используемого языка. Когда я нажимал на M-f, то получал знак «°», а если на M-b, то - «,».

Я не из тех, кто использует Emacs вообще для всего, мне он в основном интересен в качестве лишь текстового редактора для всего, поэтому запускать shell в Emacs - это не мой вариант. Итак, для меня было важно разрешить эту проблему, заставить в исковых терминалах функционировать вышеперечисленные комбинации с участием Alt (Meta).

Решение

Путь к решению был довольно долгим. Для начала я попробовал поковыряться в насройках терминала. Для rxvt-unicode пробовал править Xresources на предмет keysym. Даже добился какого-то результата, но не очень удачно - от запуска к запуску терминалы по-разному обрабатывали эти ресурсы, так что работало не всегда. Я просил помощи на линуксфоруме, но безрезультатно. Так что уже и забив на всё это, я был очень удивлён, что решение было настолько очевидным.

Насколько я понимаю, терминал обрабатывает escape-последовательности, давая в результате тот или иной результат. Надо его заставить при появлении определённой escape-последовательности генерить заданное действие. На помощь пришёл файл inputrc. Для общесистемных настроек нужно редактировать /etc/inputrc, для пользовательских - ~/.inputrc.

Пишем в inputrc русские буквы!

В этот файл я пытался вносить различные возможные записи последовательностей, в octal и hex-форматах. Но это не работало. И каково же было моё удивление, что можно просто написать в inputrc кириллические символы! Этого я ожидать никак не мог. В итоге, прочитав как называются команды в bash (man bash), получилось следующее:

"\eа": forward-word     # M-f
"\eи": backward-word    # M-b
"\eв": kill-word        # M-d
"\eе": transpose-words  # M-t
"\eг": upcase-word      # M-u
"\eд": downcase-word    # M-l
"\eс": capitalize-word  # M-c

Здесь \e - по сути Esc записано в латинской раскладке, а после неё русские буквы. Можно попробовать не \e, а \M-, что по идее должно было заработать, но не заработало в xterm (а в rxvt-unicode сработало удачно). Теперь можете запустить urxvt и проверить работоспособность.

Пинаем XTerm

Но на этом приключения не заканчиваются! Ещё надо завести XTerm, а в моём случае он не сразу завёлся. Если вдруг даже после этих правок, он при нажатии на описанные комбинации клавиш он вываливает в терминал квадраты, русские буквы или юникодные символы, то правим файл ~/.Xresources. Необходимо, чтобы там содержались следующие строки:

XTerm*metaSendsEscape:  true
XTerm*eightBitInput:    false

После этого

$ xrdb ~/.Xresources
и запускайте новый XTerm.

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

Вообще-то я это затевал также и для того, чтобы jabber-клиентом mcabber было гораздо удобнее пользоваться в режиме набора текста. Однако, как оказалось, этого было недостаточно! Для mcabber я тоже решил эту проблему, путём правки исходников, но об этом чуть попозже.


Читать далее…

вторник, 1 сентября 2009 г.

Wcd и CDargs. Удобные бродилки по файловой системе.

Известно, что для навигации по директориям файловой системы в Linux используется команда cd:

$ cd Directory/

Если же директория запрятана далеко, то неизбежно придётся набирать команду:

$ cd /path/to/deeply/hidden/directory/subdirectory/destination

Чтобы добраться до destination даже с учётом дополнения по TAB, придётся потрудиться.

Как это сделать проще?

Здесь мы рассмотрим три способа ускорения навигации в консоли по файловой системе.

Алиасы

Во-первых, для часто посещаемых директорий можно создать алиасы. Например, пропишем в ~/.bashrc (если используем оболочку bash):

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Теперь в файле ~/.bash_aliases будем записывать алиасы:

alias destination='cd /path/to/deeply/hidden/directory/subdirectory/destination'

После обновления оболочки (source ~/.bashrc или простого перезапуска терминала) для того, чтобы пройти по предыдущему пути, в командной строке будет достаточно набрать

$ destination
Более того, будет работать автодополнение (если оно установлено, конечно).

К преимуществам можно отнести простоту и удобство в виде автодополнения. Недостаток же состоит в том, что кроме как перейти в назначенную директорию, мы будем не в состоянии.

Например, пусть в директории destination есть поддиректория subdirectory. Перейти в неё за одно действие описанным способом нельзя. Команда destination/subdirectory не сработает, алиасы bash этого не понимают. Алиасы в zsh поумнее, возможно, они с этим справятся, но я не специалист в этом вопросе.

Программа WCD

WCD (Wherever Change Directory) позволяет быстро менять директории. Программа кэширует дерево каталогов, после чего для перехода в destination из любой точки файловой системы достаточно скомандовать.

$ wcd destination

Здесь не будет работать автодополнение (по крайней мере у меня не работает. Если кто завёл - отзовитесь :) Зато будут функционировать wildcards * и ?. Более того, можно использовать неполное имя директории. Например, сработают варианты:

$ wcd dest
$ wcd *tion
$ wcd dest??ation

Если под запрос попадает несколько вариантов, будет выведен список, в котором можно будет выбрать нужный вариант (если вариантов очень много, то выведется постраничный листинг, для навигации в котором используются клавиши w и x):

a /usr/share/doc/texlive-latex-extra-doc/latex/datenumber
b /usr/share/doc/texlive-latex-extra-doc/latex/datetime
c /usr/share/icons/gnome/16x16/stock/data
d /usr/share/icons/gnome/24x24/stock/data
e /usr/share/icons/gnome/48x48/stock/data
f /usr/share/icons/hicolor/128x128/stock/data
g /usr/share/icons/hicolor/16x16/stock/data
h /usr/share/icons/hicolor/192x192/stock/data
i /usr/share/icons/hicolor/22x22/stock/data
j /usr/share/icons/hicolor/24x24/stock/data
k /usr/share/icons/hicolor/32x32/stock/data
l /usr/share/icons/hicolor/36x36/stock/data
m /usr/share/icons/hicolor/48x48/stock/data
n /usr/share/icons/hicolor/64x64/stock/data
o /usr/share/icons/hicolor/72x72/stock/data
p /usr/share/icons/hicolor/96x96/stock/data
q /usr/share/icons/hicolor/scalable/stock/data
r /usr/share/texmf-texlive/tex/latex/dateiliste
s /usr/share/texmf-texlive/tex/latex/datenumber
t /usr/share/texmf-texlive/tex/latex/datetime
u /usr/share/texmf-texlive/tex/latex/ucs/data
v /var/spool/openoffice/uno_packages/cache/registry/com.sun.star.comp.deploym

Wild match for 137 directories.       w=up x=down ?=help  Page 7/7
Please choose one (<Enter> to abort):

С применением wcd есть возможность заходить в поддиректории назначения, но здесь уже не будет работать автодополнение. То есть либо придётся по памяти набивать поддиректорию, используя wildcard, либо, в случае малой вложенности директорий, в качестве поддиректории сразу вколотить *

$ wcd destination/*
Установка WCD

В Debian пакет есть в репозиториях, поэтому просто:

$ sudo aptitude install wcd

После этого копируем бинарник программы куда-нибудь в $PATH (проверить можно по echo $PATH). В моём случае это ~/bin.

$ cp /usr/lib/wcd/wcd.exec ~/bin

Дальше всё по мануалу (man wcd). Лезем в ~/.bashrc (или какая там у вас оболочка?) и добавляем:

# WCD function
function wcd
{
   $HOME/bin/wcd.exeс $*

   . $HOME/bin/wcd.go
}
(Для csh будет alias wcd "$HOME/bin/wcd.exe \!* ; source $HOME/bin/wcd.go")

После этого перезапускаем оболочку и... ещё не радуемся. Надо же просканировать необходимые директории. Вся домашняя директория (пере)сканируется с использованием ключа -s, какой-то заданный путь - с ключом -A (добавляется, а не перезаписывается):

$ wcd -s
$ wcd -A /media
Можно объединить
$ wcd -s -A /media/

Теперь можно пользоваться программой. У wcd много дополнительных возможностей, например графический интерфейс, который строит дерево каталогов:

$ wcd -ga
        |         |       |        |- 700
        |         |       |        |- mm4b -+- 550_105min
        |         |       |        |        |- 550_30min
        |         |       |        |        |- 625
        |         |       |        |        `- 725
        |         |       |        `- old_MM4_PeaksCorrection -+- 350
        |         |       |                                    |- 400
        |         |       |                                    |- 450
        |         |       |                                    |- 500
        |         |       |                                    |- 550
        |         |       |                                    |- 600
        |         |       |                                    |- 625
        |         |       |                                    |-<650>

        |         |       |                                    |- 675
        |         |       |                                    `- 700
        |         |       `- results
        |         |- old_perovskites -+- Membrane -+- air -+- dat
        |         |                   |            |       `- raw
        |         |                   |            |- graphs -+- Air
        |         |                   |            |          `- Vacuum
        |         |                   |            |- photo -+- 280307
        |         |                   |            |         `- 290307
        |         |                   |            |- synchrotron -+- correct
        |         |                   |            |               `- uxd
        |         |                   |            `- vacuum --- Vac_dat
Однако для меня достаточно лишь быстрого хождения по директориям.

Программа CDargs

Эта программа предоставляет меньшую функциональность, нежели wcd, однако может оказаться более удобной. По сути она позволяет формировать закладки в файловой системе для быстрого доступа к ним.

$ cv bookmark
/path/to/buried/directory/with/bookmark
То есть, скомандовав перейти в bookmark из любой директории, мы прошли разом весь путь.

Какое же отличие от простых алиасов? Во-первых, есть возможность заходить в поддиректории, более того, с использованием автодополнения.

$ cv Music [TAB]
Music/Audiobooks/   Music/Foreign/      Music/Sounds/
Music/Classic/      Music/Fun/          Music/Soundtrack/
Music/Collections/  Music/Russian/
$ cv Music/Classic/ [TAB]
Music/Classic/Classic\ in\ rock/     Music/Classic/\М\у\с\о\р\г\с\к\и\й/
Music/Classic/PlanetClassic/         Music/Classic/\П\у\ч\ч\и\н\и/
Music/Classic/\В\и\в\а\л\ь\д\и/      Music/Classic/\Р\а\х\м\а\н\и\н\о\в/
Music/Classic/\Д\в\о\р\ж\а\к/        Music/Classic/\Р\о\с\с\и\н\и/
Music/Classic/\М\о\ц\а\р\т/          Music/Classic/\Ч\а\й\к\о\в\с\к\и\й/

Во-вторых, есть возможность быстрого копирования файлов в точку ФС, куда указывает закладка.

$ cpb foo bookmark/subdirectory
Но тут, к сожалению, не работает дополнение по табу :(

В третьих есть псевдогуи, на ncurses.

Установка CDargs

В Debian Lenny, опять же, программа есть. Поэтому

$ sudo aptitude install cdargs

После этого можно запустить cdargs и почитать справку, нажав ?. Можно добавить закладки через GUI, а можно просто отредактировать файл ~/.cdargs:

cac /home/maxim/Documents/conferences/cac
Documents /home/maxim/Documents
Music /home/maxim/Music
Video /home/maxim/Video
devel /home/maxim/devel
python-dev /home/maxim/devel/python
Incomplete /home/maxim/p2p/Incomplete
p2p /home/maxim/p2p
data /media/data/

Для bash в ~/.bashrc пишем:

# CDargs function
if [ -e /usr/share/doc/cdargs/examples/cdargs-bash.sh ]; then

  . /usr/share/doc/cdargs/examples/cdargs-bash.sh
fi
function cv () {
    cdargs "$1" && cd "‘cat "$HOME/.cdargsresult"‘" ;
}

Теперь, после перезапуска оболочки бегаем по файловой системе со скоростью спринтера.

Резюме

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

Несомненно, программы wcd и cdargs существенно облегчат жизнь обитателям консоли. Напоследок хотелось бы отметить, что с cdargs я познакомился благодаря обзору на Debian Package of the Day.


Читать далее…

пятница, 21 августа 2009 г.

Включение и отключение flashplayer в Conkeror и не только

Проблема

Есть в природе flash-анимация, которая проигрывается flash-плейером. Иногда даже она может быть полезной, например, если очень хочется глянуть в интернете на http://youtube.com какой-нибудь ролик. Но вот когда она мелькает перед глазами, демонстрируя бездарную рекламу, появляется желание от неё избавиться, не только из-за навязчивости но и из-за прожорливости флеша в смысле процессорных ресурсов.

Поэтому хочется иметь по умолчанию флеш в отключенном состоянии, а включать только при необходимости. В популярных браузерах есть возможность включать и отключать это зло кликами мыши. К сожалению, в менее популярном браузере Conkeror такой опции пока нет (по крайней мере для версии Debian-0.9~git090223-1), а очень хотелось бы. Здесь я напишу каким образом я решил поставленную задачу. Решение не самое идеальное, поэтому при наличии интересных мыслей по этому поводу, добро пожаловать в комментарии!

Дано

На борту Debian Lenny (stable, на момент написания заметки),

$ uname -r
2.6.26-2-686

Flash поставлен проприетарный, flashplugin-nonfree, (другой на моей технике просто не шевелится) по официальной инструкции.

Предлагаемый подход и реализация

Поскольку для работы плейера пользователю необходимо иметь права для чтения библиотеки libflashplayer.so, запрет на чтение приведёт к тому, что неугодная анимация работать не будет. Файл libflashplayer.so лежит в моём случае в директории /usr/lib/flashplugin-nonfree:

$ ls /usr/lib/flashplugin-nonfree
итого 9916
-rw-r--r-- 1 root root 10131640 Фев  3  2009 libflashplayer.so
-rw-r--r-- 1 root root     2933 Июл 27  2007 pubkey.asc

Как видно, владелец - root, а группа и все остальные имеют право на чтение. Этого-то права мы и собираемся лишить, но не здесь, и чуть позже. Для начала скопируем файл libflashplayer.so в директорию ~/.mozilla/plugins

$ cp /usr/lib/flashplugin-nonfree/libflashplayer.so ~/.mozilla/plugins

Почему туда? Именно там Conkeror ишет плагины в первую очередь. На вики-странице говорится о том, что кроме того плагины могут лежать в ~/.conkeror/plugins, но у меня, почему-то это не работает.

Теперь лишим нас всех прав для чтения этого файла:

$ chmod a-r ~/.mozilla/plugins/libflashplayer.so

В результате, после перезагрузки страницы, содержащей флэш, мы насладимся его отсутствием. Вернуть его обратно можно, дав права на чтение:

$ chmod a+r ~/.mozilla/plugins/libflashplayer.so

Поскольку, для такой процедуры не очень здорово всегда писать в терминале подобную команду, имеет смысл забиндить эти действия на какие-нибудь комбинации клавиш. Я, например, для этого пользуюсь xbindkeys, и добавил в ~/.xbindkeysrc следующие строки (но можно использовать способы заданий комбинация клавиш для вашего оконного менеджера или для другой программы "забиндивания"):

"chmod a-r ~/.mozilla/plugins/libflashplayer.so"
Mod4 + bracketright
"chmod a+r ~/.mozilla/plugins/libflashplayer.so"
Mod4 + bracketleft
Таким образом, при нажатии Win + [ флэш включается, а при Win+] прибивается (не забываем предварительно перезапустить xbindkeys).

В принципе, всё работает, казалось бы, добились того, чего хотели. Всё бы ничего, но вот если вы залезете на тот же http://youtube.com, включив флэш, то выключение таким образом уже не отобразится на поведение флэша на других страницах, потому что программа flashplayer уже запущена и работает, а все изменения на неё не влияют. Чтобы изменения вступили в силу, надо просто закрыть страничку youtube. Хотя это и не всегда у меня наблюдалось.

Если честно, эту особенность обнаружил только когда писал пост и перепроверял всё на собственной шкуре. На других сайтах как-то не замечал такого - обычно после перезапуска страницы перезапускался и флэш. Стало быть, изменив права доступа, после перезапуска страницы я добивался того, чего хотел.

Резюме

Итак, пока для Conkeror пока не прикрутили переключалку флеша, я сгородил свою :) Разумеется, она должна работать не только для Conkeror, но и, судя по всему, для Firefox (полагаю, что тогда надо запретить пользователям читать общий файл /usr/lib/flashplugin-nonfree/libflashplayer.so, для чего нужны права рута, что для машины с одним пользователем приемлемо), хотя в этом и нет особой нужды, потому что там есть свои резалки флэша.

Поскольку решение неидеальное, был бы очень рад услышать пожелания/предложения.


Читать далее…

понедельник, 17 августа 2009 г.

Смена внешнего вида диалога выбора в Opera

Я иногда пользуюсь браузером Opera, когда не использую Conkeror. Многое в первом меня устраивает, за исключением, пожалуй, диалога выбора файла. Например, при сохранении странички или файла появляется окно, соответствующее стилю библиотеки qt3. Лично мне это не нравится, потому что данный диалог мне неудобен, если даже не говорить о внешних недостатках. Здесь я опишу как можно его можно изменить на стандартный диалог gtk.

Немного начальных условий (а вдруг, понадобятся? :).

$ uname -r
2.6.26-2-686

$ opera -version
Opera 9.64. Build 2480 for Linux. Qt library 3.3.8b.

Для смены вида диалога набираем в адресной строке opera:config, находим "File Selector", выставляем значение "Dialog Toolkit" на 2, сохраняем. После перезапуска Opera получаем стандартный диалог выбора gtk.

Другие значения параметра "Dialog Toolkit" в моём случае не приводят к каким-либо изменениям.

А можно не менять ничего кардинально, а, например, добавить информации в стандартном диалоге: тип файла, время модификации, права доступа. Для этого ставим галку на "Show Details".

Решение нашёл здесь, тов. lizard огромное спасибо!!! Для меня остаётся загадкой, как он до этого дошёл :)


Читать далее…