Программы для Linux: пользовательский софт в Linux



90 коммент.
Вот поставили вы Debian GNU/Linux (или другой дистрибутив типа Ubuntu Linux) - какие программы в Linux за что отвечают? Какие программы для линукс стоит поставить в первую очередь для создания привычного рабочего окружения? Ответ на этот вопрос, а также на вопрос "есть ли аналоги программы в Linux?" приводится в этом посте.

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

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


Работа с изображениями

Редактирование фотографий, конвертирование из raw-формата, поточная обработка изображений, просмотрщики.
  • GIMP, krita, CinePaint - редактор изображений (аналог Adobe Photoshop в Linux, описание).
  • ImageMagick (консольный) - консольный графический редактор, полезен при поточной обработке изображений (описание).
  • Nip2 - специализированный графический редактор для изображений большого размера (описание).
  • Inkscape, Sodipodi - векторный графический редактор.
  • F-Spot, digiKam, gThumb, Google Picasa ( отсутствует в дистрибутиве по лицензионным соображениям [?]) - приложение для управления вашими фотографиями
  • Gwenview, gqview, geeqie, eog, pornview - просмотрщики изображений в Linux (аналог ACDSee в Linux).
  • UFraw, dcraw (консольный), shotwell, rawtharepee - конверторы RAW-файлов для Linux (описание
Интернет
Веб-броузеры и почтовые клиенты, мгновенные сообщения и FTP-клиенты, интернет-телефония.
  • Mozilla Firefox / Iceweasel, Konqueror, Epiphany, Opera, chromium-browser ( отсутствует в дистрибутиве по лицензионным соображениям [?]) - веб-браузер (аналог Internet Exploder в Linux).
  • Mozilla Thunderbird / Icedove, Evolution, Sylpheed, KMail, mutt (консольный) - почтовый клиент (аналог Microsoft Outlook в Linux).
  • gFTP, ncftp, FileZilla - FTP клиенты в Linux.
  • aMule - приложение для работы в P2P сетях.
  • Azureus, Deluge, KTorrent, Transmission, rtorrent (консольный) - Bittorrent клиент.
  • linuxdcpp, valknut, microdc - DC++ клиенты для Линукс.
  • Pidgin, Psi, SIM, Kopete, gajim, tkabber, mcabber (консольный) и centericq (консольный), QutIM (скачать) - клиент обмена мгновенными сообщениями (аналог ICQ в Linux).
  • Skype ( отсутствует в дистрибутиве по лицензионным соображениям [?]) , wengophone, gizmo, Ekiga - интернет-телефония.
  • d4x, gwget, kget, wget (консольный) - менеджеры закачек файлов.
  • wget (консольный), aria, httrack (консольный) - оффлайн-броузеры, скачивают сайты для локального просмотра (аналог Teleport Pro для Linux).

Работа с текстом и таблицами
Визульные текстовые процессоры, системы вёрстки.
  • OpenOffice Writer - аналог Microsoft Word в Linux (часть пакета OpenOffice.org)
  • OpenOffice Calc - аналог Microsoft Excel в Linux (часть пакета OpenOffice.org)
  • OpenOffice Impress - аналог Microsoft PowerPoint (часть пакета OpenOffice.org)
  • OpenOffice Base - аналог Microsoft Access (часть пакета OpenOffice.org)
  • AbiWord, GNUmeric, KOffice, SiagOffice - другие офисные приложения для Линукс.
  • Adobe Reader, Evince, xpdf, okular, kpdf - чтение PDF-файлов под Линукс.
  • gnochm, kchmview, xChmCHM - чем прочитать CHM-файлы в Linux.
  • StarDict - словари в Линукс, аналог Lingvo.
  • GnuCash, kMyMoney - персональный финансовый менеджер (аналог Quicken).
  • Scribus - настольная издательская система (аналог QuarkXPress в Linux).
  • Kate, nEdit, gedit - текстовые редакторы с подсветкой синтаксиса.
  • vi, vim, emacs - продвинутые среды обработки текста.


Мультимедиа
Проигрыватели аудио и видеофайлов, звуковые редакторы, видеоредаторы и системы видеомонтажа, запись CD/DVD-дисков.

  • Amarok, Banshee, exaile - музыкальный проигрыватель и каталогизатор музыки.
  • XMMS, audacious, bmp - музыкальный проигрыватель, аналог знаменитого Winamp (описание)
  • Rhythmbox- музыкальный проигрыватель, аналог Apple's iTunes, с поддержкой iPods
  • Mocp (консольный) - консольный музыкальный проигрыватель с интерфейсом в стиле Нортон Командер.
  • Audacity - звуковой редактор
  • MPlayer, Xine, VLC Media Player, Totem, Real Player( отсутствует в дистрибутиве по лицензионным соображениям [?]) - проигрыватели видеофайлов и DVD в Линукс (видео/аудио)
  • Kino, Сinelerra - редактор цифрового видео
  • TVtime, zapper, xawtv, kdetv - приложение для просмотра телевизионных каналов
  • grip ("Звуковыжималка"), KAudioCreator, abcde (консольный) - копирование звуковых CD
  • GnomeBaker, graverman, Brasero, K3B - программа записи на CD/DVD
  • EasyTag - программа для конвертирования тэгов музыки в правильные кодировки (описание).

Системное
Приложения для расширения возможностей ОС: интерпретаторы языков программирования, виртуальные машины, эмуляторы.

  • WINE, Cedega, Crossover Office( отсутствует в дистрибутиве по лицензионным соображениям [?]) - средство запуска exe-файлов в Линукс.
  • QEMU (консольный), VirtualBox - полные эмуляторы, для запуска других ОС в Линукс (описание QEMU, описание VirtualBox)
  • Midnight Comander (MC), deco, gentoo - аналог Norton Сommander, файловый менеджер для консоли
  • torsmo, conky, gkrellm - индикация работы системы.

Научное
Программы для набора научных документов,
  • tetex / texlive - дистрибутив LaTeX для Линукс (как установить)
  • Kile / Lyx / texmaker - оболочка для создания латех-файлов (описание)
  • jabref (нужна Java) - ведение библиографической базы данных (описание)
  • sam2p - для перевода всего-чего-угодно в eps
Остальные программы можно найти тут: Аналоги Windows программ в Linux (Ubuntu)- таблица соответствий.
Читать далее

Экспозиция более 30 секунд на цифровой камере: Long-time remote shooting



12 коммент.
Задача: требуется фотографировать с выдержками более 30 секунд ("от руки") и есть необходимость этот процесс автоматизировать.
Решение: при помощи паяльника, доступных электрических компонентов и скрипта на bash можно снимать с длительными выдержками без необходимости стоять с камерой и держать кнопку.


Исходные данные
Имеется цифровая фотокамера Canon EOS 400D, Debian-powered ноутбук и необходимость снимать фотографии с выдержкой более 30 секунд. Если немного погуглить, то можно найти замечательную схему, которую предлагает Michael A. Covington здесь. На всякий случай дублирую её тут:



Схема прекрасная, но она подходит для Canon EOS 300D, а для 400D нет - если её спаять и попробовать управлять 400D, то затвор будет только подниматься, но не опускаться. То есть нет возможности остановить экспозицию в нужный момент, кроме как выключить камеру.


Схема для Canon EOS 400D
Долго ли, коротко, однако я с коллегой, Алексеем Ропяным, экспериментальным путём выяснили, что закрывает затвор фотоаппарат по сигналу с другого контакта, и Алексей предложил схему изменить вот так:



И это сработало: наш лабораторный Canon EOS 400D стал открывать и закрывать затвор по команде с компьютера!


Необходимые компоненты
Для того, чтобы спаять шнурок управления камерой, требуется некоторое количество четырёхжильного кабеля (от аудиоаппаратуры или простой телефонный провод), jack на 2.5мм (он же 3/32 inch), указанные на схеме радиоэлементы (можно купить в Chip&Dip), 9-контактный COM-порт и соответственно переходник USB-COM (чтобы можно было использовать и на современных компьютерах, и на старых), а так же паяльник и немного терпения.

Переходник USB-COM лучше всего брать на чипе Profilic 2303 - это самый распространённый чип и в Линукс работает "из коробки".


Программное обеспечение
Для управления камерой требуется одна маленькая утилита, которую мне подсказали на Астрофоруме (обсуждение велось в теме "Выдержка более 30 сек. через комп?" тут и "Чем Linux полезен ЛА?" здесь).

Программа называется setSerialSignal и её исходник находится здесь. Скомпилировать её GCC, который входит в любой дистрибутив *nix-систем:
gcc -o setSerialSignal setSerialSignal.c
Проверялось на системе Debian GNU/Linux v4.0 r.0 "Etch", gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).

На всякий случай дублирую исходный код программы:

/*
* setSerialSignal v0.1 9/13/01
* www.embeddedlinuxinterfacing.com
*
*
* The original location of this source is
* http://www.embeddedlinuxinterfacing.com/chapters/06/setSerialSignal.c
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* setSerialSignal
* setSerialSignal sets the DTR and RTS serial port control signals.
* This program queries the serial port status then sets or clears
* the DTR or RTS bits based on user supplied command line setting.
*
* setSerialSignal clears the HUPCL bit. With the HUPCL bit set,
* when you close the serial port, the Linux serial port driver
* will drop DTR (assertion level 1, negative RS-232 voltage). By
* clearing the HUPCL bit, the serial port driver leaves the
* assertion level of DTR alone when the port is closed.
*/

/*
gcc -o setSerialSignal setSerialSignal.c
*/


#include
#include
#include

/* we need a termios structure to clear the HUPCL bit */
struct termios tio;

int main(int argc, char *argv[])
{
int fd;
int status;

if (argc != 4)
{
printf("Usage: setSerialSignal port DTR RTS\n");
printf("Usage: setSerialSignal /dev/ttyS0|/dev/ttyS1 0|1 0|1\n");
exit( 1 );
}

if ((fd = open(argv[1],O_RDWR)) < 0)
{
printf("Couldn't open %s\n",argv[1]);
exit(1);
}
tcgetattr(fd, &tio); /* get the termio information */
tio.c_cflag &= ~HUPCL; /* clear the HUPCL bit */
tcsetattr(fd, TCSANOW, &tio); /* set the termio information */

ioctl(fd, TIOCMGET, &status); /* get the serial port status */

if ( argv[2][0] == '1' ) /* set the DTR line */
status &= ~TIOCM_DTR;
else
status |= TIOCM_DTR;

if ( argv[3][0] == '1' ) /* set the RTS line */
status &= ~TIOCM_RTS;
else
status |= TIOCM_RTS;

ioctl(fd, TIOCMSET, &status); /* set the serial port status */

close(fd); /* close the device file */
}



Посылаемые сигналы
Программу собираем и даём ей необходимые права на выполнение, а ниже - сигналы, посылаемые в порт программой, и их передача setSetialSignal:

Сигнал DTR
setSerialSignal /dev/ttyS0 1 0



Сброс сигнала DTR
setSerialSignal /dev/ttyS0 0 0


Сигнал RTS
setSerialSignal /dev/ttyS0 0 1


Сброс сигнала RTS
setSerialSignal /dev/ttyS0 1 1


Всё это обеспечивает вам возможность управления камерой: открытие происходит по сигналу DTR, закрытие - сигналу RTS.


Скрипт управления камерой
Дальше удобно воспользоваться простым скриптом, который написал Евгений Ромас aka BrainBug, но для случая с 400D я скрипт немного поправил, и теперь он выглядит так:

#!/bin/bash

for i in `seq $3`; do
{
setSerialSignal /dev/ttyUSB0 0 0 &&
sleep $1 && setSerialSignal /dev/ttyUSB0 0 1 &&
sleep 0.3 && setSerialSignal /dev/ttyUSB0 0 0 &&
sleep $2 && setSerialSignal /dev/ttyUSB0 1 1 && echo "One more image captured!" &&
sleep $4;

}
done

echo "Done!"

Параметры скрипта:
1: задержка поднятия зеркала
2: время выдержки в секундах
3: количество кадров
4: задержка между кадрами

Пример:
make_captures 4 60 30 2

Скрипт расчитан на работу с переходником USB-COM, и если у вас другой номер порта - естественно, скрипт нужно немного поправить.


Как это работает
Итак, шнурок спаян, переходник USB-COM включён в USB или сам шнурок вставлен в COM-порт, софт скомпилирован и наделён необходимыми правами. Изложение ориентировано на любую *nix-систему, в данном случае это Debian GNU/Linux.
  • Включаем камеру, переводим её в режим BULB, выставляем значение диафрагмы и ISO, а так же другие параметры при необходимости.
  • Вставляем jack в разъём фотокамеры, а противоположный конец в COM-порт или COM-USB переходник и далее в USB-порт компьютера.
  • Убеждаемся (в случае USB), что переходник опознан и работает: dmesg должен выдать что-то вроде:
usb 2-1: new full speed USB device using uhci_hcd and address 2
usb 2-1: configuration #1 chosen from 1 choice
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
pl2303 2-1:1.0: pl2303 converter detected
usb 2-1: pl2303 converter now attached to ttyUSB0
usbcore: registered new interface driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver
  • Всё готово, теперь снимаем при помощи команды:
    make_capture 1 5 2 3
В этом примере будет сделано 2 кадра с экспозицией 5 секунд, задержка между кадрами 3 секунды, задержка поднятия зеркала 1 секунда.
Следует так же отметить, что таким способом можно отсекать выдержки от 1 секунды и больше по Exif. Физически передавать сигнал можно и быстрее, однако в Exif при этом пишутся неправильные данные. Точно так же, выдержки в данном случае отсекаются с точностью 1 секунда. Впрочем, для установки, которая должна отсекать длинные выдержки, это приемлемо.

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

Работает на камерах по крайней мере с firmware 1.0.4, имеются частные сообщения, что оригинальная схема должна работать с 400D. Выясняется в настоящее время.

Благодарности
Эта статья появилась в результате усилий многих людей, которых мне хотелось бы поблагодарить за помощь:
  • Michael A. Covington for his original article "Building a Cable Release and Serial-Port Cable for the Canon EOS 300D Digital Rebel".
  • Евгению Ромасу aka BrainBug за ссылку на оригинальную статью по управлению фотоаппаратом при помощи COM-порта, а так же за ценные мысли, высказанные в частных сообщениях.
  • Антону aka NTRNO за то, что выискал ключевые посты в недрах Астрофорума и выдал идеи по управлению камерой в Linux.
  • Всем участникам Астрофорума, так или иначе участвовавших в темах управления фотокамерой при помощи компьютера.
  • Алексею Ропяному, который экспериментально выяснил особенность фотокамеры, предложил изменить схему и использовать сигнал DTR для закрывания затвора.
  • Леониду Серёжкину за реализацию схемы в железе.
А так же огромная благодарность сотрудникам кафедры Физики твёрдого тела №25 МИФИ за поддержку и понимание.
Читать далее

Растровый графический редактор в Linux: Krita



7 коммент.
Если кто искал среди графических редакторов под Linux 16-битный цвет, работу в CMYK и графический интерфейс в одном флаконе - встречайте Krita, очень достойный редактор растровой графики.


Общие впечатления
Не только GiMP, nip2 и ImageMagick умеют обрабатывать растровые изображения в Линукс - есть ещё один замечательный графический редактор - это Krita. Здесь есть и 16-битный CMYK, и RGB, и L*a*b* и другие пространства цветов. И хотя редактор несколько сыроват, но довольно быстр и с приличной функциональностью.

Редактор больше походит на фотошоп лучших его дней, чем инопланетный GiMP.

Те же боковые панели, слои, кисти и набор инструментов рисования. Есть очень приличный собственный RAW-конвертор: не такой мощный, как dcraw, но вполне справляющийся со своей работой.


Цвета и разрядности
Реализованы средства работы в следующих цветовых пространствах:
  • RGB 8, 16 и 32-разрядные;
  • CMYK 8 и 16 разрядные;
  • L*a*b 16 разрядные;
  • YCbCr 8 и 16 разрядные;
и другие. В общем, разнообразие большое.



Перевод в другие цветовые пространства довольно быстрый, есть декомпозиция по цветовым слоям (как в GiMP).


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

Немного фильтров, и есть подозрение, что некоторые из них не совсем корректно работают на цветных изображениях. Например, даже при небольших значениях параметров Нечёткой маски ("Unsharp mask") на изображении появились цветные артефакты. Некоторые фильтры явно не доделаны, и, кроме прочего, довольно медленные (а так же охочи до ресурсов).



Размытие по Гауссу, Нечёткая маска, простые методы выделения контуров, вейвлет-алгоритмы подавления шумов - в общем, довольно скромно, однако сомневаюсь, чтобы команда Krita на этом остановилась.


Итоги
Пока что Krita несколько сырая, но многие важные инструменты редактирования изображений есть, и весьма приличные. Есть работа с 16 и 32 разрядным цветом, перевод между цветовыми пространствами, небольшой набор алгоритмов обработки изображений.

Не стоит разводить религиозных войн на тему "Gimp vs Krita" - просто нужно использовать нужный инструмент для данной конкретной работы. Что-то есть в гимпе, что-то в крите. В любом случае, много места крита не займёт и кошелёк не опустошит.

Ссылки
Интересное сопоставление GiMP и Krita есть здесь, правда, на английском.
Читать далее

Настройка conky: Индикация состояния системы в Linux



41 коммент.
Весьма удобно следить за состоянием своей системы, не слишком отрываясь от других задач. Здорово бросить взгляд на информативную панельку - и сразу получить всю информацию о работе системы. Именно для этих целей есть системные мониторы, например conky. Настроить conky в Linux очень просто, о чём и будет этот пост.


Умолчания, стиль и необходимость настройки conky
По умолчанию, установленный conky выглядит жутковато. Это такой тонкий намёк на то, что программу нужно подгонять под себя и свои представления об удобстве. Дело это до некоторой степени кропотливое, но сделав это раз, потом много раз экономим время.

Настраивается conky через свой конфиг, который нужно скопировать из /usr/share/doc/conky/examples/ или из /usr/share/doc/conky/ в свой домашний каталог и переименовать в .conkyrc

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


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

Во-первых, процесс это увлекательный и может отвлечь на долго (у меня это отняло вечер).

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

Итак, первая часть параметров отвечает за то, как будет выглядеть системный монитор. Здесь можно выбрать, в частности, шрифт и его параметры:
# Xft font when Xft is enabled
xftfont Bitstream Vera Sans Mono:size=9
Время обновления, если в этом нет насущной необходимости, лучше ставить 1-2 секунды, хотя можно и меньше (тогда возрастает потребление ресурсов):

# Update interval in seconds
update_interval 2.0
Расположение по углам экрана, что тоже хорошо прокомментировано и потому понятно:
# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
#alignment bottom_left
alignment bottom_right
Ещё подробностей можно прочитать в официальном FAQ conky или, пользуясь своими знаниями английского, догадаться :-)

Это всё довольно просто - главное развлечение начинается при настройке переменных, которые и будут отображаться. Лучше всего за основу взять какой-нибудь образцовый конфиг отсюда и брать понравившиеся элементы. В этой замечательной статье (на русском!) есть много интересных идей - только читать её нужно с конца (пропуская философские отвлечения).
Короче говоря: вторая часть конфига выглядит примерно так
${переменная параметры}
$элемент оформления
${color цветтекста}
${переменная параметры}
...

Назначение переменных в основном понятно из их названий:
  • exec выводит на экран текст, возвращаемый вызываемой программой;
  • execbar и execgraph визуализируют вывод исполняемой команды в виде диаграммы или графика (выводимое значение должно лежать в пределах 0..100);
  • execi и texeci запускают команду циклически с интервалом (texeci — с интервалом, заведомо большим времени исполнения). execibar и execigraph полностью аналогичны execbar и execgraph, но для циклического выполнения команд;
  • if_running, if_existing и if_mounted — выводят всё вплоть до endif, если выполняется процесс, существует файл и монтирована точка монтирования, соответственно;
  • else — выводить, если ложны все вышестоящие выражения.

Надо сказать, что применение execi особенно для скриптов - дело довольно затратное, и скрипты лучше отрабатывать таким образом не часто (раз в несколько секунд).

Ниже - несколько наиболее интересных решений для отображения данных в conky.

Показывать текущее время в формате часы:минуты:секунды
${time %k:%M:%S}

Отображение занимаемой приложениями памяти
$mem/$memmax
Вот тут у меня был лёгкий конфуз: часто значения отображаемой памяти были неприлично маленькими - это происходит оттого, что не учитывается память, занятая кэшем.

Вывести три самых охочих до процессора приложения:
${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
Несколько более сложным является отображение ACPI-данных о процессоре или питании системы. В этом нам помогут замечательные программы cat и cut. Вот как, например, вывести информацию о температуре на процессоре и включения троттлинга:

${color lightgrey} Core: $color ${
execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-}

Для удобства я подсветил цветом: красным - команды conky, серым - текст, который будет выведен, синим - системные команды, которые дают необходимые значения, зелёным - пути до данных ACPI (у вас они будут, скорее всего, другими).

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



И текст конфига .conkyrc который это обеспечивает (внимание, для отображения заряда батарей используется обращение к скрипту, которого у вас может не быть). Вот образец конфигурационного файла conky
# Conky advanced configuration
background yes

# Use Xft?
use_xft yes

# Xft font when Xft is enabled
xftfont Bitstream Vera Sans Mono:size=9

# Text alpha when using Xft
xftalpha 0.8

# Update interval in seconds
update_interval 2.0

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window no

# If own_window is yes, you may use type normal, desktop or override
own_window_type normal

# Use pseudo transparency with own_window?
own_window_transparent yes

# If own_window is yes, these window manager hints may be used
#own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 300 5

# Draw shades?
draw_shades yes

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders no

# Draw borders around graphs
draw_graph_borders no

# Stippled borders?
stippled_borders 8

# border margins
border_margin 40

# border width
border_width 1

# Default colors and also border colors
default_color white
default_shade_color black
default_outline_color black

# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
#alignment bottom_left
alignment bottom_right
#alignment none

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 12
gap_y 12

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale no

# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer no

# Maximum size of buffer for user text, i.e. below TEXT line.
#max_user_text 16384

# Allow for the creation of at least this number of port monitors (if 0 or not set, default is 16)
#min_port_monitors 16

# Allow each port monitor to track at least this many connections (if 0 or not set, default is 256)
#min_port_monitor_connections 256

# variable is given either in format $variable or in ${variable}. Latter
# allows characters right after the variable and must be used in network
# stuff because of an argument

# stuff after 'TEXT' will be formatted on screen

TEXT
$nodename - $sysname $kernel on $machine
$stippled_hr
${color lightgrey}Current time: $color ${time %k:%M:%S} - ${color lightgrey}Uptime:$color $uptime ${color lightgrey}- Load:$color $loadavg
${color lightgrey}CPU Usage:${color #cc2222} $cpu% ${cpubar}
${color blue}${cpugraph 0000ff 00ff00}
${color lightgrey}RAM Usage:$color $mem/$memmax - Swap Usage:$color $swap/$swapmax - $swapperc%
${color lightgrey}File systems: $color${fs_free /}/${fs_size /} ${fs_bar /}
${color lightgrey}Processes:$color $processes ${color grey}Running:$color $running_processes
$stippled_hr
${color}Name PID CPU% MEM%
${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color}Mem usage
${color #ddaa00} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color lightgrey} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color lightgrey} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
$stippled_hr
${color blue}System health ${color lightgrey}
${color lightgrey} Core: $color ${execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-}
${color lightgrey} Core clock: $color ${execi 2 cat /proc/cpuinfo | grep 'cpu MHz' | cut -c12-}
$stippled_hr
${color red}Energy subsystem:
${color lightgrey}Power: $color${execi 2 cat /proc/acpi/ac_adapter/AC0/state | cut -c26-} - ${color lightgrey}Charging state:$color ${execi 2 cat /proc/acpi/battery/BAT0/state | grep charging | cut -c26-}
${color lightgrey}Present rate :$color ${execi 2 cat /proc/acpi/battery/BAT0/state | grep 'present rate' | cut -c26-} - ${color lightgrey}Battery energy:${color green} ${execi 2 /usr/bin/myscript/kmvbatterystate}%
$color $stippled_hr
${color #ddaa00}Port(s)${alignr}#Connections
$color Inbound: ${tcp_portmon 1 32767 count} Outbound: ${tcp_portmon 32768 61000 count}${alignr}ALL: ${tcp_portmon 1 65535 count}
${color #ddaa00}Inbound Connection ${alignr} Local Service/Port$color
${tcp_portmon 1 32767 rhost 0} ${alignr} ${tcp_portmon 1 32767 lservice 0}
${tcp_portmon 1 32767 rhost 1} ${alignr} ${tcp_portmon 1 32767 lservice 1}
${tcp_portmon 1 32767 rhost 2} ${alignr} ${tcp_portmon 1 32767 lservice 2}
${color #ddaa00}Outbound Connection ${alignr} Remote Service/Port$color
${tcp_portmon 32768 61000 rhost 0} ${alignr} ${tcp_portmon 32768 61000 rservice 0}
${tcp_portmon 32768 61000 rhost 1} ${alignr} ${tcp_portmon 32768 61000 rservice 1}
${tcp_portmon 32768 61000 rhost 2} ${alignr} ${tcp_portmon 32768 61000 rservice 2}

Скрипт для отображения заряда батареи /usr/bin/myscript/kmvbatterystate

#!/bin/sh
MAX=`cat /proc/acpi/battery/BAT0/info | grep 'design capacity:' | cut -b26-30`
CUR=`cat /proc/acpi/battery/BAT0/state | grep remaining | cut -d':' -f2 | cut -d' ' -f7`
PRC=$(( $CUR * 100 / $MAX ))
echo $PRC
Ещё раз напомню, что у вас пути в /proc к информации об ACPI могут быть другими.

Ссылки
Есть очень хорошая статья про conky, и даже на русском, но там вначале довольно много философии. Полный список переменных есть тут.
Читать далее

Выводим Nokia N800 в Интернет через ноутбук с WiFi



7 коммент.
Задача: требуется вывести Nokia N800 (или аналогичное устройство) в Интернет через компьютер с беспроводной сетью. Предполагается, что интернет проводной или ADSL\модем.
Решение: требуется выполнить простые настройки на стороне настольной машины и N800.

На стороне машины, подключённой к Интернет
Нужно создать простую одноранговую ad-hoc сеть и дать статический IP-адрес сетевому беспроводному интерфейсу. После этого делаем NAT и всё работает. Для беспроводного интерфейса eth3 и сети с идентификатором virens команда выглядит так (от рута):
# iwconfig eth3 mode Ad-Hoc channel 1 essid virens
В /etc/network/interfaces пишем что-то вроде:

auto eth3
iface eth3 inet static
address 10.106.146.1
netmask 255.255.255.0
wireless-mode ad-hoc
wireless-channel 1
wireless-rate auto
wireless-essid virens

Теперь делаем NAT:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE
При этом eth1 это интерфейс, который подключён к Интернету. Соединение не шифруется - нужно сначала проверить, что всё работает, а потом городить огород с шифрованием.


На стороне Nokia N800
Заходим в меню "Инструменты" --- "Панель управления", ищем там "Соединения", запускаем. Жмём в открывшемся окне на кнопку "Соединения", "Создать".

Даём соединению любое имя, отмечаем галку WLAN, жмём Дальше.

Здесь задаём essid - такой же, какой дали в iwconfig, в моём примере это virens. Шифрование отсутствует, тип сети - одноранговая ad-hoc. Далее.

Здесь нас поздравят, но радоваться рано - тыкаем по кнопке "Дополнительно". Откроется диалоговое окно, выбираем вкладку IP-адреса.

Здесь снимаем галку "Получать IP-адрес автоматически" и вводим адреса:
IP-адрес: 10.106.146.2
Маска подсети: 255.255.255.0
Маршрутизатор: 10.106.146.1

Адрес DNS должен быть от того интерфейса, который обеспечивает выход в сеть - иначе говоря, содержимое /etc/resolv.conf

Основной адрес DNS: 10.106.255.199
Это всё настройки моей сети, подключённой к Корвету. У вас они будут \ могут быть другими.
Весь процесс настройки таблетки показан на комбинированном скриншоте:



По большому счёту всё. Некоторые применяют фильтрацию по мак-адресу, но у меня после этого возник забавный глюк: Kate, KDVI, KPDF и Kile стартуют через 1.5-2 минуты, а потом так и иксы начинают делать при их перезапуске - до перезагрузки системы. Поэтому на мак-фильтрацию я плюнул, благо у меня в районе нет никого с WiFi в радиусе 500 метров в любую сторону :-)

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