LINUX.ORG.RU

Сообщения dadd

 

Цвет xterm при запуске

Имеется xterm-256color. При запуске «xterm -e имя_программы» некоторые цвета в прогах (mc/tmux/mcabber) пропадают или заменяются на другие (например, в mc color65 меняется на другой). Если же запускать программы в уже открытом xterm'e, то с цветами всё ок. В чём может быть дело?

 ,

dadd
()

Метод сборки и установки пакетов

Допустим, имеется пакет в репозитории. Этот пакет собран во многих вариантах, каждый из которых со своими use-флагами (т.е. охватываются все возможные варианты применения use-флагов). Затем пользователь может установить уже собранный с нужными флагами пакет, предварительно указав их пакетному менеджеру. Такое существует?

 ,

dadd
()

Несколько вопросов

subj знатокам mc:
1) mc открывает список закладок по ctrl+\ Возможно ли создать несколько таких списков, повесив их на хоткеи?
2) а несолько user menu (F2) ?
3) размеры файлов нечитабельны для человека (даже с опцией показа в СИ). Хочется в g/m/k виде. Существует ли решение?
4) можно ли быстрый поиск (ctrl+s) активировать без предварительного нажатия ctrl+s (отключить отображение командной строки не предлагать) ?

 

dadd
()

mpd info

Вопрос знатокам mpd.
Существует ли для mpd клиент типа mpc (т.е. только command-line, а не морда на ncurses и т.п.), который умеет выводить в консоль время, прошедшее с момента начала проигрывания трека (не путать с общей продолжительностью), битрейт и год альбома?

 

dadd
()

Мигание в панели

С помощью чего можно заставить мигать окно терминала на xfce'шной панели?

 ,

dadd
()

tmux keybindings

Как tmux'у правильно скармливать коды клавиш?
Если в tmux.conf прописать:

bind-key   "keycode 28"      new-window
то не сработает.

 ,

dadd
()

Переименование файлов и нумерация

Имеются файлы вида:

$ ls -1 | grep 'file.b*'
file.ba
file.bb
file.bc
file.bd
Нужно их переименовать, пронумеровав по порядку. Результат должен выглядеть так:
file1.ba
file2.bb
file3.bc
file4.bd
Придумалось такое решение:
ls -1 | grep 'file.b*' | awk '{print "mv " $0 " file"NR$0}' | sed -e 's/file\./\./g; s/mv /mv file/g' > rename.sh; chmod +x rename.sh; sh rename.sh
но выглядит как-то громоздко. Хотелось бы без создания временного файла обойтись. Что предложите в таком случае?

 ,

dadd
()

uGet — теперь годен к применению

На днях зарелизился uGet 1.10 stable. Оказалось, им уже можно нормально пользоваться. Пожалуй, теперь это наилучший из существующих GUI для aria2c. Поделюсь рецептом его приготовления и скриптом для автоматического выбора категорий в зависимости от типов файлов.

Что из нового меня обрадовало?

  • Доделали интеграцию с aria2c (закачка в несколько потоков, регулировка скорости и прочие вкусности aria2c теперь доступны).
  • Появилась опция --quiet для запуска закачек без вылезающего окна подтверждения.

Собственно, о приготовлении:

  • В настройках нужно указать _полный_ путь до aria2c (обычно /usr/bin/aria2c ).
  • Аргументы для запуска aria2c у меня такие:
    -x 5 -k 1M --enable-rpc=true --disable-ipv6=true --enable-dht=false --enable-dht6=false --rpc-user=USER --rpc-passwd=PASSWORD --enable-peer-exchange=false --follow-torrent=false --follow-metalink=false --user-agent='Mozilla/5.0 (X11; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0'
    где x задаёт кол-во потоков, k — минимальный размер разбивки файла на части. Опцию --enable-rpc=true нужно обязательно указать, ибо uGet через RPC-сервер aria2c работает. Указываем логин и пароль в --rpc-user=USER --rpc-passwd=PASSWORD, при этом в настройках URI меняем дефолтный http://localhost:6800/rpc на http://USER:PASSWORD@localhost:6800/rpc. Рекомендую --follow-torrent=false, чтобы содержимое торрентов не качать. В остальном man aria2c.
  • В Firefox'овском FlashGot добавляем uGet или uGet-скрипт (см. ниже) с шаблоном командной строки
    [URL] --filename=[FNAME]
    , чтобы имена закачек нормально определялись.
  • На закуску ставим монохромные иконки.

О скрипте для автоматического выбора категорий в зависимости от типов файлов:

  • Создаём в uGet'е категории после «Home» именно в следующем порядке: Архивы, Документы, Видео, Музыка, Пакеты, Торренты; иначе в нижеприведённом скрипте придётся менять индексы для категорий (Home имеет индекс 0, Архивы = 1, Документы = 2, и т.д. по порядку). Указываем в настройках каждой категории каталог для закачек и прочее.
  • Код для рутрекера и порнолаба закомментирован. Для работы этого кода используется curl и локальный http-сервер. Если захочется иметь с этих трекеров торрент-файлы в uGet'е, то раскомментируйте код, не забыв сменить пути к cookies и для сервера. Скрипт для получения Firefox'овских cookies можно взять здесь.
  • Путь в скрипте для DIRDFILE меняем на свой, либо создаём такой же: mkdir -p $HOME/scripts/dfiles

uGet-скрипт:

#!/bin/bash
#uGet_category_selection  script by takiz aka dadd
URL="$1"

#Создаём временный файл с информацией о закачке
DIRDFILE="$HOME/scripts/dfiles/"
DFILE="$DIRDFILE/dfile1"
if ! [ -a "$DFILE" ]; then 
echo > $DFILE
fi
NUM=`ls -1 "$DIRDFILE" | tail -1 | egrep -o -e '[0-9]{1,20}'`; (( NUM++ ))
wget --spider "$URL" 2>&1 | tee > $DIRDFILE/dfile$NUM
OUTPUT="$DIRDFILE/dfile$NUM"

#Отсеиваем типы файлов
ARCHIVES=`egrep -e 'application\/(x.bzip2|x.gzip|x.tar|x.7z|rar|zip)' $OUTPUT`
DOCS=`egrep -e '(application|image|text)\/(pdf|msword|rtf|vnd.ms.excel|vnd.djvu|plain)' $OUTPUT`
MOVIES=`egrep -e 'video\/(x.flv|mp4|x.msvideo|x.ms.wmv|mpeg|x.matroska)' $OUTPUT`
MUSIC=`egrep -e 'audio\/(mpeg|flac)' $OUTPUT`
PACKAGES=`egrep -e 'application\/x.debian.package' $OUTPUT`
TORRENTS=`egrep -e 'application\/x.bittorrent' $OUTPUT`
OCTET=`egrep -e 'application\/octet.stream' $OUTPUT`

#Для rutracker и pornolab
#ID=`echo "$URL" | egrep -o -e '[0-9]{4,10}'`
#PORNOLAB=`echo "$URL" | egrep -o -e 'pornolab.net'`
#RUTRACKER=`echo "$URL" | egrep -o -e 'rutracker.org'`
#RUFILE="[rutracker.org].t$ID.torrent"
#POFILE="[pornolab.net].t$ID.torrent"
#RUREFERER="http://rutracker.org/forum/viewtopic.php?t=$ID"
#POREFERER="http://pornolab.net/forum/viewtopic.php?t=$ID"
#COOCKIE="$HOME/scripts/tmp/co.txt"
#AGENT="Mozilla/5.0 (X11; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0"

#Раскладываем по категориям
if [ "$TORRENTS" ]; then
    uget-gtk $URL $2 --category-index=6
    rm -f $OUTPUT
#elif [ "$RUTRACKER" ]; then
#    curl --trace-ascii - -d "" --cookie "$COOCKIE" -c "$COOCKIE" -A "$AGENT" -o "/var/www/torrents/$RUFILE" -e "$RUREFERER" $URL;
#    uget-gtk "http://localhost/torrents/$RUFILE" --category-index=6; rm -f $OUTPUT; sleep 8;
#    rm -f "/var/www/torrents/$RUFILE"
#elif [ "$PORNOLAB" ]; then
#    curl --trace-ascii - -d "" --cookie "$COOCKIE" -c "$COOCKIE" -A "$AGENT" -o "/var/www/torrents/$POFILE" -e "$POREFERER" $URL;
#    uget-gtk "http://localhost/torrents/$POFILE" --category-index=6; rm -f $OUTPUT; sleep 8;
#    rm -f "/var/www/torrents/$POFILE"
elif [ "$ARCHIVES" ]; then
    uget-gtk $URL $2 --category-index=1
    rm -f $OUTPUT
elif [ "$DOCS" ]; then
    uget-gtk $URL $2 --category-index=2
    rm -f $OUTPUT
elif [ "$OCTET" ]; then
#Отсеиваем для octet
OCARCHIVES=`echo "$URL" | egrep -i -e '\.(bz2|gz|tgz|tar|rar|zip|7z)'`
OCDOCS=`echo "$URL" | egrep -i -e '\.(doc|rtf|xls|pdf|djvu|txt)'`
OCMOVIES=`echo "$URL" | egrep -i -e '\.(avi|flv|mp4|wmv|mpg|mpeg|mkv)'`
OCMUSIC=`echo "$URL" | egrep -i -e '\.(mp3|flac|ogg|ape|m4a)'`
OCPACKAGES=`echo "$URL" | egrep -i -e '\.deb'`
OCTORRENTS=`echo "$URL" | egrep -i -e '\.torrent'`
            if [ "$OCTORRENTS" ]; then
                  uget-gtk $URL $2 --category-index=6
                  rm -f $OUTPUT
            elif [ "$OCARCHIVES" ]; then
                  uget-gtk $URL $2 --category-index=1
                  rm -f $OUTPUT
            elif [ "$OCDOCS" ]; then
                  uget-gtk $URL $2 --category-index=2
                  rm -f $OUTPUT
            elif [ "$OCMOVIES" ]; then
                  uget-gtk $URL $2 --category-index=3
                  rm -f $OUTPUT
            elif [ "$OCMUSIC" ]; then
                  uget-gtk $URL $2 --category-index=4
                  rm -f $OUTPUT
            elif [ "$OCPACKAGES" ]; then
                  uget-gtk $URL $2 --category-index=5
                  rm -f $OUTPUT
            else
                  uget-gtk $URL $2 --category-index=0
                  rm -f $OUTPUT
            fi
elif [ "$PACKAGES" ]; then
        uget-gtk $URL $2 --category-index=5
        rm -f $OUTPUT
elif [ "$MOVIES" ]; then
        uget-gtk $URL $2 --category-index=3
        rm -f $OUTPUT
elif [ "$MUSIC" ]; then
        uget-gtk $URL $2 --category-index=4
        rm -f $OUTPUT
else
uget-gtk $URL $2 --category-index=0
rm -f $OUTPUT
fi

 , ,

dadd
()

Развернуть из трея

Firefox'овский DownThemAll у меня сворачивается в трей при закрытии. Хочется разворачивать его из трея хоткеем. Чем можно развернуть? Пробовал:

wmctrl -r DownThemAll -b toggle,hidden
но не сработало. Xdotool тоже не помог.

 

dadd
()

Smplayer volstep

Поддерживает ли Smplayer изменение шага регулировки громкости? (в mplayer'e это volstep)

 ,

dadd
()

Переходим с Deluge на KTorrent

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

Что не устроило в Deluge?
Общая причина одна — отнимает много времени при использовании, ибо:

  • Создаёт «пустые» файлы и каталоги для неотмеченных при закачке файлов/каталогов.
  • Неудобная реализация выбора каталога для сохранения содержимого закачек (если используются разные каталоги).
  • По непонятной причине некоторые раздачи иногда самопроизвольно останавливаются (несмотря на отсутствие ограничений в настройках).

Почему переход именно на KTorrent?
KTorrent лишён вышеприведённых недостатков Deluge, при этом по функционалу и отзывчивости не уступает. Памяти потребляет примерно столько же, несмотря на kde'шные библиотеки. Что же касается других торрент-клиентов, то они не дотягивают до функционала Deluge и KTorrent. Лишь qBittorrent мог стать альтернативой, но он забанен на pornolab'е и всё-таки создаёт пустые каталоги (с «пустыми» файлами проблема решена).

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

  • Статус неотмеченных для закачки файлов в мультифайловых раздачах не перенесётся (т.е. по умолчанию будут все отмечены).
  • Когда запустите KTorrent, то все перенесённые раздачи/закачки будут остановлены и нужно будет их перехешировать, выделяя каждую раздачу и нажимая SHIFT+C (более быстрого способа не нашёл. В некоторых торрент-клиентах достаточно нажать «стартовать все», но KTorrent в этом случае будет перезакачивать, а не перехешировать).
  • Работоспособность проверялась на Ubuntu 12.04, Deluge 1.3.5, KTorrent 4.1.3
#!/bin/bash
#Deluge2KTorrent script
#written by takiz aka dadd
printf '%s\n' '...ждите...';

#отсеиваем пути к файлам из torrents.state и фиксим русскую кодировку
egrep '^S.\/' ~/.config/deluge/state/torrents.state | sed -e 's/^..//;s/.$/\//;s/\//#/g' > paths;
t=`cat paths`; printf '%b\n' $t > paths;

#отсеиваем названия торрентов и удаляем дублирующиеся по одному из каждой пары
egrep '[0-9a-zA-Z]{22,99}' ~/.config/deluge/state/torrents.state | sed -e 's/^..//;s/.$//' | perl -ne 'print unless $U{$_};$U{$_}=1;' > torrents;

#создаём временный файл скрипта для создания каталогов и запускаем
printf '%b\n' '#!/bin/bash\nmkdir ~/.kde/share/apps/ktorrent/tor{1..100500}' > temp1.sh; chmod 774 temp1.sh;
strok=`sed -n '$=' torrents`; sed -i -e 's/100500/'$strok'/' temp1.sh; ./temp1.sh;

#создаём скрипт копирования и запускаем
printf '%s\n' '#!/bin/bash' > temp2.sh; chmod 774 temp2.sh;
cat torrents | awk '{print $0".torrent ~/.kde/share/apps/ktorrent/tor"NR"/torrent"}' | sed 's/^/cp ~\/\.config\/deluge\/state\//' >> temp2.sh; ./temp2.sh;

sleep 10;
#создаём шаблон stats
printf '%b\n' 'AUTOSTART=0\nOUTPUTDIR=' > stats;

#создаём stats файлы с путями
a=2; while read f2; do sed -e "1,/.*/{n;s/\(.*\)/\1$f2/}" stats >stats$a; a=$(($a + 1)); done < paths; sed -i -e 's/#/\//g' stats*;

#добавляем в скрипт копирования пути stats и запускаем
cat temp2.sh | awk '{sub(/\~\/[^ ]*\.torrent/, "stats"NR)}1' | sed 's/\/torrent/\/stats/;s/cp st/mv st/' > tmpfile; mv tmpfile temp2.sh; chmod 774 temp2.sh; ./temp2.sh;

sleep 5;
#удаляем временные файлы
rm paths torrents stats temp1.sh temp2.sh;

printf '%s\n' 'ok';

 ,

dadd
()

Редактирование строк

Имеется текстовый файл (на самом деле в нём строк больше, но для простоты возьмём три):

$ cat ex.txt
aaa
bbb
ccc
Хочется добавить в конец каждой строки расширение «.tk_номер_строки». Делаю:
cat ex.txt | for i in $(seq 1 3); do sed 's/$/'.tk$i'/'; done
Но в результате везде добавляется .tk1 вместо ожидаемых .tk2 и .tk3. Помогите разобраться.

dadd
()

Переназначение кнопки мыши

Имеется кнопка мыши, которая эмулирует двукратное нажатие левой кнопки:

~$ xev | grep button
    state 0x10, button 1, same_screen YES
    state 0x110, button 1, same_screen YES
    state 0x10, button 1, same_screen YES
    state 0x110, button 1, same_screen YES

Хочется, чтобы она выполняла те же действия, что и button 2:

~$ xev | grep button
    state 0x10, button 2, same_screen YES
    state 0x210, button 2, same_screen YES

Как это сделать, чтобы при этом двукратное нажатие левой кнопки мыши работало по дефолту?

dadd
()

RSS подписка на новые темы