Конфиг zsh (FreeBSD)

Комментарии и адаптация к linux скорее всего будут написаны позже.
Просто мне надо размножить основные принципы, решил выложить здесь.

setopt INC_APPEND_HISTORY SHARE_HISTORY HIST_IGNORE_DUPS HIST_IGNORE_ALL_DUPS HIST_REDUCE_BLANKS HIST_IGNORE_SPACE HIST_NO_STORE HIST_VERIFY
setopt EXTENDED_HISTORY HIST_SAVE_NO_DUPS HIST_EXPIRE_DUPS_FIRST HIST_FIND_NO_DUPS APPEND_HISTORY
setopt CORRECT MENUCOMPLETE ALL_EXPORT
setopt   notify globdots correct pushdtohome cdablevars autolist
setopt   correctall autocd recexact longlistjobs
setopt   autoresume histignoredups pushdsilent 
setopt   autopushd pushdminus extendedglob rcquotes mailwarning
setopt  No_Beep
unsetopt bgnice autoparamslash

HISTFILE=$HOME/.zhistory
HISTSIZE=10000
SAVEHIST=10000
autoload -U predict-on
zle -N predict-on
zle -N predict-off
bindkey -M emacs "^X^Z" predict-on
bindkey -M emacs "^Z" predict-off

alias ls='ls -G'
alias ll='ls -lh'
alias la='ls -a'
alias l='ls'
export GREP_OPTIONS='--color=auto'
export GREP_COLOR='1;33'



autoload -U compinit
compinit
bindkey -v
bindkey "`echotc kI`" yank # Insert
bindkey "`echotc kD`" delete-char # Delete
bindkey "`echotc kP`" up-line-or-history # Page Up
bindkey "`echotc kN`" down-line-or-history # Page Down
bindkey "`echotc ku`" up-line-or-search ## up arrow for back-history-search
bindkey "`echotc kd`" down-line-or-search ## down arrow for fwd-history-search
bindkey "`echotc kh`" beginning-of-line # Home
bindkey "`echotc @7`" end-of-line # End



zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-prompt '%SAt %p: Hit TAB for more, or the character to insert%s'
zstyle ':completion:*' menu select=1 _complete _ignored _approximate
zstyle -e ':completion:*:approximate:*' max-errors \
    'reply=( $(( ($#PREFIX+$#SUFFIX)/2 )) numeric )'
zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s'
zstyle ':completion:*::::' completer _expand _complete _ignored _approximate
zstyle -e ':completion:*:approximate:*' max-errors \
    'reply=( $(( ($#PREFIX+$#SUFFIX)/2 )) numeric )'
zstyle ':completion:*:expand:*' tag-order all-expansions
zstyle ':completion:*' verbose yes
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format 'No matches for: %d'
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:*:kill:*:processes' command 'ps --forest -A -o pid,user,cmd'
zstyle ':completion:*:processes-names' command 'ps axho command' 

[[ -f /usr/local/bin/grc ]] && {
  alias ping="grc --colour=auto ping"
  alias traceroute="grc --colour=auto traceroute"
  alias make="grc --colour=auto make"
  alias diff="grc --colour=auto diff"
  alias cvs="grc --colour=auto cvs"
  alias netstat="grc --colour=auto netstat"
}


extract () {
    if [ -f $1 ] ; then
        case $1 in
            *.tar.bz2)   tar xvjf $1        ;;
            *.tar.gz)    tar xvzf $1     ;;
            *.bz2)       bunzip2 $1       ;;
            *.rar)       unrar x $1     ;;
            *.gz)        gunzip $1     ;;
            *.tar)       tar xvf $1        ;;
            *.tbz2)      tar xvjf $1      ;;
            *.tgz)       tar xvzf $1       ;;
            *.zip)       unzip $1     ;;
            *.Z)         uncompress $1  ;;
            *.7z)        7z x $1    ;;
            *)           echo "'$1' cannot be extracted via >extract<" ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}




autoload -U colors

autoload colors zsh/terminfo
if [[ "$terminfo[colors]" -ge 8 ]]; then
   colors
fi
   for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
   eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
   eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
   (( count = $count + 1 ))
done
   PR_NO_COLOUR="%{$terminfo[sgr0]%}"

local blue_op=""$PR_BLUE"["$PR_NO_COLOUR""
local blue_cp=""$PR_BLUE"]"$PR_NO_COLOUR""
local blue_zd=""$PR_BLUE"╭─"$PR_NO_COLOUR""
local blue_zu=""$PR_BLUE"╰─"$PR_NO_COLOUR""
local path_p="${blue_op}$PR_MAGENTA%/$PR_NO_COLOUR${blue_cp}%b"
local user_host="${blue_op}%B$PR_GREEN%n@%m$PR_NO_COLOUR${blue_cp}"
PROMPT="${blue_zd}${user_host}$PR_BLUE─$PR_NO_COLOUR${path_p}
${blue_zu}$PR_BLUE%#$PR_NO_COLOUR "
RPROMPT="%B%*%b"


export LANG=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8
export EDITOR=vim
export PAGER=less
export PORTSEARCH_OUTFIELDS=name,path,info,www
echo "List all tmux sessions managed by the server:"
tmux ls

VA-API plugins for GStreamer

В поисках лучшей жизни решил испытать, лучшей жизни не получилось - определённые неровности в работе всё же присутствуют, но раз работа проделана - надо описать ;)
Результат - ebuild - в моём оверлее:
sudo layman -a wavilen
После установки можно проверить действительно ли оно зарегистрировалось в системе:
# gst-inspect-0.10 | grep vaapi
vaapisink:  vaapisink: VA-API sink
vaapidecode:  vaapidecode: VA-API decoder
vaapiconvert:  vaapiconvert: VA-API colorspace converter

Ссылки на тему:
http://www.freedesktop.org/wiki/Software/vaapi
http://www.splitted-desktop.com/~gbeauchesne/gstreamer-vaapi/
https://bbs.archlinux.org/viewtopic.php?pid=830180
http://gstreamer-devel.966125.n4.nabble.com/VA-API-support-td2165423.html

e17( и *box'ы) и файловые ассоциации Chromium

sudo emerge -av dev-perl/File-MimeInfo

меняем /usr/bin/xdg-open
- BROWSER=chromium-browser:firefox:mozilla:epiphany:konqueror:google-chrome:$BROWSER
+ BROWSER=mimeopen

Два способа формировать файл конфига:
1) mimeopen -d <путь к открываемому файлу>
2) xdg-mime default application mimetype(s)
(где application - это *.desktop файл приложения из /usr/share/applications или в ~/.local/share/applications);

который можно и вручную поправить
mcedit ~/.local/share/applications/defaults.list




Простенький файрвол ferm

emerge net-misc/ferm
sudo mcedit /etc/ferm/ferm.conf
# workstation & fileserver
# Author: wavilen

table filter {
    chain INPUT {
        policy DROP;

        # connection tracking
        mod state state INVALID DROP;
        mod state state (ESTABLISHED RELATED) ACCEPT;

        # allow local connections
        interface lo ACCEPT;

        # respond to ping
        proto icmp icmp-type echo-request ACCEPT;

        # allow SSH connections
        proto tcp dport ssh ACCEPT;

        # ident connections are also allowed
        proto tcp dport auth ACCEPT;

        # samba
        proto tcp dport (139 445) ACCEPT; #smbd
        proto udp dport (137:138) ACCEPT; #nmbd

        # NFSv4
        proto tcp dport sunrpc ACCEPT;
        proto (tcp udp) dport 2049 ACCEPT;

        #torrent
        proto tcp dport (8000) ACCEPT;
        proto udp dport (8000) ACCEPT;

        #iptv
        proto (udp igmp) daddr 224.0.0.0/4 mod state state NEW ACCEPT;
        proto udp dport 1234 ACCEPT;

        # the rest is dropped by the above policy
    }

    # outgoing connections are not limited
    chain OUTPUT policy ACCEPT;

    # this is not a router
    chain FORWARD policy DROP;
}
sudo ferm -i /etc/ferm/ferm.conf
sudo /etc/init.d/iptables save
sudo /etc/init.d/iptables start
sudo rc-update add iptables default

NotifyOSD


Посетила идея допилить это чудо, чтобы всплывающие извещения лучше вписывались в e17 и torrent клиент flush всё же начал извещать о завершённых закачках.

С этой целью были получены и допилены, а также написаны на горячую руку патчи и ebuild'ы:
x11-libs/libnotify
Versions: 0.4.5-r1
Homepage: http://www.galago-project.org/

x11-misc/notify-osd
Versions: 0.9.29-r1
Homepage: https://launchpad.net/notify-osd

x11-misc/notifyconf
versions: 9999
Homepage: https://code.launchpad.net/notifyconf

Все эти результаты пары часов труда можно найти в моём оверлее
sudo layman -a wavilen

Спасибо всем кто писал ebuild'ы и patch'и
Ссылки на исходный материал:
http://www.webupd8.org/2010/05/gui-to-configure-notifyosd-in-ubuntu.html
http://www.linux.org.ru/forum/general/5096497
http://bugs.gentoo.org/show_bug.cgi?id=320697

e17

Как следствие непомерной захапистости KDE пришлось опять менять DE, поскольку обратно к Gnome не было никакого смыла, то выбор пал на e17 последний из оставшихся "гигантов".
Выбор себя более чем оправдал: производительность, функционал и красота на высоте.
За основу действий использована вики http://en.gentoo-wiki.com/wiki/E17 для enlightenment overlay.
Поскольку было желание получить рабочую среду то был использован snapshot
ln -s /var/lib/layman/enlightenment/scripts/package.keywords.snapshots /etc/portage/package.keywords/enlightenment
/etc/portage/sets/enlightenment

dev-libs/eina
dev-libs/eet
x11-libs/evas
x11-libs/ecore
dev-libs/embryo
media-libs/edje
dev-libs/efreet
x11-libs/e_dbus
x11-wm/enlightenment:0.17

Смена курсора мыши

создаётся файл /usr/share/icons/default/index.theme
следущего содержания

[Icon Theme]
Inherits=<имя_желаемой_темы_из_usr_share_icons>

настройки прокси Chromium в KDE 4

На каком-то этапе становления системы Chromium перестал реагировать на нажатие кнопки "Изменить настройки прокси сервера" - сначала я не придал этому значения, но потом потребовалось поменять эти настройки и тут начались проблемы.

Для chromium'а существует параметр запуска

--proxy-server=<host>:<port>
однако почему для установленной у меня 6-ой версии он влиял только на одну текущую вкладку.

Изучив http://code.google.com/p/chromium/wiki/LinuxProxyConfig дошло что это что-то в KDE не работает и я решил что виноват kde-base/knetworkconf, однако это предположение было совершенно ошибочно.

"Прокси-сервер - Модуль настройки KDE" оказался частью kde-base/konqueror, и пришлось вернуть совершенно невостребованный мной браузер в систему...


P.S.: надеюсь rekonq всё же допилят.

Запрос на выключение при нажатии "Power Button"

/etc/acpi/default.sh
+ /etc/acpi/powerbtn.sh
- /sbin/init 0
это кроме того что написано тут
http://forums.gentoo.org/viewtopic-t-63362-postdays-0-postorder-asc-start-0.html

сглаженный шрифт в calculate (gentoo)

Некоторых пользователей linux тошнит от такого вида шрифтов, но я к таковым неотношусь.
С вышедшим обновлением FreeType 2.4.0 в ebuild скрипте появился use флаг auto-hinter, соответственно нужно добавить media-libs/freetype auto-hinter в /etc/portage/package.use/using и пересобрать его.

ошибка компилятора при сборке blender-9999 USE="openmp"


source/blender/blenkernel/intern/implicit.c:592 ‘CLOTH_OPENMP_LIMIT’
и ещё несколько строк, вылечилось сменой версии компилятора

gcc-config -l
 [1] x86_64-pc-linux-gnu-4.3.4 *
 [2] x86_64-pc-linux-gnu-4.4.4
sudo gcc-config 2
gcc-config -l
 [1] x86_64-pc-linux-gnu-4.3.4
 [2] x86_64-pc-linux-gnu-4.4.4 *

blender 2.5 потерял папку со скриптами

Решил пересобрать blender c целью получить новейший релиз, взял с http://bugs.gentoo.org/show_bug.cgi?id=276338 как раз недавно обновлённый ebuild, всё собралось - но вот только после запуска обнаружилось что почти все кнопки отсутствуют.
Вывод в консоль показал вот такую причину сих бед:

bpy: couldnt find 'scripts/modules', blender probably wont start.
и далее ещё несколько сот строк лога ошибки.
Но в общем то сразу ясно - он потерял свою же папку со скриптами, не нашёл более доходчивого метода объяснить blender'у где его скрипты, нежели чем запускать его с параметром

BLENDER_SYSTEM_SCRIPTS=/usr/share/blender/2.5/scripts
Исправил ярлык и не стал дальше вникать в суть его амнезии...

vaapi hd3200igp gentoo

для установки mplayer  с vaapi патчами я использую собственный ebuild, хоть он не очень продуман - зато в нём очень легко менять версию и он работает ;)
libva перешёл в основную ветку portage
xvba взятый изначально из arcon overlay храню в локальном (в arcon много ненужных мне пакетов)
мой оверлей можно добавить следующей командой:
sudo layman -a wavilen

adobe flash 10.1

В этой ещё не вышедшей версии есть неприятный баг, который проявляется как я понял в 64-bit linux firefox и chromium. По ссылке выше можно найти и решение проблемы: надо добавить в файл  /usr/lib/nspluginwrapper/i386/linux/npviewer перед последней строкой следующую команду

export GDK_NATIVE_WINDOWS=1

G-Pen driver

Подправив существующий wizardpen-0.7.1.ebuild получил версию для bazaar trunk разрабатываемой версии - поставил - очень доволен - наконец заработали кнопки на стилусе, без всяких танцев с бубном.
Взять можно в моём оверлее
sudo layman -a wavilen

Ещё очень полезно разделить указатели мыши, почитать как это настроить можно здесь
http://www.gentoo.ru/content/2-ukazatelya-myshi-v-xorg
и более подробно и понятно
http://www.opennet.ru/tips/info/2271.shtml

Само собой разумеется что всё это не очень стабильно, и не факт что заработает вообще ;)

Фильтры для mplayer

Я долго не догадывался зачем в фронтэндах для mplayer есть строка дополнительные параметры в которую нужно что-то вбить, потребовалось настроить Gnome-mplayer чтобы он выдавал приличную картинку, почитал man к mplayer'у и добавил такую вот строку

-vf pp=hb/vb/dr/al

Качество заметно изменилось в лучшую сторону по сравнению с просто включением пост-обработки.

Копия моего локального оверлея

Смотреть ссылку ниже
http://code.google.com/p/wavilen/source/browse/
Просьба не бить сильно - нет времени привести всё в рабочий вид... но может кому что пригодится...

Mypaint / Alchemy

Наткнулся на просто восхитительный видео урок по рисованию в бесплатных программах.
http://www.davidrevoy.com/?article24/

ATI HD3200IGP и аппаратное ускорение HD-видео в Ubuntu

Наконец то удалось задействовать ускорение интегрированного видео, правда только на Ubuntu, которая не является моей основной Ос, что ещё раз убедило меня в мысли что для большинства нынешних разработчиков linux это только ubuntu. (теперь работает и calculate, см. пост новее)
Вкратце о том как это удалось.
Брались следующие пакеты из http://www.splitted-desktop.com/~gbeauchesne/ и разных ppa(в 10.04 первые два пакета уже присутвуют):

libdrm-dev_2.4.14-1ubuntu1_amd64.deb
libdrm-nouveau1_2.4.14-1ubuntu1_amd64.deb
libva1_0.31.0-1+sds9_amd64.deb
libva1-dbg_0.31.0-1+sds9_amd64.deb
libva-dev_0.31.0-1+sds9_amd64.deb
xvba-video_0.6.7-1_amd64.deb
(версии устарели)
Затем собирался mplayer по указанной здесь инструкции.
И потом настраивался smplayer ориентируясь на это руководство.
Как результат: вместо 100% загрузки обоих ядер моего процессора в режиме максимальной его частоты 2.8GHz, 20-50% нагрузка на процессор в режиме энергосбережения и частоте 0.8GHz.

примечания:
  1. если при использования настроенный mplayer выдаёт:

    ....
    Unknown option on the command line: -stop-xscreensaver
    ....
    
    надо исправить сриптик ./checkout-patch-build.sh
    в конец строки с ./configure добавить --enable-xss
    по зависимостям для сборки потребуется до установить пару пакетов

    sudo apt-get install libxss-dev x11proto-scrnsaver-dev
    после чего чистим папку mplayer и распаковываем туда из архива не патченные исходники и запускаем ./checkout-patch-build.sh (можно конечно вообще не использовать этот скрипт, а отдельно пропатчить и собрать, но мне сей метод не поравился нудностью)
  2. (для тех кто в танке)
    параметр smplaer'а "Путь к mplayer" должен содержать путь к скомпилированному пропатченному vaapi.patch mplayer'у, например (если у вас такой же бардак в системе):

    /home/wavilen/source/mplayer-vaapi-20100602/mplayer-vaapi/mplayer
  3. у меня совершенно не работало ускорение вместе с compiz, с kwin вроде нормально;
    после настройки проверьте загрузку цпу если незаметно существенной разницы, значит что-то не так.

Альтернативное руководство:
http://welinux.ru/post/2651/ (автор nvbn)

GDM 2.28

emerge -av =gnome-base/gdm-2.28.2

для автологина правим конфиг
mcedit /etc/gdm/custom.conf
[daemon]
TimedLoginEnable=true
TimedLogin=<имя пользователя>
TimedLoginDelay=10
затем создаём два файла

/var/lib/polkit-1/localauthority/50-local.d/shutdown.pkla
[system shutdown privs]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultAny=no
ResultInactive=no
ResultActive=yes

/var/lib/polkit-1/localauthority/50-local.d/restart.pkla
[system restart privs]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultAny=no
ResultInactive=no
ResultActive=yes
Надо было обновить/перекомпилировать
emerge -av sys-auth/polkit gnome-extra/polkit-gnome
etc-update
emerge -av sys-auth/consolekit

Так же неплохо сменить тему GTK-2
sudo -u gdm gconftool-2 --set --type string /desktop/gnome/interface/gtk_theme <имя темы>

Ссылки по теме:
http://wiki.archlinux.org/index.php/Gnome_2.28_Changes
http://library.gnome.org/admin/gdm/2.28/configuration.html.en
http://library.gnome.org/admin/gdm/stable/security.html.en#policykit
http://www.gentooforum.de/artikel/18039/autologin-dbus-hal-consolekit-policykit-funktioniert-das.html

Пересборка ядра Sabayon

http://ru.gentoo-wiki.com/wiki/Компиляция_ядра_Linux
По данной ссылке находится по-моему самый адекватный мануал по иногда жизненно необходимому, но очень трудоёмкому для неподготовленных пользователей, процессу.
Прежде чем приступать к настройке советую прочесть следующее, потому как разработчики сабайона понятное дело не заботятся о русскоязычных пользователях.

Битва между эстетикой и эффективностью (Conky)

Всё же не удаётся мне содержать систему в порядке и чистоте, и потому необходимы индикаторы показывающие постоянно соcтояние системы.
Но проведя достаточно много времени сначала с gDesklet, а потом со Screenlets, пришёл к выводу что эти приложения не способствуют работоспособности системы, а прямо наоборот, беспощадно съедают системные ресурсы, но что раздражает больше всего совершенно некорректно работают, да и настраиваемость весьма сомнительна.
Поэтому я решил перейти на что либо более надёжное, и мой выбор пал на Conky.
Мнение что данное приложение некрасиво, и вообще адресовано владельцам "слабых", по нынешним меркам, машин немного не соответствует действительности. Гибкость настройки и интеграция с другими приложениями на высоте, во отличии от более старших собратьев написанных на python и прочей ереси.
В сабайон наиболее логично воспользоваться прекомпилированным пакетом, если конечно у вас хватило сил поддержать в рабочем состоянии entropy

sudo equo install app-admin/conky
После установки можно сразу же запустить приложение с настройками по умолчанию, но они выполнены видимо специально так чтобы у пользователя возникло тут же желание покопаться в конфиге, поэтому я бы не советовал травмировать психику и сразу перейду к следующему шагу.

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

sudo emerge -av dev-python/pystatgrab
sudo equo install -a media-fonts/liberation-fonts\
app-admin/hddtemp net-misc/curl sys-apps/lm_sensors
sudo chmod u+s /usr/sbin/hddtemp
sudo ln -s /usr/sbin/hddtemp /usr/bin
sudo sensors-detect
sudo rc-update add lm_sensors default
sudo rc-update add hddtemp default
Затем загрузить и извлечь содержимое архива conky-colors.tar.gz, и выполнить следующие команды

make
./conky-colors --help (прежде чем выполнять следующую команду
настоятельно рекомендую прочесть справку)
./conky-colors --gentoo --network --calendar -m --cpu=2\
--swap --proc=5 --lang=russian --theme=gnome-noble
make install
Для запуска conky нажмите Alt+F2 куда и введите его название.
Для автозапуска добавте ~/.conkycolors/bin/conkyStart в запускаемые приложения в вашей среде, в скрипте находится таймер и запуск самого приложения, если убрать таймер то conky запустится раньше compiz, если вы лишили сбебя подобных красот с целью самоистязание, то можете непользоватся столь извращённый способом запуска, в альтернативном случае советую подобрать количество секунд оптимальное для вашей системы, у меня это 20, по умолчанию 25.

cat ~/.conkycolors/bin/conkyStart
#!/bin/bash
sleep 20 && conky ;
З.Ы.: А ещё говорят что линукс сложен для рядового пользователя. :-D
З.З.Ы.: Извиняюсь за дотошность ;-)