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

Ну что же. Как-то давно не занимался писаниной в свой блог. Вот, добрался =)
Студент. 2 семестр 2 курса. Зимнюю сессию закрыл не совсем на ура, но учитывая мой уровень раздолбайства и уровень нагрузки, который был на моих плечах это очень даже хорошие показатели =)
Съездил домой. Всего-то 10 дней был в отчем доме. И вот я уже четвертую неделю учусь. Учусь ли? не думаю. Скорее очень сильно раздолбайствую. Надо взять себя в руки и позакрывать все те хвосты, что уже накопил. Кстати да, в этом семестре меня опять ждет немного халявы -- надо до сдать 1 тему по дискретке и мне перезачтут экзаменационную оценку из моего старого вуза. Это вносит хоть какой-то позитив в эти скучные дни.
В универе открыли доступ по вайфайке в асю через джаббер. Теперь на некоторых особенно скучных парах можно сидеть в аське, а не подыхать от скуки =)))))

суббота, 14 ноября 2009 г.

Не забыл о своем блоге

Да.. давно я не писал сюда.
Ну что же. Уже 2 с половиной месяца в Таганроге. Здесь, конечно, хорошо, но всеравно тянет домой, к друзьям, которые остались там.

Дела обстоят не очень хорошо. 2 раза завалил сдачу правоведения. В среду иду еще 1 раз сдавать. Со следующей недели начинаются рейтинговые контрольные работы. По психологии уже набрал балов на минимум. Это уже радует. В понедельник сдавать вычмат. Надеюсь, все пройдет как по маслу. Остается еще целая куча предметов-долгов, которые надо сдать до конца семестра. Как буду выкручиваться - не знаю. Так же надо пойти заплатить за физру, потому что пропустил много пар и сдавать зачеты не буду потому что здоровье подорвано простудой =(

Хотя все не так уж и плохо как кажется. В воскресенье будет очередной флешмоб "бен-бен". Там будет очень весело, я в этом уверен )

понедельник, 31 августа 2009 г.

MPD + Gajim

В течение уже долгого времени использую любимую связку MPD+Sonata для прослушивания своей аудиотеки.
Для общения использую Gajim -- джаббер клиент, написанный на Python'е. Нареканий работа данного клиента не вызывает и поэтому причин менять его нет.
Захотелось сделать вывод информации о прослушиваемом треке в статус всех аккаунтов гаджима. Полазив в настройках нашел галочку "отображать в статусном сообщении название проигрываемого трека". Но никаких изменений в статусе не наблюдалось. Полазив в расширенных настройках тоже ничего не нашел. Обратился к гуглю за помощью. Наткнулся на несколько вариантов реализации, но только лишь один из них показался мне наиболее вменяемым.
Итак, преступим к настройке. Для начала надо скачать архив по ссылке: mpd-gajim-info
Далее устанавливаем MPC - Music Player Client
sudo apt-get install mpc
Распаковываем архив в любую папку и переходим в нее:
tar -xvvzf mpd-gajim-info-1.1.0.tar.g && cd mpd-gajim-info-1.1.0
Далее нужно установить этот скрипт:
sudo make install
Вот, собственно, и все. Теперь нужно просто запустить этот скрипт:
mpd-gajim-info
Для получения дополнительных параметров запуска набираем в консоли:
man mpd-gajim-info

вторник, 25 августа 2009 г.

Основы настройки Awesome для новичков

Awesome - это динамический оконный менеджер для X Window System (C) Wikipedia.
Долгое время я использовал в качестве оконного менеджера и графической рабочей среды на своей убунте - Gnome. В процессе использования гнома пробовал все "рюшечки и цветочки" типа Compiz, Screenlets, GDesklets и прочее, которые очень быстро надоели. Конечно, красивая система - это хорошо. Но для того ли она стоит у меня чтобы играться с интерфейсом? Со временем удалил компиз и проче, описанное выше, из системы за ненадобностью. Хотелось как-то улучшить юзабельность своей системы и уменьшить объем занимаемой оперативной памяти, да и вообще - оптимизации системы для более быстрой работы. Начал пробовать различные оконные менеджеры - BlackBox, IceWM, Openbox. В итоге остановился на Openbox. Удалил гнома. Некоторое время жил на опенбоксе, после чего заметил за собой тенденцию к расположению окон мозайкой - это был следующий шаг в моем пути к тайлинговым(или, как их еще называют, мозаечным) оконным менеджерам. Прелесть таких WM в том, что все управление производится с клавиатуры и окна распологаются "мозайкой", т.е. не перекрывают друг друга. Тайлинговых WM огромное множество: XMonad, Ion, DWM, Awesome. И это только наиболее известные. Испробовал я все из них, и больше всех мне поравился Awesome.
Конфигурация Awesome происходит путем правки одного единственного файла конфига: ~/.config/awesome/rc.lua.
Конфигурационный файл написан на скриптовом языке программирования Lua. Многие считают этот язык крайне не понятным и невменяемым, как и самого автора, который "заставляет" своих пользователей учить этот язык. На мой взгляд, этот язык очень удобне и прост в освоении. Более того, произвести базовую конфигурацию Awesome можно и без знания языка, поскольку в конфигурационном файле все описано.

Устанавливается Awesome в Ubuntu просто:
sudo apt-get install awesome

Итак, приступаем к конфигурации данного WM.
Первым делом создадим папку(если ее не существует):
mkdir -p ~/.config/awesome/

Далее надо скопировать готовый файл конфигурации(делаем это от простого пользователя, что очень важно):
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/

Итак, мы создали файл конфигурации, который будем редактировать дальше.
Стоит отметить следующие понятия в языке Lua и терминологии Awesome в целом:
  1. Screen -- это не объект, а реальный монитор, подключенный к Вашему компьютеру. Нумерация идет не с 0, а с 1.
  2. Client -- это окно приложения
  3. Tag -- Тэги - это что-то подобное рабочим столам, но это понятие менее жесткое. Каждый клиент имеет по крайней мере один тэг, ему соответсвующий. Каждый экран также содержит как минимум один тэг. В любой момент на экране вы можете просматривать любое количество тэгов. Отображение без тэгов скроет все клиенты. Просмотр одного и более тэгов отобразит на экране все приложения с этими тэгами.
  4. Widget -- объект, выводящий информацию на экран
  5. Titlebar -- заголовок окна - это полоса вокруг приложения, присоединенная к нему. На нее можно добавлять виджеты
  6. Statusbar -- строка состояния. Это полоса, закрепленная на границе экрана. На нее можно добавлять виджеты.

Открываем файл конфигурации Awesome используя свой любимый текстовый редактор:
emacs ~/.config/awesome/rc.lua

Описывать всю грамматику языка я не буду. Опишу только основные моменты по ходу дела.
Первое, что мы видим, это то, что комментарии здесь выделяются "--" в начале строки.
Далее идет объявление используемых модулей: require("awful")
Следующим шагом явлется присвоение переменной theme_path пути к папке с установленными темами. Точно так же можно скопировать папку со стандартной темой и модифицировать ее в соответствии со своими вкусами. Не лишним будет сказать, что с Awesome идут 2 темы: dark и sky. Для выбора одной из них просто нужно откомментировать/закомментировать нужную строку.

terminal = "x-terminal-emulator" -- дефолтный терминал, который будет использоваться для открытия из меню.
editor = os.getenv("EDITOR") or "editor" -- дефолтный редактор. Назначается как дефолтный по всей системе, но можно указать и свой, не затрагивая общесистемные настрйоки.
editor_cmd = terminal .. " -e " .. editor -- параметры запуска редактора в терминале.

modkey = "Mod4" -- кнопка-модификатор. По умолчанию это Winkey. Да-да. Это та самая кнопка с флажком Windows. Ее можно изменить на удобную Вам.
layouts =
{
    "tile",
    "tileleft",
    "tilebottom",
    "tiletop",
    "fairh",
    "fairv",
    "magnifier",
    "max",
    "fullscreen",
    "spiral",
    "dwindle",
    "floating"
}
список раскладок. Их всего 12. Описывать каждую не имеет смысла. Как говорится, лучше 1 раз увидеть, чем 100 раз услышать.

floatapps =
{
    ["MPlayer"] = true,
    ["gimp"] = true,
}
список приложений, которые будут запущены в режиме float, т.е. не будут прикреплены к сетке мозайки

apptags =
{
    ["Firefox"] = { screen = 1, tag = 2 },
    ["sonata"] = { screen = 2, tag = 4 },
}
список приложений, которые будут помещены на определенные места при запуске. Так, в данном примере браузер Firefox будем помещен на 2 тэг 1 экрана. Sonata будет помещена на 4 таг 2 монитора. Все просто и понятно. Не так ли? =)

use_titlebar = false -- отказываемся от использования заголовка окна. Что это такое -- смотрите выше. Для его включения надо, естественн, установить значение в true.

Данный кусок кода создает 9 тэгов для каждого мониторов
tags = {} -- массив тэгов
for s = 1, screen.count() do -- простой цикл от 1 до количества мониторов
    -- Каждый монитор имеет свои собственные тэги
    tags[s] = {}
    -- Создаем 9 тэгов на монитор
    for tagnumber = 1, 9 do -- опять таки, цикл от 1 до 9
        tags[s][tagnumber] = tag({ name = tagnumber, layout = layouts[1] }) -- создаем тэг с номеров в качестве имени и 1 вариантом расположения
        -- Add tags to screen one by one
        tags[s][tagnumber].screen = s -- добавляем тэг на монитор
    end
    -- выбираем первый тэг чтобы видеть его содержимое
    tags[s][1].selected = true
end

Конечно, можно создать n своих собственных тэгов со своими именами. Для этого используем код следующего содержания:
tags[1][1] = tag({name = "one", layout = layouts[2]}) -- 1 тэг на 1 мониторе с именем one и 2 вариантом расположения клиентов.
tags[1][2] = tag({name = "two", layout = layouts[1]}) -- 2 тэг на 1 мониторе с именем two и 1 вариантом расположения клиентов.

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

Дошли до секции "Mouse bindings":
awesome.buttons({
    button({ }, 3, function () mymainmenu:toggle() end), -- 3 кнопка (т.е. правая кнопка) мыши вызывает меню
    button({ }, 4, awful.tag.viewnext), -- 4 кнопка (т.е. прокручивание колесика вверх) переключается на следующий тэг
    button({ }, 5, awful.tag.viewprev) -- 5 кнопка (т.е. прокручивание колесика вниз) переключается на предыдущий тэг
})

Секция "Key bindings" описывается просто:
Каждая команда назначается функцией языка Lua: keybinding(<сочетание клавиш>, вызываемая_функция).
На этом пункте стоит остановиться подробнее, поскольку можно заметить 2 варианта вызова этой функции:
  1. keybinding({ modkey }, "m", awful.client.maximize):add() 
  2. keybinding({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end):add()

Функция вызывается с 3 параметрами. Рассмотрим на приведенных выше примерах.
Первый параметр - это те клавиши, которые будут постоянно удерживаться в данной комбинации. В 1 примере это только лишь клавиша Mod4, а во 2 примере это Mod4+Control.
Второй параметр - это клавиша, которая будет финальной в комбинации. В первом примере это клавиша m, а во втором - k.
Третий параметр - функция, которая выполнится в случае нажатия комбинации.
Получается, что первым параметром указывается клавиша-модификатор+дополнительные клавиши(Alt, Control). Вторым параметром - клавиша комбинации - любая клавиша кроме тех, которые задействованы в первом параметре. И третьим параметром - испольняемая функция (их можно найти в справочнике по Lua).

Наверно, Вы заметили, что часы показывают время в каком-то нестандартном и непонятном для нас формате. Найдем самый последний блок в конфиге:
-- Hook called every second
awful.hooks.timer.register(1, function ()
    -- For unix time_t lovers
    -- mytextbox.text = " " .. os.time() .. " time_t "
    -- Otherwise use:
     mytextbox.text = " " .. os.date() .. " " -- вот это та строка, которую нужно раскомментировать и закомментировать другую.
    --mytextbox.text = "" .. os.date(" %R ") ..  .. os.date("%m-%d") .. ""

end)
-- }}}

После такого действия мы получим время в формате "День Месяц Число чч::мм::сс Год".

Вот и весь краткий обзор настройки Awesome в Linux. Как оказалось, не такое уж это и сложное дело - чтение комментариев и манов. =) Удачи в настройке.