Top.Mail.Ru
? ?

Entries by tag: linux

mutt: run a command when new mail arrives

Last days I am giving Mutt mail user agent a try. With all that variety of options Mutt gives, I was very surprised that there is no option to run a command when new mail arrives. There is an option 'beep_new', which should ring a bell in that case, but it doesn't work for me.

Then I searched through the web and found many similar questions and no answers.

So I wrote a patch to achieve this. It adds new string option named 'mail_arrival_command', where you specify the string which will be passed verbatim to shell by mutt when new mail arrives, for example, in .muttrc:

set mail_arrival_command="mplayer path-to-sound-file >/dev/null 2>/dev/null &"

Детские карусели и Linux.

Перед вами произведение некоего anonymous3 с linux.org.ru, которое я счёл достойным выкладывания сюда. Изначально, тема про экранизацию идей Free Software на примере Linux, но нашлось и вот такое.

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

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

Студет прибивает к своему забору табличку "NO TAXES", за его спиной дети, смотрят завороженно на новую карусель. Она выглядит не так роскошно-аляповато, как та из первой сцены, но добротно и со вкусом.

Молодой парень просит у возмужавшего студента чертежи, тот показывает ему свои наработки, рассказывает, что и как он бы изменил.

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

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

Студент из второй сцены разворачивает и с интересом читает письмо.

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

Студент руководит большой группой инженеров. Разрабатывается нечто весьма масштабное.

Большой парк атракционов, много детей, улыбающийся обслуживающий персонал, возле одной из каруселей мелькает табличка "NO TAXES".

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

Финальная сцена - облупившаяся и опустевшая карусель из начала ролика, с покосившейся табличкой "10c", фэйдаут. Надпись в центре - "Freedom is priceless. Linux is freedom."
---

Ссылка: http://www.linux.org.ru/jump-message.jsp?msgid=3411011&cid=3415400

Если кто-нибудь захочет это нарисовать (в виде комикса или видео) - даже с удовольствием заплачу (в разумных пределах).

Tags:

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

Самый юморной раздел - это, имхо, "BUGS".

Вот что выдаёт man bash:
"
...
BUGS
It’s too big and too slow.
...
"

Всё, вопросов больше нет.

А сейчас меня убил ман для маленькой программки unbuffer.

"
...
BUGS
The man page is longer than the program.
...
"

Tags:

Рано ли, поздно ли, но мой трёнажер nlkt попал в репозиторий Debian. Уря.

Tags:

Хотелось собирать у себя дома, не отходя от кассы, не только amd64-пакеты для тренажёра nlkt, но и i386.

Надыбал следующий мануал.

Итого, мои действия были ровно следующие:

1. sudo aptitude install dchroot

2. sudo mkdir /srv/chroot
sudo mkdir /srv/chroot/sid32

3. sudo vim /etc/schroot/schroot.conf
Содержимое следующее:
#---
[sid32]
type=directory
description=Debian sid 32-bit
location=/srv/chroot/sid32
priority=3
users=jackyf
alias=default
run-setup-scripts=true
run-exec-scripts=true
personality=linux32
#---

4. sudo debootstrap --verbose --arch i386 sid /srv/chroot/sid32 http://ftp.debian.org/debian/
Тут оно будет писать долго и много насчёт того, что оно качает и ставит в этот самый чрут.

5. Запускаем schroot. Вуаля. Мы в чруте. Но об этом нам напоминает только скудный набор пакетов в системе и файлик /etc/debian.chroot :)

Tags:

В общем, как-то поставил я это дело в /etc/security/limits.conf и забыл.
А сегодня вот перегрузил X-сервер. И имменения вступили в силу!

Вступили феерически - в половине консолей отказаться форкаться баш :)
В общем, поставил я лимит в 500 процессов :)

Tags:

apt: показ новых пакетов

Вещь сия есть логическим продолжением вот этого: http://jackyf.livejournal.com/94531.html

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

#!/bin/sh

TMP_UPDATES_BEFORE=/tmp/my-apt-updates-before
TMP_UPDATES_AFTER=/tmp/my-apt-updates-after
TMP_NEW_BEFORE=/tmp/my-apt-new-before
TMP_NEW_AFTER=/tmp/my-apt-new-after

# $1 - output
function get_new()
{
aptitude search ?new --display-format "%10p - %80d" --width 120 > $1 2>/dev/null
}

# $1 - output
function get_updates()
{
apt-show-versions -u | sort > $1
}

# $1 - first param
# $2 - second param
function diff_cmd()
{
diff --minimal $1 $2 | grep -E "^[<>]" | sort
}

echo -n "Getting pre-new... "
get_new $TMP_NEW_BEFORE
echo "[done]"

echo -n "Getting pre-updates... "
get_updates $TMP_UPDATES_BEFORE
echo "[done]"

echo "Updating:"
sudo aptitude update
echo "Update complete."

echo -n "Getting post-new... "
get_new $TMP_NEW_AFTER
echo "[done]"

echo -n "Getting post-updates... "
get_updates $TMP_UPDATES_AFTER
echo "[done]"

echo "-------"
echo "Updates"
echo "-------"
diff_cmd $TMP_UPDATES_BEFORE $TMP_UPDATES_AFTER | sed s/upgradeable\ from/-/g

echo
echo "---"
echo "New"
echo "---"
diff_cmd $TMP_NEW_BEFORE $TMP_NEW_AFTER

Tags:

cscope

Сегодня открыл для себя утилитку всякого-разного поиска по C[++]-файлам - cscope. Хорошо иногда рыться по зависимостям vim'а :)

UPD: исправил название, букву забыл :)

apt: новые обновления

Не очень понимаю, почему сей функционал до сих пор отсутствует в утилитах типа aptitude.
Что мне нужно - после выполнения aptitude update узнать, какие новые обновления пришли, а не шерстить опять 700 строчек из apt-show-versions -u.

В общем, компромисс между функционалом и простотой я нашёл такой:

#!/bin/sh

TMP_FILE_BEFORE=/tmp/my-apt-file-before
TMP_FILE_AFTER=/tmp/my-apt-file-after

echo -n "Getting pre-updates... "
apt-show-versions -u | sort > $TMP_FILE_BEFORE 2>/dev/null
echo "[done]"

echo "Updating:"
sudo aptitude update
echo "Update complete."

echo -n "Getting post-updates... "
apt-show-versions -u | sort > $TMP_FILE_AFTER 2>/dev/null
echo "[done]"

echo "Updates diff:"
diff --minimal $TMP_FILE_BEFORE $TMP_FILE_AFTER | grep -E "^[<>]" | sort | sed s/upgradeable\ from/-/g

Tags:

Latest Month

April 2018
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Comments

  • jackyf
    18 Oct 2013, 14:47
    Спасибо :)
  • jackyf
    18 Oct 2013, 01:49
    У меня на нетбуке и стоит сейчас убунту и места мало, так что ставлю что-то крайне редко. Однако всегда помню, что для настоящей работы с пакетами надо использовать именно cupt. Так что огромное…
  • jackyf
    2 Apr 2013, 15:22
    I did't. Probably because didn't come to mind then, and now I don't use it myself.

    If it looks useful to someone -- feel free to submit it forward. I hereby release its code as Public Domain.
  • 1 Apr 2013, 15:41
    Did you submit that patch to the mutt development mailing list or so? If not, why not?
  • jackyf
    24 Oct 2012, 16:52
    Спасибо :)

    Второй. А что, первый тоже бело-синий?
Powered by LiveJournal.com