суббота, 29 мая 2010 г.

Солнечная система, нарисованная (не в масштабе) при помощи CSS3

По мотивам статьи с хабра.

Посмотрел на это безобразие в его реализации. Ничего хорошего не увидел. Рождение ещё одного монстра. Если флеш все презрели и он хоть как-то стал исправляться (главным образом видео- теперь декодируется на аппаратном уровне), то эта штука, вероятно решила занять его место.
Почему я так говорю? Я видел это в действии и мне не понравилось. Мой процессор сразу загрузился под сто процентов, чего нынче у меня такого даже с флешем не бывает.
Куда всё это движется, мне представить пока сложно, но однако же.

пятница, 14 мая 2010 г.

Как прожить день без иксов. [В Wiki]

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

Браузеры - elinks, w3c, w3c, links, последний, по идее, может работать с графикой

Почтовые клиенты - mutt, pine

Для чатов и/или аськи и прочего - weechat, freetalk, naim, ysm, centericq, climm, finch и IRSSI

Для чтения RSS - raggle

wyrd - календарь, органайзер

Для работы с файлами - великий нестареющий mc (Midnight Commander)

Для просмотра изображений - zgv, fbi, для редактирования (ресайз, ротейт и т.д.) - imagemagick , руководство по imagemagick - http://forum.ubuntu.ru/index.php?topic=27099.msg188959#msg188959

Воспроизводить музыку умеют cplay, moc, herrie, mp3blaster и связка mpd+ncmpc

Прожиг CD и DVD, рип CD (в форматы mp3 и FLAC) - bashburn

Качать торренты - rtorrent

dc++ - microdc2

Кино - mplayer, вот таким образом: $ mplayer -vo fbdev -fs -zoom -xy 1024 movie.file

Удобный системный монитор - htop

И труЪ хацкерский скринсейвер а-ля "Матрица" - cmatrix

Мышью в консоли можно пользоваться, если поставить gpm

И для того, чтобы вся эта красота присутствовала на экране одновременно - twin.

screen - полезная вещь для консоли и удалённого управления, описание - здесь

Настройка разрешения в консоли: http://forum.ubuntu.ru/index.php?topic=27178.msg189273#msg189273

Использованы старые статьи про консольный софт:
http://kmandla.wordpress.com/2007/05/17/more-terminal-programs-you-should-be-using-like-a-pro/
и http://kmandla.wordpress.com/2007/05/17/more-terminal-programs-you-should-be-using-like-a-pro/

Спасибо за ценные дополнения SaySmile (mplayer, finch, moc, weechat), B3ND3R и vrybas (screen, vrybas - ysm, centericq, links, lynx, imagemagick, pine, wyrd, mplayer, описания mplayer, imagemagick и screen, настройка разрешения в консоли), Alex200 - links, camac - w3c, ende_neu - fbi, gpm, Nebulosa - microdc2, picnik - moc, fbi, links, climm, ais77 - bashburn

По ссылкам можно заценить скриншоты. Все эти пакеты есть в репозиториях. Так что кому openbox кажется перегруженным свистоперделками - вэлкам.

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

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

How-To: скрещиваем Nvidia proprietary driver + Plymouth

Важно!!! данные настройки приведены для разрешения экрана 1280х800!!! Если у вас другое разрешение экрана, меняем на свое изменяя разрешение настроек для груба в 1 и 5 пунктах!!!
1) Редактируем параметры груба2:
Цитата
sudo nano /etc/default/grub
Ищем строку GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" (для быстрого поиска ^w) меняем ее на
Цитата
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1280x800-24,mtrr=3,scroll=ywrap"
Ищем строку #GRUB_GFXMODE=640x480
Раскомментируем ее и вписывает желаемое разрешение для своего монитора
Например:
Цитата
GRUB_GFXMODE=1280x800
сохраняем, выходим

Далее:
Цитата
sudo nano /etc/grub.d/00_header
Ищем строку set gfxmode=${GRUB_GFXMODE} и сразу под ней вписываем set gfxpayload=keep
Должно получится примерно так:
Цитата
...
set gfxmode=${GRUB_GFXMODE}
set gfxpayload=keep
...
сохраняем, выходим

Обновим параметры запуска груба
Цитата
sudo update-grub

2) Удалим уже не нужный пакет xserver-xorg-video-nouveau
Цитата
sudo apt-get remove xserver-xorg-video-nouveau

Поскольку пакет libdrm-nouveau1, который тоже следут удалить, тянет за собой все иксы, заносим модуль nouveau в блеклист чтоб он не мешал нам установить драйвер нвидиа
Цитата
sudo nano /etc/modprobe.d/blacklist.conf
и в конец текста вписываем
Цитата
blacklist nouveau
сохраняем, выходим

3) Установим необходимые пакеты
Цитата
sudo apt-get install binutils gcc v86d hwinfo

4) Удалим модуль nouveau и установим драйвер
Цитата
sudo rmmod nouveau
sudo sh /путь/до/драйвера/Nvidia...run

5) Редактируем /etc/initramfs-tools/modules
Цитата
sudo nano /etc/initramfs-tools/modules

Добавляем строку
Цитата
uvesafb mode_option=1280x800-24 mtrr=3 scroll=ywrap

Далее
Цитата
echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash

И последний штрих
Цитата
sudo update-initramfs -u

Перегружаемся и радуемся Smiley

по мотивам статей
http://www.webupd8.org/2010/03/how-to-get-plymouth-working-with-nvidia.html
http://idyllictux.wordpress.com/2010/04/26/lucidubuntu-10-04-high-resolution-plymouth-virtual-terminal-for-atinvidia-cards-with-proprietaryrestricted-driver/
взято с http://forum.ubuntu.ru/index.php?topic=93167.0

четверг, 13 мая 2010 г.

[HOWTO] Учим компьютер говорить по-русски / Festival скрипты

Сначала просто написал скрипт будильника. Теперь попробую собрать инфу по разным скриптам с использованием синтезатора речи festival в одну тему.
Хотя на самом деле это уже сделано здесь
Ну да ладно. Итак начнем.


Установка festival и festvox-ru, исправление багов.

Пакеты festival и festvox-ru лежат в стандартных репозиториях UBUNTU Karmic. Ставим:

Код:
sudo apt-get install festival festvox-ru

Если у вас более ранний дистрибутив, то festvox-ru можно взять здесь (распаковать в /usr/share/festival/voices/russian/msu_ru_nsh_clunits)

Для полноценной поддержки русского языка нужно ещё дополнительно внести некоторые изменения в файлы festival

В файл /usr/share/festival/languages.scm дописать вначале:
Код:
(define (language_russian)

"(language_russian)
Set up language parameters for Russian."
(set! male1 voice_msu_ru_nsh_clunits)
(male1)
(Parameter.set 'Language 'russian)
)

и в define(select_language language) добавить пару строчек
Код:
((equal? language 'russian)

(language_russian))

В файл /usr/share/festival/festival.scm в конце добавить строки
Код:
(Parameter.set 'Audio_Method 'Audio_Command)

(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")

(Кликните, чтобы показать/скрыть)
Или эти параметры можно добавить в ~/.festivalrc. Этот файл создается специально для прописи этих параметров. Но не обязательно, можно сделать, как сказано выше.

На этом подготовка завершена. Приступим непосредственно к написанию скриптов.
Стоп, чуть не забыл. Чтобы не было лишних вопросов, заранее предупрежу (или напомню), скриптам нужно давать право на исполнение.
Код:
chmod +x script.sh
Теперь приступим.


Будильник

Создаем скрипт в домашнем каталоге
Код:
gedit alarm

(Кликните, чтобы показать/скрыть)
Код:
#!/bin/bash


##Чтобы поставить будильник, вводим в терминале команду "crontab -e"
##И прописываем нужные параметры:
##PATH=/sbin:/bin:/usr/sbin:/usr/bin
##SHELL=/bin/bash
### m h dom mon dow command
##0 7 * * 1-5 bash alarm
##0 10 * * 6-7 bash alarm


export DISPLAY=:0
export LANG=ru_RU.UTF-8


# Склоняем в соответствующем падеже слова "час" и "минута" # 2 раза :)))

check_date ()

{

CURR_HOUR=`date +%H`
CURR_MIN=`date +%M`
TEMP_HOUR="`echo $CURR_HOUR | colrm 1 1`"
TEMP_MIN="`echo $CURR_MIN | colrm 1 1`"

if [ "$CURR_HOUR" -eq "0" ] || [ "$CURR_HOUR" -eq "5" ] || [ "$CURR_HOUR" -eq "6" ] || [ "$CURR_HOUR" -eq "7" ] || [ "$CURR_HOUR" -eq "8" ] || [ "$CURR_HOUR" -eq "9" ] || [ "$CURR_HOUR" -eq "11" ] || [ "$CURR_HOUR" -eq "12" ] || [ "$CURR_HOUR" -eq "13" ] || [ "$CURR_HOUR" -eq "14" ] || [ "$TEMP_HOUR" -eq "0" ] || [ "$TEMP_HOUR" -eq "5" ] || [ "$TEMP_HOUR" -eq "6" ] || [ "$TEMP_HOUR" -eq "7" ] || [ "$TEMP_HOUR" -eq "8" ] || [ "$TEMP_HOUR" -eq "9" ]; then LC_HOUR="часов"

elif [ "$CURR_HOUR" -eq "2" ] || [ "$CURR_HOUR" -eq "3" ] || [ "$CURR_HOUR" -eq "4" ] || [ "$TEMP_HOUR" -eq "2" ] || [ "$TEMP_HOUR" -eq "3" ] || [ "$TEMP_HOUR" -eq "4" ]; then LC_HOUR="часа"

elif [ "$CURR_HOUR" -eq "1" ] || [ "$TEMP_HOUR" -eq "1" ]; then LC_HOUR="час"

fi


if [ "$CURR_MIN" -eq "5" ] || [ "$CURR_MIN" -eq "6" ] || [ "$CURR_MIN" -eq "7" ] || [ "$CURR_MIN" -eq "8" ] || [ "$CURR_MIN" -eq "9" ] || [ "$CURR_MIN" -eq "11" ] || [ "$CURR_MIN" -eq "12" ] || [ "$CURR_MIN" -eq "13" ] || [ "$CURR_MIN" -eq "14" ] || [ "$TEMP_MIN" -eq "0" ] || [ "$TEMP_MIN" -eq "5" ] || [ "$TEMP_MIN" -eq "6" ] || [ "$TEMP_MIN" -eq "7" ] || [ "$TEMP_MIN" -eq "8" ] || [ "$TEMP_MIN" -eq "9" ]; then LC_MINUTE="минут"

elif [ "$CURR_MIN" -eq "3" ] || [ "$CURR_MIN" -eq "4" ] || [ "$TEMP_MIN" -eq "3" ] || [ "$TEMP_MIN" -eq "4" ]; then LC_MINUTE="минуты"

fi


if [ "$CURR_MIN" -eq "1" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR однa минута"

elif [ "$CURR_MIN" -eq "11" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR $CURR_MIN $LC_MINUTE"

elif [ "$TEMP_MIN" -eq "1" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR $(echo $CURR_MIN-1|bc) одна минута"

elif [ "$CURR_MIN" -eq "2" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR две минуты"

elif [ "$CURR_MIN" -eq "12" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR $CURR_MIN $LC_MINUTE"

elif [ "$TEMP_MIN" -eq "2" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR $(echo $CURR_MIN-2|bc) две минуты"

elif [ "$CURR_MIN" -eq "00" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR ровно"

else DATE_TIME="$CURR_HOUR $LC_HOUR $CURR_MIN $LC_MINUTE"

fi

}


# Получаем температуру в своем городе

CURR_TEMP="`wget -O - http://www.gismeteo.ru/city/daily/11975/ 2>/dev/null | grep '
' | sed -r 's/
(.[0-9]+).*/\1/g' | awk '{print $1}'`"

if [ "`echo $CURR_TEMP | sed -r 's/(.)[0-9]+/\1/g'`" == "-" ]; then TEMP_SIGN="минус"

else TEMP_SIGN=""

fi

CURR_DEGREE=""
CURR_DEGREE="`echo $CURR_TEMP | sed -r 's/.([0-9]+)/\1/g'`"


# Склоняем в соответствующем падеже слово "градус"

TEMP_DEGREE="`echo $CURR_DEGREE | colrm 1 1`"

if [ "$CURR_DEGREE" -eq "0" ] || [ "$CURR_DEGREE" -eq "5" ] || [ "$CURR_DEGREE" -eq "6" ] || [ "$CURR_DEGREE" -eq "7" ] || [ "$CURR_DEGREE" -eq "8" ] || [ "$CURR_DEGREE" -eq "9" ] || [ "$CURR_DEGREE" -eq "11" ] || [ "$CURR_DEGREE" -eq "12" ] || [ "$CURR_DEGREE" -eq "13" ] || [ "$CURR_DEGREE" -eq "14" ] || [ "$TEMP_DEGREE" -eq "0" ] || [ "$TEMP_DEGREE" -eq "5" ] || [ "$TEMP_DEGREE" -eq "6" ] || [ "$TEMP_DEGREE" -eq "7" ] || [ "$TEMP_DEGREE" -eq "8" ] || [ "$TEMP_DEGREE" -eq "9" ]; then LC_DEGREE="градусов"

elif [ "$CURR_DEGREE" -eq "2" ] || [ "$CURR_DEGREE" -eq "3" ] || [ "$CURR_DEGREE" -eq "4" ] || [ "$TEMP_DEGREE" -eq "2" ] || [ "$TEMP_DEGREE" -eq "3" ] || [ "$TEMP_DEGREE" -eq "4" ]; then LC_DEGREE="градуса"

elif [ "$CURR_DEGREE" -eq "1" ] || [ "$TEMP_DEGREE" -eq "1" ]; then LC_DEGREE="градус"

fi


#А теперь сам будильник

check_date
amixer sset Master 100% unmute
rhythmbox-client --set-volume .1
sleep 5
rhythmbox-client --play
sleep 2
rhythmbox-client --set-volume .2
sleep 2
rhythmbox-client --set-volume .3
sleep 2
rhythmbox-client --set-volume .4
sleep 2
rhythmbox-client --set-volume .5
sleep 2
rhythmbox-client --set-volume .6
sleep 2
rhythmbox-client --set-volume .7
sleep 2
rhythmbox-client --set-volume .8
sleep 2
rhythmbox-client --set-volume .9
sleep 2
rhythmbox-client --set-volume 1.0
sleep 20
rhythmbox-client --set-volume .8
sleep 1
rhythmbox-client --set-volume .6
sleep 1
rhythmbox-client --set-volume .4
sleep 1
rhythmbox-client --set-volume .2
sleep 1
echo "Доброе утро, Хозяин. Я надеюсь, что вы хорошо спали?" | festival --tts --language russian
echo "Сегодня `date +%A`" | festival --tts --language russian
echo "Время $DATE_TIME" | festival --tts --language russian
echo "Температура за окном $TEMP_SIGN $CURR_DEGREE $LC_DEGREE." | festival --tts --language russian
echo "Желаю вам удач нава дня" | festival --tts --language russian
sleep 1
rhythmbox-client --set-volume .4
sleep 1
rhythmbox-client --set-volume .6
sleep 1
rhythmbox-client --set-volume .8
sleep 1
rhythmbox-client --set-volume 1.0
sleep 200
check_date
rhythmbox-client --set-volume .8
sleep 1
rhythmbox-client --set-volume .6
sleep 1
rhythmbox-client --set-volume .4
sleep 1
rhythmbox-client --set-volume .2
sleep 1
echo "Хозяин, время $DATE_TIME. Вероятно уже пора вставать?" | festival --tts --language russian
sleep 1
rhythmbox-client --set-volume .4
sleep 1
rhythmbox-client --set-volume .6
sleep 1
rhythmbox-client --set-volume .8
sleep 1
rhythmbox-client --set-volume 1.0
exit 0
Пришлось нарушить правила русского языка ради более-менее нормального звочания festival Smiley

Естественно вместо "http://www.gismeteo.ru/city/daily/11975/" пишем адрес странички для своего города.
Вместо "Хозяин" нужно вставить своё имя. Хотя можно оставить как есть. Smiley

Чтобы поставить будильник, вводим в терминале команду "crontab -e"
И прописываем нужные параметры:
Код:
PATH=/sbin:/bin:/usr/sbin:/usr/bin

SHELL=/bin/bash
# m h dom mon dow command
0 7 * * 1-5 bash alarm
0 10 * * 6-7 bash alarm
Указываем нужное время, у меня в будние дни будильник срабатывает в 7:00, а в выходные в 10:00

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


Озвучка открытия/закрытия крышки ноутбука

Открываем для редактирования файл /etc/acpi/lid.sh, для этого набираем в терминале:
Код:
sudo gedit /etc/acpi/lid.sh

Добавляем в этот файл после строки #!/bin/bash следующий текст:
Код:
grep -q closed /proc/acpi/button/lid/LID/state

if [ $? = 0 ]
then
echo "Зачем вы меня закрыли?" | festival --tts --language russian;
else
echo "Привет!" | festival --tts --language russian;
fi
Ну или можно вписать стандартные фразы типа "открыто/закрыто".
Соответственно что напишете, то и будет говорить ноутбук при открытии/закрытии крышки.


Проверка почты gmail

Создаем скрипт в домашнем каталоге

Код:
gedit gmail

(Кликните, чтобы показать/скрыть)
Код:
#!/bin/bash


#Чтобы запустить автоматическую проверку почты, вводим в терминале команду "crontab -e"
#И прописываем нужные параметры:
##PATH=/sbin:/bin:/usr/sbin:/usr/bin
##SHELL=/bin/bash
### m h dom mon dow command
##*/15 17-23 * * 1-5 bash gmail
##*/15 10-23 * * 6-7 bash gmail


export DISPLAY=:0
export LANG=ru_RU.UTF-8


#Проверяем почту

NUMB=`curl -u grin.sv@gmail.com:qweasdzxc --silent "https://mail.google.com/mail/feed/atom" | grep -c ""`

#Склоняем в соответствующем падеже слова "непрочитанные сообщения"

TEMP_NUMB="`echo $NUMB | colrm 1 1`"

if [ "$NUMB" -eq "0" ] || [ "$NUMB" -eq "5" ] || [ "$NUMB" -eq "6" ] || [ "$NUMB" -eq "7" ] || [ "$NUMB" -eq "8" ] || [ "$NUMB" -eq "9" ] || [ "$NUMB" -eq "11" ] || [ "$NUMB" -eq "12" ] || [ "$NUMB" -eq "13" ] || [ "$NUMB" -eq "14" ] || [ "$TEMP_NUMB" -eq "0" ] || [ "$TEMP_NUMB" -eq "5" ] || [ "$TEMP_NUMB" -eq "6" ] || [ "$TEMP_NUMB" -eq "7" ] || [ "$TEMP_NUMB" -eq "8" ] || [ "$TEMP_NUMB" -eq "9" ]; then MSG="непрочитанных сообщений"

elif [ "$NUMB" -eq "2" ] || [ "$NUMB" -eq "3" ] || [ "$NUMB" -eq "4" ] || [ "$TEMP_NUMB" -eq "2" ] || [ "$TEMP_NUMB" -eq "3" ] || [ "$TEMP_NUMB" -eq "4" ]; then MSG="непрочитанных сообщения"

fi


if [ "$NUMB" -eq "1" ]; then NUMB_MSG="одно непрочитанное сообщение"

elif [ "$NUMB" -eq "11" ]; then NUMB_MSG="`echo $NUMB $MSG`"

elif [ "$TEMP_NUMB" -eq "1" ]; then NUMB_MSG="$(echo $NUMB-1|bc), одно непрочитанное сообщение"

else NUMB_MSG="`echo $NUMB $MSG`"

fi


#Сообщение, одновременно проверка плееров.

if [ $NUMB -eq "0" ]; then :

else

if [ "`ps -A | grep -c totem`" -ne "0" ]; then totem --pause
elif [ "`ps -A | grep -c rhythmbox`" -ne "0" ]; then rhythmbox-client --pause
fi

echo "Хозяин, на вашем почтовом ящике имеется $NUMB_MSG." | festival --tts --language russian
sleep 1

if [ "`ps -A | grep -c totem`" -ne "0" ]; then totem --play
elif [ "`ps -A | grep -c rhythmbox`" -ne "0" ]; then rhythmbox-client --play
fi
fi

exit 0

И снова используем cron, чтобы запланировать автоматическую проверку. Вводим в терминале команду "crontab -e". И прописываем нужные параметры. В моем случае это:
Код:
PATH=/sbin:/bin:/usr/sbin:/usr/bin

SHELL=/bin/bash
# m h dom mon dow command
*/15 17-23 * * 1-5 bash gmail
*/15 10-23 * * 6-7 bash gmail

В данном скрипте предусмотрена приостановка работающих плееров totem и rhythmbox. Но немного кривовато.


Чтение всплывающих уведомлений

Нам необходимо создать два скрипта, один из которых мы потом добавим в автоматически-запускаемые приложения в GNOME.
Итак, скрипт первый (speech.sh):
(Кликните, чтобы показать/скрыть)
Код:
#!/bin/bash


# Добавить в запускаемые приложения: /home/user/run_speech.sh /home/user/speech.sh

COMMAND_COUNTER=0
MESSAGE_HEADER=""
MESSAGE_BODY=""
PARSE_REQUIRED=0

while read -r DBUS_MESSAGE ; do
ID=`echo $DBUS_MESSAGE | grep "uint32 0"`

if [[ $ID ]] ; then
let COMMAND_COUNTER=0
let PARSE_REQUIRED=1
else
if [ $PARSE_REQUIRED -eq 1 ] ; then
ID=`echo $DBUS_MESSAGE | egrep "string\ \""`

if [[ $ID ]] ; then
let COMMAND_COUNTER=$COMMAND_COUNTER+1
fi

if [ $COMMAND_COUNTER -eq 2 ] ; then
MESSAGE_HEADER=`echo $DBUS_MESSAGE | grep "string\ \"" | sed s/^string\ \"//g | sed s/\"$//g`
fi

if [ $COMMAND_COUNTER -eq 3 ] ; then
MESSAGE_BODY=`echo $DBUS_MESSAGE | grep "string\ \"" | sed s/^string\ \"//g | sed s/\"$//g`

echo $MESSAGE_HEADER | festival --tts --language russian
echo $MESSAGE_BODY | festival --tts --language russian

let COMMAND_COUNTER=$COMMAND_COUNTER+1
let PARSE_REQUIRED=0
fi
fi
fi
done

Суть этого скрипта на bash заключается в следующем. Он принимает со стандартного ввода данные, полученные из второго скрипта и затем парсит их. Затем формирует сообщение и отправляет его в festival для синтеза речевого сообщения. Данные для этого скрипта предоставляет второй скрипт (run_speech.sh), который очень короткий и выглядит так:
Код:
#!/bin/bash


dbus-monitor "interface='org.freedesktop.Notifications', member='Notify'" | $1

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

Далее, добавляем в запускаемые приложения GNOME новую команду (у меня выглядит так):
Код:
/home/user/run_speech.sh /home/user/speech.sh

Перезапускаем GNOME и смотрим что получилось. Для проверки можно сделать следующее:
Код:
notify-send "Привет" "Я твое новое голосовое сообщение"


Озвучка обрыва ppp0 в коньках/by goldskif & ratte

Прописываем в коньках (~/.conkyrc):
Код:
${if_empty ${exec /home/user/eth.sh}} $endif

В папке пользователя создаем файл eth.sh:
Код:
#!/bin/sh

LOCKFILE="/tmp/$VAR.lock"
VAR=`sudo ifconfig $1| grep "ppp0"`;
if [ "$VAR" = '' ] ; then
if (! test -f ${LOCKFILE}) then
touch ${LOCKFILE}
echo "человек. обрати внимание, связь потеряна, я нервничаю." | festival --tts --language russian
fi
else
if (test -f ${LOCKFILE}) then
rm ${LOCKFILE}
echo "человек. мы он лайн." | festival --tts --language russian
fi
fi


Озвучка подключения/отключения флешек/by ratte

Снова два скрипта.
Первый - 62-festival.rules положить в /etc/udev/rules.d
Код:
SUBSYSTEMS=="usb", RUN+="/usr/bin/boltalka.sh %k"

SUBSYSTEMS=="block", RUN+="/usr/bin/boltalka.sh %b"
Второй - boltalka.sh положить в /usr/bin например:
(Кликните, чтобы показать/скрыть)
Код:
#!/bin/bash


export PATH=/bin:/sbin:/usr/bin:/usr/sbin

FESTIVAL="festival --tts"

DEVICE=$1
UDEVINFO="udevadm info"

[ -z "$DEVICE" ] && exit
[ -z "$ACTION" ] && exit

function get_device_attr ()
{
path=`find /sys/devices -name $1`
echo `$UDEVINFO --attribute-walk --path=$path | grep $2 -m1 | cut -f 2 -d '"'`
}

function get_device_name ()
{
device=$1

case $device in
[0-9]-[0-9])
s=`get_device_attr $device "product"`
[ -z "$s" ] && echo "device" || echo "$s"
;;
sr*)
echo "optical drive"
;;
[sh]d*)
s=`get_device_attr $device "KERNEL"`
echo "$s drive"
;;
*)
exit
;;
esac

}
function say ()
{
echo "$1 $2" | $FESTIVAL
exit
}

name=`get_device_name $DEVICE`

if [ -n "$name" ]; then
case "$ACTION" in
add)
say "$name" "was found"
;;
remove)
say "device" "has been removed"
;;
change)
say "$name" "was changed"
;;
esac
fi

IT-Mix

По настоящему интересную новость подкинула нам Orakle с новым VBox. Теперь можно в качестве гостевой ОС запускать Mac OS X. Что впринципе довольно странно, поскольку подобное запрещено лицензией Aple. Отметим, что пока это лишь экспериментальная поддержка.
Среди прочих новшеств и вкусностей:
* Динамическое уменьшение или увеличение оперативной памяти гостевой ОС (пока работает только на 64 битных хостах);
* Горячее подключение и выключение процессоров для Linux-гостей и только подключения для некоторых Windows-гостей;
* Новые возможности гипервизора: поддержка больших страниц памяти на 64 битных платформах VT-x/AMD-V для увеличения производительности, а также добавлена поддержка прямого выполнения инструкций гостевой ОС на процессорах Intel с технологией VT-x (для этого должны быть включена опция nested paging) - это должно ускорить запуск гостевых ОС, использующих для этого защищённый режим;
* Теперь стало возможным удалять снэпшоты работающей гостевой ОС;
* Добавлена поддержка настройки, посредством графического интерфейса, работы гостевых ОС более чем на одном мониторе; эта как раз та функция, которой до сих пор жутко не хватало;
* Улучшена эмуляция USB tablet'ок и клавиатур, даже если дополнения для гостевой ОС не установлены;
и прочее.

* Реализовано ускорение видео в RDP сессии;
* Работу NAT можно конфигурировать используя API и утилиту VBoxManage;
* Дополнения для гостей: добавлена возможность запуска гостевых приложений из хоста (вероятно, посредством ярлыков);
* Улучшена поддержка стандарта виртуализации жёстких дисков OVF - теперь неподдерживаемые поля описания формата сохраняются.

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

источник


Компания Valve, известная разработкой таких игр как Half Life, Counter Strike и Portal, официально подтвердила информацию о подготовке для платформы Linux "родной" версии игрового движка Source и системы распространения игр Steam. Как и в версии для MacOS X, которая была выпущена сегодня, игровой движок Source будет использовать при выводе графики OpenGL, а Steam-клиент будет работать на базе WebKit, вместо MSHTML.

Официальная поддержка Linux в движке Source Engine позволит расширить спектр доступных для Linux игр, например, можно ожидать появление родных Linux-версий игр Unreal Tournament 3, Postal III, Half-Life 2, Counter-Strike: Source и Team Fortress 2, которые дополнят список распространяемых через сервис Steam игр, ранее доступных для Linux: Unreal Tournament 2004, World of Goo, Enemy Territory: Quake Wars и Doom 3.

Первый релиз Linux-версии Steam-клиента ожидается в конце лета. Сообщается, что поддержка платформы Linux будет на уровне MacOS X, для которой в первый день после релиза в сервисе можно было найти около 50 игровых программ.
источник


Компания Canonical в настоящее время является единственным Linux-поставщиком, получившим лицензию на использование кодеков H.264/AVC в своем дистрибутиве. В настоящий момент выдано около 800 лицензий, но среди получивших их компаний нет Red Hat и Novell. Полученная лицензия может быть использована для обеспечения надлежащей и легальной поддержки просмотра H.264-видео в поставляемом по умолчанию web-браузере (для firefox будет подготовлено соответствующее дополнение). Напомню, что компания Mozilla принципиально отказалась лицензировать H.264 и добавлять поддержку данного формата в Firefox, отдав предпочтение кодеку Theora.

Дополнение: Крис Кеньон (Chris Kenyon), вице-президент Canonical, уточнил, что H.264 кодеки по прежнему не будут входить в базовую поставку, а лицензия не будет распространяться на обычных пользователей, самостоятельно устанавливающих Ubuntu. Компания Canonical лицензировала H.264 у организации MPEG-LA чтобы дать возможность OEM-производителям включить поддержку H.264 в предустанавливаемый на их оборудование вариант Ubuntu, который также может быть укомплектован Adobe Flash, Adobe Acrobat, Fluendo, RealPlayer, DVD-плеерами и другим проприетарным ПО, поставляемый по специально заключенным соглашениям о редистрибьюции.

То, что ПК поставляется с Ubuntu еще не гарантирует, что к нему приложена лицензия на H.264, так как данный вопрос обговаривается отдельно с каждым OEM-производителем, который в конечном счете решает каким набором приложений снабдить предустанавливаемую ОС. Наклейка "Ubuntu Compatible" означает лишь, что производитель полностью протестировал оборудование на предмет совместимости с Ubuntu, а компания Canonical подтвердила достоверность этих тестов. Надпись "Ubuntu Certified" отличается тем, что вся работа по тестированию была выполнена независимо от производителя, силами Canonical.

источник